通過一個(gè)簡單的實(shí)驗(yàn)拓?fù)涞膱?bào)文來詳細(xì)分析OSPF工作機(jī)制,參照OSPF 的鄰居狀態(tài)機(jī)流程來進(jìn)行剖析OSPF 鄰居建立過程

Down----->Init ----> Two-way --" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > OSPF分享-鄰居建立過程

OSPF分享-鄰居建立過程

時(shí)間:2023-06-26 08:12:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-06-26 08:12:01 來源:網(wǎng)站運(yùn)營

OSPF分享-鄰居建立過程:這篇分享是針對OSPF鄰居建立過程實(shí)現(xiàn)原理剖析
通過一個(gè)簡單的實(shí)驗(yàn)拓?fù)涞膱?bào)文來詳細(xì)分析OSPF工作機(jī)制,參照OSPF 的鄰居狀態(tài)機(jī)流程來進(jìn)行剖析OSPF 鄰居建立過程

Down----->Init ----> Two-way ----> Exstart --->Exchange----> Loading ----> Full

其中的Down狀態(tài),將不作為第一步分析,畢竟很容易理解,就是在Deadinternal間隔內(nèi)都沒有收到hello報(bào)文,則認(rèn)定為鄰接失效。
實(shí)驗(yàn)拓?fù)淙缦拢?/b>

3臺(tái)路由器,通過一個(gè)交換機(jī)(廣播網(wǎng)絡(luò))互聯(lián),都在E0/0上運(yùn)行OSPF,形成了OSPF的Full鄰接關(guān)系。







1.鄰居發(fā)現(xiàn)---Init 階段(Hello報(bào)文:OSPF報(bào)文類型1)

hello報(bào)文的用途:

  • 發(fā)現(xiàn)和協(xié)商鄰居(鄰居發(fā)現(xiàn)階段)
  • 在廣播和NBMA(非廣播多路訪問)網(wǎng)絡(luò)中協(xié)商DR和BDR (DR/BDR選舉階段)
  • 鄰居建立之后的充當(dāng)keepalive的角色(OSPF后續(xù)的保活階段)
hello報(bào)文在實(shí)現(xiàn)如上3個(gè)用途的時(shí)候,OSPF在處于鄰接關(guān)系的3個(gè)不同階段,在不同的階段,hello把中的信息也是不一樣的。這里我們先介紹OSPF鄰居的發(fā)現(xiàn)階段


1)我們先看看hello報(bào)文的網(wǎng)絡(luò)層信息,可知這是一個(gè)OSPF報(bào)文(R3接口抓取報(bào)文)

我們的實(shí)驗(yàn)用例是用來一個(gè)多址網(wǎng)絡(luò),網(wǎng)絡(luò)類型且是廣播類型,OSPF的Hello報(bào)文發(fā)送的方式是組播方式。關(guān)于網(wǎng)絡(luò)類型對于OSPF的工作機(jī)制的影響,還有組播MAC和IP,這個(gè)會(huì)在DR/BDR單獨(dú)的文章中分享。





2)去掉IP包頭,我們看看各路由器初始Hello報(bào)文的OSPF報(bào)文信息

每臺(tái)路由器都會(huì)在開啟ospf的接口組播方式發(fā)送hello報(bào)文,目標(biāo)IP:224.0.0.5,且 DR/BDR為空,優(yōu)先級(jí)默認(rèn)為1,報(bào)文中還有不少字段。部分字段將在鄰接的其他的過程中講解,還有其余字段,將會(huì)在另外的OSPF分享中講解。

當(dāng)其他路由器監(jiān)聽224.0.0.5組播地收到這類始發(fā)hello報(bào)文信息匹配無誤后,如“版本、區(qū)域ID、認(rèn)證信息、接口掩碼、Hello-interval、Dead-interval”(其實(shí)還有Option字段),這些信息必須匹配,才認(rèn)為對方是自己的“鄰居”,路由器利用收到的Hello報(bào)文信息,為接口創(chuàng)建一個(gè)“接口數(shù)據(jù)結(jié)構(gòu),將鄰接關(guān)系設(shè)置為于“Init狀態(tài)"。這個(gè)被創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)的信息將會(huì)被用于后續(xù)發(fā)送Hello報(bào)文。

