0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OSPF狀態(tài)機(jī)詳細(xì)過(guò)程簡(jiǎn)析

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來(lái)源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2023-04-07 17:53 ? 次閱讀

一、鄰居關(guān)系建立

狀態(tài)含義:

Down:這是鄰居的初始狀態(tài),表示沒(méi)有從鄰居收到任何信息。

Init:在此狀態(tài)下,路由器已經(jīng)從鄰居收到了Hello報(bào)文,但是自己的Router ID不在所收到的Hello報(bào)文的鄰居列表中,表示尚未與鄰居建立雙向通信關(guān)系。

2-Way:在此狀態(tài)下,路由器發(fā)現(xiàn)自己的Router ID存在于收到的Hello報(bào)文的鄰居列表中,已確認(rèn)可以雙向通信。

鄰居建立過(guò)程如下:

25c635f6-d528-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2。當(dāng)RTA啟動(dòng)OSPF后,RTA會(huì)發(fā)送第一個(gè)Hello報(bào)文。此報(bào)文中鄰居列表為空,此時(shí)狀態(tài)為Down,RTB收到RTA的這個(gè)Hello報(bào)文,狀態(tài)置為Init。

2、RTB發(fā)送Hello報(bào)文,此報(bào)文中鄰居列表為空,RTA收到RTB的Hello報(bào)文,狀態(tài)置為Init。

3、RTB向RTA發(fā)送鄰居列表為1.1.1.1的Hello報(bào)文,RTA在收到的Hello報(bào)文鄰居列表中發(fā)現(xiàn)自己的Router ID,狀態(tài)置為2-way。

4、RTA向RTB發(fā)送鄰居列表為2.2.2.2的Hello報(bào)文,RTB在收到的Hello報(bào)文鄰居列表中發(fā)現(xiàn)自己的Router ID,狀態(tài)置為2-way。

因?yàn)猷従佣际俏粗?,所以Hello報(bào)文的目的IP地址不是某個(gè)特定的單播地址。鄰居從無(wú)到有,OSPF采用組播的形式發(fā)送Hello報(bào)文(目的地址224.0.0.5)。

二、LSDB同步(一)

狀態(tài)含義:

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

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

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

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

LSDB同步過(guò)程如下:

25e0e202-d528-11ed-bfe3-dac502259ad0.png

1、RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2并且二者已建立了鄰居關(guān)系。當(dāng)RTA的鄰居狀態(tài)變?yōu)镋xStart后,RTA會(huì)發(fā)送第一個(gè)DD報(bào)文。此報(bào)文中,DD序列號(hào)被隨機(jī)設(shè)置為X,I-bit設(shè)置為1,表示這是第一個(gè)DD報(bào)文,M-bit設(shè)置為1,表示后續(xù)還有DD報(bào)文要發(fā)送,MS-bit設(shè)置為1,表示RTA宣告自己為Master。

2、當(dāng)RTB的鄰居狀態(tài)變?yōu)镋xStart后,RTB會(huì)發(fā)送第一個(gè)DD報(bào)文。此報(bào)文中,DD序列號(hào)被隨機(jī)設(shè)置為Y(I-bit=1,M-bit=1,MS-bit=1,含義同上)。由于RTB的Router ID較大,所以RTB將成為真正的Master。收到此報(bào)文后,RTA會(huì)產(chǎn)生一個(gè)Negotiation-Done事件,并將鄰居狀態(tài)從ExStart變?yōu)镋xchange。

3、當(dāng)RTA的鄰居狀態(tài)變?yōu)镋xchange后,RTA會(huì)發(fā)送一個(gè)新的DD報(bào)文,此報(bào)文中包含了LSDB的摘要信息,序列號(hào)設(shè)置為RTB在步驟2中使用的序列號(hào)Y(隱式確認(rèn)),I-bit=0,表示這不是第一個(gè)DD報(bào)文,M-bit=0,表示這是最后一個(gè)包含LSDB摘要信息的DD報(bào)文,MS-bit=0,表示RTA宣告自己為Slave。收到此報(bào)文后,RTB會(huì)產(chǎn)生一個(gè)Negotiation-Done事件,并將鄰居狀態(tài)從ExStart變?yōu)镋xchange。

