精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OSPF狀態機詳細過程詳解

網絡技術干貨圈 ? 來源:網絡技術干貨圈 ? 2023-02-13 09:38 ? 次閱讀

一、鄰居關系建立

狀態含義:

Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息

Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己的Router ID不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關系。

2-Way:在此狀態下,路由器發現自己的Router ID存在于收到的Hello報文的鄰居列表中,已確認可以雙向通信。

鄰居建立過程如下:

e8df3dea-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2。當RTA啟動OSPF后,RTA會發送第一個Hello報文。此報文中鄰居列表為空,此時狀態為Down,RTB收到RTA的這個Hello報文,狀態置為Init。

2、RTB發送Hello報文,此報文中鄰居列表為空,RTA收到RTB的Hello報文,狀態置為Init。

3、RTB向RTA發送鄰居列表為1.1.1.1的Hello報文,RTA在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。

4、RTA向RTB發送鄰居列表為2.2.2.2的Hello報文,RTB在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。

因為鄰居都是未知的,所以Hello報文的目的IP地址不是某個特定的單播地址。鄰居從無到有,OSPF采用組播的形式發送Hello報文(目的地址224.0.0.5)。

二、LSDB同步(一)

狀態含義:

ExStart(信息交換初始狀態):鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。Master/Slave關系是在此狀態下形成的,初始DD序列號也是在此狀態下確定的。在此狀態下發送的DD報文不包含鏈路狀態描述。

Exchange(信息交換狀態):在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。

Loading(加載):在此狀態下,路由器與鄰居之間相互發送LSR報文、LSU報文、LSAck報文。

Full:LSDB同步過程完成,路由器與鄰居之間形成了完全的鄰接關系。

LSDB同步過程如下:

e8fecc78-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2并且二者已建立了鄰居關系。當RTA的鄰居狀態變為ExStart后,RTA會發送第一個DD報文。此報文中,DD序列號被隨機設置為X,I-bit設置為1,表示這是第一個DD報文,M-bit設置為1,表示后續還有DD報文要發送,MS-bit設置為1,表示RTA宣告自己為Master。

2、當RTB的鄰居狀態變為ExStart后,RTB會發送第一個DD報文。此報文中,DD序列號被隨機設置為Y(I-bit=1,M-bit=1,MS-bit=1,含義同上)。由于RTB的Router ID較大,所以RTB將成為真正的Master。收到此報文后,RTA會產生一個Negotiation-Done事件,并將鄰居狀態從ExStart變為Exchange。

3、當RTA的鄰居狀態變為Exchange后,RTA會發送一個新的DD報文,此報文中包含了LSDB的摘要信息,序列號設置為RTB在步驟2中使用的序列號Y(隱式確認),I-bit=0,表示這不是第一個DD報文,M-bit=0,表示這是最后一個包含LSDB摘要信息的DD報文,MS-bit=0,表示RTA宣告自己為Slave。收到此報文后,RTB會產生一個Negotiation-Done事件,并將鄰居狀態從ExStart變為Exchange。

4、當RTB的鄰居狀態變為Exchange后,RTB會發送一個新的DD報文,此報文包含了LSDB的摘要信息,DD序列號設置為Y+1, MS-bit=1,表示RTB宣告自己為Master。

5、雖然RTA不需要發送新的包含LSDB摘要信息的DD報文,但是作為Slave,RTA需要對Master發送的每一個DD報文進行確認。所以,RTA向RTB發送一個新的DD報文,序列號為Y+1,該報文內容為空。發送完此報文后,RTA產生一個Exchange-Done事件,將鄰居狀態變為Loading。RTB收到此報文后,會將鄰居狀態變為Full(假設RTB的LSDB是最新最全的,不需要向RTA請求更新)。

三、LSDB同步(二)

e9183b36-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA開始向RTB發送LSR報文,請求那些在Exchange狀態下通過DD報文發現的、并且在本地LSDB中沒有的鏈路狀態信息。

2、RTB向RTA發送LSU報文,LSU報文中包含了那些被請求的鏈路狀態的詳細信息。RTA在完成LSU報文的接收之后,會將鄰居狀態從Loading變為Full。

3、RTA向RTB發送LSAck報文,作為對LSU報文的確認。RTB收到LSAck報文后,雙方便建立起了完全的鄰接關系。

