熊建輝, 盧 宇,b, 鄭中華
(福建師范大學(xué)a.協(xié)和學(xué)院;b.物理與能源學(xué)院,福州350117)
隨著各種新型ICP及應(yīng)用不斷涌現(xiàn),生活、工作、娛樂越來越網(wǎng)絡(luò)化、便捷化,電信骨干網(wǎng)絡(luò)流量每年以50%以上的速度高速增長,使得互聯(lián)網(wǎng)規(guī)模的不斷擴(kuò)大及運(yùn)營商網(wǎng)絡(luò)出現(xiàn)流量分布不均衡、資源利用率低等問題[1],產(chǎn)生了如何基于現(xiàn)有網(wǎng)絡(luò)實(shí)現(xiàn)多樣化路由策略等實(shí)現(xiàn)流量調(diào)度需要。核心骨干網(wǎng)絡(luò)路由器路由條目多達(dá)十余萬條,路由協(xié)議成為計算機(jī)網(wǎng)絡(luò)的核心技術(shù)和萬物互聯(lián)的基礎(chǔ)技術(shù)。邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)是目前唯一的一種廣泛應(yīng)用于運(yùn)營商網(wǎng)絡(luò)的外部網(wǎng)關(guān)協(xié)議(Exterior Gateway Protocol,EGP)[2],可用來解決不同自治系統(tǒng)(Autonomous System,AS)之間的路由及通過路由策略優(yōu)化路由的問題,從而實(shí)現(xiàn)流量按需可控調(diào)度。
骨干網(wǎng)路由設(shè)備價格昂貴,而現(xiàn)網(wǎng)承載任務(wù)重大、試驗(yàn)風(fēng)險高[3]。本文基于EVE-NG虛擬仿真環(huán)境下的IOL 及i86bi_linux-L3-adventer prisek9-ms.157-3.M.bin仿真設(shè)計并實(shí)現(xiàn)了一個多AS有選路需求的仿真網(wǎng)絡(luò),重點(diǎn)是研究BGP路由協(xié)議的技術(shù)框架、原理,驗(yàn)證BGP路由協(xié)議工作機(jī)制,仿真設(shè)計方案還可直接移植到實(shí)際的網(wǎng)絡(luò)中。
路由協(xié)議根據(jù)作用范圍可分為內(nèi)部網(wǎng)關(guān)協(xié)議(Interror Gateway Protocol,IGP)和EGP。BGP 屬于EGP被稱為路徑矢量路由協(xié)議,支持CIDR和VLSM,有別于距離矢量路由協(xié)議在于其定義了路徑屬性,并且可以根據(jù)需要通過設(shè)置不同的BGP路徑屬性值來控制選路[4]。BGP路由條目數(shù)量巨大,以增量更新及觸發(fā)更新機(jī)制基于TCP179端口更新路由信息。當(dāng)前使用的BGP協(xié)議版本為RFC 4271,并且在一些方面進(jìn)行了升級,具體詳見RFC6286,RFC6608,RFC6793,RFC7606,RFC7607,RFC7705,RFC 8212(2017 年7月)等。以下從BGP基本術(shù)語、鄰居建立機(jī)制、消息類型等入手闡述BGP路由協(xié)議原理。
自治系統(tǒng)(AS):處于同一個管理機(jī)構(gòu)控制之下的路由器和網(wǎng)絡(luò)群組的集合。如CHINANET-IDC-GD就是一個AS。AS通過16 bit的AS號來標(biāo)識,并分公共AS號(1~64511)和私有AS號(64512~65535),在RFC 6793 中其長度擴(kuò)展為32 bit(1 ~4294967295)[5]。在AS內(nèi)一般運(yùn)行IGP,運(yùn)營商網(wǎng)絡(luò)常用的IGP有ISIS、OSPF 等。
BGP發(fā)言者(BGP Speaker):運(yùn)行BGP協(xié)議的路由器,也稱BGP路由器。
BGP對等體(BGP Peer):相互交換消息的BGP發(fā)言者之間互稱為BGP對等體。
EBGP關(guān)系:處于不同AS的邊界BGP發(fā)言者與對等體之間的關(guān)系。為形成EBGP關(guān)系一般需要確保BGP發(fā)言者與對等體存在直連或靜態(tài)路由。
IBGP關(guān)系:因BGP路由穿越本AS傳遞到另外一個AS,而在本AS內(nèi)形成的BGP發(fā)言者與對等體之間的關(guān)系。為形成IBGP關(guān)系先確保AS內(nèi)部存在IGP(如OSPF等)路由使得BGP發(fā)言者與對等體網(wǎng)絡(luò)能通。
BGP路由協(xié)議中通過形成并維護(hù)BGP鄰居表(adjancy table),BGP 轉(zhuǎn)發(fā)表(forwarding database)及路由表(routing table)來實(shí)現(xiàn)其工作機(jī)制。其中形成鄰居表是基礎(chǔ),每個BGP發(fā)言者鄰居關(guān)系建立過程(BGP有限狀態(tài)機(jī))如下:
空閑(Idle)狀態(tài):為初始狀態(tài),當(dāng)協(xié)議激活后初始化,復(fù)位計時器,發(fā)起第一個TCP連接,同時監(jiān)聽遠(yuǎn)程對等體所發(fā)起的連接,轉(zhuǎn)向連接狀態(tài)。
連接(Connect)狀態(tài):開始TCP連接并等待TCP連接成功的消息。如果TCP連接成功,則進(jìn)入Open發(fā)送狀態(tài);如果TCP連接失敗,進(jìn)入活躍狀態(tài)。
活躍(Active)狀態(tài):總是試圖建立TCP連接,若連接計時器超時,則退回到連接狀態(tài),TCP連接成功就轉(zhuǎn)為OPEN發(fā)送狀態(tài)。
OPEN 發(fā)送(Open sent)狀態(tài):TCP連接已建立,已發(fā)送第一個OPEN報文,等待接收對方的Open報文,并對報文進(jìn)行檢查,若發(fā)現(xiàn)錯誤則發(fā)送Notification消息報文并退回到Idle狀態(tài)。若檢查無誤則發(fā)送Keepalive消息報文,Keepalive計時器開始計時,并轉(zhuǎn)為Open證實(shí)狀態(tài)。
OPEN證實(shí)(Open confirm)狀態(tài):等待接受Keepalive報文,復(fù)位保持計時器。如收到Keepalive報文,就轉(zhuǎn)為Established狀態(tài),鄰居關(guān)系完成。如果系統(tǒng)收到一條更新或Keepalive消息,它將重新啟動保持計時器;如果收到Notifi cation消息,則退回到空閑狀態(tài)。
已建立(Established)狀態(tài):鄰居關(guān)系協(xié)商完成,即建立了鄰居(對等體)關(guān)系,路由器將和鄰居交換Update報文,同時復(fù)位保持計時器。
Open消息:為TCP連接建立(3次握手)后發(fā)送的第一個消息,用于建立BGP對等體之間的鄰居關(guān)系形成BGP鄰居表。
Keepalive消息:BGP會周期性地向?qū)Φ润w發(fā)出Keepalive消息,用來復(fù)位保持穩(wěn)定的鄰居關(guān)系。
Update消息:用于在對等體之間交換路由信息,其中攜帶BGP路徑屬性,它既可發(fā)布可達(dá)路由信息,也可撤銷不可達(dá)路由信息,用來形成BGP轉(zhuǎn)發(fā)表。
Notification消息:當(dāng)BGP檢測到錯誤狀態(tài)時,就向?qū)Φ润w發(fā)出Notification消息,之后BGP連接會立即中斷。
Route-refresh消息:當(dāng)路由策略發(fā)送變化時,請求BGP鄰居重新通告路由的消息,用來刷新BGP轉(zhuǎn)發(fā)表。
BGP協(xié)議中AS能接收鄰居的消息也會宣告消息給鄰居[7],消息中的路徑屬性可以根據(jù)需要設(shè)計路由策略來修改,然后根據(jù)選路原則從BGP轉(zhuǎn)發(fā)表中選擇最優(yōu)的BGP轉(zhuǎn)發(fā)條目放進(jìn)路由表中。
BGP協(xié)議把一個AS理解為一個大的路由器,BGP表的每一條條目包含下一跳AS、網(wǎng)絡(luò)目的前綴及若干屬性。該屬性稱為BGP路徑屬性,正是設(shè)計了眾多BGP路徑屬性,方可根據(jù)需要改變BGP路徑屬性來制定想要的路由策略,從而實(shí)現(xiàn)流量調(diào)度,成為BGP除能支持大規(guī)模路由條目外另一大優(yōu)勢。BGP路徑屬性就是可對特定路由進(jìn)行了進(jìn)一步描述的參數(shù),被攜帶在Update消息中在BGP路由器中傳遞,通過制定策略在發(fā)送或接受該消息時對路徑屬性值進(jìn)行修改,然后再根據(jù)BGP選路原則決定該條目是否優(yōu)選為最佳,最佳的將被放進(jìn)路由表中。BGP路徑屬性可被看作是不同類型的metric值,一般分為公認(rèn)強(qiáng)制遵守、公認(rèn)可選遵守、可選并傳遞的、可選不傳遞的等4類屬性[8]。公認(rèn)的屬性是指不同網(wǎng)絡(luò)設(shè)備廠商都識別的,又分為強(qiáng)制包含和可選包含??蛇x是指可以不識別此類屬性,傳遞的是指傳遞給對等體,不傳遞即不會傳遞給對等體。目前BGP及其擴(kuò)展協(xié)議定義了多達(dá)16種路徑屬性,其中常見的屬性有ORIGIN、AS-PATH、NEXT-HOP、LOCAL-PREF、MULTI-EXIT-DISC(MED)、Community及Weight等等,其中前3個為公認(rèn)強(qiáng)制遵守的,第4個為公認(rèn)可選遵守的,第5個為可選并傳遞的,第6個為可選不可傳遞的[9]。
BGP選路原則即BGP協(xié)議選擇最優(yōu)BGP轉(zhuǎn)發(fā)表?xiàng)l目放進(jìn)路由表中的優(yōu)先順序,作為制定BGP路由策略的基礎(chǔ)。是否能成為最優(yōu)BGP轉(zhuǎn)發(fā)條目與改條目中攜帶的BGP路徑屬性有關(guān),由于不同廠商的BGP路徑屬性不一樣,BGP選路原則也有差異,比如有些廠商路由器ID也參與選路(級別較低)[10]。以路由器為例,BGP選路原則首先得滿足路由的下一跳可達(dá)、關(guān)閉同步等前提,具體原則包含14條,按屬性優(yōu)先級從高往低匹配,一旦匹配成功則不再往下匹配。以下為常用的6條原則:
(1)先比較Weight值,越大越優(yōu)先:Weight屬性為廠家私有,本地通告的路由的Weight為32 768,從BGP對等體學(xué)習(xí)的路由Weight屬性默認(rèn)為0,保證了本地始發(fā)的路由最優(yōu)先,該參數(shù)本地有效。
(2)再比較LOCAL_PREFf值,越大越優(yōu)先:Local Preference屬性只能在IBGP對等體之間傳遞,如果在EBGP對等體之間收到的路由的路徑屬性中攜帶Local Preference,則會觸發(fā)Notifica tion報文,中斷BGP鏈接。
(3)本地通告的路由優(yōu)先:如果LOCAL_PREF值相同,則選擇BGP本地通告的路由也就是下一跳為0.0.0.0的轉(zhuǎn)發(fā)的條目放進(jìn)路由表。
(4)最短AS路徑的優(yōu)先:AS路徑即記錄路由信息傳遞過程所經(jīng)過的AS號,AS數(shù)量最少的優(yōu)先。并且聚合路由時,使用as-set后產(chǎn)生的AS列表中{}內(nèi)的AS號長度為1;而在聯(lián)盟內(nèi)的AS列表中()內(nèi)的AS號長度不參與計算。另外不同方向的route-map中插入的AS號的位置是不同的。
(5)比較origin屬性:該屬性標(biāo)識路徑信息的來源,為公認(rèn)強(qiáng)制屬性,該屬性值為:IGP,標(biāo)識信息來源于AS內(nèi)部;EGP,標(biāo)識信息通過AS外部學(xué)習(xí);Incomplete,標(biāo)識信息通過別的方式習(xí)得;并且優(yōu)先順序:IGP>EGP>incomplete。Origin屬性雖然在BGP路由信息必須中攜帶,但很少使用作為BGP選路策略。
(6)多出口標(biāo)識符(Multi-Exit Discriminator,MED):該屬性為公認(rèn)可選(主流廠商都實(shí)現(xiàn)該路徑屬性)非傳遞屬性,MED值越小越優(yōu)先,MED可以在IBGP間傳遞,可以傳遞給EBGP;但是最多只能傳遞到相鄰的AS中。通常用于AS的出口策略,也即控制進(jìn)入本AS的入流量。在廠家的BGP表顯示為metric。它跟Local Preference屬性基本上是相反的,配置上則很相似。
BGP路由策略就是根據(jù)要實(shí)現(xiàn)的選路目標(biāo)及BGP選路原則而制定修改BGP路徑屬性的一套方法。BGP路由策略實(shí)現(xiàn)的具體過程:根據(jù)選路原則確定要修改的路徑屬性,然后抓獲BGP條目信息,最后修改其中需要修改的路徑屬性,該過程可以發(fā)生在BGP條目信息的發(fā)送者或接受者上。通常通過訪問控制列表(ACL)、前綴列表(Prefix-list)等設(shè)置條件,然后通過Route-map中match語句來匹配調(diào)用設(shè)置的條件,對于匹配成功的通過Route-map中的set語句來修改具體的路徑屬性。
Route-map應(yīng)用范圍非常廣泛,其一般形式如下:
route-map Name [deny|permit]N1 //Name 為該routemap的名字,N1為該序列的序列號
match X1 X2...Xn //X1、X2...Xn 表示匹配條件X1、X2...Xn“與”的關(guān)系
set Y1 //Y1 為同時滿足X1、X2...Xn時修改路徑屬性的語句
...
...
route-map Name [deny|permit]Nx
match Xx1
...
match Xx+n //Xx1...Xx+ n 表示匹配條件Xx1...Xx+n“或”的關(guān)系
set Yx //Yx為滿足條件Xx1...Xx+n中的至少一個時修改路徑屬性的語句
一個Route-map一般包含多個序列語句,每個序列語句中可包含match匹配語句和set修改路徑屬性的語句,并且末尾隱含deny any序列語句。序列語句中[deny|permit]為可選、默認(rèn)為permit,根據(jù)場景不一樣所代表的含義不一樣,Nx為該序列的序列號默認(rèn)為10,除第1個外所有序列均需標(biāo)明序列號。Routemap定義好需調(diào)用在接口上方可生效。
下一代仿真虛擬環(huán)境(EmulatedVirtual Environment-Next Generation,EVE-NG),原名是Unified Networking Lab。EVE-NG實(shí)質(zhì)為一塊深度定制的Ubuntu操作系統(tǒng),不僅融合了dynamips、IOL、KVM 還支持多個廠家的網(wǎng)絡(luò)設(shè)備;不僅可以模擬仿真網(wǎng)絡(luò)設(shè)備,還可運(yùn)行虛擬機(jī),只要能將虛擬機(jī)的虛擬磁盤格式轉(zhuǎn)換為qcow2都可以在EVE-NG上運(yùn)行,因此EVENG為一名副其實(shí)的仿真虛擬環(huán)境平臺。應(yīng)用時,可直接安裝在x86架構(gòu)的物理主機(jī)上或部署在VMware Workstation及Exsi平臺上,另外還有ova版本直接導(dǎo)入VMware等虛擬機(jī)中運(yùn)行[11]。EVE-NG目前包含社區(qū)版、專業(yè)版及學(xué)習(xí)中心版[12]。
EVE-NG與以往GNS3、eNSP、HCL及Packet Tracer不同。GNS3雖然也是融合了dynamips但更像是一款單機(jī)版虛擬仿真軟件,雖然dynamips能夠部署成C/S架構(gòu),但文本配置比較復(fù)雜;而EVE-NG可部署成B/S架構(gòu),管理應(yīng)用簡單,服務(wù)端安裝EVE-NG并根據(jù)不同客戶需要搭建不同的網(wǎng)絡(luò)結(jié)構(gòu),客戶端只需支持http/https登錄服務(wù)端選擇網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行實(shí)驗(yàn)。學(xué)習(xí)中心版可供多個客戶同時登錄并隔離實(shí)驗(yàn)。
本實(shí)驗(yàn)通過EVE-NG虛擬仿真環(huán)境下的Cisco IOL 及i86bi_linux-L3-adventerprisek9-ms.157-3.M.bin型號的IOS仿真了一個包含6臺路由器的多AS多出口的BGP 網(wǎng)絡(luò),R1、R2、R3、R4 屬于AS64521,R5、R6分別位于AS64525、AS64526,重點(diǎn)研究BGP在3個AS特別是AS 64521中的實(shí)現(xiàn)機(jī)制和過程,該網(wǎng)絡(luò)設(shè)備間連接及接口信息等情況如圖1所示。
圖1 BGP網(wǎng)絡(luò)實(shí)例結(jié)構(gòu)
BGP路由協(xié)議有良好的特性,本實(shí)驗(yàn)重點(diǎn)展示了通過local-prefer ence屬性、MED屬性設(shè)計路由策略來實(shí)現(xiàn)如下目標(biāo):
(1)AS64525與AS64526網(wǎng)絡(luò)相通;
(2)訪問AS64525 的.5.5.50/24 網(wǎng)段時通過R1;
(3)AS64525 訪問AS64526 中的60.60.60.0/24、60.60.61.0/24 網(wǎng)段時通過R2 出發(fā);
(4)AS64525與AS64521間的多出口鏈路中的一個斷開時所有流量通過另外一條鏈路。
實(shí)驗(yàn)過程中根據(jù)需要拓展ping查看數(shù)據(jù)往返情況、BGP鏈接、鄰居表、BGP轉(zhuǎn)發(fā)表、路由表等信息。在部署B(yǎng)GP時首先部署好IGP(如OSPF等)使得本AS域內(nèi)全網(wǎng)可通,方可建立BGP連接[13],在本例中通過邏輯鏈路的Full-mesh(IBGP)實(shí)現(xiàn)AS64521內(nèi)BGP路由器之間的互聯(lián)。
(1)網(wǎng)絡(luò)基本配置。按照表1,分別配置路由器R1~R6各端口的IP地址和子網(wǎng)掩碼等信息,其中Lo0、Lo1等為環(huán)回網(wǎng)卡,測試用。
表1 網(wǎng)絡(luò)基本配置
(2)AS64521 IGP配置。根據(jù)以上理論分析:在一個AS內(nèi)部須先運(yùn)行IGP,在本實(shí)驗(yàn)中選擇OSPF(選擇IS-IS也行,均為運(yùn)營商網(wǎng)絡(luò)主流協(xié)議),為簡化問題假定R1、R2、R3、R4 均處于骨干區(qū)域(area 0),以R2為例配置如下,R1、R3、R4的配置以此類推。
R2(config)#router ospf 100
R2(config-router)#net 2.2.2.2 0.0.0.255 area 0
R2(config-router)#net 10.1.25.0 0.0.0.255 area 0
R2(config-router)#net 10.1.23.0 0.0.0.255 area 0
R1、R3、R4均配置完畢后,在R4上分別拓展ping 1.1.1.1、2.2.2.2,源為4.4.4.4,測試結(jié)果如下:
Sending 5,100-byte ICMP Echos to 1.1.1.1,timeout is 2
seconds:?。。。?!
Success rate is 100 percent(5/5),round-trip min/avg/max = 4/19/40 ms
Sending 5,100-byte ICMP Echos to 2.2.2.2,timeout is 2
seconds:.!?。?!
表明AS內(nèi)已實(shí)現(xiàn)全網(wǎng)可達(dá)。
(3)BGP 基本配置。根據(jù)圖1,R1、R2、R3、R4 為同一AS,R5、R6分別單獨(dú)為一個AS,它們之間的AS號及關(guān)系見表2,分別配置路由器R1~R6的AS號及其鄰居關(guān)系。
表2 AS及BGP鄰居關(guān)系
R1上的BGP配置如下,R2、R3、R4上的BGP配置與R1類似不再贅述,R5、R6通過直連接口配置與鄰居間的BGP關(guān)系。
R1(config)#router bgp 64521
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#no auto-summary
R1(config-router)#no synchronization
R1(config-router)#neighbor 3.3.3.3 remote-as 64521
R1(config-router)#neighbor 3.3.3.3 up lo0
R1(config-router)#neighbor 3.3.3.3 next-hop-self
R1(config-router)#neighbor 4.4.4.4 remote-as 64521
R1(config-router)#neighbor 4.4.4.4 up lo0
R1(config-router)#neighbor 4.4.4.4 next-hop-self
R1(config-router)#neighb 10.1.15.5 remote-as 64525
配置好R1、R2、R3、R4、R5、R6 上的BGP 基本信息后,可以查看到建立的TCP關(guān)系,以R1為例,其BGP TCP鏈接關(guān)系如下,表明其與R3、R4的IBGP關(guān)系及與R5的EBGP關(guān)系建立好了。
R1#show tcp bri
TCB Local Address Foreign Address (state)
C6CC8908 1.1.1.1.47519 3.3.3.3.179 ESTAB
C6CC5A98 1.1.1.1.25826 4.4.4.4.179 ESTAB
C6CC63A0 10.1.15.1.29240 10.1.15.5.179 ESTAB
在BGP中通告路由和建立TCP關(guān)系是分開的,接下來需要在R5、R6上向網(wǎng)絡(luò)通告自己的BGP路由,以R6為例通告路由配置如下(R5與之類似不再贅述):
R6(config)#router bgp 64526
R6(config-router)#net 6.6.6.0 mask 255.255.255.0
R6(config-router)#network 60.60.60.0 mask 255.255.255.0
R6(config-router)#network 60.60.61.0 mask 255.255.255.0
R5、R6 通告完路由后,在R1、R2、R3、R4、R5、R6上查看到到達(dá)5.5.5.0/24、6.6.6.0/24、50.50.50.0/24、60.60.60.0/24、60.60.61.0/24 等網(wǎng)絡(luò)的路由信息,以R6為例信息如圖2所示:
圖2 通告后R6上的路由信息
以上表明BGP配置成功。
(4)測試及分析。通過以上配置,AS64525與AS64526之間的網(wǎng)絡(luò)通過穿越AS64525網(wǎng)絡(luò)理應(yīng)互通。選擇在R5上測試,為了更清晰的看到數(shù)據(jù)的往返路由情況,我們選擇了拓展Ping,目標(biāo)IP為6.6.6.6、源IP 為5.5.5.5,選擇“記錄”路由過程信息,具體信息如圖3所示,以上結(jié)果看出正確率為100%,表明該網(wǎng)絡(luò)可達(dá);通過記錄的路由過程信息表明從5.5.5.0/24 到60.60.61.0/24 去往時經(jīng)歷了R5、R1、R3、R4、R6,返回時經(jīng)歷了R6、R4、R3、R2、R5。進(jìn)一步,在R5上繼續(xù)拓展Ping,目標(biāo)IP 改為為60.60.60.6 或6.6.6.6、源IP 改為50.50.50.5 或5.5.5.5,記錄的路由過程信息與上面一樣,測試結(jié)果見表3。
圖3 R5 拓展ping 6.6.6.6、源IP 為5.5.5.5 結(jié)果
表3 AS64525與AS64526間連通性測試
測試結(jié)果表明“去”均是經(jīng)歷R1,“回”都是經(jīng)歷R2。測試看起來貌似很成功,但是BGP的“路徑”特性及“負(fù)載”功能還未得到體現(xiàn),更重要的是如果本結(jié)構(gòu)圖中E0/0接口均換成F0/0后,測試結(jié)果是“去”和“回”都是經(jīng)過R2,這樣造成了所有大流量都是經(jīng)過R2,而R1卻空閑。因此需要進(jìn)一步選路優(yōu)化。
通過以上工作實(shí)現(xiàn)了第1點(diǎn)需求,接下來通過BGP選路優(yōu)化實(shí)現(xiàn)第2點(diǎn)和第3點(diǎn)同時保障第4點(diǎn)需求,即進(jìn)一步實(shí)現(xiàn)AS64525 自治系統(tǒng)5.5.5.0/24 網(wǎng)段訪問6.6.6.0/24 時(從R1 出去然后)從R1 返回;AS64525 自治系統(tǒng)訪問60.60.60.0、60.60.61.0/24網(wǎng)段時從R2出去(然后從R2返回);當(dāng)AS64525與AS64521之間的一個鏈路故障時,所有流量自動切換到另一鏈路[14]。
根據(jù)前面闡述的基本原理,BGP選路主要通過Route-map并結(jié)合訪問控制列表(Access Control List)或前綴列表(Prefix-list)來實(shí)現(xiàn),以下分別來通過案例進(jìn)行論證。
(1)實(shí)現(xiàn)訪問AS64525 的5.5.5.0/24 網(wǎng)段時通過R1。選路分析:通過上面BGP基本工作,已實(shí)現(xiàn)了流量從R1出去、從R2返回,所以接下來只需要實(shí)現(xiàn)AS64525 自治系統(tǒng)5.5.5.0/24 網(wǎng)段訪問6.6.6.0 從R1返回即可。因此需要使得在R3上優(yōu)選從R1收到的5.5.5.0/24 即可,根據(jù)選路原則,可選擇增大R1 的local-preference屬性值(默認(rèn)值為100),具體設(shè)計的路由策略如下:
R1(config)#access-list 1 permit 5.5.5.0
R1(config)#route-map out_of_R1 permit 10
R1(config-route-map)#match ip address 1
R1(config-route-map)#set local-preference 110
R1(config-route-map)#exit
R1(config)#route-map out_of_R1 permit 20
R1(config)#router bgp 64521
R1(config-router)#neighbor 3.3.3.3 route-map out_of_R1 out
在R3上,查看BGP轉(zhuǎn)發(fā)表,會看到返回5.5.5.0/24 的路由最優(yōu)路由下一跳是1.1.1.1(R1),如圖4所示。實(shí)現(xiàn)目標(biāo)。
圖4 調(diào)整R1的local-preference后R3上的BGP轉(zhuǎn)發(fā)表
(2)實(shí)現(xiàn)訪問AS64526 中的60.60.60.0/24、60.60.61.0/24 網(wǎng)段時通過R2。選路分析:通過上面BGP基本工作,已實(shí)現(xiàn)流量從R1出去、從R2返回,所以接下來只需要實(shí)現(xiàn)AS64525自治系統(tǒng)訪問60.60.60.0/24、60.60.61.0/24 網(wǎng)段時從R2 進(jìn)入AS64521即可,因此需要使得R5上優(yōu)選從R2收到的關(guān)于60.60.60.0/24、60.60.61.0/24 網(wǎng)段的路由信息即可。根據(jù)選路原則,可選擇增大R1發(fā)來的關(guān)于60.60.60.0/24、60.60.61.0/24 路由信息的MED 屬性值(廠家設(shè)備中以metric標(biāo)識,默認(rèn)為0),由于涉及到兩個網(wǎng)段為了提高效率通過prefix-list來抓取,具體設(shè)計的路由策略如下:
R1(config)#ip prefix-list 2 permit 60.60.60.0/23 ge 24 le 24
R1(config)#route-map out_of_R2 permit 10
R1(config-route-map)#match ip address prefix-list 2
R1 (config-route-map)#set metric 10
R1(config-route-map)#exit
R1(config)#router bgp 64521
R1(config-router)#neighbor 10.1.25.5 route-map out_of_R2 out
在R5上,查看BGP轉(zhuǎn)發(fā)表,收到來自R1的關(guān)于60.60.60.0/24、60.60.61.0/24 條目的Metric 屬性變?yōu)?0,因此也變成了次優(yōu)路由,最優(yōu)路由經(jīng)由R2,詳細(xì)信息如圖5所示。
(3)測試與分析。在R5上,通過拓展ping R6目的IP 為6.6.6.6 源IP 為5.5.5.5 時,記錄的ping包往返路由信息如圖6所示,成功率為100%,往返路由為:R5-> R1-> R3-> R4-> R6-> R6-> R4-> R3->R1,實(shí)現(xiàn)了源為5.5.5.0/24 的信息從R1 發(fā)從R1 回的目標(biāo)。
圖6 R5 拓展ping IP 為6.6.6.6 源IP 為5.5.5.5 結(jié)果
在R5上,繼續(xù)拓展ping R6目的IP分別為60.60.60.6、60.60.61.6,源IP 分別為50.50.50.5、5.5.5.5,記錄所有ping包往返路由信息,成功率均為100%,測試結(jié)果詳細(xì)信息如表4所示。
表4 優(yōu)化后AS64525測試
測試結(jié)果表明:實(shí)現(xiàn)了訪問AS64525 的5.5.5.0/24網(wǎng)段時通過R1;實(shí)現(xiàn)了訪問AS64526中的60.60.60.0/24、60.60.61.0/24 網(wǎng)段時通過R2。
進(jìn)一步測試是否實(shí)現(xiàn)了當(dāng)AS64525與AS64521之間的一個鏈路故障時,所有流量自動切換到另一鏈路。測試如下:現(xiàn)在假定AS64525與AS64521間R5-R2鏈路故障(關(guān)閉R5的S1/1),在R5上查看到的BGP轉(zhuǎn)發(fā)表如圖7所示;并且在R5上能ping通R6。
圖7 R5與R1直接鏈路故障是R5上的BGP轉(zhuǎn)發(fā)表
BGP路由協(xié)議作為互聯(lián)網(wǎng)核心骨干網(wǎng)絡(luò)中的核心和基礎(chǔ)[15],網(wǎng)絡(luò)規(guī)模龐大且流量調(diào)度需求多樣化、協(xié)議原理復(fù)雜。通過EVE-NG虛擬仿真環(huán)境下的IOL及i86bi_linux-L3-adventerpr isek9-ms.157-3.M.bin 型號的IOS仿真設(shè)計并實(shí)現(xiàn)了一個BGP實(shí)例網(wǎng)絡(luò),并結(jié)合給定選路需求演繹了路由策略設(shè)計的方法和具體過程,基于對鄰居表、BGP轉(zhuǎn)發(fā)表、路由表等信息和拓展ping得到的路由過程信息的分析,清晰驗(yàn)證了BGP路由協(xié)議原理和卓越特性。并且該仿真設(shè)計方案可直接移植到實(shí)際網(wǎng)絡(luò)中,對指導(dǎo)實(shí)際網(wǎng)絡(luò)的應(yīng)用有一定應(yīng)用價值。