日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

(5)自己詳細的說說ospf

 qweertt4747 2017-02-24
    這兩天把TCP/IP的ospf稍微詳細的看了一遍。在這里總結一下。以便以后復習
總結的都是用我自己的語言總結,很多地方可能不太恰當。請多指正


一、ospf的基本知識
      ospf   開放最短路徑優(yōu)先協(xié)議     鏈路狀態(tài)類路由協(xié)議
      屬于3層,沒有使用上層的tcp或者udp,所以沒有確認機制。但是使用自己的lsack來確認更新
      五個包,hello,DBD,LSR,LSU,LSACK。

二、spf算法
       一句話簡短的概括:節(jié)點以自己為根節(jié)點,計算確定到目標節(jié)點的最短路徑。
       路由器創(chuàng)建三個庫。用來運行spf算法。
       1、樹數(shù)據(jù)庫:通過向數(shù)據(jù)庫中添加分支實現(xiàn)向最短路徑樹中添加鏈路(分支),最終這個庫描述最短的路徑
       2、候選對象數(shù)據(jù)庫:按順序從鏈路數(shù)狀態(tài)數(shù)據(jù)庫向該庫中復制鏈路,作為向樹中添加的候選對象
       3、鏈路狀態(tài)數(shù)據(jù)庫:這個數(shù)據(jù)庫中,存有所有的鏈路

       spf運行過程:
        路由器以自己為根節(jié)點,先從鏈路狀態(tài)數(shù)據(jù)庫中,取出離自己最近的幾臺(他的鄰居)路由器,將他們放到候選對象數(shù)據(jù)庫,在候選對象數(shù)據(jù)庫中,計算到他們的代價,把最小的代價的“一條”鏈路放到樹數(shù)據(jù)庫中。這里之所以說是“一條”,假如說上面候選數(shù)據(jù)庫中有三條鏈路,但是他們前往的是不同的目標,但是只放“一條”,然后再重復查找候選數(shù)據(jù)庫,再找”一條“最短的候選對象,放到樹數(shù)據(jù)庫。當在候選數(shù)據(jù)庫中有兩條到同一目標的候選對象,將花費最小的放到樹數(shù)據(jù)庫,其他的刪除。
        然后再以根節(jié)點最近的那幾臺路由器(上一步中假設的三臺路由器)為跟節(jié)點,重復上面的步驟。
        這樣一級一級的擴散,感覺上類似于RSTP那樣,一級一級的擴散。直到最后計算完成。
        在SPF算法計算完成后:
         候選對象數(shù)據(jù)庫應該是空的。
         鏈路狀態(tài)數(shù)據(jù)庫不變,里面依然有所有的路徑
         樹數(shù)據(jù)庫中應該有到達所有目標的最佳路徑。(我認為就是路由表中的路徑了)

三、區(qū)域的概念、
       在距離矢量路由協(xié)議中,路由更新是擴散在整個AS中的。這樣浪費了很多的帶寬,白白消耗了資源(如cpu、內存),廣播(組播)范圍很大。而且沒有層次結構。不適合大型的網絡拓撲。
       這些缺點,在ospf中都得到了克服。因為ospf引入了區(qū)域的概念。
       在一個ospf區(qū)域一般情況是不希望找過50臺路由器。但是這不是絕對的,因為區(qū)域內路由器的數(shù)量和路由器的性能有很大的關系。比如,路由器需有用spf算法計算路徑,CPU的性能就比較重要,路由器數(shù)很多,要求的cpu就比較高。內存中存著ospf中的數(shù)據(jù)庫,如果路由器很多,對內存的要求也比較大
        注:在這里再說一下,在一個區(qū)域內,是路由器是根據(jù)LSDB中的信息,確定路徑。但是在區(qū)域間,是依賴中間路由器來確定相應的路徑。這就不是鏈路狀態(tài)了,而是距離矢量了。

四、ospf主要的四類區(qū)域
       1、多路訪問區(qū)域:多個路由器接在同一個交換機上。
       2、點到點:感覺上,應該是兩臺路由器通過串行線鏈接一起。
       3、虛鏈路:默認所有的普通區(qū)域都要和骨干區(qū)域(area 0)相鏈,如果有個別區(qū)域因為沒規(guī)劃好,沒有辦法和骨干區(qū)域相連,就要建立需鏈路
       4、NBMA:非廣播多路訪問。感覺上一般是應用的幀中繼環(huán)境上。
       5、點到多點:屬于NBMA中一個特殊的情況