從建立鄰居關系到同步LSDB的過程較為復雜,錯誤的配置或設備鏈路故障都會導致無法完成LSDB同步。為了快速排障,最關鍵的是要理解不同狀態之間切換的觸發原因。

四、整體流程圖

e93a104e-ab3d-11ed-bfe3-dac502259ad0.png

這是形成鄰居關系的過程和相關鄰居狀態的變換過程。

Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。在NBMA網絡上,此狀態下仍然可以向靜態配置的鄰居發送Hello報文,發送間隔為PollInterval,通常和Router DeadInterval間隔相同。

Attempt:此狀態只在NBMA網絡上存在,表示沒有收到鄰居的任何信息,但是已經周期性的向鄰居發送報文,發送間隔為HelloInterval。如果Router DeadInterval間隔內未收到鄰居的Hello報文,則轉為Down狀態。

Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關系。在此狀態下的鄰居要被包含在自己所發送的Hello報文的鄰居列表中。

2-Way Received:此事件表示路由器發現與鄰居的雙向通信已經開始(發現自己在鄰居發送的Hello報文的鄰居列表中)。Init狀態下產生此事件之后,如果需要和鄰居建立鄰接關系則進入ExStart狀態,開始數據庫同步過程,如果不能與鄰居建立鄰接關系則進入2-Way。

2-Way:在此狀態下,雙向通信已經建立,但是沒有與鄰居建立鄰接關系。這是建立鄰接關系以前的最高級狀態。

1-Way Received:此事件表示路由器發現自己沒有在鄰居發送Hello報文的鄰居列表中,通常是由于對端鄰居重啟造成的。

ExStart:這是形成鄰接關系的第一個步驟,鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。主從關系是在此狀態下形成的;初始DD序列號是在此狀態下決定的。在此狀態下發送的DD報文不包含鏈路狀態描述。

Exchange:此狀態下路由器相互發送包含鏈路狀態信息摘要的DD報文,描述本地LSDB的內容。

Loading:相互發送LS Request報文請求LSA,發送LS Update通告LSA。

Full:兩臺路由器的LSDB已經同步。

一、鄰居關系建立

狀態含義:

Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。

Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己的Router ID不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關系。

2-Way:在此狀態下,路由器發現自己的Router ID存在于收到的Hello報文的鄰居列表中,已確認可以雙向通信。

鄰居建立過程如下:

e8df3dea-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2。當RTA啟動OSPF后,RTA會發送第一個Hello報文。此報文中鄰居列表為空,此時狀態為Down,RTB收到RTA的這個Hello報文,狀態置為Init。

2、RTB發送Hello報文,此報文中鄰居列表為空,RTA收到RTB的Hello報文,狀態置為Init。

3、RTB向RTA發送鄰居列表為1.1.1.1的Hello報文,RTA在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。

4、RTA向RTB發送鄰居列表為2.2.2.2的Hello報文,RTB在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。

因為鄰居都是未知的,所以Hello報文的目的IP地址不是某個特定的單播地址。鄰居從無到有,OSPF采用組播的形式發送Hello報文(目的地址224.0.0.5)。

二、LSDB同步(一)

狀態含義:

ExStart(信息交換初始狀態):鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。Master/Slave關系是在此狀態下形成的,初始DD序列號也是在此狀態下確定的。在此狀態下發送的DD報文不包含鏈路狀態描述。

Exchange(信息交換狀態):在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。

Loading(加載):在此狀態下,路由器與鄰居之間相互發送LSR報文、LSU報文、LSAck報文。

Full:LSDB同步過程完成,路由器與鄰居之間形成了完全的鄰接關系。

LSDB同步過程如下:

e8fecc78-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2并且二者已建立了鄰居關系。當RTA的鄰居狀態變為ExStart后,RTA會發送第一個DD報文。此報文中,DD序列號被隨機設置為X,I-bit設置為1,表示這是第一個DD報文,M-bit設置為1,表示后續還有DD報文要發送,MS-bit設置為1,表示RTA宣告自己為Master。

2、當RTB的鄰居狀態變為ExStart后,RTB會發送第一個DD報文。此報文中,DD序列號被隨機設置為Y(I-bit=1,M-bit=1,MS-bit=1,含義同上)。由于RTB的Router ID較大,所以RTB將成為真正的Master。收到此報文后,RTA會產生一個Negotiation-Done事件,并將鄰居狀態從ExStart變為Exchange。

