華為HCIP認(rèn)證 - BGP協(xié)議原理與配置方法詳解

本文實(shí)例講述了華為HCIP認(rèn)證BGP協(xié)議原理與配置方法。分享給大家供大家參考,具體如下:
BGP協(xié)議原理與配置
BGP基本概述
- BGP的前身EGP設(shè)計(jì)得非常簡單,只能在AS之間簡單地傳遞路由信息,不會對路由進(jìn)行任何優(yōu)選,也沒有考慮如何在AS之間避免路由環(huán)路等問題,因而EBP最終被BGP取代。
- 相比于EGP,BGP更具有路由協(xié)議的特征,如下:
- 鄰居的發(fā)現(xiàn)與鄰居關(guān)系的建立;
- 路由的獲取,優(yōu)選和通告;
- 提供路由環(huán)路避免機(jī)制,并能夠高效傳遞路由,維護(hù)大量的路由信息;
- 在不完全信任的AS之間提供豐富的路由控制能力。
- 使用BGP作為傳遞路由的協(xié)議,則用戶的路由域被作為一個(gè)整體和其他路由域進(jìn)行路由交換,這個(gè)路由域即AS。AS的概念是若干臺路由器以及這些路由器組成的網(wǎng)絡(luò)集合,這些路由器均屬于同一個(gè)管理機(jī)構(gòu),并執(zhí)行統(tǒng)一的路由策略。
- 運(yùn)行BGP協(xié)議需要一個(gè)統(tǒng)一的自治系統(tǒng)號來標(biāo)識路由域,即AS編號。每個(gè)自治系統(tǒng)都有唯一的一個(gè)編號,這個(gè)編號由IANA分配。2009年1月之前,只能使用最多2字節(jié)長度的AS號碼,即1-65535。其中1-64511為公有AS,64512-65534為私有AS。在2009年1月之后,IANA決定使用4字節(jié)長度AS,范圍是65536-4294967295。
- 因?yàn)槭窃贏S之間傳遞路由,為保證數(shù)據(jù)的可靠性, BGP使用TCP作為其承載協(xié)議建立連接。因此與IGP逐跳路由器建立鄰居不同,BGP可以跨越多跳路由器建立鄰居關(guān)系。
- AS之間的路由器是不完全相互信任的,為實(shí)現(xiàn)路由按需求進(jìn)行控制和優(yōu)選,BGP設(shè)計(jì)了諸多屬性。
BGP鄰居關(guān)系建立與配置
- BGP協(xié)議被設(shè)計(jì)運(yùn)行在AS之間傳遞路由,AS之間是廣域網(wǎng)鏈路,數(shù)據(jù)包在廣域網(wǎng)上傳遞是可能出現(xiàn)不可預(yù)測的鏈路擁塞或丟失等情況,因此BGP使用TCP作為其承載協(xié)議來保證可靠性。
- BGP使用TCP封裝建立鄰居關(guān)系,端口號為179,TCP采用單播建立連接,因此BGP協(xié)議并不像RIP和OSPF一樣使用組播發(fā)現(xiàn)鄰居。單播建立連接也使BGP只能手動指定鄰居。
- EBGP只用于不同AS之間傳遞路由。如圖,AS 100內(nèi)的RTB與BTC分別從AS 200與AS 300學(xué)習(xí)到不同的路由,怎么實(shí)現(xiàn)AS 200與AS 300之間路由在AS 100內(nèi)的交換?
- 在AS 100內(nèi)實(shí)現(xiàn)將學(xué)到的AS 200和AS 300路由進(jìn)行交換,可以在拓?fù)渲械腞TB與RTC路由器上將BGP的路由引入IGP協(xié)議(圖中為OSPF協(xié)議),再將IGP協(xié)議的路由在RTB與RTC路由器上引入回BGP協(xié)議,實(shí)現(xiàn)AS 200與AS 300路由的交換。
- 上述方法存在以下幾個(gè)缺點(diǎn):
- 公網(wǎng)上BGP承載的路由數(shù)目非常大,引入IGP協(xié)議后,IGP協(xié)議無法承載大量的BGP路由;
- BGP路由引入IGP協(xié)議時(shí),需要做嚴(yán)格的控制,配置復(fù)雜,不易維護(hù);
- BGP攜帶的屬性在引入IGP協(xié)議時(shí),由于IGP協(xié)議不能識別,可能會丟失。
- 因此我們需要設(shè)計(jì)BGP在AS內(nèi)部完成路由的傳遞。
- 如上圖,因?yàn)锽GP使用TCP作為其承載協(xié)議,所以可以跨設(shè)備建立鄰居關(guān)系。如圖所示,RTB與RTC之間建立IBGP鄰居關(guān)系,并各自將從其他AS學(xué)到的路由傳遞給對端,實(shí)現(xiàn)BGP路由在AS內(nèi)的傳遞。
配置步驟:
- 配置Router ID(標(biāo)識路由器);
- 配置EBGP鄰居關(guān)系(AS之間傳遞路由);
- 配置IBGP鄰居關(guān)系(AS內(nèi)部傳遞路由)。
配置解釋:
- 如果沒有配置Router ID,BGP路由器會按一定規(guī)則自動選舉Router ID,選舉規(guī)則如下:
- 路由器在它的所有LoopBack接口上選擇數(shù)值最高的IP地址;
- 如果沒有LoopBack接口,路由器會在它的所有物理接口上選擇數(shù)值最高的IP地址。
- 配置命令:router id X.X.X.X
- BGP鄰居關(guān)系的類型主要靠配置的AS號區(qū)別,peer關(guān)鍵字后面是對端鄰居的接口IP地址,as-number后面是鄰居路由器所在的AS號,AS號相同則為IBGP鄰居關(guān)系;AS號不同,則為EBGP鄰居關(guān)系。
- peer關(guān)鍵字后面是對端鄰居的更新源IP地址,標(biāo)識自己向?qū)Χ肃従影l(fā)起TCP連接的目的地址。該地址可以是對端鄰居直連接口的IP地址,也可以是非直連LoopBack接口的IP地址(但必須保證該IP地址路由可達(dá))。建立IBGP鄰居關(guān)系時(shí),一般使用LoopBack接口的IP地址,因?yàn)長oopBack接口開啟后一直處于UP狀態(tài),只要保證路由可達(dá),鄰居關(guān)系一直處于穩(wěn)定狀態(tài);而建立EBGP鄰居關(guān)系時(shí),一般使用直連接口的IP地址,因?yàn)镋BGP是跨AS建立鄰居關(guān)系,鄰居關(guān)系建立之前非直連接口之間的路由不可達(dá)。
- 建立EBGP鄰居關(guān)系時(shí),一般使用直連接口的IP地址;建立IBGP鄰居關(guān)系時(shí),一般使用Loopback接口的IP地址。
- BGP通過報(bào)文的交互完成鄰居建立、路由更新等操作,共有Open、Update、Notification、Keepalive和Route-refresh等5種報(bào)文類型。
- Open報(bào)文:是TCP連接建立后發(fā)送的第一個(gè)報(bào)文,用于建立BGP鄰居之間的連接關(guān)系。BGP鄰居在接收到Open報(bào)文并協(xié)商成功后,將發(fā)送Keepalive報(bào)文確認(rèn)并保持連接的有效性。確認(rèn)后,BGP鄰居間可以進(jìn)行Update、Notification、Keepalive和Route-refresh報(bào)文的交換。
- Update報(bào)文:用于在BGP鄰居之間交換路由信息。Update報(bào)文可以發(fā)布多條屬性相同的可達(dá)路由信息,也可以撤銷多條不可達(dá)路由信息。
- 一條Update報(bào)文可以發(fā)布多條具有相同路由屬性的可達(dá)路由,這些路由可共享一組路由屬性。所有包含在一個(gè)給定的Update報(bào)文里的路由屬性適用于該Update報(bào)文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前綴表示)。
- 一條Update報(bào)文可以撤銷多條不可達(dá)路由。每一個(gè)路由通過目的地(用IP前綴表示),清楚地定義了BGP路由器之間先前通告過的路由。
- 一條Update報(bào)文可以只用于撤銷路由,這樣就不需要包括路徑屬性或者NLRI。相反,也可以只用于通告可達(dá)路由,就不需要攜帶撤銷路由信息了。
- Notification報(bào)文:當(dāng)BGP路由器檢測到錯(cuò)誤狀態(tài)時(shí),就向鄰居發(fā)出Notification報(bào)文,之后BGP連接會立即中斷。
- Keepalive報(bào)文:BGP路由器會周期性的向鄰居發(fā)出Keepalive報(bào)文,用來保持連接的有效性。
- Route-refresh報(bào)文:Route-refresh用于在改變路由策略后請求對等體重新發(fā)送路由信息。
- BGP路由器報(bào)文交互過程:Idle狀態(tài)是BGP初始狀態(tài)。在Idle狀態(tài)下,BGP路由器拒絕鄰居發(fā)送的連接請求。只有在收到本設(shè)備的Start事件后,BGP路由器才開始嘗試與其鄰居進(jìn)行TCP連接,并轉(zhuǎn)至Connect狀態(tài)。
- 在Connect狀態(tài)下,BGP路由器啟動連接重傳定時(shí)器(Connect Retry),等待TCP完成連接。
- 如果TCP連接成功,那么BGP路由器向鄰居發(fā)送Open報(bào)文,并轉(zhuǎn)至OpenSent狀態(tài)。
- 如果TCP連接失敗,那么BGP路由器轉(zhuǎn)至Active狀態(tài)。
- 如果連接重傳定時(shí)器超時(shí),BGP路由器仍沒有收到鄰居的響應(yīng),那么BGP路由器繼續(xù)嘗試與其鄰居進(jìn)行TCP連接,停留在Connect狀態(tài)。
- 在Active狀態(tài)下,BGP路由器總是在試圖建立TCP連接。
- 如果TCP連接成功,那么BGP路由器向鄰居發(fā)送Open報(bào)文,關(guān)閉連接重傳定時(shí)器,并轉(zhuǎn)至OpenSent狀態(tài)。
- 如果TCP連接失敗,那么BGP路由器停留在Active狀態(tài)。
- 如果連接重傳定時(shí)器超時(shí),BGP路由器仍沒有收到鄰居的響應(yīng),那么BGP路由器轉(zhuǎn)至Connect狀態(tài)。
- 在OpenSent狀態(tài)下,BGP路由器等待鄰居的Open報(bào)文,并對收到的Open報(bào)文中的AS號、版本號、認(rèn)證碼等進(jìn)行檢查。
- 如果收到的Open報(bào)文正確,那么BGP路由器發(fā)送Keepalive報(bào)文,并轉(zhuǎn)至OpenConfirm狀態(tài)。
- 如果發(fā)現(xiàn)收到的Open報(bào)文有錯(cuò)誤,那么BGP路由器發(fā)送Notification報(bào)文給鄰居,并轉(zhuǎn)至Idle狀態(tài)。
- 在OpenConfirm狀態(tài)下,BGP路由器等待Keepalive或Notification報(bào)文。如果收到Keepalive報(bào)文,則轉(zhuǎn)至Established狀態(tài),如果收到Notification報(bào)文,則轉(zhuǎn)至Idle狀態(tài)。
- 在Established狀態(tài)下,BGP路由器可以和鄰居交換Update、Keepalive、Route-refresh報(bào)文和Notification報(bào)文。
BGP路由生成方式
- 生成BGP路由的方式有兩種:第一種是使用配置命令network,第二種是使用配置命令import。
- 如圖所示,RTA上存在100.0.0.0/24與100.0.1.0/24的兩個(gè)用戶網(wǎng)段,RTB上通過靜態(tài)路由指定去往100.0.0.0/24網(wǎng)段的路由,通過OSPF學(xué)到去往100.0.1.0/24的路由。RTB與RTC建立EBGP的鄰居關(guān)系,RTB通過network命令宣告100.0.0.0/24,100.0.1.0/24與10.1.12.0/24的路由,使對端EBGP鄰居RTC學(xué)習(xí)到RTB路由表里的路由。
- RTA上存在100.0.0.0/24與100.0.1.0/24的兩個(gè)用戶網(wǎng)段,RTB上通過靜態(tài)路由指定去往100.0.0.0/24網(wǎng)段的路由,通過OSPF學(xué)到去往100.0.1.0/24的路由。RTB與RTC建立EBGP的鄰居關(guān)系,RTB通過import命令宣告100.0.0.0/24,100.0.1.0/24與10.1.12.0/24的路由,使對端EBGP鄰居學(xué)習(xí)到本AS內(nèi)的路由。
- 為了防止其他路由被引入到BGP中,需要配置ip-prefix進(jìn)行精確匹配,調(diào)用route-policy在BGP引入路由時(shí)進(jìn)行控制。
BGP通告原則與路由處理
- 存在多條有效路由時(shí),BGP路由器只將自己最優(yōu)的路由發(fā)布給鄰居。
- RTD可以從BGP鄰居RTB與RTC學(xué)習(xí)到100.0.0.0/24的路由,同時(shí)RTD將自己的直連路由200.0.0.0/24發(fā)布到BGP中。在RTD上使用命令display bgp routing-table查看如圖所示;
- 在RTE上使用命令display bgp routing-table查看如圖所示。可以發(fā)現(xiàn),RTD將自己標(biāo)為有效且最優(yōu)的路由發(fā)布給了BGP鄰居RTE。
- BGP路由表中的狀態(tài)含義:
- Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale
- Origin : i - IGP, e - EGP, ? – incomplete
- Network:顯示BGP路由表中的網(wǎng)絡(luò)地址
- NextHop:報(bào)文發(fā)送的下一跳地址
- MED:路由度量值
- LocPrf:本地優(yōu)先級
- PrefVal:協(xié)議首選值
- Path/Ogn:顯示AS路徑號及Origin屬性
- Community:團(tuán)體屬性信息
- BGP路由器通過EBGP獲得的最優(yōu)路由會發(fā)布給所有的BGP鄰居(包括EBGP鄰居和IBGP鄰居)。
- 如圖所示,RTA上有一個(gè)100.0.0.0/24的用戶網(wǎng)段,并通過EBGP將該網(wǎng)段發(fā)布給BGP鄰居RTB。RTB收到EBGP鄰居發(fā)送來的100.0.0.0/24的路由后,將會通告給自己的IBGP鄰居RTC與EBGP鄰居RTD。
- BGP路由器通過IBGP獲得的最優(yōu)路由不會發(fā)布給其他的IBGP鄰居。
- 如圖所示,RTA上存在一個(gè)100.0.0.0/24的用戶網(wǎng)段,RTA、RTB與RTC之間互為IBGP鄰居,RTA通過IBGP將100.0.0.0/24的路由發(fā)布給RTB與RTC,但是RTB并不會將收到的IBGP路由發(fā)布給自己的IBGP鄰居RTC。
- 這樣設(shè)計(jì)的目的是防止在AS內(nèi)部形成路由環(huán)路。根據(jù)規(guī)定,BGP路由在同一個(gè)AS內(nèi)進(jìn)行傳遞時(shí),AS_Path屬性不會發(fā)生變化。如圖所示,RTA將100.0.0.0/24的路由發(fā)布給RTB時(shí),AS_Path屬性不變,為空。如果RTB能將IBGP路由100.0.0.0/24發(fā)布給RTC,AS_Path依舊為空。則RTC也有可能將100.0.0.0/24的路由發(fā)布給RTA,因?yàn)锳S_Path為空,RTA并不會拒收該IBGP路由,路由環(huán)路產(chǎn)生。因此,上述通告原則是為了防止在AS內(nèi)部形成路由環(huán)路。
- RTA上存在一個(gè)100.0.0.0/24的用戶網(wǎng)段,通過EBGP發(fā)布給RTB。RTB與RTD建立了IBGP鄰居關(guān)系,RTD通過IBGP學(xué)習(xí)到該BGP路由,并將該路由發(fā)布給EBGP鄰居RTE。
- 當(dāng)RTE訪問100.0.0.0/24的路由時(shí),查找路由表,發(fā)現(xiàn)到達(dá)100.0.0.0/24路由的下一跳是RTD,RTE查找出接口后,將數(shù)據(jù)包發(fā)送給RTD;RTD收到數(shù)據(jù)包后,查找路由表,發(fā)現(xiàn)到達(dá)100.0.0.0/24路由的下一跳是RTB,出接口是RTD上與RTC相連的接口,于是將數(shù)據(jù)包發(fā)給RTC,RTC查找路由表,發(fā)現(xiàn)沒有到達(dá)100.0.0.0/24的路由,于是將數(shù)據(jù)丟棄,形成“路由黑洞”。
- BGP的通告原則:一條從IBGP鄰居學(xué)來的路由在發(fā)布給一個(gè)BGP鄰居之前,通過IGP必須知道該路由,即BGP與IGP同步。
- 如圖所示,RTD在收到RTB發(fā)來的IBGP路由之后,如果要發(fā)布給BGP鄰居RTE,則在發(fā)布之前先檢查IGP協(xié)議(即OSPF協(xié)議)能否學(xué)到該條路由。如果能,則將IBGP路由發(fā)布給RTE。
- 在華為路由器上,默認(rèn)是將BGP與IGP的同步檢查關(guān)閉的,原因是為了實(shí)現(xiàn)IBGP路由的正常通告。但關(guān)閉了BGP與IGP的同步檢查后會出現(xiàn)“路由黑洞”的問題。因此,有兩種解決方案解決上述問題:
- 將BGP路由引入到IGP,從而保證IGP與BGP的同步。但是,因?yàn)镮nternet上的BGP路由數(shù)量十分龐大,一旦引入到IGP,會給IGP路由器帶來巨大的處理和存儲負(fù)擔(dān),如果路由器負(fù)擔(dān)過重,則可能癱瘓。
- IBGP路由器必須是全互聯(lián),確保所有的路由器都能學(xué)習(xí)到通告的路由。這樣可以解決關(guān)閉同步后導(dǎo)致的“路由黑洞”問題。
- IP路由表(IP_RIB):全局路由信息庫,包括所有的IP路由信息。
- BGP路由表(Local_RIB):BGP路由信息庫,包括本地BGP路由器選擇的路由信息,鄰居表,鄰居清單列表。
- 收到BGP鄰居發(fā)來的Update報(bào)文,路由器會執(zhí)行算法進(jìn)行路徑選擇,確定每一條前綴的最佳路徑,并將計(jì)算出的最佳路徑存儲到本地BGP路由表(Local_RIB)中。
- 如果啟用了多路徑特性,最佳路徑和所有等值路徑都被提交給IP_RIB,考慮是否安裝。除了從BGP鄰居接收的最佳路徑外,Local_RIB也包含當(dāng)前路由器注入的路由(被稱為本地發(fā)起的路由)。
- 在Local_RIB中,只有被選為最優(yōu)的前綴才會被封裝到Update報(bào)文中通告給自己的BGP鄰居。
BGP常用屬性介紹
以上兩個(gè)問題的解決方案:
- 在AS之間交換路由可達(dá)信息時(shí),設(shè)計(jì)BGP能夠提供豐富的屬性,實(shí)現(xiàn)對路由的靈活控制和優(yōu)選。
- 修改路由表,調(diào)整AS之間的鏈路Metric;2.不修改路由表, 使用策略修改路由下一跳。但是這些方法在某些情況下具有局限性,不能滿足網(wǎng)絡(luò)的豐富需求。
- 路由在AS之間傳遞時(shí)記錄傳播路徑,防止環(huán)路的產(chǎn)生。
- 公認(rèn)屬性:所有BGP路由器都必須識別并支持的屬性。
- 公認(rèn)必遵:BGP的Update消息中必須包含的屬性。
- 公認(rèn)任意:不必存在于BGP的Update消息中,可以根據(jù)需求自由選擇的屬性。
- 可選屬性:不要求所有的BGP路由器都能夠識別的屬性。
- 可選過渡:BGP不能識別該屬性,但可以接收該屬性并將其發(fā)布給它的鄰居的屬性。
- 可選非過渡:BGP可以忽略包含該屬性的消息并且不向它的鄰居發(fā)布。
- 如圖所示,AS 200內(nèi)運(yùn)行OSPF協(xié)議,200.0.0.0/24網(wǎng)段宣告到OSPF中。RTB通過network方式將200.0.0.0/24的路由變?yōu)锽GP路由通告給RTA,RTC通過import方式將200.0.0.0/24的路由變?yōu)锽GP路由通告給RTA。
- BGP在AS之間傳遞信息,承載大量的路由。如果到達(dá)同一目的IP有多條路徑,且BGP學(xué)到這些路由通過不同的方式,則Origin屬性是決定最優(yōu)路徑的一個(gè)因素,用于標(biāo)明路由的起源。
- Origin的3種屬性:
- i 表明BGP路由通過network命令注入;
- e 表明BGP路由是從EGP學(xué)來的,EGP協(xié)議在現(xiàn)網(wǎng)中很難見到,但可以通過路由策略將路由的Origin屬性修改為e;
- ? 即Incomplete表明BGP路由通過其它方式學(xué)到路由信息,如使用import命令引入的路由。
- 3種Origin屬性的優(yōu)先級為:i>e>Incomplete(?)。
- BGP針對以上2個(gè)問題,設(shè)計(jì)了AS_Path屬性,該屬性記錄了路由經(jīng)過的所有AS的編號:
- 圖中RTA從RTB收到100.0.0.0/24的路由時(shí),AS_Path為(2,4),RTA從RTC收到100.0.0.0/24的路由時(shí),AS_Path為(3,5,4)。規(guī)定AS_Path越短(記錄的AS編號越少),路徑越優(yōu),因此RTA會優(yōu)選從RTB收到的100.0.0.0/24的路由。
- 以RTE為例,通過BGP發(fā)布100.0.0.0/24的路由,路由可能通過RTE->RTB->RTC->RTD->RTE形成環(huán)路。為了防止環(huán)路的產(chǎn)生,RTE在收到RTD發(fā)來的路由時(shí)會檢查AS_Path(該路由攜帶的)屬性,如果發(fā)現(xiàn)該路由的AS_Path中包含自己的AS號,則丟棄該路由。
- AS_Path的4種類型:
- AS_Sequence(后續(xù)講解BGP路由聚合時(shí)會詳細(xì)說明);
- AS_Set(后續(xù)講解BGP路由聚合時(shí)會詳細(xì)說明);
- AS_Confed_Sequence(應(yīng)用于聯(lián)盟,本課程不涉及);
- AS_Confed_Set(應(yīng)用于聯(lián)盟,本課程不涉及)。
- BGP路由器將本端始發(fā)路由發(fā)布給IBGP鄰居時(shí),會把該路由信息的Next_hop設(shè)為本端建立鄰居關(guān)系所使用的接口IP。
- 如圖所示,RTA將100.0.0.0/24的網(wǎng)段發(fā)布給RTB時(shí),如果RTA與RTB使用直連接口建立IBGP鄰居,則Next_hop為RTA上與RTB直連的接口IP;如果RTA與RTB使用Loopback接口建立IBGP鄰居,則Next_hop為RTA的Loopback接口IP。
- BGP路由器在向EBGP鄰居發(fā)布路由時(shí),會把路由信息的Next_hop設(shè)置為本端與對端建立BGP鄰居關(guān)系的接口IP。
- 如圖所示,RTB將100.0.0.0/24的網(wǎng)段發(fā)布給RTC時(shí),Next_hop為RTB上與RTC直連的接口IP。
- BGP路由器在向IBGP鄰居通告從EBGP學(xué)來的路由時(shí),不改變該路由下一跳屬性。
- 特例:如圖所示,RTA從RTB學(xué)到RTC發(fā)布的200.0.0.0/24的網(wǎng)段時(shí),Next_hop為RTD的出接口IP,因?yàn)镽TB與RTD在同一網(wǎng)段,RTC通告給RTB的Next_hop為RTD的出接口IP。
- 對于上述三種情況的解釋:
- EBGP鄰居之間一般采用直連接口建立鄰居關(guān)系,EBGP鄰居在相互通告路由時(shí)會修改Next_hop為自己的出接口IP;
- IBGP鄰居通常采用Loopback接口建立鄰居,當(dāng)路由是本路由器起源的,在發(fā)送給鄰居之后Next_hop改為自己的更新源地址,這樣即使網(wǎng)絡(luò)中出現(xiàn)鏈路故障,只要Next_hop可達(dá),同樣可以訪問目的網(wǎng)段,提高網(wǎng)絡(luò)穩(wěn)定性;
- 相對于IGP,如RIP在發(fā)布路由時(shí),每經(jīng)過一個(gè)路由器都會修改下一跳,發(fā)布路由的路由器都宣稱自己能夠到達(dá)目標(biāo)地址,并采用逐跳傳遞的方式將數(shù)據(jù)包發(fā)送給目標(biāo)網(wǎng)絡(luò),但網(wǎng)絡(luò)中的路由器并不知道誰是真正的始發(fā)路由器,因此會造成環(huán)路。BGP在EBGP之間傳遞時(shí)才修改Next_hop,IBGP發(fā)送從EBGP學(xué)來的路由給IBGP鄰居時(shí)并不修改下一跳,在一定程度上起到了防環(huán)作用。
- 如圖所示,AS 200內(nèi)有一個(gè)200.0.0.0/24的用戶網(wǎng)段,通過BGP發(fā)布給AS 100。AS 100內(nèi)的管理員如何設(shè)置才可以實(shí)現(xiàn)通過高帶寬鏈路訪問200.0.0.0/24的網(wǎng)絡(luò)?
- 解決辦法:
- 在RTC上設(shè)置ip-prefix匹配200.0.0.0/24的路由,使用route-policy調(diào)用該ip-prefix,并設(shè)置Local_Preference為200,將策略應(yīng)用在對RTA發(fā)布路由的export方向。
- Local_Pref屬性僅在IBGP鄰居之間有效,不通告給其他AS。它表明路由器的BGP優(yōu)先級,值越大越優(yōu)。
- Local_Pref屬性用于判斷流量離開AS時(shí)的最佳路由。當(dāng)BGP路由器通過不同的IBGP鄰居獲得目的地址相同但下一跳不同的多條路由時(shí),將優(yōu)先選擇Local_Pref屬性值較高的路由,其默認(rèn)值為100。
- 如圖所示,AS 300內(nèi)的管理員希望在AS 300內(nèi)操作影響AS 200通過高帶寬鏈路訪問100.0.0.0/24,如何實(shí)現(xiàn)?
- 解決方法:
- 在RTE上設(shè)置ip-prefix匹配100.0.0.0/24的路由,再設(shè)置route-policy調(diào)用該ipprefix,并設(shè)置MED為100,將策略應(yīng)用在對RTC發(fā)布路由的export方向。
- MED(Multi-Exit-Discriminator)屬性僅在相鄰兩個(gè)AS之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS。如圖所示,AS100內(nèi)并不會收到AS 300內(nèi)設(shè)置的MED值,但是AS 200內(nèi)會收到AS 300內(nèi)設(shè)置的MED值,因此AS 200內(nèi)可以選擇高帶寬的路由。
- MED屬性相當(dāng)于IGP使用的度量值(Metric),它用于判斷流量進(jìn)入AS時(shí)的最佳路由。當(dāng)一個(gè)運(yùn)行BGP的路由器通過不同的EBGP鄰居獲得目的地址相同但下一跳不同的多條路由時(shí),在其它條件相同的情況下,將優(yōu)先選擇MED值較小者作為最佳路由,其默認(rèn)值為0。
- 如圖所示,AS 10內(nèi)有10.1.10.0/24的用戶網(wǎng)段,AS 11內(nèi)有10.1.11.0/24的用戶網(wǎng)段。為了區(qū)分用戶網(wǎng)段,AS 10內(nèi)的10.1.10.0/24設(shè)置了10:12的Community,AS 11的10.1.11.0/24設(shè)置了11:12的Community,通過BGP發(fā)送給AS 12后,AS 12希望匯總后屏蔽掉明細(xì)路由再發(fā)送給AS 13,并且希望AS 13收到路由后不再傳遞給其他AS,如何實(shí)現(xiàn)?
- 解決方法:
- 在RTC上設(shè)置Community-filter,匹配Community為10:12和11:12的路由,再設(shè)置route-policy匹配Community-filter,將兩條路由聚合成10.1.10.0/23的路由并調(diào)用route-policy。
- 在RTC上設(shè)置route-policy,設(shè)置團(tuán)體屬性為no-export,在RTC通告給RTD的export方向調(diào)用該route-policy。
- Community屬性分為兩類:一類是公認(rèn)團(tuán)體屬性,另一類是擴(kuò)展的團(tuán)體屬性。
- 公認(rèn)團(tuán)體屬性分為4類:
- Internet:缺省屬性,所有路由都屬于Internet,此屬性的路由可以通告給所有BGP鄰居;
- No_Export:收到此屬性的路由后,不將該路由發(fā)布到其他AS。如圖,RTB上希望10.1.11.0/24的路由發(fā)布給AS 12之后,不再發(fā)布給其他AS,則可將10.1.11.0/24的Community屬性設(shè)置為No_Export;
- No_Advertise:收到此屬性的路由后,不將該路由通告給任何其他的BGP鄰居。如圖,RTB上希望只將10.1.11.0/24的路由發(fā)布給RTC,并且不再通告給任何其他的BGP鄰居,則可將10.1.11.0/24的Community屬性設(shè)置為No_Advertise;
- No_Export_Subconfed:在聯(lián)盟中使用,這里不做介紹。
- 擴(kuò)展的團(tuán)體屬性用一組4字節(jié)為單位的列表來表示,路由器中擴(kuò)展的團(tuán)體屬性格式為aa:nn或團(tuán)體號:
- aa:nn中,aa通常為AS編號,nn是管理員定義的團(tuán)體屬性標(biāo)識;
- 團(tuán)體號范圍為0-4294967295,在RFC1997中,0-65535與4294901760-4294967295為預(yù)留值。
BGP選路原則
- 如圖所示,AS 200內(nèi)有一個(gè)200.0.0.0/24的用戶網(wǎng)段,AS 100內(nèi)的管理員希望通過高帶寬鏈路訪問AS 200內(nèi)的200.0.0.0/24網(wǎng)段,并希望在RTA上的策略只能影響自己的選路,不能影響其他設(shè)備,如何實(shí)現(xiàn)?
- 解決辦法:
- 在RTA上設(shè)置ip-prefix匹配200.0.0.0/24的路由,再設(shè)置route-policy調(diào)用該ipprefix,并設(shè)置Preference_Value為100,將策略應(yīng)用在對RTC發(fā)布路由的import方向。
- 驗(yàn)證:RTC上使用Tracert命令,查看訪問200.0.0.0/24網(wǎng)段經(jīng)過的路由器。
- 如圖所示,在AS 200內(nèi),RTB與RTC上存在200.0.0.0/24網(wǎng)段的用戶,RTB與RTC將200.0.0.0/24的網(wǎng)段通過import方式變?yōu)锽GP路由,在RTB上將路由聚合后發(fā)給RTA,同時(shí)開啟自動聚合與手動聚合,RTB如何優(yōu)選聚合路由?
- 如圖所示,在RTB上同時(shí)使能自動聚合與手動聚合,使用命令查看,可以發(fā)現(xiàn),手動聚合的路由條目被發(fā)送給RTA,自動聚合的路由條目則沒有通告,說明手動聚合的優(yōu)先級高于自動聚合。
- 在使用路由聚合時(shí)需要注意,自動聚合只能對引入的BGP路由進(jìn)行聚合,手動聚合可以對存在于BGP路由表中的路由進(jìn)行聚合,后續(xù)在BGP路由聚合中詳細(xì)介紹。上述場景中,因?yàn)樾枰酆系穆酚啥际且氲穆酚?,所以使用自動聚合與手動聚合都可以實(shí)現(xiàn)聚合的目的。如果BGP路由表中既有引入的路由又有network宣告的路由時(shí),只能采用手動聚合實(shí)現(xiàn)。
- 如圖所示,在AS 200內(nèi)有一個(gè)200.0.0.0/24的網(wǎng)段,通過EBGP鄰居關(guān)系通告給RTA與RTB,RTB會通過IBGP鄰居關(guān)系將200.0.0.0/24的網(wǎng)段通告給RTA,于是RTA會收到兩條到達(dá)200.0.0.0/24的路由,RTA會如何優(yōu)選?
- 根據(jù)選路原則,RTA會優(yōu)選從EBGP鄰居學(xué)來的路由。
- 如圖所示,AS 200內(nèi)有一個(gè)200.0.0.0/24的用戶網(wǎng)段,通過EBGP發(fā)布給RTB與RTC,RTB與RTC通過IBGP將路由發(fā)布給RTA。AS 100內(nèi)的管理員希望通過高帶寬鏈路訪問AS 200內(nèi)的200.0.0.0/24網(wǎng)段, RTA上該如何實(shí)現(xiàn)?
- 將RTA與RTB所連接口的OSPF Cost值調(diào)為100,RTA則將選擇RTA->RTC->RTD的路徑訪問200.0.0.0/24網(wǎng)段:
- 原因是RTA訪問200.0.0.0/24時(shí),到Next_hop 10.1.34.4的Cost(2)小于到Next_hop 10.1.24.4 (101)的Cost。
- 如圖所示,AS 200內(nèi)有一個(gè)200.0.0.0/24的用戶網(wǎng)段,通過EBGP發(fā)布給RTB和RTC,RTB和RTC通過IBGP將路由發(fā)布給RTA。RTA和RTB之間通過2條鏈路相連,RTA會如何優(yōu)選?
- RTA會選擇下一跳為10.1.12.2作為下一跳訪問200.0.0.0/24的網(wǎng)段:
- RTA選擇RTA->RTB->RTD的路徑訪問200.0.0.0/24網(wǎng)段,原因是RTB的Router-ID比RTC小,BGP優(yōu)選Router-ID較小的路由器發(fā)布的路由;
- RTA選擇下一跳為10.1.12.2地址所在的接口為出接口,原因是BGP優(yōu)選IP地址較小的鄰居學(xué)來的路由。
- 在RTA上使用命令display bgp routing-table 200.0.0.0查看如下:
display bgp routing-table 200.0.0.0
BGP local router ID : 1.1.1.1
Local AS number : 100
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 200.0.0.0/24:
From: 2.2.2.2 (2.2.2.2)
Route Duration: 00h02m10s
Relay IP Nexthop: 10.1.12.2
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 10.1.24.4
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre255, IGP
cost 2, not preferred for router ID
……
- 如圖所示,AS 300內(nèi)有兩個(gè)用戶網(wǎng)段,一個(gè)是200.0.0.0/24,一個(gè)是100.0.0.0/24。為了區(qū)分不同網(wǎng)段的用戶,在AS 300內(nèi)為100.0.0.0/24的網(wǎng)段分配Community屬性為300:100,為200.0.0.0/24的網(wǎng)段分配Community屬性為300:200。AS 100內(nèi)用戶訪問這兩個(gè)網(wǎng)段時(shí),希望在RTB和RTC上實(shí)現(xiàn)流量分擔(dān)。AS 200訪問這兩個(gè)網(wǎng)段時(shí),希望在RTE和RTF上實(shí)現(xiàn)流量分擔(dān)。請用盡可能多的方法來實(shí)現(xiàn)上述需求。
- 根據(jù)需求,在AS 100訪問這兩個(gè)網(wǎng)段時(shí),希望在RTB和RTC上實(shí)現(xiàn)流量分擔(dān);在AS 200訪問這兩個(gè)網(wǎng)段時(shí),希望在RTE和RTF上實(shí)現(xiàn)流量分擔(dān)。假設(shè)RTA訪問100.0.0.0/24時(shí)的路徑為RTA->RTB->RTD->RTE->RTG,訪問200.0.0.0/24時(shí)的路徑為RTA->RTC->RTD->RTF->RTG,根據(jù)所學(xué)路徑屬性的知識,可供參考解決方案如下:
- RTE和RTF向RTD通告攜帶團(tuán)體屬性的路由;
- RTD收到攜帶團(tuán)體屬性的路由后,使用兩個(gè)Community-filter分別匹配不同的團(tuán)體屬性,再使用兩個(gè)route-policy分別調(diào)用Community-filter,將匹配團(tuán)體屬性300:100的路由的下一跳設(shè)為RTE上的出接口地址;將匹配團(tuán)體屬性300:200的路由的下一跳設(shè)為RTF上的出接口地址;
- RTD上再設(shè)置兩個(gè)route-policy,一個(gè)是將匹配團(tuán)體屬性為300:100的路由設(shè)置其MED值為100,在對RTC的export方向調(diào)用;另一個(gè)是匹配團(tuán)體屬性為300:200的路由并設(shè)置其MED值為100,在對RTB的export方向調(diào)用。
- RTD上的配置:
bgp 200
peer 10.1.24.2 as-number 100
peer 10.1.34.3 as-number 100
peer 10.1.45.5 as-number 300
peer 10.1.46.6 as-number 300
#
ipv4-family unicast
undo synchronization
peer 10.1.24.2 enable
peer 10.1.24.2 route-policy MED-20 export
peer 10.1.24.2 advertise-community
peer 10.1.34.3 enable
peer 10.1.34.3 route-policy MED-10 export
peer 10.1.34.3 advertise-community
peer 10.1.45.5 enable
peer 10.1.45.5 route-policy 10 import
peer 10.1.46.6 enable
peer 10.1.46.6 route-policy 10 import
#
route-policy 10 permit node 10
if-match community-filter 10
apply ip-address next-hop 10.1.45.5
#
route-policy 10 permit node 20
if-match community-filter 20
apply ip-address next-hop 10.1.46.6
#
route-policy MED-10 permit node 10
if-match community-filter 300:100
apply cost 100
#
route-policy MED-20 permit node 10
if-match community-filter 20
apply cost 100
#
ip community-filter 10 permit 300:100
ip community-filter 20 permit 300:200
驗(yàn)證:在RTA上執(zhí)行如下命令:
tracert 100.0.0.1,觀察所經(jīng)過的IP地址。
tracert 200.0.0.1,觀察所經(jīng)過的IP地址。
BGP路由聚合
- 解決方案:
- 在RTC上將AS 100和AS 200內(nèi)的明細(xì)路由聚合成10.1.8.0/21的一條路由,并將此聚合路由發(fā)布給Client AS。
- 現(xiàn)在Internet上的路由條目數(shù)量眾多,處理這些路由時(shí)存在以下問題:
- 存儲路由條目的路由表將占用大量的內(nèi)存資源,傳輸路由信息需要占用大量的帶寬資源;
- 明細(xì)路由頻繁震蕩造成網(wǎng)絡(luò)不穩(wěn)定。
- 因此,通過路由聚合來節(jié)省內(nèi)存和帶寬資源,減少路由震蕩帶來的影響成為必然。
- 使用靜態(tài)路由配置路由聚合的思路:
- 使用靜態(tài)路由將明細(xì)路由聚合成10.1.8.0/22,下一跳指向NULL 0,因?yàn)榫酆下酚刹⒉皇蔷唧w的地址,發(fā)送給AS 200時(shí)只是明細(xì)路由的替代,為了防止路由環(huán)路,所以將下一跳指向Null 0;
- 由于使用靜態(tài)路由,路由表中產(chǎn)生了一條10.1.8.0/22的路由,下一跳為Null 0。使用network命令將IP路由表中的10.1.8.0/22路由變?yōu)锽GP路由,并通告給對端BGP鄰居,達(dá)到聚合的目的。
- 如圖所示,AS 100內(nèi)有4個(gè)用戶網(wǎng)段,通過import的方式變?yōu)锽GP路由,AS 200連接了一個(gè)Client AS,該AS內(nèi)的路由器處理能力較低,因此既希望能訪問AS 100與AS 200內(nèi)的網(wǎng)段,又不希望接收過多路由,如何解決該問題?
- 配置如圖所示,在RTB與RTC路由器上使用命令display bgp routing-table查看,輸出如下:
< RTB > display bgp routing-table
Network NextHop PrefVal Path/Ogn
> 10.0.0.0 10.1.12.1 0 100?
< RTC > display bgp routing-table
Network NextHop PrefVal Path/Ogn
*> 10.0.0.0 10.1.23.2 0 200 100?
- 自動聚合只對引入BGP的路由進(jìn)行聚合,聚合到自然網(wǎng)段后發(fā)送給鄰居。
- 如圖所示,AS 100內(nèi)有4個(gè)用戶網(wǎng)段,既有通過import的方式引入BGP的路由,又有通過network方式引入BGP的路由。AS 200連接了一個(gè)Client AS,該AS內(nèi)的路由器處理能力較低,因此既希望能訪問AS 100與AS 200內(nèi)的網(wǎng)段,又不希望接收過多路由,如何解決該問題?
- 配置如圖所示,在RTB與RTC路由器上使用命令display bgp routing-table查看,輸出如下:
< RTB > display bgp routing-table
Network NextHop PrefVal Path/Ogn
*> 10.1.8.0/22 10.1.12.1 0 100?
< RTC > display bgp routing-table
Network NextHop PrefVal Path/Ogn
*> 10.1.8.0/22 10.1.23.2 0 200 100?
- 手動聚合對BGP本地路由表里存在的路由進(jìn)行聚合,并且能指定聚合路由的掩碼。
- 為了解決BGP路由聚合帶來的問題,設(shè)置了兩個(gè)AS_Path屬性:
- Atomic-Aggregate:公認(rèn)任意屬性,用于警告下游路由器出現(xiàn)了信息丟失,如圖所示,AS 200內(nèi)設(shè)置了路由聚合的路由器在聚合后發(fā)生了路徑丟失的現(xiàn)象,此時(shí)該路由器通過Update報(bào)文攜帶該屬性通知自己的鄰居發(fā)生了路徑丟失。
- Aggregator:可選過度屬性,該屬性包含發(fā)起聚合的路由器的AS號和Router-ID,表明發(fā)生聚合的位置。
- AS_Path屬性有兩種類型:
- AS_Sequence:表示AS_Path內(nèi)的AS號是一個(gè)有序的列表。
- AS_Set:表示AS_Path內(nèi)的AS號是一個(gè)無序的列表。
- AS_Path本身是一個(gè)有序的列表,因?yàn)锳S_Path每經(jīng)過一個(gè)AS都會將AS號添加到AS_Path中,并且按經(jīng)過的順序從左到右排列。
- 如圖所示,AS 400向AS 300通告聚合路由時(shí),AS_Path屬性(大括號的除外)表示該聚合路由依次經(jīng)過了AS 200和AS 400。
- 當(dāng)發(fā)生聚合后,如果需要聚合路由攜帶所有明細(xì)路由經(jīng)過的AS號來防止環(huán)路,則在配置聚合的命令后添加as-set參數(shù)。
- 如圖所示,AS 200內(nèi)發(fā)生了聚合并配置了as-set參數(shù),則聚合路由會將明細(xì)路由的AS_Path信息用一個(gè)AS-Set集表示(放在中括號里的AS號信息,該集合的AS號沒有先后順序),攜帶在聚合路由后用以防止環(huán)路。
- 路由聚合解決了兩類問題,一是減輕了設(shè)備傳輸和計(jì)算路由所需資源的負(fù)擔(dān),二是隱藏了具體的路由信息,減少了路由震蕩的影響。但是路由聚合后,AS_Path屬性丟失,存在產(chǎn)生環(huán)路的風(fēng)險(xiǎn)。
- 如果路由聚合后攜帶所有明細(xì)路由經(jīng)過的AS信息,當(dāng)明細(xì)路由發(fā)生頻繁震蕩時(shí),聚合路由也可能受其影響頻繁刷新。
- 因此,聚合路由是否攜帶丟失的AS_Path信息,需要設(shè)計(jì)者綜合考慮網(wǎng)絡(luò)環(huán)境。
- 答案:ABC。
- 答案:B。
相關(guān)文章
BGP邊界網(wǎng)關(guān)路由協(xié)議學(xué)習(xí)筆記之屬性和選路規(guī)則詳解
這篇文章主要介紹了BGP邊界網(wǎng)關(guān)路由協(xié)議學(xué)習(xí)筆記之屬性和選路規(guī)則,詳細(xì)分析了BGP屬性、路由條件及相關(guān)配置命令使用技巧,需要的朋友可以參考下2020-04-08BGP邊界網(wǎng)關(guān)路由協(xié)議學(xué)習(xí)筆記(二)路由聚合操作匯總
這篇文章主要介紹了BGP邊界網(wǎng)關(guān)路由協(xié)議路由聚合操作,匯總整理了BGP邊界網(wǎng)關(guān)路由協(xié)議路由聚合相關(guān)概念、原理、操作命令與使用注意事項(xiàng),需要的朋友可以參考下2020-04-07BGP邊界網(wǎng)關(guān)路由協(xié)議學(xué)習(xí)筆記(一)
這篇文章主要介紹了BGP邊界網(wǎng)關(guān)路由協(xié)議,總結(jié)整理了BGP邊界網(wǎng)關(guān)路由協(xié)議的相關(guān)概念、原理、配置命令及操作注意事項(xiàng),需要的朋友可以參考下2020-04-07理解BGP協(xié)議同步規(guī)則的目的和需求 中文PDF版
在bgp同步打開的情況下,一個(gè)BGP路由器不會把那些通過ibgp鄰居學(xué)到的bgp路由通告給自己的ebgp鄰居;除非自己的igb路由表中存在這些路由,才可以向ebgp路由器通告;有需要的朋2016-10-16- BGP協(xié)議是運(yùn)行在TCP之上的,所以TCP的參數(shù)設(shè)置會影響B(tài)GP的性能。在路由數(shù)目比較少的情況下TCP的參數(shù)調(diào)整可能對BGP性能影響不大,但是當(dāng)路由數(shù)目比較巨大的時(shí)候調(diào)整TCP參數(shù)2012-11-19
- 華為路由器BGP協(xié)議屬性不互通,我們來分析一下2012-09-19
路由器基礎(chǔ)知識:路由器的基本協(xié)議與技術(shù)
VPN VPN(Virtual Private Network-虛擬專用網(wǎng))解決方案是路由器具有的重要功能之一。其解決方案大致如下: 1.訪問控制 一般分為PAP(口令認(rèn)證協(xié)議)和CHAP(高級口令2010-09-07華為HCIA認(rèn)證考試OSPF協(xié)議概念與配置實(shí)例分析
這篇文章主要介紹了華為HCIA認(rèn)證考試OSPF協(xié)議,總結(jié)分析了華為HCIA認(rèn)證考試中OSPF協(xié)議相關(guān)概念、原理、配置與操作注意事項(xiàng),需要的朋友可以參考下2020-04-23華為HCIA認(rèn)證考試NAT 實(shí)驗(yàn)案例解析
這篇文章主要介紹了華為HCIA認(rèn)證考試NAT 實(shí)驗(yàn),結(jié)合具體實(shí)驗(yàn)案例形式分析了華為 HCIA 認(rèn)證考試中NAT地址轉(zhuǎn)換協(xié)議相關(guān)配置方法、操作命令與注意事項(xiàng),需要的朋友可以參考下2020-04-23- 這篇文章主要介紹了華為HCIA認(rèn)證考試NAT基本概念與配置方法,較為詳細(xì)的分析了華為HCIA認(rèn)證考試中NAT地址轉(zhuǎn)換協(xié)議的基本概念、原理、配置方法及操作注意事項(xiàng),需要的朋友可以2020-04-22