記住一個小公式,輕松計算大型OSPF網絡中的鄰接關系數量
概述
對OSPF有所了解的小伙伴都應該知道,在mult-access(多點接入)的網絡中,是需要選擇DR/BDR的,不然會出現N平方的問題,增加網絡開銷。那什么是N平方問題呢?我們來看一下。
鄰接關系中的N平方問題
如下圖所示,在同一個網段上,如果這4個路由器之間要想交換所有的路由(LSA)信息,必須要兩兩形成鄰接關系:
N平方問題
這里有一個計算公式:鄰接的數量 = n(n-1)/2,n表示路由器數量;
路由器越多,則需要形成的鄰接關系就越多,并且成倍的增長,這就是我們所說的N平方問題。
例如4個路由器,總共要形成6個鄰接關系;5個路由器,會形成10個鄰接關系;6個路由器,會形成15個鄰接關系;
而每一個鄰接關系之間都需要交換路由(LSA)信息,這樣不僅會占用網絡的帶寬,每臺路由器也會收到同一條路由的多條拷貝(copy),會花費CPU資源去處理!
如下圖所示,R1發布一條路由(LSA),則R3會處理3份這條路由的copy:
多份COPY
如果OSPF是以這種方式來交換路由信息,則隨著網絡規模的擴大,它就不能勝任了。OSPF中有專門針對這種情況的解決方案:選取DR/BDR。
DR/BDR減少鄰接關系數量
選取DR/BDR是為了減少鄰接關系數量的,它有如下的規則:
- BDR,DR Other都需要和DR形成鄰接(adjacency)關系;
- DR Other需要和BDR形成鄰接(adjacency)關系;
- DR Other之間不需要形成鄰接(adjacency)關系,只需要形成neighbor關系;
鄰居和鄰接關系的區別,可以參見我之前的文章:OSPF中的鄰居與鄰接:一字之差,謬之千里;
鑒于上面的關系,存在一個公式來計算鄰接關系的數量:鄰接關系 = 2(n-1)-1,n代表路由器數量
則4個路由器,總共要形成5個鄰接關系;5個路由器,會形成7個鄰接關系;6個路由器,會形成9個鄰接關系;
5個路由器,5個鄰接關系
比沒有DR/BDR時,鄰接數量少很多,尤其是隨著路由器數量的增長,差別更明顯,可以參照下面的對比:
有無DR的鄰接關系數量對比
總結
經過上面的描述,小伙伴應該對如何計算鄰接關系了解了吧,其實我們只需要記住兩個公式即可:
- 無DR/BDR時鄰接關系數量 = n(n-1)/2,n代表路由器數量
- 有DR/BDR時鄰接關系數量 = 2(n-1)-1,n代表路由器數量;
不過事物都有兩面性,雖然在大規模OSPF網絡中, 選取DR/BDR會節省很多的資源,不過在一個小網段上,例如只有兩臺OSPF路由器的網段,選取DR/BDR是浪費資源和時間的,路由器還要花費額外的資源去處理。