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