這里我們用了鄰居鄰接關(guān)系這2個(gè)詞。
鄰居他只是一個(gè)名詞,而OSPF中,對于兩臺(tái)設(shè)備的互聯(lián)關(guān)系,我們用鄰接來表示。至于OSPF能否在兩個(gè)鄰居之前正常交互,要形成一個(gè)完成的鄰接關(guān)系才行。舉個(gè)例子,你和老王住在對門,彼此見過面,彼此知道對方是住在對面房間的人或者戶主,你們就已經(jīng)成為鄰居了。但是至于鄰居關(guān)系知否處理好,在后續(xù)的日子中能否有效的交流和處事,要看你們的鄰居關(guān)系的建立了。如果在后續(xù)的各個(gè)方面都比較認(rèn)同,信息共享,那就有了一層
很好的鄰接關(guān)系。下面我們看看OSPF如何在鄰居之前建立鄰接關(guān)系。



2.雙向通信建立---Two-way階段(Hello報(bào)文:OSPF報(bào)文類型1)

當(dāng)路由器首次收到其他路由器的初始hello報(bào)文,并確認(rèn)信息對上之后,路由器會(huì)再次通過組播方式發(fā)出的一個(gè)包含“Active neighbor"字段的Hello報(bào)文到該鏈路上,該字段的值就是,在該鏈路收到過的所有的Hello報(bào)文(前提是信息匹配)中的RID。

當(dāng)其他路由器通過這個(gè)鏈路收到的這個(gè)路由器帶有”Active neighbor”字段的Hello報(bào)文,發(fā)現(xiàn)其中"active nb"字段包含了自身 rid,類似于對方認(rèn)為對方有效鄰居的時(shí)候,此時(shí)彼此的就達(dá)成了初步雙方認(rèn)可,則將對方的鄰接關(guān)系設(shè)置為“Two-way"雙向通信狀態(tài)。




之前出現(xiàn)了網(wǎng)絡(luò)類型和DR的概念, 在進(jìn)入下一階段之前,我們需要先插播一條關(guān)于DR/BDR(包含網(wǎng)絡(luò)類型)的知識(shí)廣告,
因?yàn)檫@將直接影響OSPF鄰接關(guān)系的建立邏輯。



DR/BDR知識(shí)點(diǎn)插播:

  • DR: Designate router,指定路由器
  • BDR:Backup Disignate router,備用指定路由器
  • DROthers:其余非DR/BDR路由器
  • DR/BDR選舉規(guī)則:先比較接口優(yōu)先級(jí),越大越優(yōu)先。優(yōu)先級(jí)相同,比較RID,越大越優(yōu)先
在一個(gè)多址網(wǎng)絡(luò)(比如廣播、NBMA)網(wǎng)絡(luò)中,一個(gè)鏈路上會(huì)存在多個(gè)OSPF路由器,這也是為什么這里會(huì)用3個(gè)路由的實(shí)例來介紹OSPF鄰居建立過程。當(dāng)多個(gè)OSPF路由器出現(xiàn)的時(shí)候,會(huì)有DR/BDR機(jī)制,來控制鄰接關(guān)系的有組織的建立,而不是一通亂鄰接,形成一個(gè)Full-me sh的全員相互Full鄰接狀態(tài),造成鄰接關(guān)系眾多復(fù)雜的現(xiàn)狀。

這里我們先明確一點(diǎn):在鄰居鄰接關(guān)系達(dá)到“Two-way”的狀態(tài)后,會(huì)先在這個(gè)多址網(wǎng)絡(luò)中確認(rèn)DR/BDR/DROthers角色關(guān)系,才會(huì)進(jìn)行后續(xù)的鄰接關(guān)系協(xié)商過程。而且角色一旦確認(rèn)后,DR/BDR,除了彼此還會(huì)和所有DRothers建立完整鄰接關(guān)系,而DROthers彼此之間不會(huì)再 進(jìn)一步的建立鄰接關(guān)系,他們之間的鄰接關(guān)系將維持在“Two-way”狀態(tài)。


