天天看點

1.1.6 LSDB同步鄰接關系

鄰接關系

鄰接建立過程

講完了封包之後我們具體來看一下是怎麼同步的,我們可以看到下圖是我們LSDB的過程:

注意:

我們要注意,在到達同步過程之前我們先要達到2-way的狀态,就是我們首先要有鄰居狀态的建立,才有可能有下面的這些步驟。

1.1.6 LSDB同步鄰接關系

首先第一個是ExStart狀态:

在Exstart狀态中,是用于選舉我們的主從的,這裡我們可以看到,選舉主從主要是用到了DD封包。

對于最前面的這三個DD封包,實際上是不攜帶任何的路由摘要消息的,此時有人會問不攜帶路由摘要,那麼這個DD封包的作用是什麼?

現在我們來看一下它是如何去選舉主從的,首先對于RTA而言,它會發送一個DD封包。

  • 這裡有一個Seq,我們可以想象X是一個随機數,它的任意取值都是沒有關系的,可以取任意的值。
  • 第二個I代表的是這個是否是我的第一個DD封包,很明顯是。
  • 而M代表我是不是Master,此時也就是我是不是主,RTA在這裡并不知道RTB的情況肯定以為自己是主,那麼同樣是置為1,認為自己是MASTER。
  • 而MS是代表後面還沒有響應選舉的DD封包,這裡後面還是要去選舉DD的,還是要去發送封包資訊,是以也是置為1。

對于RTB來說也是一樣的,RTB收到了DD封包也是去比較我們的Router ID。

這裡對于DD封包,Router ID越大則會成為一個Master,此時RTB就知道自己已經是MASTER。

回複一個DD封包,Seq=Y,這個就是随機數,我們不用管他。

Y表示是不是我的第一個DD封包。

M表示自己是否為MASTER,現在認為自身是MASTER,是以也置為1。

MS表示後面還有沒有相應的選舉封包,這裡是有的,同樣也是置1。

此時RTA收到了DD封包之後,發現RTB的Router ID确實是比我大,那麼RTB就可以作為一個MASTER。

此時路由器就從ExStart變為Exchange狀态,也就是說代表主從去選舉完畢了。但是這裡RTA就會去回複一個DD封包。

這裡的這個DD封包,可以看到它的SEQ就是遵從于我的RTB的SEQ的值了,也就是說之後再去傳遞任何的DD封包,都是以Y為基礎。

在Y上面進行加一、加二等等,第一次傳輸就是加一,第二次傳輸就是加二。它在這裡就是以y為基礎去傳送我們的路由消息已經傳送我們的DD封包了。

這裡其實就可以去保證我們的可靠性了,這個也是選舉出主從的意義,為了保證雙方裝置的可靠性。

這個時候RTA認定RTB是我的DD封包,這個時候SEQ可以了解為一個會話ID,就置為y,它對于I、M、MS這三個參數在我們的封包中還是有的,但是隻不過這三個參數都是置0。

  • 因為I首先并不是我的第一個封包了,此時置為0。
  • 現在RTA很明顯不是Master,是從,是以M也置為0。
  • 現在因為是最後一個參與主從選舉的DD封包了,是以也是置為0了。

表示去認可RTB主從的地位。肯定RTB是RTA的主了,此時RTB收到了這個封包之後,就會從Exstart狀态變為Exchange。

而在Exchange狀态中它們就會開始正式的互動相應的摘要資訊了,此時RTB将我們相應的DD封包的摘要資訊發給RTA。

  • 這個時候我們的Seq等于Y+1,這是RTB第一次傳輸摘要資訊的封包。
  • 這個時候它後面跟着一個MS,表示後面還跟着其他的一些MS的封包。

然後對于Exchange狀态,RTA現在已經從Exchange狀态,到達了loading狀态。

同時它也會發送Seq=Y+1的封包,在這裡的話也就相應的去發送路由摘要的資訊給RTB。

那麼RTB假如收到了這個路由的摘要資訊之後,發現RTA在這裡的路由資訊我完全在之前已經都學習完成了,已經對所有的摘要資訊在我自己的LSDB鍊路狀态資料庫都存放好了。

那麼這個時候我并沒有重新要從RTA中重新擷取的資訊了,我就會直接從Exchange狀态變為Full狀态。

表示我不需要再去學習任何的路由消息了。

1.1.6 LSDB同步鄰接關系

對于RTA來說,假如說RTA在這裡有一些路有消息需要去學習,此時就會去發送LSR去請求響應的路由消息。

比如:

現在我想去學習2.2.2.2這個loopback口,即我去請求2.2.2.2這個32位的路由的消息,同時這裡隻是一個目的網段和一個掩碼的摘要資訊。

對于RTB就會回複一個詳細的路由資訊LSU。

包括Cost值、出接口等。

對于RTA。現在我收到了一個資訊的話,我就會去回複一些ACK的狀态。假如說RTA和RTB之間,RTA已經完全學習了RTB的全部路由消息之後已經到了Full狀态。

到了Full狀态之後就代表了鄰接關系的建立,這個就是整體的過程。

OSPF鄰居狀态機

1.1.6 LSDB同步鄰接關系

對于OSPF狀态機的描述,我們可以看一下:

首先第一個是Down狀态,對于Down狀态就代表我剛剛去發送Hello封包。

如果接收到了Hello封包就會進入到Init狀态。

這裡我們要注意有一個Attempt狀态。

Attempt狀态是在對應的NBMA網絡中,如果是NBMA網絡就會是Attempt狀态,即嘗試去建立。

然後進入到了Init狀态。

如果收到了對端的Hello封包我們會到達下一個狀态,即2-way狀态。

有部分的路由器鄰居關系會卡在2way狀态,當然有部分的路由器就可以進入到下一個狀态,即ExStart狀态。

在Exstart狀态會去選舉主從,主從選舉完成就會進入Exchange狀态。

對于Exchange狀态就會去開始互動DD封包。(完整則直接變為Full,不完整則進入Loading狀态去請求路由)

這裡的DD封包就攜帶了響應的路由摘要資訊,知道了對方的路由摘要之後就會開始去互相學習路由。

我們要注意,這裡的學習路由并不是1s、或者很短的時間内可以學習完成,肯定是需要一個過程的:

我想要去發送LSR請求,LSU收到相應的資訊,然後我再去确認。

此時我們在學習路由的這個過程就是一個Loading狀态。

最後,兩邊的路由封包已經學習完成之後,我們就進入到了最後的狀态,即Full狀态。