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