4、當(dāng)RTB的鄰居狀態(tài)變?yōu)镋xchange后,RTB會(huì)發(fā)送一個(gè)新的DD報(bào)文,此報(bào)文包含了LSDB的摘要信息,DD序列號(hào)設(shè)置為Y+1, MS-bit=1,表示RTB宣告自己為Master。

5、雖然RTA不需要發(fā)送新的包含LSDB摘要信息的DD報(bào)文,但是作為Slave,RTA需要對(duì)Master發(fā)送的每一個(gè)DD報(bào)文進(jìn)行確認(rèn)。所以,RTA向RTB發(fā)送一個(gè)新的DD報(bào)文,序列號(hào)為Y+1,該報(bào)文內(nèi)容為空。發(fā)送完此報(bào)文后,RTA產(chǎn)生一個(gè)Exchange-Done事件,將鄰居狀態(tài)變?yōu)長(zhǎng)oading。RTB收到此報(bào)文后,會(huì)將鄰居狀態(tài)變?yōu)镕ull(假設(shè)RTB的LSDB是最新最全的,不需要向RTA請(qǐng)求更新)。

三、LSDB同步(二)

26018e44-d528-11ed-bfe3-dac502259ad0.png

1、RTA開(kāi)始向RTB發(fā)送LSR報(bào)文,請(qǐng)求那些在Exchange狀態(tài)下通過(guò)DD報(bào)文發(fā)現(xiàn)的、并且在本地LSDB中沒(méi)有的鏈路狀態(tài)信息。

2、RTB向RTA發(fā)送LSU報(bào)文,LSU報(bào)文中包含了那些被請(qǐng)求的鏈路狀態(tài)的詳細(xì)信息。RTA在完成LSU報(bào)文的接收之后,會(huì)將鄰居狀態(tài)從Loading變?yōu)镕ull。

3、RTA向RTB發(fā)送LSAck報(bào)文,作為對(duì)LSU報(bào)文的確認(rèn)。RTB收到LSAck報(bào)文后,雙方便建立起了完全的鄰接關(guān)系。

從建立鄰居關(guān)系到同步LSDB的過(guò)程較為復(fù)雜,錯(cuò)誤的配置或設(shè)備鏈路故障都會(huì)導(dǎo)致無(wú)法完成LSDB同步。為了快速排障,最關(guān)鍵的是要理解不同狀態(tài)之間切換的觸發(fā)原因。

四、整體流程圖

2623dc6a-d528-11ed-bfe3-dac502259ad0.png

這是形成鄰居關(guān)系的過(guò)程和相關(guān)鄰居狀態(tài)的變換過(guò)程。

Down:這是鄰居的初始狀態(tài),表示沒(méi)有從鄰居收到任何信息。在NBMA網(wǎng)絡(luò)上,此狀態(tài)下仍然可以向靜態(tài)配置的鄰居發(fā)送Hello報(bào)文,發(fā)送間隔為PollInterval,通常和Router DeadInterval間隔相同。

Attempt:此狀態(tài)只在NBMA網(wǎng)絡(luò)上存在,表示沒(méi)有收到鄰居的任何信息,但是已經(jīng)周期性的向鄰居發(fā)送報(bào)文,發(fā)送間隔為HelloInterval。如果Router DeadInterval間隔內(nèi)未收到鄰居的Hello報(bào)文,則轉(zhuǎn)為Down狀態(tài)。

Init:在此狀態(tài)下,路由器已經(jīng)從鄰居收到了Hello報(bào)文,但是自己不在所收到的Hello報(bào)文的鄰居列表中,表示尚未與鄰居建立雙向通信關(guān)系。在此狀態(tài)下的鄰居要被包含在自己所發(fā)送的Hello報(bào)文的鄰居列表中。

