OSPF協議的工做機制相似於我們的中國地圖同樣,我們認拿着地圖到達目標地點 ,路由器運行OSPF後,也會有一張相似於地圖的東西,叫作LSDB(鏈路狀態數據庫)那麼,路由器會利用這個LSDB(地圖)去尋找到達其餘路由器的最優路徑(執行SPF算法)。把尋找好的最優路徑用筆記記錄(就是放在路由表中)下來,以便於之後再去這個地方的時候,直接看下筆記上面的路徑就能夠了算法
OSPF協議的區域概念
中國的首都是北京,我們中國34個省,每個省份都是牢牢的挨着,而且相互鏈接着
在OSPF協議當中,有區域的概念,好比area 0、area 一、area 2等區域 咱們能夠把area 0看做是北京,是最核心的一個區域,把area 一、area 2等區域看做成非北京區域數據庫
OSPF原理總結:
一、全部路由器都使能OSPF進程,並在一個區域中把本身的網段接口宣告
(network)進去
二、而後全部使能OSPF進程的設備之間交互LSA(鏈路狀態通告)直到全部的
設備上的LSDB(鏈路狀態數據庫)都同樣便可
三、而後在根據LSDB進行SPF計算,算出本身到達其餘設備的最優路由出來
四、將算出的最優路由放入IP路由表中網絡
OSPF協議是網絡層協議 IP協議號爲89號ide
OSPF協議報文結構分爲OSPF頭部+OSPF數據包 注意:OSPF數據包一共有5個oop
Hello 報文
DD(Database Description)報文
LSR(LSA Request)報文
LSU(LSA Update)報文
LSACK(Link State Acknowledgment)報文學習
Hello報文做用:
一、維護鄰居狀態
二、選擇DR與BDR優化
第一份DBD報文做用:
一、選擇主從關係,用來控制序列號的順序
二、無任何LSA的信息命令行
非第一份DBD報文做用:
一、用來描述LSA的頭部信息3d
LSR報文做用:
一、請求對方的LSA信息
二、裏面無LSA頭部內容日誌
LSU報文做用:
一、這個報文中才含有真正LSA的拓撲信息和網絡信息
LSAck報文做用:
一、用於確認從對方收到的LSU報文
二、LSAck裏面包括LSA的頭部信息
DD、LSR、LSU、LSAck與LSA的關係:
DD報文中包含LSA頭部信息,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum。
LSR中包含LS Type 、LS ID和Advertising Router 。
LSU中包含完整的LSA信息。
LSAck中包含LSA頭部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。
什麼是route id?
和ip地址相似的32位的值,做爲一臺設備的標識符 企業網中的設備少則幾臺多則幾十臺甚至幾百臺,每臺路由器都須要有一個惟一的ID用於標識本身。
手動配置route id router id 8.8.8.8 #本地全局生效 ospf 1 router-id 8.8.8.8 #本地ospf進程生效 生產環境優先選擇這樣 配置自動選舉route id(不建議) 若是設備存在多個邏輯接口地址(如環回口loo1口),則路由器使用邏輯接口中最大的IP地址做爲Router ID 若是沒有配置邏輯接口,則路由器使用物理接口的最大IP地址做爲Router ID Router ID選舉規則以下: 手動配置OSPF路由器的Router ID(一般建議手動配置); 若是沒有手動配置Router ID,則路由器使用Loopback接口中最大的IP地址做爲Router ID; 若是沒有配置Loopback接口,則路由器使用物理接口中最大的IP地址做爲Router ID。 OSPF的路由器Router ID從新配置後,能夠經過重置OSPF進程來更新Router ID。 reset ospf process ------Y 華爲這邊比較奇葩 優先選擇第一個UP接口做爲router id
咱們在敲命令配置OSPF的時候,當兩臺路由器之間相互配置好OSPF協議後,會在顯示屏上面出現以下信息 這些相似於廣告信息就是OSPF的日誌信息,從中能夠看出OSPF的創建過程有以下幾個階段
通常狀況下,OSPF的狀態機分爲以下幾個過程
Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。
Init:在此狀態下,路由器已經從鄰居收到了Hello報文,可是本身的Router ID不在所收到的Hello報文的鄰居列表中,表示還沒有與鄰居創建雙向通訊關係。
2-Way:在此狀態下,路由器發現本身的Router ID存在於收到的Hello報文的鄰居列表中,已確承認以雙向通訊。
鄰居創建過程以下: 一、RTA和RTB的Router ID分別爲1.1.1.1和2.2.2.2。當RTA啓動OSPF後,RTA會發送第一個Hello報文。此報文中鄰居列表爲空,此時狀態爲Down,RTB收到RTA的這個Hello報文,狀態置爲Init。 二、RTB發送Hello報文,此報文中鄰居列表爲空,RTA收到RTB的Hello報文,狀態置爲Init。 三、RTB向RTA發送鄰居列表爲1.1.1.1的Hello報文,RTA在收到的Hello報文鄰居列表中發現本身的Router ID,狀態置爲2-way。 四、RTA向RTB發送鄰居列表爲2.2.2.2的Hello報文,RTB在收到的Hello報文鄰居列表中發現本身的Router ID,狀態置爲2-way。 由於鄰居都是未知的,因此Hello報文的目的IP地址不是某個特定的單播地址。鄰居從無到有,OSPF採用組播的形式發送Hello報文(目的地址224.0.0.5)
在運行OSPF的MA網絡包括廣播型和NBMA網絡,會存在兩個問題:
由於在同一個區域的路由器必須的保證他們的LSDB(鏈路狀態數據庫)是同樣的,所以在一個有n個路由器的網絡,會造成(n×(n−1))/2個鄰接關係,咱們能夠作一些優化,在一個MA網絡中選出一個DR角色出來,DR(Designated Router)即指定路由器和BDR(Backup Designated Router)和DROther(非DR路由器)
規定:DR/BDR和BDR能夠創建FULL的鏈接關係 DROther之間只能創建2-way的關係
DR和BDR監聽的地址爲224.0.0.6 DROther監聽的地址爲224.0.0.5
DROther路由器將路由信息發往226.0.0.6這個目標地址,由於這個目標ip地址是DR或者BDR設備監聽的,而後DR設備會監聽到這些路由信息,DR設備會把路由信息發往224.0.0.5這個IP地址,由於224.0.0.5這個IP地址是全部運行OSPF的路由器監聽的,這樣全部的路由器都可以收到這個路由信息
一、減小鏈接關係數量也就是full的關係 二、產生LSA-2
DR/BDR的選舉是基於接口的。
接口的DR優先級越大越優先。
接口的DR優先級相等時,Router ID越大越優先。
優先級爲0是不參與DR與BDR的選舉的
通常建議人工干預進行DR和BDR的選擇
只有MA的網絡纔會選擇DR和BDR
P2P和P2MP中不選舉DR和BDR
接口優先級 默認狀況是1 取值範圍就是0~255
命令
[R1-GigabitEthernet0/0/0]ospf dr-priority ? INTEGER<0-255> Router priority value [R1-GigabitEthernet0/0/0]ospf dr-priority 1 經過命令怎麼查看 <R1>display ospf interface GigabitEthernet 0/0/0 OSPF Process 10 with Router ID 1.1.1.1 Interfaces Interface: 192.168.12.1 (GigabitEthernet0/0/0) Cost: 10 State: BDR Type: Broadcast MTU: 1500 Priority: 1 Designated Router: 192.168.12.2 Backup Designated Router: 192.168.12.1 Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 <R1>
一、首先選擇的是DROther集合
二、而後選擇的是BDR
三、最後選擇的是DR
問題:
一、左邊DR、BDR、DROther是誰?
二、右邊DR、BDR、DROther是誰?
線路恢復後:
一、DR是誰?BDR是誰?DROther是誰?
二、當DR出現故障後,DR是誰?BDR是誰?DROther是誰?
三、當DR恢復後,DR是誰?BDR是誰?DROther是誰?
總結:
一、DR/BDR是非搶佔的進行選擇的
二、首先選擇的是DROther
三、而後選擇的是BDR
四、最後選擇的是DR
ExStart:鄰居狀態變成此狀態之後,路由器開始向鄰居發送DD報文。Master/Slave關係是在此狀態下造成的,初始DD序列號也是在此狀態下肯定的。在此狀態下發送的DD報文不包含鏈路狀態描述。
Exchange:在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。
Loading:在此狀態下,路由器與鄰居之間相互發送LSR報文、LSU報文、LSAck報文。
Full:LSDB同步過程完成,路由器與鄰居之間造成了徹底的鄰接關係。
數據鏈路層協議類型多種多樣,工做機制也各不相同。
爲適配多種數據鏈路層協議,必須考慮各種鏈路層協議在組網時的應用場景。
[R1-GigabitEthernet0/0/1]ospf network-type
P2P網絡鏈接了一對路由器,廣播、組播數據包均可以轉發。
P2P網絡的例子:兩臺經過PPP(Point-to-Point Protocol)鏈路相連的路由器網絡。
特色:
僅兩臺路由互連
查看OSPF的鄰居狀態
經過抓包能夠看到目的ip地址都是224.0.0.5
結論
DR和BDR監聽的地址爲224.0.0.6
DROther監聽的地址爲224.0.0.5
P2P全部報文都是224.0.0.5
詳細查看OSPF在接口下的信息
觀察P2P網絡類型的狀態機的變化過程
結論:在P2P中是沒有2-way鄰居關係的,說明P2P類型下,是不須要選擇DR和BDR的
問題:P2P鏈路上兩邊不在同一個網段,full關係可以創建起來嗎?
廣播型網絡的例子:經過以太網鏈路相連的路由器網絡。
兩臺或兩臺以上的路由器經過共享介質互連。
支持廣播、組播。
其中,DR是123.0.0.5
BDR是123.0.0.4
DROther是123.0.0.3
在R3的G0/0/0接口抓包看到的現象
總結:廣播類型報文中所使用的地址
Hello報文: 組播報文:224.0.0.5
DBD報文:單播報文
LSR報文:單播報文
LSU報文:單播、組播報文.5或者.6
LSACK報文:單播、組播報文 .5或者.6
將R3的G0/0/0地址改成192.168.1.1/24,看看R3可否能夠和R四、R5創建OSPF關係起來?
左邊是P2P 右邊是廣播網絡 看下是否可以創建起OSPF的關係
在R1這邊查看OSPF的接口狀態是P2P
在R2這邊查看OSPF的接口狀態時Broadcast狀態
R1和R2已經創建起OSPF的FULL的鄰接關係了
R2和R1已經創建起OSPF的FULL的鄰接關係了
在R1上面查看狀態機以下
在R2上面查看狀態機以下
反掩碼也叫作通配符
計算方式:反掩碼=255.255.255.255-掩碼 好比:192.168.1.1/24 反掩碼=255.255.255.255-255.255.255.0=0.0.0.255
注意:
反掩碼中的0表示的意思就是精確值
反掩碼中的255表示的意思就是任意值
有的工程師可能會寫反掩碼爲0.0.0.0(0.0.0.0表示精確匹配)
在R1的area 1當中 network 192.168.12.0 0.0.0.255 或者 network 192.168.12.1 0.0.0.0
R1配置以下命令:
intterface loopback 0 ip address 1.1.1.1 32 [R1]ospf 10 router-id 1.1.1.1 推薦這種方式配置router id [R1]ospf 10 進入ospf進程裏面 [R1-ospf-10]area 1 進入ospf的區域1當中 [R1-ospf-10-area-0.0.0.1]network 192.168.12.0 0.0.0.255 是在咱們區域1當中宣告咱們的網段
R2配置以下命令:
intterface loopback 0 ip address 2.2.2.2 32 [R1]ospf 10 router-id 2.2.2.2 推薦 [R2]ospf 10 進入ospf進程裏面 [R2-ospf-10]area 1 進入ospf的區域1當中 [R2-ospf-10-area-0.0.0.1]network 192.168.12.0 0.0.0.255 是在咱們區域1當中宣告咱們的網段
同理R3 R4 R5的OSPF配置相似於R1 R2的配置
[R1]display ospf peer brief OSPF Process 10 with Router ID 192.168.12.1 Peer Statistic Information ---------------------------------------------------------------------------- Area Id Interface Neighbor id State 0.0.0.0 GigabitEthernet0/0/0 192.168.12.2 Full ---------------------------------------------------------------------------- [R1]
在R1查看ospf學習到的路由
<R1>display ip routing-table protocol ospf Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : OSPF Destinations : 2 Routes : 2 OSPF routing table status : <Active> Destinations : 2 Routes : 2 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.45.0/24 OSPF 10 3 D 192.168.12.2 GigabitEthernet0/0/0 192.168.234.0/24 OSPF 10 2 D 192.168.12.2 GigabitEthernet0/0/0 OSPF routing table status : <Inactive> Destinations : 0 Routes : 0 <R1>
總結:
ospf這邊是基於接口劃分區域的 在咱們OSPF區域當中 其中area 0必須得有 area 0是骨幹區域 其餘的非區域0叫非骨幹區域 非骨幹區域必須鏈接到骨幹區域周邊
<R2>display ospf lsdb OSPF Process 10 with Router ID 192.168.12.2 Link State Database Area: 0.0.0.0 Type LinkState ID AdvRouter Age Len Sequence Metric Router 192.168.234.3 192.168.234.3 1462 36 80000005 1 Router 192.168.234.4 192.168.234.4 1374 36 80000006 1 Router 192.168.12.2 192.168.12.2 1459 36 80000007 1 Network 192.168.234.4 192.168.234.4 1462 36 80000003 0 Sum-Net 192.168.45.0 192.168.234.4 1362 28 80000001 1 Sum-Net 192.168.12.0 192.168.12.2 1554 28 80000001 1 Sum-Net 192.168.2.0 192.168.234.4 327 28 80000001 2 Sum-Net 192.168.1.0 192.168.12.2 367 28 80000001 2 Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 192.168.12.2 192.168.12.2 1572 36 80000004 1 Router 192.168.12.1 192.168.12.1 325 48 80000007 1 Network 192.168.12.1 192.168.12.1 80 32 80000003 0 Sum-Net 192.168.45.0 192.168.12.2 1361 28 80000001 2 Sum-Net 192.168.234.0 192.168.12.2 1554 28 80000001 1 Sum-Net 192.168.2.0 192.168.12.2 326 28 80000001 3
rip這邊是經過跳數來計算開銷
ospf協議是經過帶寬來計算開銷
OSPF的開銷計算公式爲帶寬參考值/帶寬
[RTA- GigabitEthernet0/0/0]ospf cost 20
通常能夠出接口上面修改開銷
OSPF的認證方式分爲三種
不認證(默認狀況就是不認證)
接口下啓動OSPF認證
區域下啓用認證
OSPF認證的類型分爲二種
明文認證(在抓包的時候能夠看到密碼)
密文認證(在抓包的時候看不到密碼)
要麼兩端都不配置認證 要麼兩端都都配置simple認證 要麼兩端都都配置md5認證 (其實 ospf的認證 接口和區域是同樣的)由於認證在OSPF頭部當中,區域下認證的含義就是把該設備運行OSPF的全部接口都啓用該認證
例子:R1配置接口認證 R2在area 1配置區域認證
R1的配置
# interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 ospf authentication-mode simple plain Huawei #
R2的配置
# area 0.0.0.1 authentication-mode simple plain Huawei #
怎麼檢查是否配置成功
你能夠把接口down一下 而後再undo shutdown一下 經過命令行檢查一下
[R1]display ospf peer brief OSPF Process 10 with Router ID 192.168.12.1 Peer Statistic Information ---------------------------------------------------------------------------- Area Id Interface Neighbor id State 0.0.0.1 GigabitEthernet0/0/0 192.168.12.2 Full ----------------------------------------------------------------------------
看到full就成功了
R1和R2之間無full的鄰接關係
檢查OSPF的錯誤信息
Key id的做用:平滑過渡的做用