五、路由器端口的角色、鄰接關系、鄰居關系
       這里主要說多路訪問環(huán)境
       1、多路訪問環(huán)境:
          路由器端口會選舉DR、BDR。DR的職責是同步該多路訪問環(huán)境中的鏈路狀態(tài)數(shù)據(jù)庫(下面稱LSDB),這個在后面還會細說。BDR是在DR的備份,當DR掛掉的時候,BDR直接接管DR的工作。DRother會去像DR同步LSDB
       這里需要強調幾點:a、DR,BDR是基于端口的。為什么這么說,假如一臺路由器跨越兩個區(qū)域(ABR),兩個區(qū)域的端口是獨立選舉DR的。
                                       b、DR的選舉規(guī)則,是先比較優(yōu)先級,cisco默認為1,越大越優(yōu)先。如果優(yōu)先級為0,那么相當于主動放棄DR選舉的權利。當優(yōu)先級相等,那么再比較routeID,越大越優(yōu)先。routeID的選舉規(guī)則為,手動指定>環(huán)回接口>IP最大的活動的物理接口。
                                       c、剛開還沒收斂的時候,每一個路由器都宣告自己是DR,收斂完成以后,選舉出一個DR。
                                       d、DR具有不搶占特性。當一個多路網絡環(huán)境選舉完DR以后,再接入一個優(yōu)先級更大的路由器,不會改變DR。除非重啟區(qū)域內所有的ospf進程,才會從新選舉。
          DRother之間,建立雙向關系(2-way),這種關系稱為鄰居關系。他們之間不同步LSDB
          DRother和DR,DRother和BDR之間,處于full狀態(tài)。這種關系稱為鄰接關系。他們之間同步LSDB

       2、點到點環(huán)境:
             這個相對簡單一點,兩臺路由器之間通過串行線鏈接在一起,他們不選舉DR或者BDR。但是他們建立鄰接關系(full),所以他們之間一定會同步LSDB。


六、ospf的兩個組播地址
        allrouteradress:224.0.0.5     所有路由器地址。這個地址接受者是所有的路由器,一般是由DR,BDR發(fā)出
        allDRadress:224.0.0.6             DR地址,這個地址接收者是DR,一般是DRother發(fā)給DR用的
       注:在廣播(多路訪問)環(huán)境中,使用的是兩個組播來進行發(fā)送路由更新,hello等
              在點到點鏈路中,通過使用。5這個組播來發(fā)送更新和hello
              在虛鏈路,NBMA中,是通過單波來進行通信的。

七、細說五個包:
       1、hello:
            作用:發(fā)現(xiàn)鄰居、路由器間幾個基本信息的確認、確定鄰居活著、選舉DR、BDR。
            hello中的信息:a、自己的routeID
                                     b、自己的區(qū)域ID
                                     c、始發(fā)接口地址
                                     d、認證信息
                                      e、hello、dead時間
                                      f、路由器優(yōu)先級
                                      g、指定DR、BDR
                                      h、鄰居的routeID
             在多路訪問環(huán)境下,默認hello是10秒。dead時間默認是hello的四倍。
             在非廣播環(huán)境中,hello時間默認是30s,dead默認也是四倍。
          2、DBD
             數(shù)據(jù)庫描述包 
             作用:DBD中保存著LSDB中的摘要信息??盏腄BD用在exstart狀態(tài),確定鄰接關系間主/從關系用
               DBD中一般保存這LSA的頭部信息??梢晕ㄒ坏拇_定LSA
          3、LSR
              鏈路狀態(tài)請求包
             當收到的DBD中發(fā)現(xiàn)有LSA不在自己的LSDB,或者自己的LSDB中的LSA已經太舊了。那么就會發(fā)送需要的LSA的頭部,去請求LSA。
          4、LSU
               鏈路狀態(tài)更新包
              主要是通告鏈路狀態(tài)信息
               可以回應LSR,也可以主動去泛洪。LSU里面一般包含多條LSA。
          5、LSACK
               用來完成確認。一般是由單播來發(fā)送的。
 注:這里需要注意一點,在廣播環(huán)境中,雖然LSU一般是通過組播發(fā)送的。但是當有一臺路由器沒有回發(fā)LSACK的時候,會從新使用單播,單獨的去發(fā)LSU給沒有回復確認的主機。