2-Way Received:此事件表示路由器發(fā)現(xiàn)與鄰居的雙向通信已經(jīng)開(kāi)始(發(fā)現(xiàn)自己在鄰居發(fā)送的Hello報(bào)文的鄰居列表中)。Init狀態(tài)下產(chǎn)生此事件之后,如果需要和鄰居建立鄰接關(guān)系則進(jìn)入ExStart狀態(tài),開(kāi)始數(shù)據(jù)庫(kù)同步過(guò)程,如果不能與鄰居建立鄰接關(guān)系則進(jìn)入2-Way。

2-Way:在此狀態(tài)下,雙向通信已經(jīng)建立,但是沒(méi)有與鄰居建立鄰接關(guān)系。這是建立鄰接關(guān)系以前的最高級(jí)狀態(tài)。

1-Way Received:此事件表示路由器發(fā)現(xiàn)自己沒(méi)有在鄰居發(fā)送Hello報(bào)文的鄰居列表中,通常是由于對(duì)端鄰居重啟造成的。

ExStart:這是形成鄰接關(guān)系的第一個(gè)步驟,鄰居狀態(tài)變成此狀態(tài)以后,路由器開(kāi)始向鄰居發(fā)送DD報(bào)文。主從關(guān)系是在此狀態(tài)下形成的;初始DD序列號(hào)是在此狀態(tài)下決定的。在此狀態(tài)下發(fā)送的DD報(bào)文不包含鏈路狀態(tài)描述。

Exchange:此狀態(tài)下路由器相互發(fā)送包含鏈路狀態(tài)信息摘要的DD報(bào)文,描述本地LSDB的內(nèi)容。

Loading:相互發(fā)送LS Request報(bào)文請(qǐng)求LSA,發(fā)送LS Update通告LSA。

Full:兩臺(tái)路由器的LSDB已經(jīng)同步。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3681

    瀏覽量

    113275
  • OSPF
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    14858
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    489

    瀏覽量

    27436

原文標(biāo)題:OSPF狀態(tài)機(jī)詳細(xì)過(guò)程是怎樣的?