3、當RTA的鄰居狀態變為Exchange后,RTA會發送一個新的DD報文,此報文中包含了LSDB的摘要信息,序列號設置為RTB在步驟2中使用的序列號Y(隱式確認),I-bit=0,表示這不是第一個DD報文,M-bit=0,表示這是最后一個包含LSDB摘要信息的DD報文,MS-bit=0,表示RTA宣告自己為Slave。收到此報文后,RTB會產生一個Negotiation-Done事件,并將鄰居狀態從ExStart變為Exchange。

4、當RTB的鄰居狀態變為Exchange后,RTB會發送一個新的DD報文,此報文包含了LSDB的摘要信息,DD序列號設置為Y+1, MS-bit=1,表示RTB宣告自己為Master。

5、雖然RTA不需要發送新的包含LSDB摘要信息的DD報文,但是作為Slave,RTA需要對Master發送的每一個DD報文進行確認。所以,RTA向RTB發送一個新的DD報文,序列號為Y+1,該報文內容為空。發送完此報文后,RTA產生一個Exchange-Done事件,將鄰居狀態變為Loading。RTB收到此報文后,會將鄰居狀態變為Full(假設RTB的LSDB是最新最全的,不需要向RTA請求更新)。

三、LSDB同步(二)

e9183b36-ab3d-11ed-bfe3-dac502259ad0.png

1、RTA開始向RTB發送LSR報文,請求那些在Exchange狀態下通過DD報文發現的、并且在本地LSDB中沒有的鏈路狀態信息。

2、RTB向RTA發送LSU報文,LSU報文中包含了那些被請求的鏈路狀態的詳細信息。RTA在完成LSU報文的接收之后,會將鄰居狀態從Loading變為Full。

3、RTA向RTB發送LSAck報文,作為對LSU報文的確認。RTB收到LSAck報文后,雙方便建立起了完全的鄰接關系。

從建立鄰居關系到同步LSDB的過程較為復雜,錯誤的配置或設備鏈路故障都會導致無法完成LSDB同步。為了快速排障,最關鍵的是要理解不同狀態之間切換的觸發原因。

四、整體流程圖

e93a104e-ab3d-11ed-bfe3-dac502259ad0.png

這是形成鄰居關系的過程和相關鄰居狀態的變換過程。

Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。在NBMA網絡上,此狀態下仍然可以向靜態配置的鄰居發送Hello報文,發送間隔為PollInterval,通常和Router DeadInterval間隔相同。

Attempt:此狀態只在NBMA網絡上存在,表示沒有收到鄰居的任何信息,但是已經周期性的向鄰居發送報文,發送間隔為HelloInterval。如果Router DeadInterval間隔內未收到鄰居的Hello報文,則轉為Down狀態。

Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關系。在此狀態下的鄰居要被包含在自己所發送的Hello報文的鄰居列表中。

2-Way Received:此事件表示路由器發現與鄰居的雙向通信已經開始(發現自己在鄰居發送的Hello報文的鄰居列表中)。Init狀態下產生此事件之后,如果需要和鄰居建立鄰接關系則進入ExStart狀態,開始數據庫同步過程,如果不能與鄰居建立鄰接關系則進入2-Way。

2-Way:在此狀態下,雙向通信已經建立,但是沒有與鄰居建立鄰接關系。這是建立鄰接關系以前的最高級狀態。

1-Way Received:此事件表示路由器發現自己沒有在鄰居發送Hello報文的鄰居列表中,通常是由于對端鄰居重啟造成的。

ExStart:這是形成鄰接關系的第一個步驟,鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。主從關系是在此狀態下形成的;初始DD序列號是在此狀態下決定的。在此狀態下發送的DD報文不包含鏈路狀態描述。

Exchange:此狀態下路由器相互發送包含鏈路狀態信息摘要的DD報文,描述本地LSDB的內容。

Loading:相互發送LS Request報文請求LSA,發送LS Update通告LSA。

Full:兩臺路由器的LSDB已經同步。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 路由器
    +關注

    關注

    22

    文章

    3707

    瀏覽量

    113541
  • OSPF
    +關注

    關注

    0

    文章

    80

    瀏覽量

    14871
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27478

原文標題:OSPF狀態機詳細過程,網絡工程師收藏!