八、ospf進程啟動,鄰居的建立過程。十分重要
        1、down狀態(tài):這是鄰居建立的最初始狀態(tài)。在最近一個dead時間內,還沒有收到hello包。但是在這個狀態(tài),應該已經開始發(fā)送hello包了。這個hello包里面,DR字段為0.0.0.0,因為還沒有選DR,而且鄰居字段為空。還沒有鄰居的信息
        注:down狀態(tài)完了以后,還有一個attempt狀態(tài)。這個狀態(tài)只用在NBMA狀態(tài)。這個狀態(tài)不太重要,忽略了
        2、init狀態(tài):在這個狀態(tài)中,路由器收到鄰居發(fā)送的hello包。但是收到的這個hello包里面鄰居信息還是空的。
        3、2-way狀態(tài):在這個狀態(tài)中,收到了鄰居的hello包,但是在這個階段,收到的hello包中,已經有自身的信息,說明鄰居已經獲得了自己的信息。這就說明完成了2-way狀態(tài)。一般情況下,DR是在這個狀態(tài)中選舉完成的。
        4、exstart狀態(tài):在這個狀態(tài)中,DRother和DR/BDR之間確立主從關系。具有最高routeID的路由器將稱為主路由器。主路由器優(yōu)先發(fā)送空的DBD,宣告自身為主,收到空DBD的路由器會查看對方的routeID和自己的,如果自己的大,那么發(fā)送空的DBD宣告自己為主,如果對方的大,那么承認對方為主。主路由器只是優(yōu)先發(fā)送DBD,僅此而已。
         注:DBD中有三個位,I、MS、M 。I為1,標識這個是初始的DBD,第一個DBD。協(xié)商DBD序列號,或者一般確立主從關系的那個空DBD會標注i=1。MS位標識是主從關系,如果自己是主的話,這里MS=1,M標識DBD包是否發(fā)完了,如果M=0,標識這是最后一個DBD包,后面沒有了。這個過程一般是在exchange中,才會標識為M=0。
        5、exchange狀態(tài):這個狀態(tài)中,路由器會相互發(fā)送包含LSA頭部的DBD,用來同步LSDB的摘要。
        6、load狀態(tài):這個狀態(tài)中,路由器會根據(jù)DBD同步好的LSDB去發(fā)送LSR,LSU,同步整張LSDB。
        7、full:在這個狀態(tài)下,DRother和DR/BDR之間建立了完全鄰接狀態(tài)(full)

九、LSA泛洪的三個重要的參數(shù):序列號,校驗和,老化時間
        我大概摘要的說一下:
        序列號:每一個LSA都會有一個序列號,這個序列號主要的作用是用來標識這條LSA是否為最新的LSA。當有更新的LSA的時候,序列號會自動增加1。序列號是32位有符號數(shù),初始的號貌似是隨機的。假如說達到最大的值的時候,就會刪除LSDB中老的LSA,LSA老不老,是根據(jù)老化時間來看的。
        老化時間:LSA最大的生存時間是3600秒,就是一個小時。ospf不是30分鐘就會泛洪一次LSA么,這個目的是為了保證LSDB中的LSA是同步的,沒有錯的,現(xiàn)在還有效的。這個時候,老化時間就會清零。保證老化時間沒有達到3600秒。當需要刪除老的LSA的時候,就會把該條LSA的老化時間設置為3600秒,泛洪這條老化時間為3600的LSA,像其他路由器表示清除這條LSA。
          這里需要注意的是,LSA沒過30分鐘就會泛洪一次,這個工作是由該LSA的始發(fā)路由器先泛洪的,泛洪給DR,然后再由DR泛洪給所有的路由器。而且這個泛洪,是基于每一條LSA的。也就是說,每一條LSA都有一個自己的計時器,30分鐘就泛洪。這么多的目的是為了防止每個30分鐘,鏈路的路由流量就會統(tǒng)一泛洪,對網絡造成影響。還需要補充的一點是,為了增加LSA泛洪的效率,每次泛洪一條確實不利于網絡的利用(每個包都有一個包頭,內容卻只有一條LSA,不太好)。所以LSA泛洪設置了一個抖動時間,默認是4min,這么做的好處是,一條LSA泛洪,在36-34分鐘內,如果有其他的LSA也泛洪,那么他們可以放在一起泛洪。
          校驗和:16位的整數(shù),計算了除老化時間(因為老化時間是不停變化的)以外LSA的所有部分。每過5min就校驗一次,用來保證路由器里面存儲的LSA的正確性。


