BGP属性+13条选路原则(转载)
原文:http://blog.sina.com.cn/s/blog_be409c2f0102x6sg.html
BGP(Border Gateway Protocol)邊界網(wǎng)關(guān)協(xié)議
BGP(Border Gateway Protocol)邊界網(wǎng)關(guān)協(xié)議是一種運(yùn)行在TCP上用于AS(Autonomous System,自治系統(tǒng))之間的動(dòng)態(tài)路由協(xié)議,BGP是唯一一個(gè)用來處理像因特網(wǎng)大小的網(wǎng)絡(luò)協(xié)議,也是唯一能夠妥善處理好不相關(guān)路由域間連接的協(xié)議。默認(rèn)不負(fù)載(最大負(fù)載數(shù)量:6)
BGP可以支持classless interdomain routing(CIDR)無類別域間路由
首先介紹一下AS:
目前,通常還是使用2字節(jié)長度的AS,也就是0-65535;
公有的AS范圍是:0-64511
私有的AS范圍是:64512-65535
公有AS只能用于互聯(lián)網(wǎng),并且全球唯一,不可以重復(fù);而私有AS可以在得不到合法公有AS的企業(yè)網(wǎng)使用,可以重復(fù),私有AS不允許傳入互聯(lián)網(wǎng),ISP在企業(yè)用戶的邊緣,需要過濾掉帶有私有AS號(hào)的路由。
2009.1月之后,(IANA)決定使用4字節(jié)長度的AS,范圍是65536-4294967295
只能在一個(gè)AS內(nèi)部傳遞更新的IGP路由協(xié)議有:RIP、EIGRP、OSPF、IS-IS;可以在AS之間傳遞路由更新的路由協(xié)議只有BGP。
BGP路由器之間的數(shù)據(jù)傳輸使用TCP協(xié)議的179端口,并且指定回話的目標(biāo)端口為179,而會(huì)話源端口號(hào)是隨機(jī)的
BGP的鄰居必須手工指定才可以。
open報(bào)文用于發(fā)現(xiàn)鄰居,只發(fā)一次;維持鄰居關(guān)系的數(shù)據(jù)包稱為Keepalive=60s(默認(rèn));Holdtime=180
當(dāng)全網(wǎng)每一臺(tái)路由器都擁有所有的路由信息,并且完全一致時(shí),這種狀態(tài)被稱為收斂狀態(tài),一個(gè)網(wǎng)絡(luò)只有在收斂狀態(tài)時(shí),才能保證路由全網(wǎng)可達(dá)。
建議使用Lookback接口建立鄰居的原因:
為了使擁有多條鏈路的BGP鄰居之間永遠(yuǎn)保持連接,考慮到路由器的Loopback接口在設(shè)備正常工作的情況下,不會(huì)像物理接口那樣出現(xiàn)中斷,所有建議在BGP鄰居之間使用Lo接口地址來建立TCP連接。
當(dāng)指定鄰居時(shí),不再將鄰居的地址指定為對(duì)方物理接口地址,而改為指定對(duì)方的Lo地址,即使物理接口中斷,只要還有通暢的鏈路,那么BGP鄰居仍然可以保持連接。再將BGP鄰居地址指定為對(duì)方Lo地址時(shí),為了使數(shù)據(jù)包的目標(biāo)IP與對(duì)方的BGP源地址相同,所以鄰居也要將BGP源地址更改為自己的Lo接口地址,從而使得雙方正常建立BGP連接。
BGP的兩種AD值:EBGP20、IBGP200
因?yàn)锽GP的鄰居類型分為兩種:EBGP和IBGP;所以BGP路由的AD值也有區(qū)分,如果BGP路由是從EBGP學(xué)習(xí)到的,AD=20 EBGP鄰居學(xué)習(xí)到的路由優(yōu)于任何IGP協(xié)議;從IBGP學(xué)習(xí)到路由AD=200,優(yōu)先級(jí)低于任何IGP協(xié)議。 BGP除了以上兩種AD值之外,如果BGP路由是從本地手工導(dǎo)入的(本地路由),則BGP本地路由的AD=200,與IBGP路由的AD值相同,優(yōu)先級(jí)低于任何IGP協(xié)議。
1、鄰居:不需要直連,只要有能到達(dá)對(duì)方的路由,使用單播TCP建立
2、BGP只傳路由不傳數(shù)據(jù),控制層面(路由)源、目的地址每過一路由器都變;而數(shù)據(jù)層面源、目的地址一直不變,若中間路由器沒有該目的地址,數(shù)據(jù)層面可能會(huì)造成路由黑洞。
解決辦法:物理線路全互連、BGP鄰居邏輯全互連、MPLS(最好)
3、BGP的水平分割原則:(防環(huán))
1)EBGP:不接受包含自己AS號(hào)的BGP路由
2)IBGP:從IBGP學(xué)到的路由不會(huì)通告給其他的IBGP鄰居(BGP路由在AS內(nèi)部只傳一跳),所以IBGP鄰居需要全互連(路由反射器、聯(lián)邦)
4、配置:
router bgp 123
bgp router-id 11.1.1.1
neighbor 22.1.1.1 remote-as 123
neighbor 22.1.1.1 update-source lo 0(自己的回環(huán)接口地址,單向就可以建立,建議雙向)
neighbor 22.1.1.1 next-hop-self
neighbor 22.1.1.1 ebgp-multihop 2
IBGP鄰居之間用環(huán)回口建立鄰居,默認(rèn)的源地址是物理接口,如果用環(huán)回口建立鄰居必須手動(dòng)指定源地址;而EBGP一般使用物理接口,若用回環(huán)口,需要改成多跳,默認(rèn)是1跳,EBGP間若用環(huán)回口建立鄰居,因?yàn)椴煌↖GP,沒有對(duì)端環(huán)回口路由,所以還必須運(yùn)行靜態(tài)路由或者IGP動(dòng)態(tài)路由協(xié)議。
5、IGP:network宣告的是接口
BGP:network宣告的是路由,只要是本地AS內(nèi)的路由,都可以宣告出去,路由表中存在的路由,才能被BGP通告出去,必須精確匹配
network 4.4.4.0 255.255.255.0 宣告前看路由表,精確匹配才能宣告出去
6、非最優(yōu)路由:不傳給其他BGP鄰居、也不會(huì)放入路由表
造成非最優(yōu)路由的原因:
1)不同步:
從IGP學(xué)到、寫靜態(tài)路由或者關(guān)閉同步(保證不存在路由黑洞的前提下,中間路由也運(yùn)行BGP,建立全互連IBGP鄰居)
2)下一跳不可達(dá):
從IBGP學(xué)到、寫靜態(tài)路由或者改變下一跳(在邊界路由器寫)neighbor 3.3.3.3 next-hop-self
7、同步:從IBGP學(xué)到的路由,同時(shí)也在IGP學(xué)到,才能傳給其他BGP鄰居、放進(jìn)路由表(防止數(shù)據(jù)層路由黑洞)
Peer Group(減少Buffer,減少命令行)
router bgp 1
neighbor WOOW peer-group
neighbor WOOW remote-as 1
neighbor WOOW update-source lo 0
neighbor 22.1.1.1 peer-group WOOW
neighbor 33.1.1.1 peer-group WOOW
8、MA網(wǎng)絡(luò)的下一跳特性:ICMP重定向(自動(dòng)完成)
9、用r標(biāo)識(shí)的路由:IGP和BGP學(xué)到同一條路由,但是IGP學(xué)到的路由管理距離更小,該路由就會(huì)標(biāo)識(shí)r,不放進(jìn)路由表,但是會(huì)傳遞給鄰居
10、清理和重啟BGP:
1)硬清:clear ip bgp *
2)軟清:clear ip bgp * soft (in/out) 不斷TCP連接
11、BGP聚合:
1)手工寫靜態(tài)路由指向Null0(路由匯總)在用network 發(fā)布匯路由
2)network明細(xì)路由,一條一條的宣告,再aggregate-address做聚合,默認(rèn)是把聚合和明細(xì)都宣告進(jìn)去
aggregate-address 192.168.16.0 255.255.252.0 summary-only :僅宣告聚合路由,此時(shí)明細(xì)路由標(biāo)識(shí)了s,表示抑制路由,不會(huì)傳給鄰居
可選擇宣告特定路由,寫抑制列表:aggregate-address 192.168.16.0 255.255.252.0 suppress-map WOOW,在調(diào)用route map WOOW配合ACL或者prefix-list。
在接收方做聚合:
明細(xì)路由來自源方,聚合路由在接受方生成,并反傳給源方,可能導(dǎo)致丟包,所以不能讓路由回傳(把明細(xì)路由的屬性加入到聚合鏈路上)
aggregate-address 192.168.16.0 255.255.252.0 summary-only as-set:當(dāng)匯總路由繼承了明細(xì)路由的AS-path,源方就不會(huì)接受該路由了。
12、在重分布 或者BGP中使用route-map,如果要讓明細(xì)路由過來,必須寫一條空的。
BGP路由要被標(biāo)為最優(yōu)路由必須達(dá)到以下兩個(gè)條件:
★下一跳可達(dá)
★如果是從iBGP收到的路由,則必須滿足IGP與iBGP同步,除非該規(guī)則已被關(guān)閉。
如果某BGP路由的狀態(tài)為RIB-Failure,則不能被使用,被定為RIB-Failure的原因有:
★該路由在IGP中已經(jīng)擁有比BGP更高優(yōu)先級(jí)的AD值。
★內(nèi)存錯(cuò)誤
★超出VRF中的路由限制數(shù)。
BGP建立鄰居的條件如下:
★雙方需要建立鄰居的IP地址在網(wǎng)絡(luò)上是互通的,可以建立TCP會(huì)話。
★雙方指定的AS號(hào)碼必須匹配。
★雙方BGP數(shù)據(jù)包必須可達(dá)(eBGP默認(rèn)TTL為1,需要注意)。
★對(duì)方BGP數(shù)據(jù)包的目的IP和自己的源IP必須相同(單向滿足即可)。
Weight屬性為Cisco私有屬性
BGP還能夠傳遞除IP協(xié)議之外的其它網(wǎng)絡(luò)層協(xié)議,能夠傳遞的協(xié)議如下:
IP Version 4 (IPv4),
IP Version 6 (IPv6),
Virtual Private Networks version 4 (VPNv4),
Connectionless Network Services (CLNS),
Layer 2 VPN (L2VPN).
這些協(xié)議被稱為address family,配置需要進(jìn)入相應(yīng)的協(xié)議address family模式,而Ipv4除外。所有命令在address family中獨(dú)立配置,獨(dú)立生效,并且都擁有獨(dú)立的數(shù)據(jù)庫。正常的BGP配置模式被稱為NLRI 模式,而address family模式稱為AFI模式;MPLS,只能在AFI中配置;在NLRI 模式中配置的參數(shù)只對(duì)Ipv4單播生效。
BGP的路徑屬性可以劃分為以下四類:
公認(rèn)強(qiáng)制 (Well-Known Mandatory)
公認(rèn)自選 (Well-Known Discretionary)
可選可傳遞 (Optional Transitive)
可選不可傳遞(Optional Nontransitive)
BGP路由必須攜帶的公認(rèn)強(qiáng)制屬性有三個(gè):Origin,Next_Hop,AS-path。
1.Origin(公認(rèn)強(qiáng)制屬性):
默認(rèn)情況下,任何路由都不會(huì)自動(dòng)進(jìn)入BGP路由表,只能手工導(dǎo)入,對(duì)于路由是怎么進(jìn)入BGP路由表的,這種方式會(huì)被記錄在路由條目中,稱為Origin屬性,Origin屬性就反映出了路由是如何進(jìn)入BGP路由表的。
1、將IGP表中的相應(yīng)路由導(dǎo)入BGP路由表,并且需要指定掩碼,只有network后面的網(wǎng)段和掩碼在IGP路由表中能找到時(shí),才會(huì)進(jìn)入BGP路由表,并不能通過這種方式將一條不存在的路由憑空導(dǎo)入BGP,通過命令network被導(dǎo)入BGP的路由的Origin屬性為IGP屬性。
2、BGP路由表除了從IGP和EGP獲得路由外,還可以將路由重分布進(jìn)BGP路由表,而重分布的路由的Origin屬性為Incomplete。
3、當(dāng)BGP路由表中到達(dá)同一目的地存在多條路徑時(shí),會(huì)通過比較路由的Origin屬性來選擇最優(yōu)路徑,它們的優(yōu)先級(jí)為IGP優(yōu)于EGP,EGP優(yōu)于Incomplete,即:IGP>EGP>Incomplete。
2.AS_Path(公認(rèn)強(qiáng)制屬性):
AS_Path還能細(xì)分為:
1、AS_SEQUENCE(有序的AS號(hào)碼,即AS號(hào)碼在AS_Path中是按一定順序排列的)
2、AS_SET(無序的AS號(hào)碼,即AS號(hào)碼在AS_Path中的排列是沒有順序的,通常是將多條擁有不同AS_Path的路由匯總后產(chǎn)生的)
當(dāng)BGP路由表中到達(dá)同一目的地存在多條路徑時(shí),會(huì)優(yōu)選AS-Path最短的路徑。
3.Next_Hop(公認(rèn)強(qiáng)制屬性):
1、默認(rèn)情況下,一臺(tái)BGP路由器將路由傳遞給eBGP鄰居時(shí),會(huì)將Next-hop屬性改為自己的地址,也就是和對(duì)方建立鄰居所使用的地址,而在將路由傳遞給iBGP鄰居時(shí),不會(huì)改變Next-hop屬性。
2、BGP路由表中由本地產(chǎn)生的路由而不是從BGP鄰居學(xué)習(xí)來的,即本地發(fā)起路由的Next-hop屬性都為0.0.0.0。
4.Local_Pref(公認(rèn)自選屬性):
1、Local_Pref稱為本地優(yōu)先級(jí),其中的(Local)本地就是指本AS,Local_Pref屬性的傳遞范圍,只在同一個(gè)AS內(nèi)有效,一條路由的Local_Pref屬性只能在同一AS內(nèi)部傳遞,出了AS后就會(huì)被還原成默認(rèn)值。
2、Local_Pref屬性在BGP鄰居之間自動(dòng)傳遞,只有在將路由發(fā)給iBGP時(shí)才會(huì)傳遞,而在發(fā)給eBGP時(shí),沒有Local_Pref值,Local_Pref的默認(rèn)值為100,一條路由在AS內(nèi)所有路由器上的默認(rèn)值是100.
3、本地優(yōu)先級(jí)屬性是用于區(qū)分到同一目的地的各個(gè)路由優(yōu)先程度的。本地優(yōu)先級(jí)越高,路由優(yōu)先級(jí)越高;推薦使用Local_Pref屬性來控制一個(gè)AS的路由器去往目的地在其它AS的路徑。
5.MULTI_EXIT_DISC(MED,可選不可傳遞屬性):
1、MED就是BGP路由中的metric,是被設(shè)計(jì)用來影響在多個(gè)下一跳都為eBGP鄰居時(shí),如何選擇最優(yōu)路徑;多條路徑中擁有最小MED值的路徑會(huì)被優(yōu)先使用。MED默認(rèn)值為0。MED只能在AS之間傳遞,只有在將路由發(fā)給eBGP鄰居時(shí),才會(huì)傳遞MED,在發(fā)給iBGP時(shí),是不會(huì)傳遞MED的。
2、同一個(gè)AS內(nèi),所有發(fā)給iBGP鄰居的路由的MED值都為0,這是為了讓所有AS內(nèi)部路由器都能夠擁有相同的選路結(jié)果。
6.Weight
1、Weight屬性為Cisco私有屬性,只有Cisco的路由器才能認(rèn)識(shí)和理解Weight。路由的Weight屬性只在路由器本地起作用,BGP將路由傳遞給鄰居時(shí),并不會(huì)保留Weight。Weight值的范圍為0~65535,默認(rèn)為0,如果是BGP本地路由,則Weight值為32768。
2、當(dāng)BGP路由表中到達(dá)同一目的地存在多條路徑時(shí),會(huì)優(yōu)選Weight值最大的路徑。在Cisco路由器中,比較最優(yōu)路徑的第一條規(guī)則就是比較Weight值,所以只要改動(dòng)Weight值,就絕能夠控制Cisco路由器的BGP選路。
BGP最優(yōu)路徑選擇
在默認(rèn)情況下,到達(dá)同一目的地,BGP只走單條路徑,并不希望在多條路徑之間執(zhí)行負(fù)載均衡。
1.最高Weight值(選擇最高Weight值的路由,Weight值為Cisco私有,并且只有本地有效,默認(rèn)Weight值為0,本地發(fā)起路由為32768。
2.最高LOCAL_PREF值(如果Weight值相同,則選擇擁有最高LOCAL_PREF值的路由,默認(rèn)為100。)
3.本地發(fā)起路由
(如果LOCAL_PREF值相同,則選擇BGP本地發(fā)起的路由: 也就是下一跳為0.0.0.0的路由,本地發(fā)起的路由有多種方式,如通過在BGP進(jìn)程下命令network命令從IGP路由表導(dǎo)入,將其它路由協(xié)議重分布進(jìn)BGP路由表,最后是匯總路由表。而通過命令network和重分布的路由優(yōu)先于手工匯總的路由。)
4.最短AS_PATH
(如果本地發(fā)起路由無法比出最優(yōu)路徑,則選擇擁有最短AS_PATH的路由,但是可以跳過這一步,輸入命令bgp bestpath as?path ignore后,就會(huì)忽略對(duì)AS_PATH的比較,而直接比較下一屬性。需要更加注意的是,AS_SET被認(rèn)為是1個(gè)AS,而無論AS_SET中包含多少個(gè)AS,并且BGP聯(lián)邦內(nèi)部AS不被計(jì)算。)
5.最低Origin類型
(如果AS_PATH無法比出最優(yōu)路徑,則選擇擁有最低Origin類型的路由,Origin表示路由最初是如何進(jìn)入BGP路由表的,目前有三種進(jìn)行BGP路由表的方法,從IGP導(dǎo)入,從EGP學(xué)習(xí),以及重分布,它們的優(yōu)先級(jí)為IGP優(yōu)于EGP,EGP優(yōu)于Incomplete,即IGP>EGP>Incomplete。
6.最小MED值
(如果Origin類型無法比出最優(yōu)路徑,則選擇擁有最小MED值的路由,并且只有當(dāng)多個(gè)下一跳鄰居在同一AS時(shí)才比較MED值。如果要在多個(gè)不同AS的下一跳中比較MED,可在BGP進(jìn)程中輸入命令bgp always-compare-med,注意須保證此命令在整個(gè)AS的路由器上輸入,否則可能產(chǎn)生路由環(huán)路。默認(rèn)的MED值為0,如果收到一條沒有MED的路由,也認(rèn)為是0。)
7.eBGP優(yōu)于iBGP
(如果MED值無法比出最優(yōu)路徑,則選擇下一跳為eBGP的鄰居而不選擇iBGP鄰居。都知道eBGP的路由AD值為20,而iBGP的路由AD值為200,但BGP并不在eBGP與iBGP之間比較AD值,并且在比到此步時(shí),鄰居類型才影響了最優(yōu)路徑的選擇,這種影響是受鄰居類型的影響,而不是受AD值的影響。注意:BGP聯(lián)邦內(nèi)部沒有此規(guī)則。)
8.最小IGP metric到達(dá)下一跳的路由
(如果多條路徑的下一跳鄰居同為eBGP或iBGP,則選擇擁有最小IGP metric到達(dá)下一跳的路由。)
9.負(fù)載均衡(如果開啟的話)
(BGP并不是不能負(fù)載均衡的,如果之前的屬性都無法選出最優(yōu)路徑,則執(zhí)行負(fù)載均衡,但必須是之前的所有屬性均完全相同,缺一不可。需要注意:只有負(fù)載均衡功能開啟了,BGP才會(huì)執(zhí)行負(fù)載均衡,否則,繼續(xù)比較下一屬性。)
在開啟負(fù)載均衡功能時(shí),在BGP進(jìn)程下輸入以下命令:
maximum-paths n (多條路徑的下一跳鄰居都為eBGP時(shí),輸入此命令)
maximum-paths ibgp n(多條路徑的下一跳鄰居都為iBGP時(shí),輸入此命令)
其中n為執(zhí)行負(fù)載均衡的路徑數(shù)量,最大值為6,默認(rèn)為1,也就是不執(zhí)行負(fù)載均衡。
如果在eBGP和iBGP鄰居之間同時(shí)執(zhí)行負(fù)載均衡,輸入命令maximum-paths eibgp n,此命令只支持在Ipv4 VRF模式下輸入,就是只能支持MPLS VPN下的eBGP和iBGP鄰居之間負(fù)載均衡。
10.如果下一跳都為eBGP,則選擇最早學(xué)習(xí)到的路由(即時(shí)間最長的路由)
(為了避免路由翻動(dòng),所以選擇最早學(xué)習(xí)到的路由,如果要忽略比較路由學(xué)習(xí)到的時(shí)間長短,可在BGP進(jìn)程下輸入命令bgp best path compare?routerid,某些IOS已經(jīng)自動(dòng)加入此命令,并且不能刪除。如果多條路由擁有相同的Router-ID,比如路由是從同一個(gè)鄰居學(xué)習(xí)到的,同樣也會(huì)忽略比較路由學(xué)習(xí)到的時(shí)間長短。)
11.最低Router-ID下一跳
(BGP的Router-ID選舉如同OSPF,在此步,擁有最低Router-ID的下一跳路由將被選為最優(yōu)路徑。)
12.最短cluster list(如同AS_PATH)
[cluster list只在BGP reflector (RR)的環(huán)境下才有,功能如同AS_PATH]
13.最小下一跳的鄰居地址
(如果比較之前的所有屬性都無法選出最優(yōu)路徑,最終選擇下一跳的鄰居地址最小的路由,這個(gè)地址就是在建立鄰居時(shí)所指的地址,也是鄰居和自己建立TCP連接所使用的源地址,建立不同鄰居,不可能使用相同地址,所以不可能兩個(gè)不同路徑的鄰居地址是相同的,在這一步一定能夠選出最優(yōu)路徑.)
原文:http://blog.sina.com.cn/s/blog_be409c2f0102x6sg.html
轉(zhuǎn)載于:https://www.cnblogs.com/OceanF/p/9200875.html
總結(jié)
以上是生活随笔為你收集整理的BGP属性+13条选路原则(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML-文字标签
- 下一篇: Python 正则 —— 捕获与分组