BGP知識點:
BGP基礎配置,BGP 5種報文,6種鄰居狀態,4大類細分10種屬性,IBGP EBGP(環回口 物理接口)建立鄰居,BGP認證,fake-as,路由傳遞原則,IBGP防環,EBGP防環,RR防環,BGP路由自動聚合,手工聚合(detail-suppressed,supress-policy,attribute-policy,origin-policy),BGP 5種 community屬性,BGP選錄,BGP聯盟,路由反射器,BGP路由過濾,引入,下放默認路由
邊界網關協議BGP(Border Gateway Protocol)是一種實現自治系統AS之間的路由可達,并選擇最佳路由的 高級路徑矢量路由協議
AS,自治系統是指同一個技術管理機構管理,使用統一選路策略的一些路由器的集合。
AS的內部使用IGP來計算和發現路由,同一個AS內部的路由器之間是相互信任的,因此IGP的路由計算和信息泛洪完全處于開放狀態,人工干預很少。
不同AS之間的連接需求推動了外部網關協議的發展,BGP作為一種外部網關協議,用于在AS之間進行路由控制和優選。
總結:AS內部使用IGP來計算和發現路由;AS之間使用BGP來傳遞和控制路由
BGP不支持多進程,因為整臺路由器只能屬于一個AS
BGP特點:非直連建立鄰居關系 (BGP可以跨越多跳路由器建立鄰居關系)
這種特點會產生 BGP路由黑洞 (雙方路由表都看得到,但是ping不通,中間被吸走了)
TCP的三次握手。先啟動BGP的一端先發起TCP連接。如圖所示,RTB先啟動BGP協議,RTB隨機端口號向RTA的179端口發起TCP連接
BGP 鄰居類型
EBGP(External BGP)、IBGP(Internal BGP)
通過AS number比較
運行在不同AS之間的BGP路由器建立的鄰居關系為EBGP鄰居關系
運行在相同AS內的BGP路由器建立的鄰居關系為IBGP鄰居關系
OSPF的network有兩個作用:①建立鄰居 ②宣告網段
OSPF的Hello包:①建立鄰居 ②維護鄰居
對于BGP是細化了,鄰居歸鄰居,路由歸路由
BGP建立鄰居是peer,宣告是network
BGP建立鄰居報文是open,BGP維護報文是keepalive
BGP 5種包
BGP 共有 Open、Update、Notification、Keepalive 和 Route-refresh 等 5種報文類型。
Open 報文:是 TCP 連接建立后發送的第一個報文,用于建立 BGP 鄰居之間的連接關系。
BGP 鄰居在接收到 Open 報文并協商成功后,將發送 Keepalive 報文確認并保持連接的有效性。確認后,BGP 鄰居間可以進行 Update、Notification、Keepalive 和 Route-refresh 報文的交換
1、Open 報文:
用于建立 BGP 對等體連接,創建時或重置時能看到, reset bgp all all
2、Update 報文:
用于在對等體之間交換路由信息。需要在BGP中network才會有Update報文
3、Notification(通告)報文:
用于中斷 BGP 連接。
4、Keepalive 報文:
用于保持 BGP 連接。 周期性發送。
5、Route-refresh(刷新)報文:
用于在改變路由策略后請求對等體重新發送路由信息。只有支持路由刷新(Route-refresh)能力的 BGP 設備會發送和響應此報文。
refresh bgp all import
BGP 6種鄰居狀態
Idle:初始狀態 。reset bgp all才能看到
connection:BGP等待TCP連接的簡歷
active:TCP連接失敗,重新建立TCP連接
opensent:TCP建立成功,發送open報文
openconfirm:收到正確的OPEN報文 。如果收到Keepalive報文,則轉至Established狀態。如果收到Notification報文,則轉至Idle狀態。
established:BGP鄰居建立成功
Idle狀態是BGP初始狀態
任何狀態中收到Notification(通告)報文或TCP拆鏈通知等Error事件后,BGP都會轉至Idle狀態
Connect狀態
BGP啟動連接重傳定時器,等待TCP完成連接
如果TCP連接成功,那么BGP向對等體發送Open報文,并轉至OpenSent狀態。
如果TCP連接失敗,那么BGP轉至Active(活躍)狀態。
如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那么BGP繼續嘗試和其他BGP對等體進行TCP連接,停留在Connect狀態。
Active狀態
BGP總是在試圖建立TCP連接
如果TCP連接成功,那么BGP向對等體發送Open報文,關閉連接重傳定時器,并轉至OpenSent狀態。
如果TCP連接失敗,那么BGP停留在Acitive狀態
如果連接重傳定時器超時,BGP仍沒有收到BGP對等體的響應,那么BGP轉至Connect狀態。
OpenSnet狀態
如果收到的Open報文正確,那么BGP發送Keepalive報文,并轉至OpenConfirm狀態
如果發現收到的Open報文有錯誤,那么BGP發送Notification報文給對等體,并轉至Idle狀態
OpenConfirm狀態
BGP等待Keepalive或Notification報文。如果收到Keepalive報文,則轉至Established狀態,如果收到Notification報文,則轉至Idle狀態
Established狀態
BGP可以和對等體交換Update、Keepalive、Route-refresh報文和Notification報文。
如果收到正確的Update或Keepalive報文,那么BGP就認為對端處于正常運行狀態,將保持BGP連接
如果收到錯誤的Update或Keepalive報文,那么BGP就發送Notification報文通知對端,并轉至Idle狀態。
鄰居關系配置的優化
物理口和環回口配置
IBGP 常規用環回口建立
EBGP 常規用物理接口建立
環回口建立 IBGP鄰居
環回口 要加 connect-interface loo0 才能發送
[R1]bgp 100
[R1-bgp]peer 2.2.2.2 as-n 100 先要有鄰居
[R1-bgp]peer 2.2.2.2 connect-interface loo0 再 指定更新源
環回口建立 EBGP鄰居
[R2-bgp]peer 3.3.3.3 connect-interface loo0
[R2-bgp]peer 3.3.3.3 ebgp-max-hop 120 讓傳播的足夠遠。 如果是物理接口 1跳就足夠了。
但環回口1跳是不夠的, 要修改環回口 ebgp-max-hop。 即修改TTL值
[R3-bgp]peer 2.2.2.2 ebgp-max-hop
通過非直連(邏輯接口)建立IBGP鄰居要指定更新源
更新源:BGP通告默認是以出接口發送更新
因為BGP默認情況下,鄰居建立是通過本地設備的出接口向對端發起TCP連接。指定更新源,實際就是指定發出oepn包的源地址,也就是tcp連接的本端地址。因此當使用非直連建立IBGP/EBGP 鄰居時需要指定更新源
BGP 鄰居建立
建立鄰居的前提條件:建立鄰居的地址必須是可達的
IBGP鄰居建立
1.通過直連接口建立IBGP鄰居
2.通過非直連(邏輯接口)建立IBGP鄰居
1.非直連地址必須可達
2.指定更新源
更新源:BGP默認使用設備出接口發送報文和更新路由
因為BGP默認情況下,鄰居建立是通過本地設備的出接口向對端發起TCP連接,對端收到TCP報文會檢查源目地址,不匹配則建立失敗,指定更新源,實際就是指定發出oepn包的源地址,也就是tcp連接的本段地址。因此當使用非直連建立IBGP/EBGP 鄰居時需要指定更新源
EBGP鄰居建立
1 通過直連接口建立IBGP鄰居
2.非直連建立EBGP
1.地址可達
2.指定更新源
3.指定最大跳數:使非直連能建立EBGP鄰居 命令:peer 10.1.2.2 ebgp-max-hop
bgp?100??進入BGP進程,每臺只能配置一個進程號 router-id?1.1.1.1??配置router??ID peer?2.2.2.2?as-number?100??指定10.1.12.2為對等體?AS是對端的AS號 peer?2.2.2.2?connect-interface?LoopBack?0 peer?2.2.2.2?ebgp-max-hop?255 peer?192.168.12.2?as-number?100
如果沒有配置 Router ID,BGP 路由器會按一定規則自動選舉 Router ID,選舉
規則如下:
路由器在它的所有 LoopBack 接口上選擇數值最高的 IP 地址;
如果沒有 LoopBack 接口,路由器會在它的所有物理接口上選擇數值最高的 IP
地址。
?
1、基本配置 R1: sys sysname?R1 int?loop?0 ip?add?10.0.1.1?32 int?g0/0/0 ip?add?10.0.12.1?24 int?g0/0/1 ip?add?10.0.21.1?24 q R2: sys? sysname?R2 int?loop?0 ip?add?10.0.2.2?32 int?g0/0/0 ip?add?10.0.12.2?24 int?g0/0/2 ip?add?10.0.21.2?24 int?g0/0/1 ip?add?10.0.23.2?24 int?g0/0/3 ip?add?10.0.32.2?24 q R3: sys sysname?R3 int?loop?0 ip?add?10.0.3.3?32 int?g0/0/0 ip?add?10.0.23.3?24 int?g0/0/1 ip?add?10.0.32.3?24 q 2、配置IBGP鄰居 先保證IBGP內互通: R1: ip?route-static?10.0.2.2?32?10.0.12.2 ip?route-static?10.0.2.2?32?10.0.21.2 R2: ip?route-static?10.0.1.1?32?10.0.12.1 ip?route-static?10.0.1.1?32?10.0.21.1 第一種方式:物理口建立IBGP鄰居 R1: bgp?100 router-id?10.0.1.1 peer?10.0.12.2?as-number?100 peer?10.0.21.2?as-number?100 q R2: bgp?100 router-id?10.0.2.2 peer?10.0.12.1?as-number?100 peer?10.0.21.1?as-number?100 q R2: dis?bgp?peer??查看鄰居狀態 dis?bgp?routing-table?? ———————————————————————————————————————————————————————————— 第二種方式:環回口建立IBGP鄰居 環回口?要加?connect-interface?loo0?才能發送 R1: undo?peer?10.0.12.2? undo?peer?10.0.21.2 peer?10.0.2.2?as-number?100 peer?10.0.2.2?connect-interface?loop?0 q R2: ip?route-static?10.0.1.1?32?10.0.12.1 ip?route-static?10.0.1.1?32?10.0.21.1 bgp?100 undo?peer?10.0.12.1 undo?peer?10.0.21.1 peer?10.0.1.1?as-number?100 peer?10.0.1.1?connect-interface?loop?0 q R2: dis?bgp?peer??查看鄰居狀態 dis?ip?routing-table??查看路由表 3.配置EBGP鄰居 第一種方式:環回接口建立BGP R2: bgp?100 peer?10.0.23.3?as-number?200 peer?10.0.32.3?as-number?200 peer?10.0.3.3?as-number?200 peer?10.0.3.3?connect-interface?loop?0 peer?10.0.3.3?ebgp-max-hop?2 q ip?route-static?10.0.3.3?32?10.0.23.3 ip?route-static?10.0.3.3?32?10.0.32.3 R3: bgp?200 router-id?10.0.3.3 peer?10.0.23.2?as-number?100 peer?10.0.32.2?as-number?100 peer?10.0.2.2?as-number?100 peer?10.0.2.2?connect-interface?loop?0 peer?10.0.2.2?ebgp-max-hop?2 q ip?route-static?10.0.2.2?32?10.0.23.2 ip?route-static?10.0.2.2?32?10.0.32.2 這里重點掌握怎么配置BGP鄰居就行。 4.傳遞路由(后面補充,暫時不理) R1: bgp?100 ?network?10.0.1.0?255.255.255.0??宣告網段,企圖想讓BGP路由學習到。 這個通過靜態學習到,又通過BGP學習到,靜態優先級比較高。dis?bgp?routing-table?會發覺這個不是最優的。?因此傳遞不過去給R3 [R1]int?LoopBack?1 [R1-LoopBack1]ip?add?6.6.6.6?24 [R1-LoopBack1]bgp?100 [R1-bgp]network?6.6.6.0?24 然后在R2?和?R3?dis?bgp?routing-table,發現學習到了? R2: ??????Network????????????NextHop????????MED????????LocPrf????PrefVal?Path/Ogn ?*>i??6.6.6.0/24?????????10.0.1.1????????0??????????100????????0??????i ?R3: ??????Network????????????NextHop????????MED????????LocPrf????PrefVal?Path/Ogn ?*>???6.6.6.0/24?????????10.0.2.2??????????????????????????????0??????100i 在R3上,創建looback2接口,宣告出去,?看看R1和R2的路由表 [R3]int?loo2 [R3-LoopBack2]ip?add?9.9.9.9?24 [R3-LoopBack2]bgp?200 [R3-bgp]net?9.9.9.0 R1: ?Total?Number?of?Routes:?2 ??????Network????????????NextHop????????MED????????LocPrf????PrefVal?Path/Ogn ?*>???6.6.6.0/24?????????0.0.0.0?????????0?????????????????????0??????i ???i??9.9.9.0/24?????????10.0.3.3????????0??????????100????????0??????200i 不是可用的,最優的路由條目。這種情況怎么解決?在R2上,設置next-hop-local?這個后面會講到 [R2]bgp?100 [R2-bgp]peer?10.0.3.3?next-hop-local
?
?
peer 關鍵字后面是對端鄰居的接口 IP 地址,也可以是環回口地址
as-number 后面是鄰居路由器所在的 AS 號,
建立 EBGP 鄰居關系時,一般使用直連接口的 IP 地址;建立 IBGP 鄰居關系時,一般使用 Loopback 接口的 IP 地址。
BGP 路由的生成方式
BGP路由的生成方式 - Network(1)
Network命令是逐跳將IP路由表中已經存在的路由引入到BGP路由表中,宣告出去,其他BGP路由器才能學到,不可以network一個不存在的路由條目
BGP路由的生成方式 - Import(1)
Import: 根據運行的路由協議(RIP,OSPF,ISIS等)將路由引入到BGP路由表中,同時import命令還可以引入直連和靜態路由。
但不建議EBGP的路由 引入到IBGP。 承載不了
dis bgp routing-table 查看是否學習到BGP路由條目
BGP 通告原則與路由處理
BGP通告原則之一:僅將自己最優的路由發布給鄰居
BGP通告原則之二:通過EBGP獲得的最優路由發布給所有BGP鄰居
BGP通告原則之三:通過IBGP獲得的最優路由不會發布給其他的IBGP鄰居(防環)
BGP通告原則之四:BGP與IGP同步
配置案例:
BGP路由信息處理
bgp路由表,會提交到本地IP路由表。 路由轉發的時候看的就是本地IP路由表
BGP 認證
認證是指路由器對路由信息來源的可靠性及路由信息本身的完整性進行檢測的機制。
修改計時器
默認 BGP 的 keepalive 時間為 60s, holdtime 為 180s
如果 BGP 對待體兩端的時間不同,以時間小的為準
修改hold time和keepalive 可以更快驗證實驗
[R2-bgp]timer keepalive 20 hold 60 整個BGP進程
簡單認證 方式
[R1-bgp]peer 192.168.12.2 password simple huawei
[R2-bgp]peer 192.168.12.1 password simple huawei
密鑰鏈 方式
[R2]keychain key mode periodic daily
[R2-keychain]key-id 1
[R2-keychain-keyid-1]key-string huawei
[R2-keychain-keyid-1]algorithm md5
[R2-keychain-keyid-1]send daily 09:00 to 17:00
[R2-keychain-keyid-1]receive-time daily 09:00 to 17:00
[R2-keychain-keyid-1]bgp 100
[R2-bgp]peer 192.168.23.3 keychain key
了解:fake-as —— 特殊場景
概念:使用fake-as可以將本地真實的AS編號隱藏,其他AS內的對等體在指定本段對鍛體所在的AS編號時,應該設置成這個偽AS編號。
某臺A設備升級了,然后AS號改了,等于 鄰居指了不存在的AS號,然后鄰居又不愿意改。
這就有個 fake-as 偽裝。 把某臺A設備真實的AS偽裝,欺騙。
[R2]bgp 2000
[R2-bgp]peer 192.168.12.1 fake-as 200
BGP 對等體之間的交互原則
BGP 設備將最優路由加入 BGP 路由表,形成 BGP 路由。BGP 設備與對等體建立鄰居關系后,采取以下交互原則:
1、從 IBGP 對等體獲得的 BGP 路由,BGP 設備只發布給它的 EBGP 對等體。
2、從 EBGP 對等體獲得的 BGP 路由,BGP 設備發布給它所有 EBGP 和 IBGP 對 9
等體。
3、當存在多條到達同一目的地址的有效路由時,BGP 設備只將最優路由發布給
對等體。
4、路由更新時,BGP 設備只發送更新的 BGP 路由。
5、所有對等體發送的路由,BGP 設備都會接收。
BGP 鄰居學習next-hop-local補充
BGP無效路由的原因:下一跳不可達
下一跳地址為0.0.0.0表示本地產生的BGP路由。
這臺路由器既連接外部又連接內部,當路由器由外部路由發送到內部路由的時,改變下一跳為自己
[R3-bgp]peer 1.1.1.1 next-hop-local
[R3-bgp]peer 2.2.2.2 next-hop-local 告訴R2路由器,你去往一臺路由器的時候,找我R3就行。
從EBGP鄰居收到的路由,發給IBGP鄰居的時候,改變下一跳
但從IBGP鄰居收到的路由,發給EBGP鄰居的時候,不需要使用
具體配置:
?
?
1.基本配置 R1: interface?GigabitEthernet0/0/0 ?ip?address?192.168.12.1?255.255.255.0? interface?LoopBack0 ?ip?address?1.1.1.1?255.255.255.0? R2: interface?GigabitEthernet0/0/0 ?ip?address?192.168.12.2?255.255.255.0? interface?GigabitEthernet0/0/1 ?ip?address?192.168.23.2?255.255.255.0? interface?LoopBack0 ?ip?address?2.2.2.2?255.255.255.0? R3: interface?GigabitEthernet0/0/0 ?ip?address?192.168.34.3?255.255.255.0? interface?GigabitEthernet0/0/1 ?ip?address?192.168.23.3?255.255.255.0? interface?LoopBack0 ?ip?address?3.3.3.3?255.255.255.0? R4: interface?GigabitEthernet0/0/0 ?ip?address?192.168.34.4?255.255.255.0? interface?LoopBack0 ?ip?address?4.4.4.4?255.255.255.0? 2.內部OSPF配置 R1: ?area?0.0.0.0? ??network?1.1.1.1?0.0.0.0? ??network?192.168.12.1?0.0.0.0? R2: ?area?0.0.0.0? ??network?2.2.2.2?0.0.0.0? ??network?192.168.12.2?0.0.0.0? ??network?192.168.23.2?0.0.0.0? R3: ?area?0.0.0.0? ??network?3.3.3.3?0.0.0.0? ??network?192.168.23.3?0.0.0.0? 3.環回口建立IBGP鄰居?? R1: [R1]bgp?100 [R1-bgp]router-id?1.1.1.1 [R1-bgp]peer?2.2.2.2?as-n?100 [R1-bgp]peer?2.2.2.2?con?loo0 [R1-bgp]peer?3.3.3.3?as-n?100 [R1-bgp]peer?3.3.3.3?con?loo0 [R1-bgp]net?1.1.1.0?24 R2: [R2]bgp?100 [R2-bgp]router-id?2.2.2.2 [R2-bgp]peer?1.1.1.1?as-n?100 [R2-bgp]peer?1.1.1.1?con?loo0 [R2-bgp]peer?3.3.3.3?as-n?100 [R2-bgp]peer?3.3.3.3?con?loo0 [R2-bgp]net?2.2.2.0?24 R3: [R3]bgp?100 [R3-bgp]router-id?3.3.3.3 [R3-bgp]peer?2.2.2.2?as-n?100 [R3-bgp]peer?2.2.2.2?con?loo0 [R3-bgp]peer?1.1.1.1?as-n?100 [R3-bgp]peer?1.1.1.1?con?loo0 [R3-bgp]net?3.3.3.0?24 4.物理口建立EBGP鄰居 R3: [R3]bgp?100 [R3-bgp]peer?192.168.34.4?as-n?200 R4: [R4]bgp?200 [R4-bgp]router-id?4.4.4.4 [R4-bgp]peer?192.168.34.3?as-n?100 [R4-bgp]net?4.4.4.0?24 不需要改變鄰接接口,也不需要多跳。因為是物理接口 5.測試驗證,發現問題,解決next-hop-local [R2]dis?bgp?routing-table?發覺??? 4.4.4.0?不是最優的,可用的,不會放到自己的路由表(ip?routing-table),原因是下一跳不可達。?直接跨了網段的下一跳是不OK的。 Total?Number?of?Routes:?4 ??????Network????????????NextHop????????MED????????LocPrf????PrefVal?Path/Ogn ?*>i??1.1.1.0/24?????????1.1.1.1?????????0??????????100????????0??????i ?*>???2.2.2.0/24?????????0.0.0.0?????????0?????????????????????0??????i ?*>i??3.3.3.0/24?????????3.3.3.3?????????0??????????100????????0??????i ???i??4.4.4.0/24?????????192.168.34.4????0??????????100????????0??????200i 解決:next-hop-local [R3]bgp?100 [R3-bgp]peer?2.2.2.2?next-hop-local [R3-bgp]peer?1.1.1.1?next-hop-local??? 內部兩個都要配next-hop-local,告訴R2,R1?路由器,你去的時候找我就行了 再次驗證: [R2]dis?bgp?routing-table ?Total?Number?of?Routes:?4 ??????Network????????????NextHop????????MED????????LocPrf????PrefVal?Path/Ogn ?*>i??1.1.1.0/24?????????1.1.1.1?????????0??????????100????????0??????i ?*>???2.2.2.0/24?????????0.0.0.0?????????0?????????????????????0??????i ?*>i??3.3.3.0/24?????????3.3.3.3?????????0??????????100????????0??????i ?*>i??4.4.4.0/24?????????3.3.3.3?????????0??????????100????????0??????200iping?-a?1.1.1.1?3.3.3.3 ??PING?3.3.3.3:?56??data?bytes,?press?CTRL_C?to?break ????Reply?from?3.3.3.3:?bytes=56?Sequence=1?ttl=254?time=50?ms
?
?
BGP 常用屬性
4大類細分10種屬性
4大分類:公認必遵、公認任意、可選過渡、可選非過渡
公認必遵(所有路由器,只要運行BGP都可以識別到,Update報文發送路由條目的時候必須攜帶這三個):Origin(起源)、AS_Path(AS路徑)、Next_hop(下一跳)
公認任意:Local_pref、Atomic_aggregate原子聚合(它相當于一種預警標識,并不承載任何信息。當路由器收到一條BGP路由更新中發現該條路由攜帶Atomic_aggregate屬性時,它就知道這條路由可能出現了路徑屬性的丟失。)
可選過渡(可有可無,不知道就傳遞給下一個對等體):Aggregator聚合者(用于標記路由匯總行為發生在哪個AS及哪臺BGP路由器上)、Community(多個路由條目放一起)
可選非過渡(可有可無,不知道就丟棄):MED、ORIGINATOR_ID、CLUSTER_LIST
BGP屬性 —— Origin
Origin屬性定義路徑信息的來源,標記一條路由是怎么成為BGP路由的
IGP(network)>EGP>Incomplete(import)
i -?IGP,?e -?EGP,?? -?incomplete
BGP屬性 —— AS_Path
AS-Path 是 記錄經過的AS-hop 。 默認會選AS-Path短
BGP屬性 —— Next_hop
什么時候要加 next-hop-local
從EBGP鄰居收到的路由,發給IBGP鄰居的時候,改變下一跳
但從IBGP鄰居收到的路由,發給EBGP鄰居的時候,不需要使用
BGP屬性 —— Local_Preference
Local_Pref屬性僅在IBGP鄰居之間有效,不通告給其他AS。它表明路由器的BGP優先級,用于判斷流量離開AS時的最佳路由。默認為100,值越大越優
BGP屬性 —— MED
MED屬性僅在相連兩個AS(在EBGP傳遞)之間傳遞,收到此屬性的AS不會再將其通告給任何其他第三方AS,用于判斷流量進入AS時的最佳路由。默認為0,越小越優
BGP屬性 —— Community
·限定路由的傳播范圍
·打標機,便于對符合相同條件的路由進行統一處理
BGP 防環
IBGP的防環:水平分割,路由器從它的一個BGP對等體那里接收到的路由條目不會將該路由器再傳遞給其他IBGP對等體。
EBGP的防環:當路由器從EBGP鄰居收到BGP路由時,如果該路由的AS_Path中包含了自己的AS編號,則該路由將會直接丟棄
R2從EBGP鄰居R1 收到R1的路由條目,會發送給R3。
如果R3后還有R4,觀察點要轉移到R3,R3是通過IBGP鄰居R2收到的路由條目,是不會發給R4的。
如果R4想接收到,R2和R4要建立一個BGP連接,雖然沒有物理上的直連,但可以建立邏輯相連 —— TCP可達
路由反射器的防環:Originator_id,Cluster_list
BGP 選路規則
BGP路由器將路由通告給鄰居后,每個BGP鄰居都會進行路由優選,路由選擇有三種情況:
·該路由是到達目的地唯一路由,直接優選。
·對到達同一目的地的多條路由,優選優先級最高的。
·對到達同一目的地且具有相同優先級的多條路由,必須用更細的原則去選擇一條最優的。
一般來說,BGP計算路由優先級的規則: 要記住這8條及順序
當到達同一目的地存在多條路由且下一跳可達
1.優選協議首選值(Preference_Value)最高的路由。(私有屬性,僅本地有效)
2.優選本地優先級(Local_Preference)最高的路由。 (100,IBGP,越大越優)
3.優選本地生成的路由。手動聚合>自動聚合>network>import>從對等體學到的。
4.優選 AS_Path 短的路由。
5.比較 Origin 屬性,起源類型 IGP>EGP>Incomplete。 i>e>?
6.優選 MED(Multi Exit Discriminator)值最低的路由。 (0,EBGP,越小越優)
7.優選從 EBGP 學來的路由(EBGP>IBGP)。
8.優選 AS 內部 IGP 的 Metric 最小的路由。
bgp 100
max load-balancing 2
9.優選 Cluster_List 最短的路由。 (有做路由反射器RR才考慮)
10.優選 Router_ID 最小的路由器發布的路由。
11.優選具有較小 IP 地址的鄰居學來的路由。
如果配置了負載分擔,當前8個規則相同,且存在多條AS_Path完全相同的外部路由,則根據配置的路由條數選擇多條路由進行負載分擔
BGP 路由聚合
BGP在AS之間傳遞路由信息,隨著AS數量的增多,單個AS規模的擴大,BGP路由表將變得十分龐大,因此帶來如下兩類問題:
·存儲路由表將占用大量的內存資源,傳輸和處理路由信息需要消耗大量的帶寬資源;
·如果傳輸的路由條目出現頻繁的更新和撤銷,對網絡的穩定性會造成影響
BGP路由聚合的必要性,AS內的路由器比較低端,處理能力較低,希望訪問,又不希望接收過多的路由條目
聚合方法 —— 靜態
null 0 表示不存在的接口,起到防環作用
聚合方法 —— 自動聚合
undo synchronization 關閉同步
自動聚合是針對 引入來的路由有效,對network無效
聚合方法 —— 手動聚合 (靜態和aggravate)
BGP路由聚合 會有明細和聚合后的。 因此要通過路由聚合屏蔽明細路由,只將一條聚合后的路由發出去 detail-suppressed
審核編輯:黃飛
評論
查看更多