示例中根據(jù)上面的 DR/BDR選舉規(guī)則,都是默認(rèn)的優(yōu)先級(jí),顯然R3將成為DR,R2成為BDR,R3成為DROthers,最終還是一個(gè)Full-mesh的Full鄰接關(guān)系狀態(tài),因?yàn)橛?個(gè)路由器的實(shí)例,只是為了引出在OSPF鄰接關(guān)系過程中必不可以少的一個(gè)階段。

關(guān)于DR/BDR的詳解描述,將在下一篇文章。現(xiàn)在DR/BDR/DROthers的角色已經(jīng)判定了,我們接著往下走。


3. 數(shù)據(jù)庫描述的主從關(guān)系確認(rèn)&LSA摘要傳遞---Exstart&Exchange階段(DB description報(bào)文:OSPF報(bào)文類型2)

接下來將開始雙方同步OSPF 數(shù)據(jù)庫中的信息,但是同步的第一步需要協(xié)商一個(gè)Master/slave主從關(guān)系。

3.1 問題:協(xié)商主從的作用是什么?

答案:在兩臺(tái)OSPF鄰接的路由器數(shù)據(jù)庫信息同步的過程中,“主”路由器確保每次只有1個(gè)“DB description”報(bào)文是未處理的,也就是每次都是處理完一個(gè),再發(fā)下一個(gè)。每次都是主路由器發(fā)出一個(gè)"DB description“報(bào)文,從路由器收到后,回應(yīng)一個(gè)具有相同”DB sequence"的“DB description”確認(rèn)報(bào)文,來確認(rèn)主路由器之前發(fā)的“DBdescription“報(bào)文。如果主路由器在”RxmtInterval“間隔內(nèi),未收到從路由器的確認(rèn)報(bào)文,主路由器會(huì)重新發(fā)送一個(gè)這個(gè)”DB description“報(bào)文。其中DB-sequence字段也同時(shí)用來判定“DB description”是否是重發(fā),比如從路由器收到一個(gè)主路由器發(fā)來的“DB description”報(bào)文,其中seqence和之前已回復(fù)的確認(rèn)報(bào)文 sequence相同,則表示這個(gè)"DB description“報(bào)文是重發(fā)的。

3.2 下面來分析下 "DB description“(以下簡稱DB-dsec)報(bào)文是如何在Exstart和Exchange狀態(tài)進(jìn)行交互的。

在拆解報(bào)文之前,我們先了解下DB-desc報(bào)文內(nèi)容信息中(非Header)的幾個(gè)特殊字節(jié)的意義和用途。
    • I(Init):set:表示這的數(shù)據(jù)庫描述報(bào)文的初始報(bào)文
    • M(More):set:表示還有后續(xù)更多的“DB description"報(bào)文還需要發(fā)送
    • MS(Master):yes:表示始發(fā)路由器是 數(shù)據(jù)庫交互過程中的 主,因?yàn)槭浅醮伟l(fā)送,都會(huì)認(rèn)為自己是主
    • DB sequence: 表示數(shù)據(jù)庫描述序列號(hào),在主從關(guān)系確認(rèn)過程的首次發(fā)包時(shí),是根據(jù)路由器當(dāng)前按照順序確認(rèn)應(yīng)該使用的序列號(hào),所有鄰接關(guān)系
      中的路由發(fā)送的首個(gè)“DB decription"報(bào)文中的 DB序列號(hào)沒有關(guān)聯(lián),一般是不一致的 。
1) Exstart和Excahge過程DBD報(bào)文的交互過程原理