十、LSA新舊比較的方法
         1、先比較LSA的序列號、大的說明更新
         2、序列號相同,比較校驗和,如果校驗和大,說明更新(我也不明白為什么)
         3、校驗和相同,比較老化時間,如果老化時間為3600,那么說明這條LSA是最新的LSA(因為要刪除這條LSA。)
         4、如果兩條老化時間相差大于15min,選擇老化時間最小的那條LSA
         5、上面的都比不出來,說明兩條LSA是一樣一樣的。

十一、引用RFC2328、鄰接關系的創(chuàng)建過程
        A-------------------B
        1、A:hello:DR=0.0.0.0,已知鄰居,0
        A發(fā)出hello,說不知道DR是誰,已知鄰居為0,告訴B
        2、B:hello:DR=B,已知鄰居,A
        B發(fā)出hello,說我比較出來,發(fā)現(xiàn)咱們來之間我是DR,我已經知道了A這個鄰居
        這時候A收到了B發(fā)出的hello包,發(fā)現(xiàn)B已經知道了自己這個鄰居。
        3、A:空DBD:seq=x,I=1,MS=1,M=1
            A發(fā)出空的DBD,說明自己的序列號為x,是初始的DBD(i=1),自己是主路由器(MS=1),這不是最后一個DBD(M=1)
         4、B:空DBD:seq=y,i=1,MS=1,M=1
            B發(fā)出空的DBD,聲明自己的序列號為y,是初始的DBD(I=1),我的routeID更大,我才是真正的主路由器,你一邊完蛋去(MS=1),這不是最后一個DBD,后面還有(M=1)。
         5、A:DBD:seq=y,i=0,MS=0,M=1
              A發(fā)出DBD,A承認B為主路由器,所以A為從,序列號遵循B給的序列號y,確認一下(我認為這個包就是這樣的作用)
         6、B:DBD:seq=y+1,i=0,MS=1,M=1
              B發(fā)出DBD,開始發(fā)送LSDB的摘要,實際是LSA的頭部信息。LSA頭部信息已經足夠標識每個LSA了
          7、A:DBD:seq=y+1,i=0,MS=0,M=1
              A發(fā)出DBD包,使用的還是B剛發(fā)過來的這個序列號,表示確認剛才收到的數(shù)據(jù)包。
         8、A、B之間重復上面6、7的過程,不停的發(fā)送DBD,用來同步LSDB的摘要。直到B發(fā)出M=0的包,說明沒有更多的摘要了,LSDB的摘要已經發(fā)完了。然后A回復一個摘要,說OK,我知道了,M=0。
         9、A:LSR
              A發(fā)送LSR,根據(jù)自己的剛來的LSDB的摘要(DBD),請求相關的信息LSA,來填充自己的LSDB。
         10、B:LSU
              B發(fā)送LSU,根據(jù)A發(fā)來的LSR,回復相應的完整的LSA。
          11、重復9.10兩個步驟。
          12、LSDB同步完成,進入完全鄰接狀態(tài)。

這個知識點只是對于第八個知識點的又進一步的說明。根據(jù)上面的情況,大概可以這么對照起來
         down:1之前應該是,或者包括1。  這個地方沒有詳細的說明。我覺得分的不是很明確。(這里我用我覺得最明確的解釋來說明)
         init:實際上是過程1的時候B的狀態(tài)。(收到了沒有包含自己信息的hello包)
         2-way:在2階段。A就進入了雙向階段。實際上,后面這里雖然沒有解釋B是不是進入2-way狀態(tài),自己想想,A、B之間的hello是在不停的發(fā)送的。所以B肯定也很快進入了2-way狀態(tài),只是這里沒有詳細說
         exstart:3、4、5。用來確定主從關系的。
         exchange:6、7、8。交換DBD包,同步LSDB摘要
         load:9、10、11。通過DBD交換的摘要信息,來發(fā)送LSR,LSU。填補整張LSDB
         full:12

