OLSR建立路由資訊的步驟如下:
1. 以週期性的方式廣播發送HM封包到鄰近節點,鄰近節點收到後觀察HM封包中的序列號並計算出HM封包遺失(packet loss)的機率,以此作為彼此間的連線品質,因為HM封包含有節點本身所探測到的單跳鄰近節點(One-hop Neighbors)資訊,所以透過HM封包也可以得知與二跳鄰近節點(Two-hops Neighbors)間的連結狀態資訊。
2. 選擇一個或以上的MPR節點,藉此傳送資料到二跳或以上的節點,而單跳節點彼此可以直接溝通。
3. 被選為MPR節點的裝置必須以廣播的方式送出TC封包,與其他MPR節點交換網路拓撲資訊,而收到TC封包的MPR節點必須再廣播送出,藉此傳遞到每一個MPR節點,完成路由資訊的建立。
在OLSR路由協議中,只有MPR節點可以進行資料的轉發,而MPR節點必須是節點本身的單跳鄰近節點,而且可以提供轉發到二跳鄰近節點的路由資訊,我們以下圖的網路拓樸為例,選擇MPR節點的原因及選擇後的傳輸路徑說明如下:
1. A節點選擇B節點為MPR節點,到C節點的路徑為A -> B -> C;到D節點的路徑為A -> B -> D;到F節點的路徑為A -> B -> E -> F,因為B節點與E節點皆為MPR節點可以進行資料轉發。
2. B節點本身即為MPR節點,除了與單跳鄰近節點A、C、D可以直接溝通外,透過E節點可與F節點連線。
3. C節點選擇B與E節點為MPR節點,到A節點的路徑為C -> B -> A;到F節點的路徑為C -> E -> F;到D節點的路徑為有C -> B -> D 與C -> E -> D等二條,依當時的路徑品質來決定。
4. D節點與C節點的情況類似,選擇B與E節點作為MPR節點,到A節點的路徑為D -> B -> A;到F節點的路徑為D -> E -> F;到C節點的路徑為有D -> B -> C 與D -> E -> C等二條,依當時的路徑品質來決定。
5. E節點與B節點的情況類似,本身即為MPR節點,除了與單跳鄰近節點C、D、F可以直接溝通外,透過B節點可與A節點連線
6. F節點選擇E節點為MPR節點,到C節點的路徑為F -> E -> C;到D節點的路徑為F -> E -> D;到F節點的路徑為F -> E -> B -> A,因為B節點與E節點皆為MPR節點可以進行資料轉發。
OLSR在Linux作業系統上,使用iptables內核模組來進行路由的轉發,被實作在OLSR目錄下的linux/net.c檔案中,使用原有的IP表頭並透過更改IP位址來完成路由重定向的功能,目前可以支援IPv4及IPv6。OLSR在封包處理的過程中並不會在加上額外的表頭,也就是說OLSR沒有表頭耗損的問題,這點與802.11s RMAODV及BATMAN Advanced有所不同。從另外一個角度來看,要運行OLSR路由協議,就必需有iptables這個內核模組存在,無法單獨運行。