OSPF簡(jiǎn)介
OSPF(Open Shortest Path First開(kāi)放式最短路徑優(yōu)先)協(xié)議是IETF為IP網(wǎng)絡(luò)開(kāi)發(fā)的IGP路由選擇協(xié)議。它是一種典型的鏈路狀態(tài)(link-state)路由協(xié)議。在同一個(gè)OSPF自制系統(tǒng)內(nèi)每一臺(tái)運(yùn)行OSPF協(xié)議的路由器總是將本地網(wǎng)絡(luò)的連接狀態(tài)用LSA描述,并廣播到整個(gè)自制系統(tǒng)中去。這樣,每臺(tái)路由器都收到了自制系統(tǒng)中所有路由器生成的LSA,這些LSA的集合組成了LSDB,這樣所有的OSPF路由器都維護(hù)一個(gè)相同的描述自治系統(tǒng)內(nèi)部結(jié)構(gòu)的數(shù)據(jù)庫(kù)。
說(shuō)明:一個(gè)路由器在理論上支持65535個(gè)OSPF進(jìn)程,在實(shí)際環(huán)境中一個(gè)路由器可支持的OSPF進(jìn)程數(shù)量與其接口數(shù)量相等(包括物理與環(huán)回接口)。
多區(qū)域OSPF
OSPF是一種分層次的路由協(xié)議,在每個(gè)AS中,將網(wǎng)絡(luò)劃分為不同的區(qū)域。每個(gè)區(qū)域都有自己特定的標(biāo)識(shí)號(hào)。對(duì)于主干區(qū)域(backbone),負(fù)責(zé)在區(qū)域之間分發(fā)鏈路狀態(tài)信息。一個(gè)大型的網(wǎng)絡(luò),如果不分區(qū)域,那么路由器的LSA報(bào)文和鏈路狀態(tài)數(shù)據(jù)庫(kù)會(huì)很大。一方面容易造成數(shù)據(jù)庫(kù)溢出;另一方面當(dāng)網(wǎng)絡(luò)中某一鏈路狀態(tài)發(fā)生變化時(shí),會(huì)引起整個(gè)網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都重新計(jì)算一遍自己的路由表,既浪費(fèi)資源與時(shí)間,又會(huì)影響路由協(xié)議的性能(如聚合速度、穩(wěn)定性和靈活性)。每個(gè)區(qū)域內(nèi)部維持本域一張唯一的拓?fù)鋱D,且各域根據(jù)自己的拓?fù)鋱D各自計(jì)算路由。多區(qū)域的OSPF必須存在一個(gè)主干區(qū)域,主干區(qū)域負(fù)責(zé)收集非主干區(qū)域發(fā)出的匯總路由信息,域邊界路由器把各個(gè)域的內(nèi)部路由總結(jié)后將這些信息在域間擴(kuò)散。這樣當(dāng)網(wǎng)絡(luò)中的某條鏈路狀態(tài)發(fā)生變化時(shí),信息只會(huì)在那個(gè)域以?xún)?nèi)的鄰居之間傳遞,那個(gè)區(qū)域以外的路由器不會(huì)收到該信息。那么只需要此鏈路所在域中的每個(gè)路由器重新計(jì)算本域路由表,而其他域中路由器只需修改其路由表中的相應(yīng)條目,而無(wú)需重新計(jì)算整個(gè)路由表,節(jié)省了就算路由表的時(shí)間。OSPF區(qū)域不能隨意劃分,應(yīng)該合理地選擇區(qū)域邊界,使不同區(qū)域之間的通信量最小。但在實(shí)際應(yīng)用中區(qū)域的劃分往往并不是根據(jù)通信模式,而是根據(jù)地理或政治因素來(lái)完成的。
OSPF劃分區(qū)域的原因:
LSA數(shù)據(jù)過(guò)大,造成帶寬負(fù)載過(guò)大;
計(jì)算全網(wǎng)拓?fù)?,?duì)CPU要求過(guò)高;
數(shù)據(jù)庫(kù)過(guò)大對(duì)內(nèi)存要求過(guò)高。
OSPF的特點(diǎn)
1.可適應(yīng)大規(guī)模網(wǎng)絡(luò);
2.收斂速度快,無(wú)路由環(huán)路;
3.支持VLSM和CIDR;
4.支持等價(jià)負(fù)載均衡;
5.支持區(qū)域劃分,構(gòu)成結(jié)構(gòu)化的網(wǎng)絡(luò),提供路由分級(jí)管理;
6.支持簡(jiǎn)單口令和MD5認(rèn)證;
7.以組播方式(224.0.0.5或224.0.0.6)傳送協(xié)議數(shù)據(jù)包;
8.OSPF路由協(xié)議的管理距離是110;
9.OSPF路由協(xié)議采用cost作為度量標(biāo)準(zhǔn);
10.OSPF維護(hù)鄰居表、拓?fù)浔砗吐酚杀怼?/p>
名詞解釋
LSA:Link State Advertisement 鏈路狀態(tài)通告。
LSR:Link State Request 鏈路狀態(tài)請(qǐng)求。
LSU:Link State Update 鏈路狀態(tài)更新。
LSDB:Link State Database 鏈路狀態(tài)數(shù)據(jù)庫(kù)。
DD:Database Description 鏈路狀態(tài)數(shù)據(jù)庫(kù)描述。
DR:Designated Router 指定路由器。
BDR:Backup Designate Router 備份指定路由器。
RID:Router ID 路由標(biāo)識(shí)。
ABR:Area Border Router 區(qū)域邊界路由器。
ASBR:Autonomous System Boundary Rotuer自治域系統(tǒng)邊界路由器。
Stub:末梢區(qū)域。
Totally Stubby:完全末梢區(qū)域。
NSSA:Not-So-Stubby Area 非純末梢區(qū)域。
Totally NSSA:完全非純末梢區(qū)域。
鏈路:路由器上的一個(gè)接口。
鏈路狀態(tài):有關(guān)各條鏈路狀態(tài)的信息,用來(lái)描述路由器接口及其與鄰居路由器的關(guān)系,信息包括接口的IP地址
和子網(wǎng)掩碼、網(wǎng)絡(luò)類(lèi)型、鏈路開(kāi)銷(xiāo)及鏈路上的所有相鄰路由器。所有鏈路狀態(tài)信息構(gòu)成鏈路狀態(tài)數(shù)據(jù)庫(kù)。
區(qū)域:共享鏈路狀態(tài)信息的一組路由器。在同一個(gè)區(qū)域內(nèi)的路由器有相同的鏈路狀態(tài)數(shù)據(jù)庫(kù)。
鏈路狀態(tài)通告(LSA):用來(lái)表述路由器的本地狀態(tài),信息包括路由器接口的狀態(tài)和所形成的鄰接狀態(tài)。
最短路徑優(yōu)先(SPF)算法:是OSPF路由協(xié)議的基礎(chǔ)。SPF算法有時(shí)也被稱(chēng)為Dijkstra算法,這是因?yàn)镾PF算法是
Dijkstra發(fā)明的。OSPF路由器利用SPF獨(dú)立地計(jì)算出到達(dá)任意目的地的最佳路由。
鄰居:如果兩臺(tái)路由器共享一條公共數(shù)據(jù)鏈路,并且能協(xié)商Hello包中所指定的某些參數(shù),他們就形成鄰居。
鄰接關(guān)系:相互交換LSA的OSPF的鄰居建立的關(guān)系,一般說(shuō),在點(diǎn)到點(diǎn)、點(diǎn)到多點(diǎn)的網(wǎng)絡(luò)上鄰居路由器都能形成
鄰接關(guān)系,而在廣播多路訪問(wèn)和NBMA網(wǎng)絡(luò)上,要選舉DR和BDR,DR和BDR路由器與所有的鄰居路由器形成鄰
接關(guān)系,但是DRother路由器之間不能形成鄰接關(guān)系,只能形成鄰居關(guān)系。
OSPF的工作原理
OSPF路由器的狀態(tài):
Down:這是OSPF建立交互關(guān)系的初始化狀態(tài),OSPF進(jìn)程沒(méi)有與任何鄰居交換信息,等待進(jìn)入Init狀態(tài)。
Init:Initialization初始化狀態(tài),路由器的各個(gè)接口通過(guò)224.0.0.5發(fā)送Hello數(shù)據(jù)報(bào)文到其他運(yùn)行OSPF的路
由器,當(dāng)鄰居路由器收到第一個(gè)Hello數(shù)據(jù)報(bào)文,這時(shí)就進(jìn)入Init狀態(tài)。在該狀態(tài)時(shí),OSPF路由器已經(jīng)接收
到相鄰路由器發(fā)來(lái)的Hello數(shù)據(jù)報(bào)文,但自身的ID并沒(méi)有出現(xiàn)在該Hello報(bào)文內(nèi),也就是說(shuō),雙方的雙向信
還沒(méi)有建立起來(lái)。
2-Way:雙向狀態(tài),這個(gè)狀態(tài)可以說(shuō)是建立交互方式真正的開(kāi)始步驟。在這個(gè)狀態(tài),路由器接收到一個(gè)Hello回
應(yīng)報(bào)文,這個(gè)Hello含有自己和鄰居信息,路由器看到自身已經(jīng)處于相鄰路由器的Hello數(shù)據(jù)報(bào)內(nèi),雙向通
信已經(jīng)建立。指定路由器及備份指定路由器的選擇正是在這個(gè)狀態(tài)完成的。在這個(gè)狀態(tài),OSPF路由器還可
以根據(jù)其中的一個(gè)路由器是否指定路由器或是根據(jù)鏈路是否點(diǎn)對(duì)點(diǎn)或虛擬鏈路來(lái)決定是否建立交互關(guān)系。
ExStart:啟動(dòng)狀態(tài),這個(gè)狀態(tài)路由器之間的關(guān)系成為毗鄰關(guān)系,路由器和它的鄰居通過(guò)相互交換DD報(bào)文(該報(bào)
文稱(chēng)為空DD報(bào)文,它并不包含實(shí)際內(nèi)容,只包含一些標(biāo)志位),來(lái)決定路由器之間的主從關(guān)系,且具有最高
ID的路由將成為主設(shè)備,是唯一能夠增加序號(hào)的路由器。
Exchange:交換狀態(tài),在這個(gè)狀態(tài),路由器向相鄰的OSPF路由器發(fā)送DD報(bào)文來(lái)交換鏈路狀態(tài)信息(主路由器先
發(fā))。DD報(bào)文包含了出現(xiàn)在LSDB中的LSA條目頭部信息,條目信息可以為一條鏈路(link)或者一個(gè)網(wǎng)絡(luò)。從
這個(gè)狀態(tài)起,OSPF進(jìn)入Flooding狀態(tài)。
Loading:在Loading狀態(tài),OSPF路由器會(huì)就其發(fā)現(xiàn)的相鄰路由器的新的鏈路狀態(tài)數(shù)據(jù),發(fā)送LSR給相鄰路由器。
相鄰路由器收到LSR以后,一LSU作為應(yīng)答,其中包含了LSR所需要的完整信息。路由器收到LSU后,發(fā)送
LSAck再次做出確認(rèn)。
Full:這是兩個(gè)OSPF路由器建立交互關(guān)系的最后一個(gè)狀態(tài),在這時(shí),建立起交互關(guān)系的路由器之間已經(jīng)完成了
數(shù)據(jù)庫(kù)同步的工作,他們的鏈路狀態(tài)數(shù)據(jù)庫(kù)已經(jīng)一致,這個(gè)狀態(tài)稱(chēng)為“全毗鄰狀態(tài)”,每臺(tái)路由器保存著
一張毗鄰路由器列表稱(chēng)為“毗鄰數(shù)據(jù)庫(kù)”。兩個(gè)OSPF路由數(shù)據(jù)庫(kù)同步時(shí)所有鏈路狀態(tài)路由協(xié)議的最大共
性。 在OSPF路由協(xié)議中,數(shù)據(jù)庫(kù)同步關(guān)系僅僅在建立交互關(guān)系的路由器之間保持。
DR和BDR
點(diǎn)對(duì)點(diǎn)類(lèi)型的網(wǎng)絡(luò)只存在兩個(gè)節(jié)點(diǎn),所以不需要DR/BDR,它們彼此間完全相鄰。在多路訪問(wèn)網(wǎng)絡(luò)上,比如以太網(wǎng),可能存在多個(gè)路由器。為了避免路由器之間建立完全相鄰關(guān)系而引起的大量開(kāi)銷(xiāo),OSPF要求在區(qū)域中選舉一個(gè)DR,每個(gè)路由器都與之建立完全相鄰關(guān)系。DR負(fù)責(zé)收集所有的鏈路狀態(tài)信息,并發(fā)布給其他路由器。選舉DR的同時(shí)也選舉出一個(gè)BDR,在DR失效的時(shí)候BDR擔(dān)負(fù)起DR的職責(zé)。一旦選完成,即使新加一個(gè)優(yōu)先級(jí)更高的設(shè)備也不會(huì)進(jìn)行重新的選擇,只有在DR或者BDR出問(wèn)題的時(shí)候才會(huì)發(fā)生重選。如果DR出問(wèn)題,BDR會(huì)變成DR,然后進(jìn)行BDR重選。如果BDR出問(wèn)題,則進(jìn)行BDR的重選。
以多路訪問(wèn)網(wǎng)絡(luò)為例說(shuō)明DR/BDR的選舉過(guò)程:首先,OSPF路由器也是通過(guò)Hello數(shù)據(jù)報(bào)文來(lái)發(fā)現(xiàn)鄰居,然后進(jìn)入2-Way狀態(tài),在這個(gè)狀態(tài)下選舉DR和BDR。選舉是利用Hello報(bào)文內(nèi)的ID和Priority(優(yōu)先權(quán))字段值來(lái)確定。優(yōu)先權(quán)值大小為0-255(默認(rèn)值為1,0代表不參加選舉),優(yōu)先權(quán)值最高的路由器成為DR;如果優(yōu)先權(quán)值大小一樣,則ID最高的路由器選舉為DR,優(yōu)先權(quán)值次高的路由器成為BDR。優(yōu)先權(quán)值和ID值都可以直接設(shè)置。然后,DR與BDR互換信息,并同時(shí)與本子網(wǎng)內(nèi)其他路由器交換鏈路狀態(tài)信息,之后就是形成統(tǒng)一的鏈路狀態(tài)數(shù)據(jù)庫(kù),DR和BDR可保證網(wǎng)絡(luò)上的其他路由器都有關(guān)于網(wǎng)絡(luò)的相同鏈路狀態(tài)信息。最終路由器根據(jù)統(tǒng)一的鏈路狀態(tài)數(shù)據(jù)庫(kù)通過(guò)SPF算法,形成路由表。
說(shuō)明:先啟動(dòng)OSPF進(jìn)程的路由器會(huì)等待一段時(shí)間,如果在這個(gè)時(shí)間內(nèi)你沒(méi)有啟動(dòng)其它路由的OSPF進(jìn)程,第一臺(tái)路由器就認(rèn)為自己是DR,之后有路由器再加進(jìn)來(lái)也不能再選舉了。這個(gè)等待時(shí)間叫做WaitTimer計(jì)時(shí)器,Cisco規(guī)定的WaitTimer是40秒,這個(gè)時(shí)間內(nèi)你啟動(dòng)的路由是參與選舉的。在真實(shí)工作環(huán)境中,你在40秒內(nèi)大概只能啟動(dòng)兩臺(tái)路由器,DR會(huì)在前兩臺(tái)啟動(dòng)的路由器中產(chǎn)生,工作一段時(shí)間后,存活時(shí)間最久的路由器最后可能成為DR。
注意:DR與BDR的選舉僅存在于廣播和非廣播多路訪問(wèn)網(wǎng)絡(luò)中,選舉DR和BDR后,毗鄰關(guān)系僅存在于路由器與其DR和BDR之間。即:(full狀態(tài)能交換所有的數(shù)據(jù)包,2-way狀態(tài)只能交換hello包)
DR和BDR之間是full;
DR和DRother之間是full;
BDR和DRother之間是full;
DRother之間是2-way。
DR和BDR的選舉過(guò)程:
說(shuō)明:動(dòng)態(tài)路由協(xié)議OSPF、BGP在運(yùn)行過(guò)程中需要為該協(xié)議指定一個(gè)RouterID,作為此路由器的唯一標(biāo)識(shí),并要求在整個(gè)自制系統(tǒng)內(nèi)唯一。由于RouterID是一個(gè)32位的無(wú)符號(hào)整數(shù),這一點(diǎn)與IP地址十分相像,而且IP地址是不會(huì)出現(xiàn)重復(fù)現(xiàn)象的,所以通常將路由器的RouterID指定為與該設(shè)備上的某個(gè)接口的地址相同。由于默認(rèn)路由器的優(yōu)先值為1,所以O(shè)SPF路由器在選舉DR和BDR時(shí),用最高IP地址作為路由器的ID來(lái)決定DR和BDR。在實(shí)際應(yīng)用中,路由器的接口如果不穩(wěn)定,那么這臺(tái)路由器的ID也會(huì)隨著不斷變化,這樣就影響了整個(gè)網(wǎng)絡(luò)的穩(wěn)定性。于是,通過(guò)設(shè)置一個(gè)回環(huán)接口,路由器一旦配置了回環(huán)接口,那么它將把這個(gè)接口的IP地址作為路由器的ID。loopback接口的地址通常指定為32位掩碼,如210.83.130.1255.255.255.255。
路由表的維護(hù)
當(dāng)鏈路狀態(tài)沒(méi)有發(fā)生變化時(shí),OSPF路由器周期性地產(chǎn)生與其相連的所有鏈路的狀態(tài)信息。每個(gè)LSA都有個(gè)生存期,這個(gè)生存期的最大期限是1小時(shí),事發(fā)路由器在發(fā)送LSA的時(shí)候會(huì)把LSA的生存期設(shè)為0,隨著時(shí)間的推移,這個(gè)LSA的生存期到達(dá)1小時(shí)后就會(huì)被接收路由器從LSDB中刪除。通常,路由器每30分鐘就發(fā)送鏈路相關(guān)的LSU來(lái)刷新舊的LSA。每個(gè)LSA都有個(gè)序列號(hào),一臺(tái)路由器始發(fā)一個(gè)LSA,之后每產(chǎn)生一個(gè)LSA其序列號(hào)就加1,序列號(hào)是32位長(zhǎng),以0x80000001開(kāi)頭,0x7FFFFFFF結(jié)束。默認(rèn)情況下,OSPF路由器還周期性地(在點(diǎn)到點(diǎn)和廣播多路訪問(wèn)型網(wǎng)絡(luò)中為10秒,點(diǎn)到多點(diǎn)和非廣播多路訪問(wèn)型網(wǎng)絡(luò)中為30秒)向鄰居路由器發(fā)送一個(gè)Hello報(bào)文,如果一個(gè)路由器在Hello協(xié)議的Down機(jī)判定間隔時(shí)間(一般為Hello間隔時(shí)間的4倍)后還沒(méi)收到鄰居路由器的消息,那么它就會(huì)認(rèn)為鄰居出故障了。然后該路由器發(fā)送一個(gè)含有更新的鏈路狀態(tài)信息的LSU,這個(gè)過(guò)程使用Flooding方式發(fā)送給網(wǎng)絡(luò)中的其他路由器。
OSPF的Metric值:Cost=10^8/帶寬(簡(jiǎn)便記做100Mb/帶寬)。Metric值是由Cost值逐跳累加的。
Flooding在點(diǎn)到點(diǎn)和多路訪問(wèn)型網(wǎng)絡(luò)中有所不同:
1.在一個(gè)點(diǎn)對(duì)點(diǎn)型網(wǎng)絡(luò)中,使用多播地址224.0.0.5向鄰居發(fā)送LSU;
2.在一個(gè)多路訪問(wèn)型網(wǎng)絡(luò)中,DRothers使用多播地址224.0.0.6向DR和BDR發(fā)送更新數(shù)據(jù)包。當(dāng)DR接收到該數(shù)據(jù)報(bào)
文并確認(rèn)后,它使用多播地址224.0.0.5泛洪擴(kuò)散更新的數(shù)據(jù)包到網(wǎng)絡(luò)上的DRothers。
如果OSPF數(shù)據(jù)包被封裝在以太網(wǎng)幀內(nèi),目的MAC組播地址分別為:0100.5E00.0005,0100.5E00.0006。
說(shuō)明:OSPF的關(guān)鍵是通過(guò)Flooding方式發(fā)送LSA來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步。
OSPF多區(qū)域中路由器可分為以下4種類(lèi)型:
內(nèi)部路由器:所有接口在同一區(qū)域的路由器,維護(hù)一個(gè)鏈路狀態(tài)數(shù)據(jù)庫(kù)。
主干路由器:連接到OSPF網(wǎng)絡(luò)主干區(qū)域的路由器。也就是說(shuō),路由器至少有一個(gè)接口連接到區(qū)域0。
區(qū)域邊界路由器(ABR):具有連接多區(qū)域接口的路由器,一般作為一個(gè)區(qū)域的出口。ABR為每一個(gè)所連接的區(qū)域
建立鏈路狀態(tài)數(shù)據(jù)庫(kù),負(fù)責(zé)將所連接區(qū)域的路由摘要信息發(fā)送到主干區(qū)域,而主干區(qū)域,而主干區(qū)域上的
ABR則負(fù)責(zé)將這些信息發(fā)送到各個(gè)區(qū)域。生成LSA3。
自治域系統(tǒng)邊界路由器(ASBR):連接不同AS的路由器,它可以引入外部路由。生成LSA5、LSA7。
說(shuō)明:路由匯總可以減少LSA條目,可以使網(wǎng)絡(luò)更穩(wěn)定。區(qū)域間路由匯總必須在ABR上配置:area 1 range1.1.4.0 255.255.252.0;外部路由匯總必須在ASBR上配置:summary-address 2.2.4.0255.255.252.0。
OSPF的區(qū)域類(lèi)型
標(biāo)準(zhǔn)區(qū)域:一個(gè)標(biāo)準(zhǔn)區(qū)域可以接收鏈路更新信息和路由總結(jié),泛洪L(zhǎng)SA1,LSA2,LSA3 ,LSA4,LSA5。
主干區(qū)域:主干區(qū)域是連接各個(gè)區(qū)域的中心實(shí)體。主干區(qū)域始終是“區(qū)域0”,所有其他的區(qū)域都要連接到這
個(gè)區(qū)域上交換路由信息。主干區(qū)域擁有標(biāo)準(zhǔn)區(qū)域的所有性質(zhì),泛洪L(zhǎng)SA1,LSA2,LSA3,LSA4,LSA5。
末梢區(qū)域/末節(jié)區(qū)域:末梢區(qū)域是不接受自治系統(tǒng)以外的路由信息的區(qū)域。如果需要自治系統(tǒng)以外的路由,它
使用默認(rèn)路由0.0.0.0,泛洪L(zhǎng)SA1、LSA2、LSA3。
完全末梢區(qū)域:不接收外部自治系統(tǒng)的路由及自治系統(tǒng)內(nèi)其他區(qū)域的路由總結(jié)。需要發(fā)送到區(qū)域外的報(bào)文則使
用默認(rèn)路由0.0.0.0,泛洪L(zhǎng)SA1、LSA2、(LSA3 default)。
非純末梢區(qū)域(NSSA):類(lèi)似于末梢區(qū)域,但是允許接收以LSA7發(fā)送的外部路由信息,并且把LSA7轉(zhuǎn)成LSA5。
泛洪L(zhǎng)SA1、LSA2、LSA3、LSA7、(LSA7 default)。
完非純?nèi)┥覅^(qū)域:類(lèi)似于末梢區(qū)域,但是允許接收以LSA7發(fā)送的外部路由信息,并且把LSA7轉(zhuǎn)成LSA5。泛
洪L(zhǎng)SA1、LSA2、LSA7、(LSA3 default)。
OSPF支持的網(wǎng)絡(luò)類(lèi)型
根據(jù)路由器連接的物理網(wǎng)絡(luò)不同,OSPF將網(wǎng)絡(luò)劃分為4種類(lèi)型:
BMA(廣播多路訪問(wèn)型 BroadcastMultiAccess):如Ethernet、Token Ring和FDDI等,需要選舉DR/BDR。
NBMA(非廣播多路訪問(wèn)型 None BroadcastMultiAccess):如Frame Relay、X.25和SMDS等,多為全網(wǎng)狀,
所有接口屬于同一子網(wǎng),因?yàn)榉枪蚕斫橘|(zhì),需要手動(dòng)指定鄰居,需要選舉DR/BDR。
P-to-P(點(diǎn)到點(diǎn)型 Point-to-Point):如PPP、HDLC。
P-to-MP(點(diǎn)到多點(diǎn)型Ponit-to-MultiPoint):部分網(wǎng)狀或星型網(wǎng)絡(luò)拓?fù)?,所有接口屬于同一子網(wǎng),不需要
選舉DR/BDR,鄰居可以動(dòng)態(tài)發(fā)現(xiàn)。
虛電路:虛電路的網(wǎng)絡(luò)類(lèi)型是點(diǎn)到點(diǎn)型。
OSPF的LSA類(lèi)型 R1#showip ospf database//查看鏈路狀態(tài)數(shù)據(jù)庫(kù)
LS1 路由器LSA(RouterLSA):R1#show ip ospf databaserouter
域內(nèi)路由,僅在本區(qū)域內(nèi)傳播,不會(huì)穿越ABR;每臺(tái)路由器都會(huì)產(chǎn)生;包含本路由器的直連的鄰居,以及直連網(wǎng)絡(luò)的信息。一個(gè)邊界路由器可能產(chǎn)生多個(gè)LSA類(lèi)型1,路由表中用O表示。
Link ID:RouterIDAdvertising Router:Router ID
LS age:489//LSA的年齡,即LSA從生成到查看此LSA時(shí)所經(jīng)過(guò)的時(shí)間,以秒為單位。
Options:(No TOS-capability,DC)//用于通知對(duì)端到端是否具有處理按需撥號(hào)鏈路的功能。
LS Type:Router Lins //標(biāo)識(shí)LSA類(lèi)型,這里是RouterLinks類(lèi)型,即類(lèi)型1LSA,用來(lái)描述路由器周?chē)逆?/p>
路狀態(tài)。
Link State ID:10.10.2.1//標(biāo)識(shí)LSA所描述的網(wǎng)絡(luò)環(huán)境,其取值和LSA的類(lèi)型有關(guān),在Router Links類(lèi)型的
LSA中,取值為發(fā)出此LSA的路由器的Router ID。
Advertising Router:10.10.2.1//始發(fā)此LSA的路由器的Router ID。
LS Seq Number:80000002//LSA的序列號(hào),用于檢測(cè)舊的或者重復(fù)的LSA。
Checksum:0x7B29 //除LS age字段以外的整個(gè)LSA的校驗(yàn)和。
Length:36 //LSA的長(zhǎng)度,包括20個(gè)字節(jié)的LSA報(bào)頭部分。
Area Border Router //描述路由器類(lèi)型
Number of Links:1 //表示有1條鏈路狀態(tài)信息
------以上為L(zhǎng)SA的報(bào)頭信息------
Link connected to:a Transit Network//表示路由器周?chē)嬖诘逆溌奉?lèi)型,這里是TransitNetwork。一臺(tái)OSPF路由器周?chē)赡艽嬖诘逆溌窢顟B(tài)分為以下4類(lèi),到另一臺(tái)路由器的點(diǎn)對(duì)點(diǎn)的連接(Router);連接到transit網(wǎng)絡(luò)(如以太網(wǎng));連接到stub網(wǎng)絡(luò)(StubNet);虛連接(VirtualLink)。
(Link ID)Designated Router address:210.83.131.1//LinkID用于標(biāo)識(shí)周?chē)嬖诘逆溌?,取值和連接的鏈路類(lèi)型有關(guān)。如果是到另一臺(tái)路由器的點(diǎn)對(duì)點(diǎn)連接,取值為鄰居路由器的RouterID;如果連接到transit網(wǎng)絡(luò),其取值為DR的IP地址。這里連的是TransitNetwork,所以取值為DR的IP地址。如果連接到stub網(wǎng)絡(luò),取值為相應(yīng)子網(wǎng)的網(wǎng)絡(luò)地址。如果是虛連接,取值是鄰居路由器的RouterID。
(Link Data)Router Interfaceaddress:210.83.131.2 //LinkData取值和連接的鏈路類(lèi)型有關(guān),如果是到另一臺(tái)路由器的點(diǎn)對(duì)點(diǎn)的連接或連接transit網(wǎng)絡(luò)(如以太網(wǎng)),取值為與對(duì)端直連的接口IP;如果連接到stub網(wǎng)絡(luò)(StubNet),取值是相應(yīng)子網(wǎng)的子網(wǎng)掩碼(子網(wǎng)網(wǎng)絡(luò)地址在LinkID中表示)。
TOS 0 Metrics:10 //引入外部路由的花費(fèi)值。
TOS:服務(wù)類(lèi)型,該數(shù)據(jù)包所需要提供的服務(wù),即最小時(shí)延、最大吞吐量、最高可靠性、最小費(fèi)用等。OSPF和IS-IS都能根據(jù)這些字段值進(jìn)行路由決策。
LSA2 網(wǎng)絡(luò)LSA(NetworkLSA):R1#show ip ospf databasenetwork
僅在本區(qū)域內(nèi)傳播;只有BMA網(wǎng)絡(luò)才會(huì)產(chǎn)生LSA2,由DR發(fā)出;標(biāo)識(shí)出BMA網(wǎng)絡(luò)中有哪些路由器以及本網(wǎng)的掩碼信息。路由表中用O表示。
LinkID:DR的接口IPAdvertising Router:DR的Router ID
LSA3 網(wǎng)絡(luò)匯總LSA(Network SummaryLSA):R1#show ip ospf databasesummary
匯總鏈路域間路由,能泛洪到整個(gè)AS;由ABR產(chǎn)生并發(fā)出,穿越一個(gè)ABR其AdvertisingRouter就會(huì)變成此ABR的RID;包含本區(qū)域中的所有路由信息,包括網(wǎng)絡(luò)號(hào)和掩碼。路由表中用IA表示。
LinkID:路由(網(wǎng)絡(luò)號(hào))Advertising Router:ABR的RID(經(jīng)過(guò)一個(gè)ABR,就會(huì)變?yōu)檫@個(gè)ABR的RID)
LSA4 ASBR匯總LSA(ASBR SummaryLSA):R1#show ip ospf databaseasbr-summary
把ASBR的RID傳播到其它區(qū)域,讓其它區(qū)域的路由器得知ASBR的位置;由ABR產(chǎn)生并發(fā)出,穿越一個(gè)ABR其AdvertisingRouter就會(huì)變成此ABR的RID。在ASBR直連的區(qū)域內(nèi)不會(huì)產(chǎn)生LAS4,因?yàn)锳SBR會(huì)發(fā)出LSA1,其中會(huì)指明自己是ASBR。與類(lèi)型3的區(qū)別在于類(lèi)型4描述到OSPF網(wǎng)絡(luò)的外部路由,而類(lèi)型3描述區(qū)域內(nèi)路由,這些鏈路信息不被擴(kuò)散到完全末梢區(qū)域,路由表中用IA表示。
LinkID:ASBR的RIDAdvertising Router:ABR的RID(經(jīng)過(guò)一個(gè)ABR,就會(huì)變?yōu)檫@個(gè)ABR的RID)
LSA5 自治系統(tǒng)外部LSA(Autonomous systemexternal LSA):R1#show ip ospfdatabase external
域外路由,不屬于某個(gè)區(qū)域;由ASBR產(chǎn)生并泛洪到整個(gè)AS,不會(huì)改變AdvertisingRouter;包含域外的路由信息。除了末梢區(qū)域、完全末梢區(qū)域和次節(jié)末梢區(qū)域外,LSA5在整個(gè)AS中發(fā)送,路由表中用E1或E2表示。
LinkID:路由(網(wǎng)絡(luò)號(hào))Advertising Router:ASBR的RID(不改變)
metric-type:OSPF引入外部路由時(shí),其路由器需要計(jì)算到達(dá)外部路由的花費(fèi)。metric-type分為type1和type2,默認(rèn)為type2。type1,計(jì)算的花費(fèi)值就是到達(dá)ASBR的花費(fèi)+LSA所攜帶的metric值,即度量值=數(shù)據(jù)報(bào)文所經(jīng)過(guò)的各內(nèi)部鏈路成本+被分配的外部路徑成本(type2的度量值);type2,計(jì)算的花費(fèi)就是LSA所攜帶的metric值,即度量值=被分配的外部路徑成本。所以type1優(yōu)于type2,推薦使用type1。
LSA6 組成員LSA(Group membershipLSA):多播OSPF(MOSPF),MOSPF可以讓路由器利用鏈路狀態(tài)數(shù)據(jù)庫(kù)的信息構(gòu)造用于多播報(bào)文的多播發(fā)布樹(shù),目前不支持。
LSA7 NSSA外部LSA(NSSA ExternalLSA):R1#show ip ospf databasenssa-external
特殊的域外路由,只存在于NSSA區(qū)域中;由一個(gè)連接NSSA的ASBR產(chǎn)生的關(guān)于NSSA的信息,在NSSA內(nèi)擴(kuò)散,并且可以被ABR轉(zhuǎn)換為L(zhǎng)SA5。路由表中用N1或N2表示。
LinkID:路由(網(wǎng)絡(luò)號(hào))Advertising Router:ASBR的RID(只在NSSA區(qū)域中)
LSA8 BGP的外部屬性LSA(Externalattributes LSA for BGP)
LSA9 不透明LSA(本地鏈路范圍) (opaqueLSA):目前主要用于MPLS多協(xié)議標(biāo)簽交換協(xié)議
LSA10 不透明LSA(本地區(qū)域范圍) (opaqueLSA):目前主要用于MPLS多協(xié)議標(biāo)簽交換協(xié)議。
LSA11 不透明LSA(AS范圍) (opaqueLSA):目前主要用于MPLS多協(xié)議標(biāo)簽交換協(xié)議。
說(shuō)明:重發(fā)布進(jìn)OSPF的路由默認(rèn)為E2,Cost=20,且傳遞中不改變Cost值。如果改為E1,則在傳遞過(guò)程中會(huì)累加每個(gè)入接口的Cost值。
總結(jié):
路由器收到LSA后的處理過(guò)程
1.如果有該LSA信息,查看序列號(hào);如果序列號(hào)相同,忽略這條LSA;如果序列號(hào)大于本地的序列號(hào),將其加到數(shù)
據(jù)庫(kù),并進(jìn)行SPF,更新路由表;如果序列號(hào)小于本地的序列號(hào),將一個(gè)包含自己的LSA新信息發(fā)送給發(fā)送方。
2.如果數(shù)據(jù)庫(kù)沒(méi)有該LSA信息,將其加到數(shù)據(jù)庫(kù)表,并發(fā)送一個(gè)ACK返回,并運(yùn)行SPF,更新路由表。
OSPF里的幾個(gè)特殊區(qū)域(stub、Totally stubby、NSSA、TotallyNSSA)
首先:不論什么特殊區(qū)域,其區(qū)域內(nèi)的所有路由器都要設(shè)置成對(duì)應(yīng)的末梢區(qū)域,否則鄰居down,因?yàn)榕渲媚┥覅^(qū)域的路由器上所有接口發(fā)出的Hello包中都會(huì)有末梢標(biāo)簽。其次:對(duì)于所有末梢區(qū)域,ABR總是過(guò)濾掉LSA5。Totally區(qū)域里ABR還將LSA3過(guò)濾掉,普通stub區(qū)域和NSSA區(qū)域會(huì)正常通行LSA3。
stub area
命令:區(qū)域內(nèi)所有路由器上配置 R1(config-router)#area area_id stub
要求:不是主干區(qū)域,本區(qū)域只有一個(gè)出口,無(wú)ASBR(除了ABR可能是ASBR),無(wú)虛鏈路經(jīng)過(guò),最好只有一個(gè)ABR
(多個(gè)ABR可能導(dǎo)致次優(yōu)路由)。
優(yōu)點(diǎn):減小拓?fù)浔砗吐酚杀淼拇笮 ?/p>
特點(diǎn):泛洪L(zhǎng)SA1、LSA2、LSA3。沒(méi)有O E1、O E2、O N1、ON2類(lèi)型的路由條目,ABR會(huì)自動(dòng)向本區(qū)域發(fā)送一條指向
自己的默認(rèn)路由(O * IA)。如有需要可以在ABR上匯總一下本區(qū)域內(nèi)的路由。
說(shuō)明:當(dāng)使用area 0 stub命令時(shí),返回OSPF:backbone cannot be configured as a stub area.說(shuō)明Area 0不可配置為末梢區(qū)域。
Totally stubbyarea
命令:區(qū)域內(nèi)所有路由器上配置 R1(config-router)#area area_id stub;
ABR上再配置 R1(config-router)#area area_id stubno-summary
要求:不是主干區(qū)域,本區(qū)域只有一個(gè)出口,無(wú)ASBR(除了ABR可能是ASBR),無(wú)虛鏈路經(jīng)過(guò),最好只有一個(gè)ABR
(多個(gè)ABR可能導(dǎo)致次優(yōu)路由)。
優(yōu)點(diǎn):比stub更進(jìn)一步減小拓?fù)浔砗吐酚杀淼拇笮 ?/p>
特點(diǎn):泛洪L(zhǎng)SA1、LSA2。沒(méi)有O E1、O E2、O N1、O N2、OIA類(lèi)型的路由條目(除了O * IA)。ABR會(huì)自動(dòng)向區(qū)域
內(nèi)發(fā)送一條指向自己的默認(rèn)路由。
末梢區(qū)域與完全末梢區(qū)域的區(qū)別:末梢區(qū)域允許AS外部的路由進(jìn)入,而完全末梢區(qū)域卻不可以。也就是說(shuō)完全末梢區(qū)域只是比末梢區(qū)域多隔離了LSA3,其它還是一樣的。
說(shuō)明:只有Cisco支持完全末梢區(qū)域,其他產(chǎn)品不支持。
NSSA
命令:區(qū)域內(nèi)所有路由器上配置 R1(config-router)#area area_id nssa
要求:不是主干區(qū)域,無(wú)虛鏈路經(jīng)過(guò),最好只有一個(gè)ABR(多個(gè)ABR可能導(dǎo)致次優(yōu)路由)。
優(yōu)點(diǎn):和stub一樣減小拓?fù)浔砗吐酚杀淼拇笮?,還具備靈活性,ASBR可以接收外部路由。
特點(diǎn):泛洪L(zhǎng)SA1、LSA2、LSA3、LSA7。有所有類(lèi)型的路由條目。即阻止LSA5發(fā)送進(jìn)來(lái)的外部路由,但允許接收以
LSA7發(fā)送進(jìn)來(lái)的外部路由信息,并且ABR要負(fù)責(zé)把LSA7轉(zhuǎn)換為L(zhǎng)SA5。
說(shuō)明:由于自身可以將外部網(wǎng)絡(luò)的路由重發(fā)布進(jìn)OSPF進(jìn)程,所以ABR不會(huì)自動(dòng)向NSSA區(qū)域發(fā)送一條指向自己的默認(rèn)路由。但可以手工在ABR上配置,向NSSA區(qū)域內(nèi)發(fā)送默認(rèn)路由,配置后會(huì)在ABR上產(chǎn)生一條LSA7的默認(rèn)路由。
R1(config-router)#default-informationoriginate [always]。
Totally NSSA
命令:區(qū)域內(nèi)所有路由器上配置 R1(config-router)#area area_id nssa;
ABR上再配置 R1(config-router)#area area_id nssano-summary
要求:不是主干區(qū)域,無(wú)虛鏈路經(jīng)過(guò),最好只有一個(gè)ABR(多個(gè)ABR可能導(dǎo)致次優(yōu)路由)。
優(yōu)點(diǎn):比NSSA更進(jìn)一步減小拓?fù)浔砗吐酚杀淼拇笮 ?/p>
特點(diǎn):泛洪L(zhǎng)SA1、LSA2、LSA7。沒(méi)有O E1、O E2、O IA類(lèi)型的路由條目(除了O* IA)。ABR會(huì)過(guò)濾掉AS外部的路
由LSA5和其他區(qū)域的路由LSA3進(jìn)入本區(qū)域,但ASBR可以將外部路由LSA7從發(fā)布進(jìn)本區(qū)域。由于沒(méi)有去往
其它區(qū)域的路由,ABR會(huì)自動(dòng)向區(qū)域內(nèi)發(fā)送一條指向自己的默認(rèn)路由。
非純末梢區(qū)域與完全非純末梢區(qū)域的區(qū)別:非純末梢區(qū)域允許其它區(qū)域的路由進(jìn)入,而完全非純末梢區(qū)域卻不可以。但完全非純末梢區(qū)域的ABR會(huì)自動(dòng)向本區(qū)域內(nèi)發(fā)送一條指向自己的默認(rèn)路由。
虛鏈路
虛鏈路是對(duì)于不連續(xù)區(qū)域提供到主干區(qū)域的邏輯連續(xù)。所有OSPF區(qū)域必須和主干區(qū)域直接相連,來(lái)交換區(qū)域間路由信息,但是有些區(qū)域無(wú)法與主干直接相連,可以通過(guò)虛連接來(lái)實(shí)現(xiàn)這些區(qū)域和主干區(qū)域的連接。如果配置了虛鏈路,應(yīng)該僅僅把它用來(lái)作為修復(fù)無(wú)法避免的網(wǎng)絡(luò)拓?fù)鋯?wèn)題的臨時(shí)手段,不能作為主要解決方法。虛鏈路可以看作是一個(gè)標(biāo)明OSPF域的某個(gè)部分是否需要重新設(shè)計(jì)的標(biāo)志,要消除虛鏈路就要重新設(shè)計(jì)OSPF域的某個(gè)部分。值得注意的是虛電路傳送的LSA為DNA,時(shí)間抑制、永不老化。
命令:R1(config-router)#areaarea_id virtualrouter_id//router_id為對(duì)端ABR的RID
說(shuō)明:虛電路的Metric等同于所經(jīng)過(guò)的全部鏈路開(kāi)銷(xiāo)之和。
孤立區(qū)域的解決方法:
虛電路(虛電路穿過(guò)的區(qū)域一定是標(biāo)準(zhǔn)區(qū)域,標(biāo)準(zhǔn)區(qū)域一定是全路由的);
隧道(如果中間間隔區(qū)域?yàn)槟┥覅^(qū)域,只能用隧道解決);
多進(jìn)程再發(fā)布。
配置虛鏈路的目的:
通過(guò)一個(gè)非主干區(qū)域連接一個(gè)非主干區(qū)域到主干區(qū)域;
通過(guò)一個(gè)非主干區(qū)域連接兩個(gè)分開(kāi)的主干區(qū)域部分。
配置虛鏈路規(guī)則:
虛鏈路必須配置在要穿過(guò)區(qū)域的兩臺(tái)ABR之間;
虛鏈路所經(jīng)過(guò)的區(qū)域作為傳送區(qū)域(Transit Area),必須擁有完整的路由信息,即不能是末梢區(qū)域。
配置虛鏈路的弊端:
建立虛鏈路使得連接虛鏈路的區(qū)域和Area 0之間的信息交換都要通過(guò)虛鏈路進(jìn)行,要占用大量帶寬;
建立虛鏈路后,在虛鏈路通過(guò)的區(qū)域中做策略時(shí)很容易出現(xiàn)問(wèn)題,造成網(wǎng)絡(luò)不通;
虛鏈路通過(guò)的區(qū)域有很多限制,例如不能使用存根區(qū)域等。
說(shuō)明:虛鏈路必須連接Area 0,Area0不能配置為末梢區(qū)域,所以在OSPF末梢區(qū)域中不能設(shè)置虛鏈路。當(dāng)使用虛鏈路配置在一個(gè)末梢區(qū)域Area 1時(shí),返回:area 1 isa stub or nssa so virtual link is are notallowed.因?yàn)樘撴溌穫鬏數(shù)腖SA類(lèi)型和標(biāo)準(zhǔn)區(qū)域是一樣的,假如在末梢區(qū)域配置虛鏈路,某些LSA就不能傳輸,所以不能配置虛鏈路。
OSPF報(bào)文
OSPF報(bào)頭:
OSPFVersion,版本:OSPF的版本號(hào)。
MessageType,類(lèi)型:OSPF數(shù)據(jù)包類(lèi)型。
PacketLength,數(shù)據(jù)包長(zhǎng)度:OSPF數(shù)據(jù)包的長(zhǎng)度,包括數(shù)據(jù)包頭部的長(zhǎng)度。
Source OSPFRouter,路由器ID:,始發(fā)路由器的ID。
AreaID,區(qū)域ID:數(shù)據(jù)包的始發(fā)區(qū)域。
PacketChecksum,校驗(yàn)和:對(duì)整個(gè)數(shù)據(jù)包的標(biāo)準(zhǔn)IP校驗(yàn)和。
AuthType,認(rèn)證類(lèi)型:認(rèn)證模式,“0”表示不認(rèn)證、“1”表示明文認(rèn)證、“2”表示MD5認(rèn)證。
AuthDate,身份認(rèn)證:數(shù)據(jù)包認(rèn)證的必要信息。
說(shuō)明:OSPF在IP層上傳輸,協(xié)議號(hào)89,每個(gè)OSPF報(bào)文都有一個(gè)相同的OSPF頭部,然后是不同類(lèi)型的OSPF報(bào)文。
Hello報(bào)文:通過(guò)多播地址224.0.0.5周期性地發(fā)送,來(lái)發(fā)現(xiàn)和維護(hù)鄰接關(guān)系。
NetworkMask,網(wǎng)絡(luò)掩碼:發(fā)送Hello報(bào)文接口的子網(wǎng)掩碼。
HelloInterval,Hello間隔:發(fā)送方路由器連續(xù)兩次發(fā)送Hello數(shù)據(jù)包之間的秒數(shù)。
Options,可選項(xiàng):表明本路由器支持哪些功能。
RouterPriority,路由器優(yōu)先級(jí):選舉DR/DR時(shí)使用,是一串8位長(zhǎng)的數(shù)字,默認(rèn)值為1。
Router DeadInterval,路由器Dead間隔:宣告鄰居路由器無(wú)效之前等待的最長(zhǎng)時(shí)間。4倍于Hello報(bào)文間
隔,鄰居之間的這些計(jì)時(shí)器必須設(shè)置一樣。
Designated Router/Backup DesignatedRouter,DR/BDR:DR/BDR的RID(如果有的話(huà))。
Active Neighbor,鄰居列表:列出相鄰OSPF路由器的RID。
Hello報(bào)文發(fā)送間隔:在點(diǎn)到點(diǎn)和廣播多路訪問(wèn)型網(wǎng)絡(luò)中為10秒,點(diǎn)到多點(diǎn)和非廣播多路訪問(wèn)型網(wǎng)絡(luò)中為30秒。
Hello報(bào)文所包含的內(nèi)容:
說(shuō)明:“*”區(qū)域全部匹配才能建立鄰居關(guān)系;鄰居關(guān)系是full狀態(tài),而鄰接關(guān)系是處于2-way狀態(tài)。
Hello報(bào)文的處理過(guò)程:
DD報(bào)文 (DatabaseDescription,數(shù)據(jù)庫(kù)描述):
只包含LSA頭部信息,描述本路由器保存的LSDB。且只在初始化時(shí)產(chǎn)生,僅在形成鄰接關(guān)系的路由器間傳遞。
空DD報(bào)文:
I=1:這是第一個(gè)DD報(bào)文。
M=1:后邊還有DD報(bào)文,說(shuō)明這不是最后一個(gè)DD報(bào)文。
MS=1:宣稱(chēng)自己是Master。/MS=0:自己是Slave。
包含有LSA頭部信息的DD報(bào)文:
包含發(fā)送方路由器的鏈路狀態(tài)數(shù)據(jù)庫(kù)的簡(jiǎn)略列表,接收方路由器使用本數(shù)據(jù)包與其本地鏈路狀態(tài)數(shù)據(jù)庫(kù)對(duì)比。

