lsa

路由器鏈接狀態協議使用的分組

LSA(鏈路狀態廣播)是鏈接狀態協議使用的一個分組,它包括有關鄰居和通道成本的信息。 LSA被路由器接收用於維護它們的路由選擇表。

LSA: Link-State Advertisement。

分類


LSA類型代碼描述
1路由器LSA
2網路LSA
3網路匯總LSA
4ASBR匯總LSA
5AS外部LSA
6組成員LSA
7NSSA外部LSA
8外部屬性LSA
9Opaque LSA (鏈路本地範圍)
10Opaque LSA (本地區域範圍)
11Opaque LSA (AS範圍)
●路由器LSA (Router LSA):每一台路由器都會產生路由器LSA通告。這個最基本的LSA通告列出了路由器所有的鏈路或介面,並指明了它們的狀態和沿每條鏈路方向出站的代價,以及該鏈路上所有已知的OSPF鄰居。這些LSA通告只會在始發它們的區域內部進行泛洪擴散。通過命令 show ip ospf database router可以查看資料庫中列出了所有路由器LSA通告。
● 網路LSA(Network LSA):每一個多路訪問網路中的指定路由器(DR)將會產生網路LSA通告。正如前面討論的,DR路由器可以看作一個“偽”節點,或是一個虛擬路由器,用來描繪一個多路訪問網路和與之相連的所有路由器。從這個角度來看,一條網路LSA通告也可以描繪一個邏輯上的“偽”節點,就像一條路由器LSA通告描繪一個物理上的單台路由器一樣。網路LSA通告列出了所有與之相連的路由器,包括DR路由器本身。就像路由器LSA一樣,網路LSA也僅僅在產生這條網路LSA的區域內部進行泛洪擴散。使用命令 show ip ospf database network可以查看一條網路LSA通告的信息。請注意,和路由器LSA不同,網路LSA中沒有度量欄位。
● 網路匯總LSA(Network Summary LSA):是由ABR路由器始發的。ABR路由器將發送網路匯總LSA到一個區域,用來通告該區域外部的目的地址。實際上,這些網路匯總LSA就是ABR路由器告訴在與之相連的區域內的內部路由器它所能到達的目的地址的一種方法。一台ABR路由器也可以通過網路匯總LSA向骨幹區域通告與它相連的區域內部的目的地址。在一個區域外部,仍然在一個OSPF自主系統內部的預設路由也可以通過這種LSA類型來通告。使用命令 show ip ospf database summary可以顯示鏈路狀態資料庫中的網路匯總LSA信息。當一台ABR路由器始發一條網路匯總LSA時,將包括從它本身到正在通告的這條LSA的目的地所耗費的代價。ABR路由器即使知道它有多條路由可以到達目的地,它也只會為這個目的地始發單條網路匯總LSA通告。因此,如果一台ABR路由器在與它本身相連的區域內有多條路由可以到達目的地,那麼它將只會始發單一的一條網路匯總LSA到骨幹區域,而且這條網路匯總LSA是上述多條路由中代價最低的。同樣地,如果一台ABR路由器經過骨幹區域從其他的ABR路由器收到多條網路匯總LSA,那麼這台始發的ABR路由器將會選擇這些LSA通告中代價最低的LSA,並且將把這個LSA的最低代價通告給與它相連的非骨幹區域。當其他的路由器從一台ABR路由器收到一條網路匯總LSA通告時,它並不運行SPF演演算法。相反地,它只是簡單地加上從它到那台ABR路由器之間路由的代價,並將這個代價包含在這個LSA通告當中。通過ABR路由器,到達所通告的目的地的路由連同所計算的代價一起被記錄進了路由表。這個行為――依賴中間路由器代替確定到達目的地的全程路由(Full route)的做法――其實是距離矢量協議的行為。因此,雖然在一個區域內部OSPF協議是一個鏈路狀態協議,但是它卻使用了距離矢量的演演算法來查找域間路由
ASBR 匯總LSA(ASBR Summary LSA):也是由ABR路由器始發的。ASBR匯總LSA除了所通告的目的地是一台ASBR路由器而不是一個網路外,其他的和網路匯總LSA都是一樣的。使用命令 show ip ospf database asbr-summary可以查看ASBR匯總LSA的信息。這裡要注意,其中目的地是一個主機地址,並且掩碼是0;通過ASBR匯總LSA通告的目的地將總是一個主機地址,因為它是一條到達一台路由器的路由。
● 自治系統外部LSA(Autonomous System External LSA):或者稱為外部LSA(External LSA),是始發於ASBR路由器的,用來通告到達OSPF自治系統外部的目的地或者OSPF自治系統外部的預設路由的LSA。自治系統外部LSA是鏈路狀態資料庫中唯一不與具體的區域相關聯的LSA通告。外部LSA通告將在整個自治系統中進行泛洪擴散。使用命令 show ip ospf database external可以查看AS外部LSA的信息。
● 組成員LSA(Group Membership LSA):是用在OSPF協議的一個增強版本――組播OSPF協議(MOSPF協議)中的。MOSPF協議將數據包從一個單一的源地址轉發到多個目的地,或者是一組共享D類組播地址的成員。
● NSSA外部LSA(NSSA External LSA):是指在非純末梢區域(Not-So-Stubby Area, NSSA)內始發於ASBR路由器的LSA通告。NSSA外部LSA通告幾乎和自主系統外部LSA通告是相同的。只是不像自主系統外部LSA通告那樣在整個OSPF自主系統內進行泛洪擴散,NSSA外部LSA通告僅僅在始發這個NSSA外部LSA通告的非純末梢區域內部進行泛洪擴散。可以通過命令 show ip ospf database nssa-external來顯示NSSA外部LSA通告的信息。
● 外部屬性LSA(External Attributes LSA):是被提議作為運行內部BGP協議(iBGP協議)的另一種選擇,以便用來傳送BGP協議的信息穿過一個OSPF域。這個LSA從來沒有在大範圍部署過,IOS軟體也不支持該LSA。
● Opaque LSA:是由標準的LSA頭部後面跟隨專用信息組成的一類LSA。這個信息欄位可以直接由OSPF協議使用,或者由其他應用分發信息到整個OSPF域間接使用。OpaqueLSA類型用於對OSPF增加可變的擴展特性,例如在MPLS網路中應用流量工程參數。