文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog狀態(tài)機(jī)+設(shè)計(jì)實(shí)例

    在verilog中狀態(tài)機(jī)的一種很常用的邏輯結(jié)構(gòu),學(xué)習(xí)和理解狀態(tài)機(jī)的運(yùn)行規(guī)律能夠幫助我們更好地書(shū)寫(xiě)代碼,同時(shí)作為一種思想方法,在別的代碼設(shè)計(jì)中也會(huì)有所幫助。 一、簡(jiǎn)介 在使用過(guò)程中我們常說(shuō)
    的頭像 發(fā)表于 02-12 19:07 ?3423次閱讀
    Verilog<b class='flag-5'>狀態(tài)機(jī)</b>+設(shè)計(jì)實(shí)例

    OSPF協(xié)議詳解

    OSPF協(xié)議詳解:OSPF協(xié)議概述,OSPF的鄰居狀態(tài)機(jī)OSPF與路由自環(huán),OSPF調(diào)試與監(jiān)控
    發(fā)表于 09-09 22:20 ?50次下載
    <b class='flag-5'>OSPF</b>協(xié)議詳解

    狀態(tài)機(jī)舉例

    狀態(tài)機(jī)舉例 你可以指定狀態(tài)寄存器和狀態(tài)機(jī)狀態(tài)。以下是一個(gè)有四種狀態(tài)的普通狀態(tài)機(jī)。 // Th
    發(fā)表于 03-28 15:18 ?952次閱讀

    狀態(tài)機(jī)代碼生成工具

    狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具
    發(fā)表于 11-19 15:12 ?9次下載

    狀態(tài)機(jī)原理及用法

    狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機(jī)概述 如何理解狀態(tài)機(jī)

    本篇文章包括狀態(tài)機(jī)的基本概述以及通過(guò)簡(jiǎn)單的實(shí)例理解狀態(tài)機(jī)
    的頭像 發(fā)表于 01-02 18:03 ?1w次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>概述  如何理解<b class='flag-5'>狀態(tài)機(jī)</b>

    狀態(tài)機(jī)如何簡(jiǎn)化PLC程序的編寫(xiě)

    在PLC程序的編寫(xiě)過(guò)程中,可以使用狀態(tài)機(jī)的控制思路,將一些復(fù)雜的控制過(guò)程使用狀態(tài)機(jī)的方法處理。這里簡(jiǎn)單給大家介紹一下什么是狀態(tài)機(jī)?如下圖所示
    的頭像 發(fā)表于 09-10 14:44 ?3789次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>如何簡(jiǎn)化PLC程序的編寫(xiě)

    FPGA:狀態(tài)機(jī)簡(jiǎn)述

    本文目錄 前言 狀態(tài)機(jī)簡(jiǎn)介 狀態(tài)機(jī)分類(lèi) Mealy 型狀態(tài)機(jī) Moore 型狀態(tài)機(jī) 狀態(tài)機(jī)描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?7196次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機(jī)</b>簡(jiǎn)述

    OSPF鄰居狀態(tài)機(jī)詳細(xì)講解

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

    Verilog設(shè)計(jì)過(guò)程狀態(tài)機(jī)的設(shè)計(jì)方法

    “本文主要分享了在Verilog設(shè)計(jì)過(guò)程狀態(tài)機(jī)的一些設(shè)計(jì)方法。 關(guān)于狀態(tài)機(jī) 狀態(tài)機(jī)本質(zhì)是對(duì)具有邏輯順序或時(shí)序順序事件的一種描述方法,也就是說(shuō)具有邏輯順序和時(shí)序規(guī)律的事情都適用
    的頭像 發(fā)表于 06-25 11:04 ?2499次閱讀

    什么是狀態(tài)機(jī)狀態(tài)機(jī)5要素

    玩單片機(jī)還可以,各個(gè)外設(shè)也都會(huì)驅(qū)動(dòng),但是如果讓你完整的寫(xiě)一套代碼時(shí),卻無(wú)邏輯與框架可言。這說(shuō)明編程還處于比較低的水平,你需要學(xué)會(huì)一種好的編程框架或者一種編程思想!比如模塊化編程、狀態(tài)機(jī)編程、分層思想
    的頭像 發(fā)表于 07-27 11:23 ?2w次閱讀
    什么是<b class='flag-5'>狀態(tài)機(jī)</b>?<b class='flag-5'>狀態(tài)機(jī)</b>5要素

    如何以面向?qū)ο蟮乃枷朐O(shè)計(jì)有限狀態(tài)機(jī)

    有限狀態(tài)機(jī)又稱有限狀態(tài)自動(dòng)機(jī),簡(jiǎn)稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)計(jì)算模型,用英文縮寫(xiě)也被
    發(fā)表于 02-07 11:23 ?4次下載
    如何以面向?qū)ο蟮乃枷朐O(shè)計(jì)有限<b class='flag-5'>狀態(tài)機(jī)</b>

    OSPF狀態(tài)機(jī)詳細(xì)過(guò)程詳解

    Down:這是鄰居的初始狀態(tài),表示沒(méi)有從鄰居收到任何信息。
    的頭像 發(fā)表于 02-13 09:38 ?1428次閱讀

    什么是狀態(tài)機(jī)?狀態(tài)機(jī)的種類(lèi)與實(shí)現(xiàn)

    狀態(tài)機(jī),又稱有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(jī)(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型。在芯片設(shè)計(jì)中,
    的頭像 發(fā)表于 10-19 10:27 ?8580次閱讀

    在Verilog中實(shí)現(xiàn)Moore型和Mealy型狀態(tài)機(jī)的方法簡(jiǎn)

    編寫(xiě)能夠被綜合工具識(shí)別的狀態(tài)機(jī),首先需要理解狀態(tài)機(jī)的基本概念和分類(lèi)。狀態(tài)機(jī)(FSM)是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間轉(zhuǎn)換的邏輯結(jié)構(gòu)。
    的頭像 發(fā)表于 05-01 11:38 ?1250次閱讀