李寧丹,趙 輝
(中國人民解放軍31401部隊120分隊,遼寧 大連 116021)
隨著網絡規模逐漸擴大、網絡可靠性要求逐漸提高、網絡結構復雜化程度逐漸加深,路由信息協議(Routing Information Protocol,RIP)收斂速度慢、度量值不科學、擴展性差的弊端也在逐漸暴露,在這樣的時代背景下,開放式最短路徑優先(Open Shortest Path First,OSPE)協議應運而生[1]。OSPF協議能夠適應復雜多變的大規模網絡,其收斂速度快、路由分級化管理、支持多種驗證方式等特點使其在園區網、企業網中得到廣泛應用。
距離矢量協議類似路標,通過權重、跳數、開銷等因素影響路由計算。鏈路狀態協議類似地圖,通過全網泛洪鏈路狀態使協議內所有路由器都了解整個網絡的鏈路狀態信息,從而計算最優路徑,OSPF協議就是一種典型的鏈路狀態協議[2]。
一是區域防環,為避免區域間產生環路,OSPF協議規定非骨干區域間無法交互路由信息(不討論virtual-link情況),允許非骨干區域與骨干區域可以交互路由信息,非骨干區域必須與骨干區域相連,從而在邏輯關系上形成星型拓撲,實現路由傳遞;二是水平分割,OSPF協議規定區域邊界路由器會將Type-3 LSA轉發至骨干區域,從本區域始發的路由無法再次注入到本區域內;三是鏈路狀態通告(Line State Advertisement,LSA)防環,區域邊界路由器從非骨干區域學習Type-3 LSA,不會轉發或傳遞該LSA除非該路由器無骨干區域鄰居存在,從而防止次優路由產生。
OSPF協議通過7種狀態機描述協議交互、鄰居鄰接關系建立、鏈路狀態數據庫(Link State DataBase,LSDB)同步、LSA交換、路由計算與生成等狀態。
Down狀態:設備尚未啟用OSPF功能。
Attempt狀態:只存在于非廣播多路訪問網絡,表示路由器在向鄰居周期性發送Hello報文但并未收到回應。
Init狀態:初始化狀態,表示路由器收到對端發送的Hello報文。
2-way狀態:鄰居狀態,表示雙方路由器均收到對端發送的Hello報文并建立鄰居關系。
Exstart狀態:交換信息的初始化狀態,表示雙方路由器開始協商主從關系。
Exchange狀態:交換信息狀態,表示雙方路由器開始交互數據庫描述報文(Date Base Dscription,DBD)、鏈路狀態更新(Link State Update,LSU)、鏈路狀態請求(Link State Request,LSR)、SLAck報文。
Loading狀態:加載狀態,表示雙方路由器正在學習對方LSA的詳細信息并同步雙方路由器LSDB。
FULL狀態:鄰接狀態,表示雙方路由器LSDB完全同步并建立鄰接關系。
OSPF協議通過5種報文完成各個狀態機之間的交互轉換。
Hello報文:用于發現、維護鄰居關系,在廣播型、非廣播多路訪問網絡中能夠參與指定路由器(Designated Router,DR)/備份指定路由器(Backup Designated Router,BDR)選舉過程。
DD報文:在兩臺路由器確立主從關系并同步LSDB時,能夠描述路由器自身的數據庫信息。DD報文中包含數據庫每一條LSA的頭部信息,能夠極大程度上減少LSDB同步時產生的流量。
LSR報文:在路由器交換DD報文后,由缺失LSA的路由器發送LSR報文,向鄰居路由器請求缺少的LSA。
LSU報文:多條LSA報文的集合,用于路由器間交換缺失的LSA,實現區域內LSDB同步。
LSAck報文:對接收到的LSU報文進行確認。
LSA主要分有7類,分別由不同角色路由器產生,在各區域內相互傳遞,形成全網一致的LSDB并通過OSPF協議SPF算法計算生成樹,最終交換路由信息[3]。
Router LSA(Type-1):又稱路由器LSA,由所有路由器均產生,表述路由器自身的直連鏈路信息,只能在本區域內傳遞。
Network LSA(Type-2):又稱網絡LSA,由指定路由器產生,描述多點可達網絡中的路由器、網段、掩碼等信息,只能在本區域內傳遞。
Network-summary LSA(Type-3):又稱網絡匯總LSA,由區域邊界路由器產生,描述區域間路由信息,可以跨區域傳遞。
ASBR-summary LSA(Type-4):又稱自治系統邊界路由器(Auto no mous Sytem Bounlary Router,ASBR)匯總LSA,由區域邊界路由器產生,通告其他路由器ASBR位置。
AS-external LSA(Type-5):又稱AS外部LSA,由自治域邊界路由器產生,描述AS外部路由信息(其中包含Type 1-2兩類外部路由)。
NSSA-AS-external(Type-7):又稱末梢節區域(Not-So-Stubby Area,NSSA)AS外 部 LSA,由NSSA中區域邊界路由器產生描述NSSA區域引入的外部路由信息。
動態路由協議通常通過廣播報文尋找網絡內鄰居關系,所有廣播域內路由器接收到報文都會參與計算和響應,浪費資源。OSPF協議以組播形式發送協議報文,224.0.0.5表示發送給所有OSPF路由器,224.0.0.6表示發送給所有OSPF DR/BDR路由器,使啟用OSPF協議的路由器參與計算,減少了資源的浪費。
在廣播型網絡、非廣播多路訪問網絡中,OSPF協議會選舉一臺DR及一臺BDR,通過DR/BDR路由器與其他路由器(DRother)建立鄰接關系,從而降低ODPF流量,減少Mesh網絡中的鄰接關系數量(正常全互聯需要建立n(n-1)/2個鄰居關系),降低各路由器的計算負荷及處理壓力。在上述類型網絡中,鄰居建立完成后會根據路由器各接口優先級選舉DR/BDR角色(priority>router-id>環回地址>接口地址)。為防止路由震蕩,在DR路由器出現故障時,會由BDR路由器接任角色,后加入OSPF協議路由器不能搶占DR/BDR角色(除非所有OSPF進程重啟)。
OSPF協議支持4種網絡類型,分別為點到點網絡、廣播型網絡、非廣播多路訪問網絡、點到多點網絡。
點到點網絡(Point To Point,p2p):只有兩臺路由器直接相連的網絡,如運行PPP協議的串行線路。
廣播型網絡(broadcast):支持兩臺以上路由器,并且具有泛洪能力的網絡,如含有多臺路由器的以太網網絡。
非廣播多路訪問網絡(Non-Broadcast Multiple Access,NMBA):能夠組成多臺路由器全連接的網絡,如幀中繼或ATM網絡。
點到多點網絡(Point To Multiple Point,p2mp):能夠組成一點到多點且不構成全連接的網絡。
日常OSPF協議組網多為點到點網絡或廣播型網絡。
OSPF鄰接關系建立詳細過程如圖1所示。
RA路由器相關接口激活OSPF協議,定期向外發送Hello報文,此時RA路由器認為自身為DR路由器,但并不知曉網絡中其他鄰居位置及信息。
RB路由器收到RA路由器發送的Hello報文后,將RA RID加入Hello報文的Neighbors Seen字段(表示RB路由器收到RA路由器的Hello報文)對外宣告,RB路由器狀態機從Down→Init。
RA路由器在收到RB路由器Hello報文后,狀態機從Down→Two-way(鄰居狀態)。
RA/RB路由器均收到攜帶自身RID的Hello報文,進入Two-way狀態后,二者通過DD報文開始協商主從關系。
RA發送DD報文,宣告自己作為master(MS=1)并定義序列號Seq=X,其中I=1表示為第一個DD報文(不含有摘要信息),M=1表示并非最后一個報文,RA進入Exstart狀態。
RB收到RA發送的DD報文,回應一個DD報文(不帶有LSA摘要信息),并且RB RID較大,RB認為自己是master并重新規定序列號Seq=Y,RB進入Exchange狀態。
RA收到RB發送的DD報文,認同RB作為master角色,RA作為salve角色,并使有Seq=Y(RB規定)、I=0(開始交換摘要)、MS=0(認為自己是slave),RA進入Exchange狀態。
RB收到RA帶有摘要信息的DD報文,也向對方發送自己帶有摘要信息的DD報文,并將序列號Seq=Y+1。
雙方不停地通過DD報文交換摘要信息,并且由Master定義序列號Seq,每發送新的DD報文序列號Seq+1;slave每發送新的DD報文序列號沿用上一次Master發送的Seq,直至摘要信息全部交換完成,最后一個DD報文M=0,雙方將進入鏈路狀態數據庫LSDB同步階段。
RA收到RB發送的DD報文(M=0),且存在很多缺少的LSA,進入Loading狀態;RB收到RA發送的DD報文(M=0),LSA已全部同步完成,進入Full狀態。
RA向RB發送LSR報文請求更新LSA,RB發送LSU報文回應RA,RA更新數據庫內LSA并發送LSAck回應,直至所有LSA同步完成,RA進入Full狀態,二者建立鄰接關系[4]。
OSPF協議中普通區域會傳遞Type-1至Type-5類LSA,設備普遍存有較多路由條目且容易引發路由震蕩。而實際組網中葉子節點無需了解整個網絡路由情況,針對現網需求,OSPF協議引入特殊區域,分場景隔離LSA,進一步增強網絡可靠性[5]。
Stub(末節區域):不接收Type-4、Type-5類LSA,無法引入外部路由,內部網絡通過缺省路由(ABR宣告)訪問外部網絡。
Totally-stub(完全末節區域):不接收Type-3至Type-5類LSA,無法引入外部路由,內部網絡通過缺省路由(ABR宣告)訪問外部網絡。
NSSA:不接收Type-4、Type-5類LSA,可以引入外部路由(Type-7 LSA),可通過區域邊界路由(Area Border Router,ABR)、ASBR訪問外部網絡。
Totally-NSSA(完全次末節區域):不接收Type-3至Type-5類LSA,可以引入外部路由(Type-7 LSA),可通過ABR、ASBR訪問外部網絡。
OSPF協議認證方式主要有3種,分別為接口認證、區域認證、虛鏈路認證。只有通過認證的報文才能夠被路由器有效接收,建立鄰接關系并交互路由信息。
接口認證:在接口視圖進行配置,對本接口下報文進行認證。
區域認證:在OSPF區域進行配置,對區域內所有接口下報文進行認證。
虛鏈路認證:虛鏈路認證是一種特殊的接口認證。
此外,接口認證優先于區域認證。
伴隨科技飛速發展,OSPF協議也在不斷演進,從支持IPv6地址簇的OSPFv3協議,到與BFD、BGP、MPLS-VPN、TE工程等技術的聯動結合,OSPF協議正以嶄新的姿態在新網絡環境下扮演著無可替代的重要角色。