ospf

OSPF(Open Shortest Path First開放式最短路徑優先)[1]是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用於在單一自治系統(autonomous system,AS)內決策路由。與RIP相比,OSPF是鏈路狀態路由協議,而RIP是距離矢量路由協議。OSPF的協議管理距離(AD)是110。

  一。OSPF起源

  IETF爲了滿足建造越來越大基於IP網絡的需要,形成了一個工作組,專門用於開發開放式的、鏈路狀態路由協議,以便用在大型、異構的I P網絡中。新的路由協議以已經取得一些成功的一系列私人的、和生產商相關的、最短路徑優先(SPF )路由協議爲基礎, 在市場上廣泛使用。包括OSPF在內,所有的S P F路由協議基於一個數學算法—Dijkstra算法。這個算法能使路由選擇基於鏈路-狀態,而不是距離向量。OSPF由IETF在20世紀80年代末期開發,OSPF是SPF類路由協議中的開放式版本。最初的OSPF規範體現在RFC1131中。這個第1版( OSPF版本1 )很快被進行了重大改進的版本所代替,這個新版本體現在RFC1247文檔中。RFC 1247 OSPF稱爲OSPF版本2是爲了明確指出其在穩定性和功能性方面的實質性改進。這個OSPF版本有許多更新文檔,每一個更新都是對開放標準的精心改進。接下來的一些規範出現在RFC 1583、2178和2328中。OSPF版本2的最新版體現在RFC 2328中。最新版只會和由RFC 2138、1583和1247所規範的版本進行互操作。

  鏈路是路由器接口的另一種說法,因此OSPF也稱爲接口狀態路由協議。OSPF通過路由器之間通告網絡接口的狀態來建立鏈路狀態數據庫,生成最短路徑樹,每個OSPF路由器使用這些最短路徑構造路由表。

  OSPF路由協議是一種典型的鏈路狀態(Link-state)的路由協議,一般用於同一個路由域內。在這裏,路由域是指一個自治系統(Autonomous System),即AS,它是指一組通過統一的路由政策或路由協議互相交換路由信息的網絡。在這個AS中,所有的OSPF路由器都維護一個相同的描述這個AS結構的數據庫,該數據庫中存放的是路由域中相應鏈路的狀態信息,OSPF路由器正是通過這個數據庫計算出其OSPF路由表的。

  作爲一種鏈路狀態的路由協議,OSPF將鏈路狀態廣播數據LSA(Link State Advertisement)傳送給在某一區域內的所有路由器,這一點與距離矢量路由協議不同。運行距離矢量路由協議的路由器是將部分或全部的路由表傳遞給與其相鄰的路由器。

  二.OSPF的hello協議

  1.Hello協議的目的:

  1.用於發現鄰居

  2.在成爲鄰居之前,必須對Hello包裏的一些參數進行協商

  3.Hello包在鄰居之間扮演着keepalive的角色

  4.允許鄰居之間的雙向通信

  5.用於在NBMA(Nonbroadcast Multi-access)網絡上選舉DR和BDR

  2.Hello Packet包含以下信息:

  1.源路由器的RID

  2.源路由器的Area ID

  3.源路由器接口的掩碼

  4.源路由器接口的認證類型和認證信息

  5.源路由器接口的Hello包發送的時間間隔

  6.源路由器接口的無效時間間隔

  7.優先級

  8.DR/BDR接口IP地址

  9.五個標記位(flag bit)

  10.源路由器的所有鄰居的RID

  三.OSPF的網絡類型

  OSPF定義的5種網絡類型:

  1.點到點網絡 (point-to-point)

  2.廣播型網絡 (broadcast)

  3.非廣播型(NBMA)網絡 (non-broadcast)

  4.點到多點網絡 (point-to-multipoint)

  5.虛鏈接(virtual link)

  1.1.點到點網絡, 比如T1線路,是連接單獨的一對路由器的網絡,點到點網絡上的有效鄰居總是可以形成鄰接關係的,在這種網絡上,OSPF包的目標地址使用的是224.0.0.5,這個組播地址稱爲AllSPFRouters.

  2.1.廣播型網絡,比如以太網,Token Ring和FDDI,這樣的網絡上會選舉一個DR和BDR,DR/BDR的發送的OSPF包的目標地址爲224.0.0.5,運載這些OSPF包的幀的目標MAC地址爲0100.5E00.0005;而除了DR/BDR以外發送的OSPF包的目標地址爲224.0.0.6,這個地址叫AllDRouters.

  3.1.NBMA網絡, 比如X.25,Frame Relay,和ATM,不具備廣播的能力,因此鄰居要人工來指定,在這樣的網絡上要選舉DR和BDR,OSPF包採用unicast的方式

  4.1.點到多點網絡 是NBMA網絡的一個特殊配置,可以看成是點到點鏈路的集合. 在這樣的網絡上不選舉DR和BDR.

  5.1.虛鏈接: OSPF包是以unicast的方式發送

  所有的網絡也可以歸納成2種網絡類型:

  1.傳輸網絡(Transit Network)

  2.末梢網絡(Stub Network )

  四.OSPF的DR及BDR

  在DR和BDR出現之前,每一臺路由器和他的所有鄰居成爲完全網狀的OSPF鄰接關係,這樣5臺路由器之間將需要形成10個鄰接關係,同時將產生25條LSA.而且在多址網絡中,還存在自己發出的LSA 從鄰居的鄰居發回來,導致網絡上產生很多LSA的拷貝,所以基於這種考慮,產生了DR和BDR.

  DR將完成如下工作

  1. 描述這個多址網絡和該網絡上剩下的其他相關路由器.

  2. 管理這個多址網絡上的flooding過程.

  3. 同時爲了冗餘性,還會選取一個BDR,作爲雙備份之用.

  DR BDR選取規則: DR BDR選取是以接口狀態機的方式觸發的.

  1. 路由器的每個多路訪問(multi-access)接口都有個路由器優先級(Router Priority),8位長的一個整數,範圍是0到255,Cisco路由器默認的優先級是1優先級爲0的話將不能選舉爲DR/BDR.優先級可以通過命令ip ospf priority進行修改.

  2. Hello包裏包含了優先級的字段,還包括了可能成爲DR/BDR的相關接口的IP地址.

  3. 當接口在多路訪問網絡上初次啓動的時候,它把DR/BDR地址設置爲0.0.0.0,同時設置等待計時器(wait timer)的值等於路由器無效間隔(Router Dead Interval).

  DR BDR選取過程:

  1. 路由器X在和鄰居建立雙向(2-Way)通信之後,檢查鄰居的Hello包中Priority,DR和BDR字段,列出所有可以參與DR/BDR選舉的鄰居(priority不爲).

  2. 如果有一臺或多臺這樣的路由器宣告自己爲BDR(也就是說,在其Hello包中將自己列爲BDR,而不是DR),選擇其中擁有最高路由器優先級的成爲BDR;如果相同,選擇擁有最大路由器標識的。如果沒有路由器宣告自己爲BDR,選擇列表中路由器擁有最高優先級的成爲BDR,(同樣排除宣告自己爲DR的路由器),如果相同,再根據路由器標識。

  3. 按如下計算網絡上的DR。如果有一臺或多臺路由器宣告自己爲DR(也就是說,在其Hello包中將自己列爲DR),選擇其中擁有最高路由器優先級的成爲DR;如果相同,選擇擁有最大路由器標識的。如果沒有路由器宣告自己爲DR,將新選舉出的BDR設定爲DR。

  4.如果路由器X新近成爲DR或BDR,或者不再成爲DR或BDR,重複步驟2和3,然後結束選舉。這樣做是爲了確保路由器不會同時宣告自己爲DR和BDR。

  5. 要注意的是,當網絡中已經選舉了DR/BDR後,又出現了1臺新的優先級更高的路由器,DR/BDR是不會重新選舉的。

  6. DR/BDR選舉完成後,DRother只和DR/BDR形成鄰接關係.所有的路由器將組播Hello包到AllSPFRouters地址224.0.0.5以便它們能跟蹤其他鄰居的信息,即DR將泛洪update packet到224.0.0.5;DRother只組播update packet到AllDRouter地址224.0.0.6,只有DR/BDR監聽這個地址.

  簡潔的說:DR的篩選過程

  1.優先級爲0的不參與選舉;

  2.優先級高的路由器爲DR;

  3.優先級相同時,以router ID 大爲DR;

  router ID 以迴環接口中最大ip爲準;若無迴環接口,以真實接口最大ip爲準。

  4.缺省條件下,優先級爲1。

  五.OSPF鄰居關係

  鄰接關係建立的4個階段:

  1.鄰居發現階段

  2.雙向通信階段:Hello報文都列出了對方的RID,則BC完成.

  3.數據庫同步階段:

  4.完全鄰接階段: full adjacency

  鄰居關係的建立和維持都是靠Hello包完成的,在一般的網絡類型中,Hello包週期性的以HelloInterval秒發送,有1個例外:在NBMA網絡中,路由器每經過一個PollInterval週期發送Hello包給狀態爲down的鄰居(其他類型的網絡是不會把Hello包發送給狀態爲down的路由器的).Cisco路由器上PollInterval默認60s Hello Packet以組播的方式發送給224.0.0.5,在NBMA類型,點到多點和虛鏈路類型網絡,以單播發送給鄰居路由器。鄰居可以通過手工配置或者Inverse-ARP發現.

  OSPF路由器在完全鄰接之前,所經過的幾個狀態:

  1.Down:此狀態還沒有與其他路由器交換信息。首先從其ospf接口向外發送hello分組,還並不知道DR(若爲廣播網絡)和任何其他路由器。發送hello分組使用組播地址224.0.0.5。

  2.Attempt: 只適於NBMA網絡,在NBMA網絡中鄰居是手動指定的,在該狀態下,路由器將使用HelloInterval取代PollInterval來發送Hello包.

  3.Init: 表明在DeadInterval裏收到了Hello包,但是2-Way通信仍然沒有建立起來.

  4.two-way: 雙向會話建立,而RID彼此出現在對方的鄰居列表中。(若爲廣播網絡:例如:以太網。在這個時候應該選舉DR,BDR。)

  5.ExStart: 信息交換初始狀態,在這個狀態下,本地路由器和鄰居將建立Master/Slave關係,並確定DD Sequence Number,路由器ID大的的成爲Master.

  6.Exchange: 信息交換狀態,本地路由器和鄰居交換一個或多個DBD分組(也叫DDP) 。DBD包含有關LSDB中LSA條目的摘要信息)。

  7.Loading: 信息加載狀態:收到DBD後,將收到的信息同LSDB中的信息進行比較。如果DBD中有更新的鏈路狀態條目,則向對方發送一個LSR,用於請求新的LSA 。

  8.Full: 完全鄰接狀態,鄰接間的鏈路狀態數據庫同步完成,通過鄰居鏈路狀態請求列表爲空且鄰居狀態爲Loading判斷。

  六.OSPF泛洪

  Flooding採用2種報文

  LSU Type 4---鏈路狀態更新報文

  LSA Type 5---鏈路狀態確認報文

  (補充下)

  {

  Hello Type 1 ---Hello協議報文

  DD(Data Description) Type 2----鏈路數據描述報文

  LSR Type 3----鏈路狀態請求報文

  }

  在P-P網絡,路由器是以組播方式將更新報文發送到組播地址224.0.0.5.

  在P-MP和虛鏈路網絡,路由器以單播方式將更新報文發送至鄰接鄰居的接口地址.

  在廣播型網絡,DRother路由器只能和DR&BDR形成鄰接關係,所以更新報文將發送到224.0.0.6,相應的DR以224.0.0.5泛洪LSA並且BDR只接收LSA,不會確認和泛洪這些更新,除非DR失效 在NBMA型網絡,LSA以單播方式發送到DR和BDR,並且DR以單播方式發送這些更新.

  LSA通過LS類型、LS標識和宣告路由器來識別,並通過序列號、校驗和、老化時間判斷LSA新舊。

  Seq: 序列號(Seq)的範圍是0x80000001到0x7fffffff.

  Checksum: 校驗和(Checksum)計算除了Age字段以外的所有字段,每5分鐘校驗1次.

  Age: 範圍是0到3600秒,16位長.當路由器發出1個LSA後,就把Age設置爲0,當這個LSA經過1臺路由器以後,Age就會增加,1個LSA保存在LSDB中的時候,老化時間也會增加.

  當收到相同的LSA的多個實例(LS類型、LS標識、宣告路由器相同)的時候,將通過下面的方法來確定哪個LSA是最新的:

  1. 比較LSA實例的序列號,越大的越新.

  2. 如果序列號相同,就比較校驗和,越大越新.

  3. 如果校驗和也相同,就比較老化時間,如果只有1個LSA擁有MaxAge(3600秒)的老化時間,它就是最新的.

  4. 如果LSA老化時間相差15分鐘以上,(叫做MaxAgeDiff),老化時間越小的越新.

  5. 如果上述都無法區分,則認爲這2個LSA是相同的.

  六.OSPF區域

  區域長度32位,可以用10進制,也可以類似於IP地址的點分十進制,分3種通信量

  1. Intra-Area Traffic:域內間通信量

  2. Inter-Area Traffic:域間通信量

  3. External Traffic:外部通信量

  路由器類型

  1. Internal Router:內部路由器

  2. ABR(Area Border Router):區域邊界路由器

  3. Backbone Router(BR):骨幹路由器

  4. ASBR(Autonomous System Boundary Router):自治系統邊界路由器.

  虛鏈路(Virtual Link)

  以下2中情況需要使用到虛鏈路:

  1. 通過一個非骨幹區域連接到一個骨幹區域.

  2. 通過一個非骨幹區域連接一個分段的骨幹區域兩邊的部分區域.

  虛鏈接是一個邏輯的隧道(Tunnel),配置虛鏈接的一些規則:

  1. 虛鏈接必須配置在2個ABR之間.

  2. 虛鏈接所經過的區域叫Transit Area,它必須擁有完整的路由信息.

  3. Transit Area不能是Stub Area.

  4. 儘可能的避免使用虛鏈接,它增加了網絡的複雜程度和加大了排錯的難度.

  OSPF區域—OSPF的精華

  Link-state 路由在設計時要求需要一個層次性的網絡結構.

  OSPF網絡分爲以下2個級別的層次:

  骨幹區域 (backbone or area 0)

  非骨幹區域 (nonbackbone areas)

  在一個OSPF區域中只能有一個骨幹區域,可以有多個非骨幹區域,骨幹區域的區域號爲0。

  爲了避免迴環的產生,各非骨幹區域間是不可以交換LSA信息的,他們只有與骨幹區域相連,通過骨幹區域相互交換信息。

  非骨幹區域和骨幹區域之間相連的路由叫邊界路由(ABRs-Area Border Routers),只有ABRs記載了接入各區域的所有路由信息。各非骨幹區域內的非ABRs只記載了本區域內的路由表,若要與外部區域中的路由相連,只能通過本區域的ABRs,由ABRs連到骨幹區域的BR,再由骨幹區域的BR連到要到達的區域。

  骨幹區域和非骨幹區域的劃分,大大降低了區域內工作路由的負擔。

  七.LSA類型

  1.類型1:Router LSA:每個路由器都將產生Router LSA,這種LSA只在本區域內傳播,描述了路由器所有的鏈路和接口,狀態和開銷.

  2.類型2:Network LSA:在每個多路訪問網絡中,DR都會產生這種Network LSA,它只在產生這條Network LSA的區域泛洪描述了所有和它相連的路由器(包括DR本身)。

  3.類型3:Network Summary LSA :由ABR路由器始發,用於通告該區域外部的目的地址.當其他的路由器收到來自ABR的Network Summary LSA以後,它不會運行SPF算法,它只簡單的加上到達那個ABR的開銷和Network Summary LSA中包含的開銷,通過ABR,到達目標地址的路由和開銷一起被加進路由表裏,這種依賴中間路由器來確定到達目標地址的完全路由(full route)實際上是距離矢量路由協議的行爲。

  4.類型4:ASBR Summary LSA:由ABR發出,ASBR彙總LSA除了所通告的目的地是一個ASBR而不是一個網絡外,其他同Network Summary LSA.

  5.類型5:AS External LSA:發自ASBR路由器,用來通告到達OSPF自主系統外部的目的地,或者OSPF自主系統那個外部的缺省路由的LSA.這種LSA將在全AS內泛洪(4個特殊區域除外)

  6.類型6:Group Membership LSA

  7.類型7:NSSA External LSA:來自非完全Stub區域(not-so-stubby area)內ASBR路由器始發的LSA通告它只在NSSA區域內泛洪,這是與LSA-Type5的區別.

  8.類型8:External Attributes LSA

  9.類型9:Opaque LSA(link-local scope,)

  10.類型10:Opaque LSA(area-local scope)

  11.類型11:Opaque LSA(AS scope)

  八.OSPF末梢區域

  由於並不是每個路由器都需要外部網絡的信息,爲了減少LSA泛洪量和路由表條目,就創建了末節區域,位於Stub邊界的ABR將宣告一條默認路由到所有的Stub區域內的內部路由器.

  Stub區域限制:

  a) 所有位於stub area的路由器必須保持LSDB信息同步, 並且它們會在它的Hello包中設置一個值爲0的E位(E-bit),因此這些路由器是不會接收E位爲1的Hello包,也就是說在stub area裏沒有配置成stub router的路由器將不能和其他配置成stub router的路由器建立鄰接關係.

  b) 不能在stub area中配置虛鏈接(virtual link),並且虛鏈接不能穿越stub area.

  c) stub area裏的路由器不可以是ASBR.

  d) stub area可以有多個ABR,但是由於默認路由的緣故,內部路由器無法判定哪個ABR纔是到達ASBR的最佳選擇.

  e)NSSA允許外部路由被宣告OSPF域中來,同時保留Stub Area的特徵,因此NSSA裏可以有ASBR,ASBR將使用type7-LSA來宣告外部路由,但經過ABR,Type7被轉換爲Type5.7類LSA通過OSPF報頭的一個P-bit作Tag,如果NSSA裏的ABR收到P位設置爲1的NSSA External LSA,它將把LSA類型7轉換爲LSA類型5.並把它洪泛到其他區域中;如果收到的是P位設置爲0的NSSAExternal LSA,它將不會轉換成類型5的LSA,並且這個類型7的LSA裏的目標地址也不會被宣告到NSSA的外部NSSA在IOS11.2後支持.

  f)totally stub area完全的stub區域,連類型3的LSA也不接收。

  OSPF的包類型:

  類型號 包 作用 可靠性

  1 HELLO 1、用於發現鄰居2、建立鄰接關係3、維持鄰接關係4、確保雙向通信 5、選舉DR和BDR

  2 Database Description 數據庫的描述 DBD 可靠

  3 Link-state Request 鏈路狀態請求包 LSR 可靠

  4 Link-state Update 鏈路狀態更新包 LSU 可靠

  5 Link-state Acknowledment 鏈路狀態確認包 LSACK

  AS 自治系統(autonomous system):一組相互管理下的網絡,它們共享同一個路由選擇方法,自治系統由地區再劃分並必須由IANA分配一個單獨的16位數字。地區通常連接到其他地區,使用路由器創建一個自治系統。

  OSPF單區域及多區域的基本配置命令

  配置LOOPBACK接口地址

  ROUTER(config)#interface loopback 0

  ROUTER(config)#ip address IP地址 掩碼

  1.ospf區域的配置

  router ospf 100

  network 192.168.1.0 0.0.0.255 area 0

  router-id 192.168.2.1 手動設置router-id

  area 1 default-cost 50 手動設置開銷

  #clean ip ospf process

  2.配置ospf明文認證

  interface s0

  ip ospf authentication

  ip ospf authentication-key <密碼>

  3.配置ospf密文認證

  interface s0

  ip ospf authentication

  ip ospf message-digest-key 1 md5 7 <密碼>

  4.debug ip ospf adj 開啓ospf調試

  show ip protocols

  show ip ospf interface s0

  5.手動配置接口花銷,帶寬,優先級

  inter s0

  ip ospf cost 200

  bandwidth 100

  ip ospf priority 0

  6.虛鏈路的配置

  router ospf 100

  area <area-id> virtual-link <router-id>

  show ip ospf virtual-links

  Show ip ospf border-routers

  Show ip ospf process-id

  Show ip ospf database

  show ip ospf database nssa-external

  7.OSPF路由歸納

  Router ospf 1對ASBR外部的路由進行路由歸納

  Summary-address 200.9.0.0 255.255.0.0

  Router ospf 1執行AREA1到AREA0的路由歸納

  Area 1 range 192.168.16.0 255.255.252.0

  8.配置末節區域

  IR area <area-id> stub

  ABR area <area-id> stub

  9.配置完全末節區域

  IR area <area-id> stub

  ABR area <area-id> stub no-summary

  10.配置NSSA

  ASBR router ospf 100

  area 1 nssa

  ABR router ospf 100

  area 1 nssa default-information-orrginate

  OSPF協議主要優點:

  1、OSPF是真正的LOOP- FREE(無路由自環)路由協議。源自其算法本身的優點。(鏈路狀態及最短路徑樹算法)

  2、OSPF收斂速度快:能夠在最短的時間內將路由變化傳遞到整個自治系統。

  3、提出區域(area)劃分的概念,將自治系統劃分爲不同區域後,通過區域之間的對路由信息的摘要,大大減少了需傳遞的路由信息數量。也使得路由信息不會隨網絡規模的擴大而急劇膨脹。

  4、將協議自身的開銷控制到最小。見下:

  1)用於發現和維護鄰居關係的是定期發送的是不含路由信息的hello報文,非常短小。包含路由信息的報文時是觸發更新的機制。(有路由變化時纔會發送)。但爲了增強協議的健壯性,每1800秒全部重發一次。

  2)在廣播網絡中,使用組播地址(而非廣播)發送報文,減少對其它不運行ospf 的網絡設備的干擾。

  3)在各類可以多址訪問的網絡中(廣播,NBMA),通過選舉DR,使同網段的路由器之間的路由交換(同步)次數由 O(N*N)次減少爲 O (N)次。

  4)提出STUB區域的概念,使得STUB區域內不再傳播引入的ASE路由。

  5)在ABR(區域邊界路由器)上支持路由聚合,進一步減少區域間的路由信息傳遞。

  6)在點到點接口類型中,通過配置按需播號屬性(OSPF over On Demand Circuits),使得ospf不再定時發送hello報文及定期更新路由信息。只在網絡拓撲真正變化時才發送更新信息。

  5、通過嚴格劃分路由的級別(共分四極),提供更可信的路由選擇。

  6、良好的安全性,ospf支持基於接口的明文及md5 驗證。

  7、OSPF適應各種規模的網絡,最多可達數千臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章