應用


在OSPF路由協議的數據包中,其數據包頭長為24個位元組,包含如下8個欄位:
* Version number-定義所採用的OSPF路由協議的版本。
* Type-定義OSPF數據包類型。OSPF數據包共有五種:
* Hello-用於建立和維護相鄰的兩個OSPF路由器的關係,該數據包是周期性地發送的。
* Database Description-用於描述整個資料庫,該數據包僅在OSPF初始化時發送。
* Link state request-用於向相鄰的OSPF路由器請求部分或全部的數據,這種數據包是在當路由器發現其數據已經過期時才發送的。
* Link state update-這是對link state請求數據包的響應,即通常所說的LSA數據包。
* Link state acknowledgment-是對LSA數據包的響應。
* Packet length-定義整個數據包的長度。
* Router ID-用於描述數據包的源地址,以IP地址來表示。
* Area ID-用於區分OSPF數據包屬於的區域號,所有的OSPF數據包都屬於一個特定的OSPF區域。
* Checksum-校驗位,用於標記數據包在傳遞時有無誤碼。
* Authentication type-定義OSPF驗證類型。

原始特性


每一個OSPFLSA都有一個生存期,它指示LSA是否仍然還有效。一旦LSA到達了最大生存期(1小時),它就會被拋棄。在生存期內,源路由器每 30分鐘發送一個刷新包來刷新LSA。發送刷新包為了防止LSA過期,不管網路拓樸結構是否有變化。每10分鐘在所有LSA上完成一次校驗和。路由器對它產生的LSA和從其他路由器接收的LSA保持跟蹤。路由器刷新它產生的LSA;計算從其他路由器接收的LSA的生存期。
在具有LSA組定步特性之前,CiscoIOS軟體在一個計時器上完成刷新,在另一個計時器上完成校驗和及生存期計算。比如刷新時,軟體每30分鐘掃描一次整個資料庫,刷新路由器產生的每一個LSA,不管它有多老了。圖11-1表示所有的LSA立即被刷新。該過程浪費了CPU的資源,因為只有一小部分資料庫需要被刷新。一個大型的OSPF資料庫(幾千個LSA)包括上千個具有不同生存期的LSA。在一個計時器上的刷新導致所有LSA的生存期同步,引起立即產生多個CPU進程。而且,巨大數量的LSA還能引起網路傳輸量劇增,在短時間消耗大量的網路資源。
所有LSA被刷新,乙太網上120個外部LSA需要3個包。

解決方法


這個問題通過使每個LSA具有自己的計時器來解決。還借用這個刷新示例,30分鐘后每個LSA都得到刷新,與其他LSA無關。所以CPU只在需要時才被使用。但是,頻繁地、隨意地、刷新的LSA需要那些路由器必須發送出去的、很少被刷新的LSA提供許多包。這將降低帶寬的利用率。
在頻繁地、隨意的時間間隔內,另一個LSA需要被刷新這個被刷新的包只包含幾個LSA單個LSA計時器
因此,用路由器延遲一個時間間隔來代替單個計時器時間直至完成LSA刷新功能。累積的LSA組成一個組,然後被刷新,並在一個或幾個包中被發送出去。這樣,刷新包被定步、校驗和及計算生存期也一樣。定步間隔是可配置的,預設值是4分鐘,為進一步避免同步而被隨意化了。
組定步間隔與路由器正在刷新、做校驗和及計算生存期的LSA的個數成反比。比如,假設有將近10,000個LSA,減小定步間隔是有益的。如果有一個很小的資料庫(40~100個LSA),那麼將定步間隔增加到10~20分鐘會稍有益處的。
LSA組之間的定步預設值是240秒(4分鐘)。取值範圍在10秒到1800秒之間(半小時)。為了修改LSA組定步間隔,在路由器配置方式中執行下列命令:
命令作用
lsa-group-pacingseconds修改LSA組定步。