說(shuō)明:DD報(bào)文有兩種,一種是空DD報(bào)文,用來(lái)確定Master/Slave關(guān)系(避免DD報(bào)文的無(wú)序發(fā)送)。另一種是包含有LSA頭部信息的DD報(bào)文(確定M/S關(guān)系后,才發(fā)送有路由信息的DD報(bào)文),收到有路由信息的DD報(bào)文后,比較自己的數(shù)據(jù)庫(kù),發(fā)現(xiàn)對(duì)方的數(shù)據(jù)庫(kù)中有自己需要的數(shù)據(jù),則向?qū)Ψ桨l(fā)送LSR報(bào)文,請(qǐng)求對(duì)方給自己發(fā)送數(shù)據(jù)。
LSR報(bào)文 (Link-StateRequest,鏈路狀態(tài)請(qǐng)求):
向鄰居請(qǐng)求DD數(shù)據(jù)包中的或者本地已經(jīng)過(guò)時(shí)的部分或全部LSA。
LSU報(bào)文 (Link-StateUpdate,鏈路狀態(tài)更新):
向鄰居發(fā)送其請(qǐng)求或更新的LSA。LSU包含7種類(lèi)型的LSA。
LSAck報(bào)文 (Link-StateAcknowledgement,鏈路狀態(tài)確認(rèn)):
收到鄰居發(fā)送的LSA后發(fā)送的確認(rèn)報(bào)文。
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101016/299697.html
愛(ài)華網(wǎng)