以RTA-RTB這種1對1角色名稱為例:

  1. RTA向所有處于“Two-way”狀態(tài)的鄰居,單播發(fā)送首個(gè)DB-description(下面簡稱DBD)報(bào)文(init:set,More:set,Master:set),且都認(rèn)為自己是DB-desc交互過程中的“主”角色。同時(shí)各自發(fā)送的DB-desc初始報(bào)文的 "DD sequence“序列號(hào)是不一致的,因?yàn)橹鲝年P(guān)系還沒有確認(rèn),都是認(rèn)為自己是主。
  2. RTB收到鄰居發(fā)來的首個(gè)DBD報(bào)文后,將RTA鄰接關(guān)系設(shè)置為“Exstart"狀態(tài)。同時(shí)根據(jù)RID大小,判斷主從
  3. 如果判斷RTB自己是主:則回應(yīng)一個(gè)初始DBD報(bào)文(Init:set,More:set,Master:yes)
  4. RTA收到了RTB的第一個(gè)DBD初始報(bào)文,將RTB的狀態(tài)設(shè)置為 “Exstart”狀態(tài)。同時(shí)根據(jù)RID大小,判定自己是從,則回應(yīng)一個(gè)MS置位”No“, 且DB sequence和RTA(主)發(fā)送的初始DBD報(bào)文一致的DBD報(bào)文,同時(shí)!:還會(huì)攜帶自身的LSA描述信息(從設(shè)備會(huì)提前搞事?。?。當(dāng)RTB(主)收到了RTA(從)的DBD報(bào)文后,雙方都確認(rèn)主從關(guān)系。關(guān)鍵報(bào)文中攜帶了LSA描述信息,RTB(主)將RTA(從)的鄰接關(guān)系設(shè)置為 “Exchange"狀態(tài)。
  5. RTB(主)開始發(fā)送攜帶LSA描述信息的DBD報(bào)文,RTA收到后,也將RTB(主)的鄰接關(guān)系設(shè)置為“Exchagne"狀態(tài)。
  6. 由RTB(主)控制DBD報(bào)文的“一來一回”交互,因?yàn)橹靼l(fā)送的DBD報(bào)文,必須要收到從發(fā)出的攜帶和主發(fā)送相同"DB sequence“的回復(fù)包,主才會(huì)開始發(fā)送下一個(gè)DBD報(bào)文。同時(shí)沒發(fā)一次DBD報(bào)文,報(bào)文中的“DB sequence”字段數(shù)值就+1
  7. 就按照上述的“一來一回”交互,當(dāng)自己的LSA描述信息已經(jīng)發(fā)送完全,會(huì)將發(fā)送的DBD報(bào)文中的“M”位置位為“Not set"。只有當(dāng)雙方的DBD報(bào)文的“M”位都置位為“Not set”,才會(huì)認(rèn)為是同步完畢。因?yàn)槭侵髟O(shè)備來主導(dǎo)這個(gè)“一來一回”交互過程,所有永遠(yuǎn)都是從設(shè)備最先知道,通過是否完畢。
  8. LSA描述信息同步的過程中,一旦一方收到了包含LSA描述信息的DBD報(bào)文,就可以開始發(fā)起“LSU”報(bào)文進(jìn)行LSA的請求更新了,但鄰居的鄰接關(guān)系
    狀態(tài)仍然還是“Exchange”,除非同步完畢,自動(dòng)切換到“Loading"狀態(tài)。
2)通過報(bào)文分析Exstat和Exchange報(bào)文交互過程

①R1發(fā)送首個(gè)DBD報(bào)文給R3


R3收到首個(gè)鄰居的DBD報(bào)文,將對方鄰居關(guān)系設(shè)置為“Exstart”狀態(tài),同時(shí)回應(yīng)一個(gè)DBD初始報(bào)文給R1。

③R1認(rèn)慫,跟著老大(主)調(diào)整步調(diào),并直接開始匯報(bào)(發(fā)送LSA描述信息)