文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Verilog狀態機+設計實例

    在verilog中狀態機的一種很常用的邏輯結構,學習和理解狀態機的運行規律能夠幫助我們更好地書寫代碼,同時作為一種思想方法,在別的代碼設計中也會有所幫助。 一、簡介 在使用過程中我們常說
    的頭像 發表于 02-12 19:07 ?3829次閱讀
    Verilog<b class='flag-5'>狀態機</b>+設計實例

    如何寫好狀態機

    如何寫好狀態機:狀態機是邏輯設計的重要內容,狀態機的設計水平直接反應工程師的邏輯功底,所以許多公司的硬件和邏輯工程師面試中,狀態機設計幾乎是必選題目。本章在引入
    發表于 06-14 19:24 ?97次下載

    OSPF協議詳解

    OSPF協議詳解:OSPF協議概述,OSPF的鄰居狀態機OSPF與路由自環,
    發表于 09-09 22:20 ?50次下載
    <b class='flag-5'>OSPF</b>協議<b class='flag-5'>詳解</b>

    狀態機舉例

    狀態機舉例 你可以指定狀態寄存器和狀態機狀態。以下是一個有四種狀態的普通狀態機。 // Th
    發表于 03-28 15:18 ?975次閱讀

    狀態機代碼生成工具

    狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具
    發表于 11-19 15:12 ?9次下載

    狀態機原理及用法

    狀態機原理及用法狀態機原理及用法狀態機原理及用法
    發表于 03-15 15:25 ?0次下載

    狀態機概述 如何理解狀態機

    本篇文章包括狀態機的基本概述以及通過簡單的實例理解狀態機
    的頭像 發表于 01-02 18:03 ?1w次閱讀
    <b class='flag-5'>狀態機</b>概述  如何理解<b class='flag-5'>狀態機</b>

    狀態機如何簡化PLC程序的編寫

    在PLC程序的編寫過程中,可以使用狀態機的控制思路,將一些復雜的控制過程使用狀態機的方法處理。這里簡單給大家介紹一下什么是狀態機?如下圖所示
    的頭像 發表于 09-10 14:44 ?3880次閱讀
    <b class='flag-5'>狀態機</b>如何簡化PLC程序的編寫

    FPGA:狀態機簡述

    本文目錄 前言 狀態機簡介 狀態機分類 Mealy 型狀態機 Moore 型狀態機 狀態機描述 一段式
    的頭像 發表于 11-05 17:58 ?7302次閱讀
    FPGA:<b class='flag-5'>狀態機</b>簡述

    簡單的狀態機入門知識詳解

    今天的文章只是帶大家入門和了解一下狀態機,等你真正在工作當中有遇到這個狀態機作為開發需要的話,你再去深入研究。
    的頭像 發表于 12-24 18:06 ?1851次閱讀

    OSPF鄰居狀態機詳細講解

    OSPF,全稱Open Shortest Path First,即開放最短路徑優先,是由IETF的OSPF工作組在1989年10月開發的,發表的RFC為1131, OSPFv1從此誕生,該協議是基于著名的DijKstra算法。
    的頭像 發表于 12-26 02:12 ?1085次閱讀

    Verilog設計過程狀態機的設計方法

    “本文主要分享了在Verilog設計過程狀態機的一些設計方法。 關于狀態機 狀態機本質是對具有邏輯順序或時序順序事件的一種描述方法,也就是說具有邏輯順序和時序規律的事情都適用
    的頭像 發表于 06-25 11:04 ?2547次閱讀

    什么是狀態機狀態機5要素

    玩單片還可以,各個外設也都會驅動,但是如果讓你完整的寫一套代碼時,卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學會一種好的編程框架或者一種編程思想!比如模塊化編程、狀態機編程、分層思想
    的頭像 發表于 07-27 11:23 ?2w次閱讀
    什么是<b class='flag-5'>狀態機</b>?<b class='flag-5'>狀態機</b>5要素

    狀態模式(狀態機)

    以前寫狀態機,比較常用的方式是用 if-else 或 switch-case,高級的一點是函數指針列表。最近,看了一文章《c語言設計模式–狀態模式(狀態機)》(來源:embed linux
    發表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態</b>模式(<b class='flag-5'>狀態機</b>)

    什么是狀態機狀態機的種類與實現

    狀態機,又稱有限狀態機(Finite State Machine,FSM)或米利狀態機(Mealy Machine),是一種描述系統狀態變化的模型。在芯片設計中,
    的頭像 發表于 10-19 10:27 ?9009次閱讀