一.OSPF基礎
1.特性
OSPF是目前使用最廣泛的IGP路由協議,屬于鏈路狀態路由協議,使用Dijkstra算法,也被稱為SPF(Short Path First最短路徑算法)。
IETF標準:OSPF可以被不同廠商的設備所支持
無環路由協議:執行的是SPF算法,不會產生路由環路
無類路由協議:支持VLSM(可變長子網掩碼)和CIDR(無類別域間路由)
擁有不受限的跳計數:可以應用于大型網絡
層次型:易拓展,路由器的負擔不會隨著網絡規模的增大而急劇增加
區域化設計:減少路由更新的流量,降低內存、cpu和帶寬的使用
快速收斂:使用觸發式更新,路由可以快速收斂
支持驗證:OSPF支持針對區域和鏈路的驗證
2.OSPF術語
鏈路(link):當一個接口加入OSPF進程,它就被認為是一個ospf鏈路
鏈路狀態(Link-State):鏈路的狀態信息,包括接口的IP地址和子網掩碼、接口網絡類型、鏈路的花費、鏈路上的鄰居
路由器ID(Router ID,簡稱RID):用于識別路由器的IP地址,可以手工指定;如果沒有指定,則選擇所有環回接口中最高的IP地址;若沒有環回口使用,選擇物理接口中最高的IP地址。
鄰居(Neighbor):連接在一個公共的網絡上的路由器(≥2)
鄰接(Adjacent):2臺路由器之間的關系,允許直接交換路由更新數據。OSPF只與建立了鄰接關系的鄰居共享路由信息。鄰居和鄰接沒有直接關系。
區域(Area):通過劃分區域實現分層設計
指定路由器(DR,Designated Router):OSPF路由器在多路訪問的網絡中需要DR,DR代表該多路訪問網絡中的所有路由器,每臺路由器都把拓撲變化發送給DR和BDR,然后DR通知該多路訪問網絡中的其他路由器。
備用的指定路由器(BDR,Backup Designated Router):備用DR,DR離線時代替DR工作。
花費(cost):每條鏈路都有一個花費,OSPF的唯一度量值。根據鏈路的帶寬計算而來,可以人為修改。
ABR(area?border?router):位于一個或多個OSPF區域邊界上、將這些區域連接到主干網絡的路由器。ABR被認為同時是OSPF主干和相連區域的成員。
ASBR(自治系統邊界路由器,Autonomous?System?Border?Router):一般是位于非OSPF區域和OSPF區域間互聯的路由器。ASBR可以運行OSPF和另一路由選擇協議(如RIP),把OSPF上的路由發布到其他路由協議上。ASBR必須處于非存根OSPF區域中。?在NSSA區域中,對7類LSA轉換為5類LSA的路由器也是ASBR。所以說,ASBR不一定在2個協議之間,對于產生5類LSA的都是ASBR?
3.基本配置
Router ospf 進程號
? ? network IP子網 反掩碼 area area-id
二.報文
1.報文格式
數據鏈路層頭部+IP包頭部+OSPF包頭+OSPF數據
數據鏈路層頭部:OSPF組播IP地址224.0.0.5(非DR和BDR使用的地址)和224.0.0.6(DR和BDR使用的地址),組播MAC地址對應01-00-5E-00-00-05/06
IP包頭部:協議號89,源IP是發送路由器的IP,目的IP是組播地址224.0.0.5/6
OSPF包頭:包括RID和區域號以及OSPF包類型
OSPF數據:每種OSPF包的具體內容
2.OSPF報頭格式
OSPF用IP報文直接封裝協議報文,協議號為89。OSPF分為5種報文:Hello報文、DBD報文、LSR報文、LSU報文和LSAck報文。
OSPF這五種報文具有相同的報文頭格式,長度為24字節。
Version:OSPF版本號,當前為OSPFv2。OSPFv1實驗版本,v3針對IPv6。
Type:包類型,1為Hello報文,2是DBD,3是LSR,4是LSU,5是LSAck
Packet length:報文長度
Router ID:路由器ID,每臺路由器的唯一標識
Area ID:區域號,主區域為0
Checksum:校驗和
Autype(Authentication Type):驗證類型。0:不使用,1:明文,2:MD5
Authentication:驗證相關信息,包括密碼
重點講Hello包和LSU的分類
①Hello包
Hello報文被用來建立和維護OSPF的鄰接關系。OSPF的Hello報文的作用主要有:發現OSPF鄰居,建立和維護鄰接關系;在多路訪問的網絡中選擇DR和BDR。
OSPF泛洪鏈路狀態通告給其他路由器之前,需要先建立鄰接關系。所有啟用OSPF協議的接口上都發送Hello報文,以判斷是否有其他ospf路由器運行在相同的鏈路上,一般以組播方式發送,組播IP:224.0.0.5。
②DBD(Database Description,數據庫狀態描述包)
DBD是發送路由器鏈路狀態數據庫的一個簡短描述。
③LSR(Link-State Request,鏈路狀態請求包)
接受路由器可以發送LSR來請求發送路由器DBD中的某些條目詳細信息。
④LSU(Link-State Update,鏈路狀態更新包)
用來更新OSPF路由信息,回復LSR請求。LSU被分成多種類型的LSA(Link-State Advertisement)
⑤LSAck(Link-State Acknowledgement,鏈路狀態確認)
當一個LSU被收到時,路由器發送LSAck進行確認
三.LSA類型
共11種類型LSA(鏈路狀態通告),其中6類常用
1、路由器LSA (Router LSA)
由區域內所有路由器產生,并且只能在本個區域內泛洪廣播。
這些最基本的LSA通告列出了路由器所有的鏈路和接口,并指明了它們的狀態和沿每條鏈路方向出站的代價。
2、網絡LSA (Network LSA)
由區域內的DR或BDR路由器產生,報文包括DR和BDR連接的路由器的鏈路信息。
網絡LSA也僅僅在產生這條網絡LSA的區域內部進行泛洪。
3、網絡匯總LSA (Network Summary LSA)
由ABR產生,可以通知本區域內的路由器通往區域外的路由信息。
在一個區域外部但是仍然在一個OSPF自治系統內部的缺省路由也可以通過這種LSA來通告。
如果一臺ABR路由器經過骨干區域從其他的ABR路由器收到多條網絡匯總LSA,那么這臺始發的ABR路由器將會選擇這些LSA通告中代價最低的LSA,并且將這個LSA的最低代價通告給與它相連的非骨干區域。
4、ASBR匯總LSA (ASBR summary LSA)
也是由ABR產生,但是它是一條主機路由,指向ASBR路由器地址的路由。
5、自治系統外部LSA (Autonomous system external LSA)
由ASBR產生,告訴相同自治區的路由器通往外部自治區的路徑。
自治系統外部LSA是惟一不和具體的區域相關聯的LSA通告,將在整個自治系統中進行泛洪。
7、NSSA外部LSA (NSSA External LSA)
由ASBR產生,幾乎和LSA 5通告是相同的,但NSSA外部LSA通告僅僅在始發這個NSSA外部LSA通告的非純末梢區域內部進行泛洪。
在NSSA區域中,當有一個路由器是ASBR時,不得不產生LSA 5報文,但是NSSA中不能有LSA 5報文,所有ASBR產生LSA 7報文,發給本區域的路由器。
詳解:LSA類型詳解
四.選路
OSPF的四種路徑類型:
1、O 域內路由
2、O IA 域間路由
3、E1的外部路由
4、E2的外部路由
外部路由重分布進OSPF有兩種類型
·OE1: ?重分布進OSPF的路由默認為E2,Cost=20,且傳遞過程中不改變COST。
·OE2: ?如果改為E1類型,則在傳輸過程中會累加每個入接口的cost值
OSPF的選路原則:
1、域內路由優于域間路由
2、域間路由優于外部路由
3、OE1的路由優于OE2的路由
如果一臺路由器收到兩條相同的域間的路由,一條是area 0區域傳過來的,一條是普通區域傳過來的,則優選area 0區域傳過來的。
如果有一臺路由器從兩個不同的ASBR收到相同的外部路由,OSPF在選擇外部路由的時候,遵循的原則是:
[1]O E1優于O E2
[2]在類型相同的情況下,Cost越小越優先
[3]對OE2來說,在cost相同的情況下,選擇到達ASBR最優的路徑
OE2的路由傳遞時帶有一個參數---forward metric,這個參數記錄了OE2的路由所穿越鏈路的總COST值,如果一個路由器收到兩條COST相同的OE2路由,將比較它們的forward metric來選出最優路由。
五.匯總
OSPF只支持手工匯總,OSPF支持兩種形式的手工自動匯總:一種部署在ABR上,另一種則部署在ASBR上。
1.在ABR上執行路由匯總
在R3(ABR)上對Area2內的路由執行匯總:
R3(config)# router ospf 1
R3(config-router)# area 2 range 172.16.0.0 255.255.0.0?
匯總后,在R3本地會產生一條特殊的路由,用來防環
O ?172.16.0.0/16 is a summary, 00:00:06, Null0(R3接收到去往172.16.0.0/16數據包丟棄)
這條路由稱為discard-route,可以用以下命令去掉:
router ospf 1
no discard-route internal
本匯總命令還可用來做路由的過濾:
router ospf 1
area 2 range 172.16.0.0 255.255.0.0 not-advertise 過濾掉172.16.0.0的網絡及其所包含的子網
注意,這種匯總方式(area range)只能在ABR上配置,而且只能對ABR直接連接的區域中的Intra-Area路由(區域內部路由即“O”)執行匯總。R3執行匯總后,R1及R2的路由表中將出現172.16.0.0/16的匯總路由,而不會再學習到明細路由。如此一來,R1及R2的路由表就精簡了,而且當它們需要訪問R5下掛的那三個網段時,可以通過這條匯總路由到達。要強調的是,如果不是在R3,而是在R2上對R5下掛的網段進行匯總,則無法實現。因此此時R3作為ABR,已經將描述這些網段的3類LSA注入到了Area0,而在R2上,是無法對這些3類LSA進行路由匯總的。
2.在ASBR上執行路由匯總
在R1上對其自己重發布進OSPF的路由執行匯總:
router ospf 1
?summary-address 10.1.0.0 255.255.0.0
完成上述配置后,R2、R3、R4及R5都會學習到一條10.1.0.0/16的匯總路由(使用Type-5 LSA描述),而不會再學習到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24這三條明細路由。
本地也會產生特殊路由來防環 O ?10.1.0.0/16 is a summary, 00:00:04, Null0
用以下命令可以去掉:
router ospf 1
no discard-route external
六.認證
2種認證方法:明文,密文
3種認證范圍:鏈路認證,區域認證,虛鏈路認證
具體配置方法(注意看Router后面跟的是接口還是OSPF進程)
1.link鏈路認證方法
明文認證
Router(config-if)#ip ospf authentication-key cisco聲明明文密鑰
Router(config-if)#ip ospf authentication?聲明明文認證
密文認證
Router(config-if)#ip ospf message-digest-key 1 md5 cisco?啟用密文密鑰
Router(config-if)#ip ospf authentication message-digest?聲明密文認證
2.area區域認證方法
明文認證
Router(config-if)#ip ospf authentication-key cisco啟用明文密鑰
Router(config-router)#area 1 authentication聲明明文認證
密文認證
Router(config-if)#ip ospf message-digest-key 1 md5 cisco?啟用密文密鑰
Router(config-router)#area 1 authentication message-digest聲明密文認證
3.v-link虛鏈路認證方法
明文認證
Router(config-router)#area 2 virtual-link 3.3.3.3 authentication-key cisco?啟用明文密鑰
Router(config-router)#area 2 virtual-link 3.3.3.3 authentication聲明明文認證
密文認證
Router(config-router)#area 2 virtual-link 3.3.3.3 message-digest-key 1 md5 cisco
Router(config-router)# area 2 virtual-link 3.3.3.3 authentication message-digest
七.虛鏈路
多域的OSPF應用virtual-link:
1.?某一個域與骨干域不相連需要使用virtual-link
2.?在一個OSPF網路中不能存在多個OSPF域如果存在2個以上的OSPF域需要啟用virtual-link
3.?virtual-link命令表達方法:area area-id virtual-link router-id
area-id應使用需要將兩個area串聯的中間那個area的id,router-id使用對端設備的router-id。
?R2:
router ospf 1
area 1 virtual-link 192.168.34.1
R3:
router ospf 1
area 1 virtual-link 192.168.23.1
八.默認路由
方法一:
先配置一條靜態默認路由:ip route 0.0.0.0 0.0.0.0 Serial0
再用命令下發
router ospf 1
????default-information originate
方法二:
不需要寫一條靜態的默認路由(本地無靜態默認路由,又想分發默認),直接下發。
router ospf 1
????default-information originate always
還可在下發默認路由時指定metric的類型和metric值
default-information originate always metric-type1metric3
九.特殊區域
OSPF 的 Area 類型:
標準區域:這是默認的區域類型,它接受鏈路更新、匯總路由和外部路由。
骨干區域:骨干區域為 Area 0,其他區域都與之相連以交換路由信息。OSPF 骨干區域具有標準 OSPF 區域的所有特征。
末節區域(Stub Area):這種區域不接受關于自治系統外部的路由的信息,如來自非 OSPF 路由器的路由(也就是該區域不接受 LSA 4 和 LSA 5)。需要路由到自治系統外部的網絡時,路由器使用默認路由(用 0.0.0.0 表示)。末節區域不能包含 ASBR(除非 ABR 也是 ASBR)。
router ospf 110
? area 2 stub
絕對末節區域(Total Stub Area):這種 Cisco 專用的區域不接受來自自治系統外部的路由以及來自自治系統中其他區域的匯總路由(也就是該區域不接受 LSA 3 / 4 / 5)。需要將分組發送到區域外的網絡時,路由器使用默認路由。絕對末節區域中不能有 ASBR(除非 ABR 也是 ASBR)。
router ospf 110
? area 2 stub no-summary ? //(只需在ABR上做)
使用末節區域旨在向其通告默認路由,這樣 ASBR 匯總 LSA 和自治系統外部 LSA(如果是絕對末節區域,還有網絡匯總 LSA)將不會擴散到該區域。這將縮小該區域中路由器的 LSDB 和 RIB(路由表)的規模。
Stub 區域雖然為合理的規劃網絡描繪了美好的前景,但她在實際的組網中又不具備可操作性,未免遺憾。但此時的 OSPF 協議已經基本成型,不可能再做大的修改。為了彌補缺陷,協議設計者提出了一種新的概念 NSSA,并且作為 OSPF 協議的一種擴展屬性單獨在?RFC 1587?中描述。
NSSA(Not-So-Stubby Area):NSSA 是對 OSPF RFC 的補充。這種區域定義了一種特殊的 LSA —— 7 類 LSA 。NSSA 具有末節區域的優點,它們不接受有關自治系統外部的路由的信息(也就是該區域不接受 LSA 4 和 LSA 5,但有 LSA 7),而使用默認路由前往外部網絡。然而,NSSA 可以包含 ASBR,這違反了關于末節區域的規則。
router ospf 110
? area 2 nssa
絕對末節 NSSA(Total Not-So-Stubby Area):Cisco 路由器也允許將區域配置為絕對末節 NSSA,這種區域可包含 ASBR,但不接受外部路由和來自其他區域的匯總路由(也就是該區域不接受 LSA 3 / 4 / 5,但有 LSA 7)。它使用默認路由前往區域外的網絡。
router ospf 110
? area 2 nssa no-redistribution ? //在ABR上做