上面這個雖然是RFC給的標準例子,但是看完以后,我有了很多困惑
          在exstart階段,確立了主從關系,A為從,B為主。主(B)主動的發(fā)送DBD,讓B去同步。但是B不一定就是DR啊,主從關系是根據(jù)routeID來選舉的。但是DR最先考慮的是優(yōu)先級,也就是說假如B的優(yōu)先級大,但是routeID小,那么B就是DR,但是并不是主?;蛘哒麄€廣播型網絡已經收斂完成了,DR已經選舉好,這時候又加進來一臺路由器。他肯定不是DR,因為DR已經選舉了,并且不能搶占。這時候新加進來這臺路由器,她應該向DR同步DBD,也就是說DR先發(fā)送DBD,但是假如新加進來的這臺路由器是主。那主拿什么去同步給DR啊。
          這個我做實驗,而且也驗證了,debug ip ospf adj。上面的情況確實發(fā)生了。而且也是嚴格按照RFC的那樣,去發(fā)送包的。所以我認為可以這么理解主從關系:主從關系只是確立了誰先發(fā)送DBD數(shù)據(jù)包。但是同步實際上是雙向同步的。
        

十二、ospf的路由更新過程總結概括(多路訪問)
           通過上面那些解釋,現(xiàn)在可以明白。實際上,所有的路由同步,都是在full狀態(tài)下同步的。也就是說,只有建立鄰接關系的路由器之間才能同步LSA。2-way之間不發(fā)送LSA。
           當一臺路由器的路由信息發(fā)生改變,她會發(fā)送LSA,使用allDRadress地址224.0.0.6。 去發(fā)送給DR和BDR,然后DR再去同步給其他的所有DRother。這個情況也可以適用于新進來的一臺路由器。

十三、LSA泛洪
           概括的說,ospf雖然是觸發(fā)更新,依靠hello保持鄰居關系。但是每條LSA在每隔30分鐘的時候,還是會泛洪一次。這個前面也已經說了。

十四、路由器收到LSA后的行為
           1、DRother發(fā)現(xiàn)收到的LSA比自己的更新,那么添加到自己的LSDB中去,并且發(fā)送回去一個LSACK,用來確認。如果DR收到了,還要泛洪該條LSA,給所有的DRother。
           2、路由器收到了一條LSA,和自己的LSA一樣。丟棄該條LSA,并且回復LSACK。用來確認
           3、路由收到一條LSA,比自己的LSA更舊,那么丟棄這條LSA。并且發(fā)送自己的LSA給發(fā)來的路由器。這個貌似DR,DRother都適用。

十五、常用的6種LSA,這個就很重要了
           1類LSA。路由器LSA:自己的routeID,自己直連的鏈路信息。每一個路由器都會發(fā)送。
           2類LSA。網絡LSA:自己的端口IP和掩碼,以及多路訪問所鏈接的所有路由器。只有DR可以發(fā)送。
           3類LSA。區(qū)域匯總LSA:向不同區(qū)域宣告區(qū)域間的信息。由ABR發(fā)出
           4類LSA。ASBR匯總LSA:只是通告了ASBR的信息,ASBR的IP,掩碼為0.0.0.0,以及度量值。由離ASBR最近的ABR發(fā)出。
           5類LSA。自制系統(tǒng)外部LSA:宣告自制系統(tǒng)外部的路由信息。由ASBR發(fā)出。需要注意的是,5類本身是可以穿越整個ospf系統(tǒng)的。
           7類LSA。NSSA外部LSA:作用和五類的LSA一樣。但是只能在NSSA區(qū)域傳播。在ABR上,7類會轉變成5類,然后在別的區(qū)域內傳播
 
十六、ospf區(qū)域類型
           1、普通區(qū)域,這個我就不說了,1-5類都是可以傳播的
           2、stub區(qū)域??梢詡鞑?-3類的LSA,在stub區(qū)域上,ABR將使用匯總LSA(3類)向這個區(qū)域宣告一條簡單的缺省路由,到ospf外部的AS。stub區(qū)域不能有ASBR
           3、totally stub區(qū)域(cisco私有):可以傳播1、2類的LSA,在完全stub區(qū)域上,ABR將使用匯總LSA(3類)向這個區(qū)域宣告一條缺省路由,不光到外部AS,到其他的區(qū)域,也會使用這條缺省路由
           4、nssa區(qū)域??梢詡鬏?-3類以及7類LSA。沒有生成缺省路由
           5、totally nssa區(qū)域(cisco私有):可以傳播1、2、7類LSA,我印象中也是可以生成缺省路由的。好想是到ospf其他區(qū)域的信息走缺省路由,到ASBR外部的走ASBR宣告進來的路由。

如果有什么還沒有說的,請大家留言。有什么地方說的不對的,也請告訴我,一起交流。
         

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多