④R3(主)收到 R1的DBD確認(rèn)報(bào)文(序列號(hào)一致,身份為從),且包含了LSA描述信息,將R1的鄰接關(guān)系設(shè)置為“Exhange”狀態(tài) 并開始發(fā)送攜帶自身LSA描述信息的DBD報(bào)文

⑤R3也開始發(fā)送包含LSA描述信息的DBD報(bào)文

⑥R1收到R3帶有LSA描述信息的報(bào)文后,將R3的鄰接關(guān)系設(shè)置“Exchange”狀態(tài)

⑦雙方按照上述原理的邏輯繼續(xù)交互,知道都確認(rèn)LSA描述信息發(fā)送完畢,同步完畢。同時(shí)將會(huì)設(shè)置為下一個(gè)狀態(tài):"Loading”







我們在多看一眼抓包的圖:
發(fā)現(xiàn)R1/R2/R3在DB-desc同步的過程(Excahgne階段)中,就已經(jīng)私下開始請求和更新LSA了。消息還沒同步完,你們就開始搞事了,效率可以啊。

這是因?yàn)椋涸贒BD報(bào)文同步LSA描述的過程中,路由器就可以根據(jù)收到的LSA描述,同步像對方發(fā)起LS requet報(bào)文,進(jìn)行LSA請求進(jìn)行更新了,也就是Loading階段,所以ExchangeLoading階段是有交差的,也能提高OSPF收斂的速度。




4. LSA update---Loading(LSR & LSU 報(bào)文:OSPF報(bào)文類型3&4)

Loading的過程,就是對 LSA的請求、更新、確認(rèn)的過程。當(dāng)所有的LSA信息都完成并確認(rèn)時(shí),Loading的過程才算結(jié)束,形成Full的鄰接關(guān)系(鄰接完全體)。

4.1 Loading過程的報(bào)文交互和原理

  1. 路由器收到LSA描述信息后,如果發(fā)現(xiàn)這些信息不在自己的鏈路狀態(tài)信息數(shù)據(jù)庫中,或者比鏈路狀態(tài)數(shù)據(jù)庫信息中對應(yīng)條目狀態(tài)更新的時(shí)候,路由器將會(huì)把這些LSA摘要信息加入“鏈路狀態(tài)請求列表”中,并通過LS request報(bào)文(簡稱LSR),并發(fā)送給鄰居,請求其對應(yīng)的完整LSA拷貝。
  2. 鄰居收到后,將把針對這些請求報(bào)文中涉及的LSA的完整拷貝,通過LS update報(bào)文(簡稱LSU)回應(yīng)請求的始發(fā)路由器,每個(gè)LS update報(bào)文可以攜帶多個(gè)LSA信息。
  3. 始發(fā)請求路由器收到LS update報(bào)文,將報(bào)文的包含LSA信息,從對應(yīng)的鏈路狀態(tài)從之前的請求列表中刪除,當(dāng)鄰居對應(yīng)的“鏈路狀態(tài)請求列表為空時(shí),
    把改鄰居的鄰接狀態(tài)設(shè)置為“Full”,形成了鄰接完全體



4.2 R3(DR)和R1(DROthers)的loading階段交互

Tips:LSR/LSU分別對應(yīng)OSPF報(bào)文類型的3,4,在如下報(bào)文中可體現(xiàn)
①R1單播向R3發(fā)起了一個(gè)LSR請求報(bào)文,LSA-Type為Router-LSA(3)


2)R3單播方式回應(yīng)對應(yīng)完整的LSA信息給R1,其中包含2條LSA信息

3)R3也像R1單播發(fā)送了LSR請求報(bào)文


4)R1以單播方式呼應(yīng)了DR(R)3的LSU請求



⑤當(dāng)所有LSA都更新完畢后,將對方鄰接關(guān)系更新為“Full”形成鄰接完全體



關(guān)鍵詞:建立,過程,鄰居

74
73
25
news
  • 網(wǎng)站
  • 營銷
  • 設(shè)計(jì)
  • 運(yùn)營
  • 優(yōu)化
  • 效率
  • 專注
  • 電商
  • 方案
  • 推廣
為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