OSPF中的鄰居與鄰接:一字之差,謬之千里
你口中的“鄰居”關系,其實是“鄰接”關系
各位小伙伴在學習OSPF過程中,經(jīng)常會說路由器之間會形成“鄰居”關系,其實這種說法是不準確的,大部分人要表達的應該是“鄰接”關系,小伙伴之前有意識到這兩者的區(qū)別嗎?
“鄰居”和“鄰接”, 雖然在中文里差的不多,但是在英文里它們是兩個完全不同的單詞,沒有任何的聯(lián)系:
- “鄰居”,英文是“Neighbor”;
- “鄰接”,英文是“Adjacency。
在OSPF世界里,它們的區(qū)別也比較大,可以說是兩個完全不同的狀態(tài),我們來一起看一下!
鄰居關系止步于“2-Way", 鄰接關系包含整個過程
OSPF狀態(tài)機
買過我專欄的小伙伴都應該知道,OSPF在形成鄰居關系時有8個狀態(tài),在每個狀態(tài)都會做不同的事情。如果沒有購買,可以參考一下專欄里的第4節(jié)內容:掌握OSPF的8個鄰居狀態(tài),OSPF就學會了一半。
如在上圖中的“2-Way"狀態(tài),表明兩臺OSPF路由器已經(jīng)建立雙向的通信,并且選取了DR/BDR。此時我們就可以說路由器之間形成了"neighbor"(鄰居)關系。
兩臺路由器之間經(jīng)過"neighbor"(鄰居)關系以后,還必須經(jīng)過ExStart、Exchange,Loading、Full四個狀態(tài),完全LSDB的同步,才能稱它們是“鄰接”(adjacency)關系。
也就是說“鄰接”關系指的是OSPF路由器之間交互信息的整個過程,而“鄰居”關系只需要兩臺路由器進入“2-way”狀態(tài)就可以了, 不需要交互LSA信息。
這樣小伙伴明白我開頭說的,大部分人都說錯的原因了吧!我們平常說的“鄰居”關系,其實指的是交換了LSA信息的“鄰接”關系!
那為什么路由器之間形成“鄰居”(neighbor)關系就可以了呢?這就涉及到DR/BDR的內容了!
同一個LAN上,所有的OSPF路由器需要和DR/BDR形成“鄰接”關系
稍微了解OSPF的小伙伴都會知道DR/BDR,它們是為了節(jié)省資源而出現(xiàn)的概念!例如下圖,如果沒有DR/BDR, 在同一個LAN上的4臺路由器,兩兩之間都要形成“鄰接”關系,對資源是極大的浪費! 形成多少個“鄰接”關系,可用“n(n-1)/2”公式計算。
兩兩形成鄰接關系
而如果有了DR/BDR以后,所有的OSPF路由器(DR Other)只需要和DR/BDR交換LSA就行了,它們(DR Other)之間沒有必要交換LSA,這樣就能節(jié)省很多的資源。
為了簡潔,只列出DR
這樣其它的路由器(DR Other)之間,只需要形成“鄰居”(neighbor)關系就可以了,不需要繼續(xù)交互下去了!
從上面我們可以看出,并不是所有的路由器之間都是需要形成“鄰接”關系的,有時”鄰居“關系也是足夠了。
鄰居和鄰接狀態(tài)
總結
如果你在工作中,聽到有小伙伴說OSPF路由器形成“鄰接”關系,那毫無疑問,這個人一定是獨立獨行的高手,一定要多和他交流網(wǎng)絡知識,因為大部分人還是都是順大流的說“鄰居”,不會那么嚴格的區(qū)分!