OSPF使用5種不同的報文類型。每種類型用於支持不同的,專門的網絡功能。這5種類型是:
·HELLO報文(類型1 )。
·數據庫描述報文(類型2 )。
·鏈路-狀態請求報文(類型3 )。
·鏈路-狀態更新報文(類型4 )。
·鏈路-狀態應答報文(類型5 )。
一、HELLO報文
OSPF包含一個用於建立和維護相鄰站點之間關系的協議( HELLO協議)。這些關系稱為連接性。連接性是OSPF交換路由數據的基礎。
通過這個協議和報文類型, OSPF節點能發現區中的其他OSPF節點。它的名字表明了其含義,HELLO協議在可能的相鄰路由器之間建立通信。HELLO協議使用特別的子報文結構,這個結構附加到標准2 4字節的OSPF頭后面。這些結構共同構成HELLO報文。
OSPF網絡中的所有路由器必須遵守一定的規則,這個規則在整個網絡中要一致。這些規則包括:網絡掩碼。HELLO報文廣播的間隔。網絡中的其他路由器認為一個沒有反應的路由器為死節點的時間(路由器死時間間隔)。
OSPF中的所有路由器對這些參數必須使用相同值,否則網絡可能不會正常工作。這些參數通過HELLO報文進行交換。它們一起構成相鄰節點之間通信的基礎。它們要確保在不同網絡的路由器之間不形成相鄰關系(連接性),並且網絡中的所有成員要對多久彼此聯系一次成達共識。
HELLO報文也包括最近已與其聯系過的其他路由器列表(使用它們自己惟一的路由器I D )。這個N e i g h b o r (相鄰者)域使鄰居發現過程成為可能。HELLO報文還包括幾個其他的域,如Designated Router(指定路由器)、Backup Designated Router(備份指定路由器)和其他一些域。這些域對於維護連接性,支持OSPF網絡的穩定周期和收斂都是有用的。
二、DD報文
當OSPF中的兩個路由器初始化連接時要交換數據庫描述(DD)報文。這個報文類型用於描述,而非實際地傳送OSPF路由器的鏈路-狀態數據庫內容。由於數據庫的內容可能相當長,所以可能需要多個數據庫描述報文來描述整個數據庫。實際上,保留了一個域用於標識數據庫描述報文序列。接收方對報文的重新排序使其能夠真實地復制數據庫描述報文。
DD交換過程按詢問/應答方式進行,在這個過程中,一個路由器作為主路由器。另一個路由器作為從路由器,主路由器向從路由器發送它的路由表內容。顯然,主從之間的關系會因每個DD交換的不同而不同。網絡中的所有路由器會在不同時刻作用,在這個過程中既可能是主又可能是從。
三、鏈路-狀態請求報文
OSPF報文的第三種類型為鏈路-狀態請求報文。這個報文用於請求相鄰路由器鏈路-狀態數據庫中的一部分數據。表面上講,在收到一個D D更新報文之后, OSPF路由器可以發現相鄰信息不是比自己的更新就是比自己的更完全。如果是這樣,路由器會發送一個或幾個鏈路-狀態請求報文給它的鄰居(具有更新信息的路由器)以得到更多的鏈路狀態信息。
請求的信息必須是非常具體的。它必須使用下面的標准規范指明所要求的數據:
·鏈路-狀態( L S )類型號( 1到5 )。
·LS標識。
·通告路由器。
這些規范一起指明了一個具體的OSPF數據庫子集,而不是它的一個事例。一個事例是與信息相同的子集,這個子集帶有暫時邊界(也就是時戳)。記住, OSPF是一個動態路由協議,它能對網絡中鏈路狀態的變化自動作出反應。因此, L S請求的接收者把對這些特定路由信息解釋為最新數據。
四、鏈路-狀態更新報文
鏈路-狀態更新報文用於把LSA發送給它的相鄰節點。這些更新報文是用於對LSA請求的應答。有5種不同的LSA報文類型。這些報文類型用從1到5的類型號標識。
注意由於OSPF通常把鏈路-狀態廣播看作LSA,因此會存在潛在的混淆。然而,實際上用於更新路由表的機制為鏈路-狀態更新報文—簡記為L S U。還有另一個報文結構,鏈路-狀態應答報文,簡寫為LSA;由於一些不可知的原因,這種報文稱為鏈路-狀態應答,而LSA通常是指更新報文。
這些報文類型及其LSA號,如下所述:
·Rauter LSA (路由器LSA ) (類型1 )—路由器LSA描述了路由器鏈路到區的狀態和耗費。所有這樣的鏈路必須在一個LSA報文中進行描述。同時,路由器必須為它屬於的每個區產生一個路由器LSA。所以,區邊界路由器將產生多個路由器LSA,而區內的路由器只需產生一個這樣的更新。
·Network LSA (網絡LSA ) (類型2 )—網絡LSA與路由器LSA相似,它描述的是連接進網絡的所有路由器的鏈路狀態和耗費信息。二者的區別是網絡LSA是網絡中所有鏈路-狀態和耗費信息的總和。只有網絡的指定路由器記錄這個信息,並由它來產生網絡LSA。
·Summary LSA-IP Network (匯總LSA - IP網絡) (類型3 )—使用匯總LSA - IP這個名字有些不靈活,因此OSPF的設計者采用了編號策略來記LSA,只有OSPF網絡中的區邊界路由器能產生這種LSA類型。使用這種LSA類型把一個區的匯總路由信息和OSPF網絡中相鄰區路由器信息進行交換。它經常匯總缺省的路由而不是傳播匯總的OSPF信息至其他網絡。
·Summary LSA-Autonomous System Boundary Router(匯總LSA -自治系統邊界路由器) (類型4 )—類型4與類型3 LSA的關系密切。二者的區別是類型3描述區內路由,而類型4描述的是OSPF網絡之外的路由。
·S -外部LSA (類型5 )—第5個LSA是自治系統外部LSA。正如其名,這種LSA用於描述OSPF網絡之外的目的地。這些目的地可以是特定主機或是外部網絡地址。作為和外部自治系統相聯系的ASBR OSPF節點負責把外部路由信息在它屬於的整個區中傳播。
不必研究每種LSA類型的結構,只需研究它們的頭就足夠了。
1. LSA頭
所有的LSA使用一個通用的頭格式。這個頭2 0字節長並附加於標准的2 4字節OSPF頭后面。LSA頭惟一地標識了每種LSA。所以,它包括關於LSA類型、鏈路-狀態I D及通告路由器I D的信息。下面是LSA頭域:
·L S年齡—LSA頭中的前兩個字節包含LSA的年齡。這個年齡是自從LSA產生時已消逝的時間秒數。
·OSPF選項—下面的字節由一系列標志組成,這些標志標識了OSPF網絡能提供的各種可選的服務。
·L S類型—1字節L S類型指出5種LSA類型中的一種。每種LSA類型的格式是不同的。因此,指出何種類型的數據附加在頭后面必不可少。
·鏈路-狀態I D—鏈路-狀態I D域4字節長用於指明LSA描述的特定網絡環境區域。這個域與前面提及的L S類型域關系緊密。實際上,這個域的內容直接依賴於L S類型。比如,在路由器LSA中,鏈路-狀態I D包含產生了這個報文的OSPF路由器I D——通告路由器I D。
·S順序號—OSPF路由器會遞增每個LSA報文的序列號。所以,接收到兩個相同LSA事例的路由器有兩種選擇來決定哪一個是最新的報文, L S順序號域4字節長。檢查這個域可以確定LSA在網絡中已傳輸了多久。從理論上講,一個新的LSA年齡比一個老的LSA年齡大是有可能的,特別是在大型復雜的OSPF網絡中。所以,接收路由器比較L S順序號。大號的LSA是最新生成的,這種機制不會因動態路由的變遷而受到損壞,而應認為其是一種更可靠的確定LSA時間的方法。
·L S校驗和—3字節的L S校驗和用於檢查LSA在傳輸到目的地的過程中是否受到破壞。校驗和采用簡單的數學算法。它的輸出結果依賴於其輸入,並且有高度的一致性。給定相同的輸入,校驗和算法總是給出相同的輸出。L S校驗和域使用部分LSA報文內容(包括頭,不包括L S年齡和校驗和域)來生成校驗和值。源節點運行Fletcher算法並把結果存於L S校驗和域中。目的節點執行相同的算法並把結果與存儲在校驗和域中的結果比較,如果兩個值不相同,就可以認為報文在傳輸過程中被破壞。之后,產生一個傳輸請求。
·LS長度—L S長度域用於通知接收方LSA的長度(以字節為單位),這個域1個字節長。
LSA報文體的剩余部分包含一個LSA的列表。每個LSA描述OSPF網絡5個不同方面中的一個。所以,路由器LSA報文會廣播區內已知存在的路由器信息。
2. 處理LSA更新
OSPF路由表與其他路由表的本質區別是它的更新並不直接被接收站點所使用。從其他路由器接收到的更新包含“從發送路由器角度看”網絡得到的信息。所以,在使用和解釋接收到的LSA數據之前必須由Dijkstra算法,把它轉化為自己本身的信息。
表面上講, LSA的傳輸是因為一個路由器檢測到了鏈路狀態變化。所以,在接收到任何類型的LSA之后,OSPF路由器必須把LSA的內容和自身路由表的對應部分進行比較。只有通過SPF算法,使用新數據形成新的網絡視圖之后才能進行比較, SPF算法輸出的結果是得到網絡的新視圖。這些結果與已存在的OSPF路由表相比較,看是否它的路由受到了網絡狀態變化的影響。
如果由於狀態變化必須改變一條或多條路由,就要使用新的信息建造一個新的路由表。
3. 復制LSA
考慮到LSA在整個OSPF區內洪泛,就有可能同時存在多個相同LSA類型的事例。因此,OSPF網絡的穩定性要求路由器能夠識別多個LSA中的最新者。收到兩個或多個相同LSA類型的路由器會檢查LSA頭中的L S年齡、L S順序號以及L S校驗和域。只有包含在最新LSA中的信息才被接受,並且要經過前面一節中描述的處理過程。
五、鏈路-狀態應答報文
第5種OSPF報文是鏈路-狀態應答報文。OSPF的特點是可靠地分布LSA報文( LSA表示鏈路-狀態通告( a d v e r t i s e m e n t ),通告而不是鏈路-狀態應答),可靠性意味着通告的接收方必須應答。否則,源節點將沒有辦法知道是否LSA已到達目的地。因此,需要一些應答LSA接收的機制。這個機制是鏈路-狀態應答報文。
鏈路-狀態應答報文惟一地標識其要應答的LSA報文。標識以包含在LSA頭中的信息為基礎,包括L S順序號和通告路由器。LSA與應答報文之間無需1對1的對應關系。多個LSA可以用一個報文來應答。