07-BGP高級配置
本章節下載: 07-BGP高級配置 (1.27 MB)
1.2 配置建立BGP TCP連接時使用的TCP最大報文段長度
1.7.3 禁止與指定對等體/對等體組建立會話(IPv4對等體)
1.7.4 禁止與指定對等體/對等體組建立會話(IPv6對等體)
1.8.2 通過Route-refresh功能實現BGP軟複位(IPv4對等體)
1.8.3 通過Route-refresh功能實現BGP軟複位(IPv6對等體)
1.8.4 通過將所有路由更新信息保存在本地實現BGP軟複位(IPv4單播/IPv4組播)
1.8.5 通過將所有路由更新信息保存在本地實現BGP軟複位(IPv6單播/IPv6組播)
1.8.6 手工軟複位BGP會話(IPv4單播/IPv4組播)
1.8.7 手工軟複位BGP會話(IPv6單播/IPv6組播)
1.14 配置係統進入二級內存門限告警狀態後不斷開EBGP對等體
1.20 配置關閉MPLS Local Ifnet隧道自動創建功能
2.6.5 配置向對等體/對等體組發送BGP RPKI驗證結果
3.5.2 通過引用路由策略的方式開啟BGP快速重路由功能(IPv4單播)
3.5.3 通過引用路由策略的方式開啟BGP快速重路由功能(IPv6單播)
3.5.4 通過pic命令開啟BGP快速重路由(IPv4單播)
3.5.5 通過pic命令開啟BGP快速重路由(IPv6單播)
3.5.6 配置BGP快速重路由通過BFD會話檢測主路由的下一跳是否可達
4.3.4 配置BGP LS信息的AS號和Router ID
調整和優化BGP網絡配置任務如下:
· 調整和優化EBGP會話的建立與複位
· 調整BGP會話的建立、中斷與軟複位
¡ 配置BGP軟複位
· 調整標簽分配方式和路由優選規則
¡ 配置標簽申請方式
· 配置關閉MPLS Local Ifnet隧道自動創建功能
BGP對等體之間往往需要經過多跳建立TCP連接。由於源端到目的端不同設備的MTU不同,中間節點轉發BGP報文時可能需要重新進行分片,導致頻繁封裝解封裝數據包,降低了轉發效率。為了避免上述情況,可通過本功能配置本地設備與指定對等體/對等體組建立TCP連接時所使用的TCP MSS值,以達到TCP報文在源端分段後,不再被中間節點分片的目的,進而提高網絡性能。有關TCP最大報文段長度(Max Segment Size,MSS)的詳細介紹,請參見“三層技術-IP業務配置指導”中的“IP性能優化”。
配置本功能後,設備與指定對等體/對等體組建立BGP TCP連接時,TCP最大報文段長度為以下MSS中的最小值:
· 與BGP對等體建立TCP連接的接口上,通過接口上發送IPv4報文的MTU值(由ip mtu命令配置)計算得到的MSS值。
· 與BGP對等體建立TCP連接的接口上,通過tcp mss命令配置的接口MSS值。
· 配置tcp path-mtu-discovery命令開啟TCP連接的Path MTU探測功能後,根據探測機製確定的Path MTU計算得到的MSS值。
· 本功能配置的設備與指定對等體/對等體組之間建立BGP TCP連接時所使用的MSS值。(如果未配置本功能,則TCP MSS值為上述幾項中的最小值)
根據MTU值(接口MTU或Path MTU)計算MSS值的方法為:MSS=MTU值-IP頭部長度-TCP頭部長度。有關MTU和MSS的詳細介紹,請參見“三層技術-IP業務配置指導”中的“IP性能優化”。
配置本功能可能會導致已經建立的BGP會話斷開後重新建立,請謹慎配置本命令。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置設備與指定對等體/對等體組之間建立BGP TCP連接時所使用的TCP最大報文段長度。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } tcp-mss mss-value
缺省情況下,未指定設備與指定對等體/對等體組建立TCP連接時所使用的TCP最大報文段長度。
當前路由器要與另外一個路由器建立EBGP會話,它們之間必須具有直連的物理鏈路,且必須使用直連接口建立會話。如果不滿足這一要求,則必須使用peer ebgp-max-hop命令允許它們經過多跳建立EBGP會話。
配置BGP GTSM功能後,隻要本地設備和指定的對等體通過了GTSM檢查,就允許在二者之間建立EBGP會話,不管二者之間的跳數是否超過peer ebgp-max-hop命令指定的跳數範圍。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允許本地路由器同非直連網絡上的鄰居建立EBGP會話,同時指定允許的最大跳數。
peer { group-name | ipv4-address [ mask-length ] } ebgp-max-hop [ hop-count ]
缺省情況下,不允許同非直連網絡上的鄰居建立EBGP會話。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置允許本地路由器同非直連網絡上的鄰居建立EBGP會話,同時指定允許的最大跳數。
peer { group-name | ipv6-address [ prefix-length ] } ebgp-max-hop [ hop-count ]
缺省情況下,不允許同非直連網絡上的鄰居建立EBGP會話。
未使能直連EBGP會話快速複位功能時,連接直連EBGP對等體的鏈路down後,本地路由器不會立即斷開與EBGP對等體的會話,而是等待會話保持時間(Holdtime)超時後,才斷開該會話。此時鏈路震蕩不會影響EBGP會話的狀態。
使能直連EBGP會話快速複位功能後,連接直連EBGP對等體的鏈路down時,本地路由器會立即斷開與EBGP對等體的會話,並重新與該對等體建立EBGP會話,從而實現快速發現鏈路故障並重建會話。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 使能直連EBGP會話快速複位功能。
ebgp-interface-sensitive
缺省情況下,直連EBGP會話快速複位功能處於使能狀態。
BGP ORF(Outbound Route Filtering,輸出路由過濾)功能是指將ORF信息(本地的路由接收策略信息)通過Route-refresh消息發送給對等體,當對等體需要向本地發送Update更新消息時,不僅要利用對等體上的路由策略對路由進行過濾,還需要利用接收到的路由接收策略對路由進行過濾,隻有通過策略過濾的路由信息才會發給本地,以達到減少BGP鄰居間Update更新消息的交互,節省網絡資源的目的。
使能BGP ORF能力後,本地和BGP對等體會通過Open消息協商ORF能力(即收發的消息裏是否允許攜帶ORF信息,如果允許攜帶,是否可以攜帶非標準的ORF信息),當協商完畢並成功建立BGP會話後,可以通過特殊的Route-refresh消息交互ORF信息。
本地和BGP對等體都需要執行本配置,且需要保證一端能夠發送攜帶ORF信息的Route-refresh報文,另一端能夠接收攜帶ORF信息的Route-refresh報文,才能保證ORF能力協商成功。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖、BGP-VPN IPv4單播地址族視圖或BGP IPv4組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv4組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 開啟BGP鄰居協商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情況下,BGP鄰居協商的ORF能力處於關閉狀態。
BGP IPv4組播地址族視圖下不支持IPv6參數。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖、BGP-VPN IPv6單播地址族視圖或BGP IPv6組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv6組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 開啟BGP鄰居協商的ORF能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf prefix-list { both | receive | send }
缺省情況下,BGP鄰居協商的ORF能力處於關閉狀態。
BGP IPv6組播地址族視圖下不支持IPv4參數。
和采用非標準ORF的友商設備互通時需要執行本配置。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 開啟BGP鄰居協商的非標準ORF能力。
peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise orf non-standard
缺省情況下,BGP鄰居協商的非標準ORF能力處於關閉狀態。
可在任意視圖下執行以下命令:
· 顯示鄰居收到的ORF消息中的前綴信息(IPv4單播)。
display bgp [ instance instance-name ] peer ipv4 [ unicast ] [ vpn-instance vpn-instance-name ] ipv4-address received prefix-list
· 顯示鄰居收到的ORF消息中的前綴信息(IPv6單播)。
display bgp [ instance instance-name ] peer ipv6 [ unicast ] [ vpn-instance vpn-instance-name ] ipv6-address received prefix-list
display bgp [ instance instance-name ] peer ipv6 [ unicast ] ipv4-address received prefix-list
· 顯示鄰居收到的ORF消息中的前綴信息(IPv4組播)。
display bgp [ instance instance-name ] peer ipv4 multicast ipv4-address received prefix-list
· 顯示鄰居收到的ORF消息中的前綴信息(IPv6組播)。
display bgp [ instance instance-name ] peer ipv6 multicast ipv6-address received prefix-list
設備支持4字節的AS號,即AS號取值占用4字節,取值範圍為1~4294967295。缺省情況下,設備在與對端設備建立BGP會話時,通過Open消息通告對端設備本端支持4字節的AS號。如果對端設備不支持4字節AS號(隻支持2字節AS號),則會導致會話協商失敗。此時,在本端與對端設備之間使能4字節AS號抑製功能,可以使得本端設備通過Open消息向對端設備謊稱自己不支持4字節的AS號,從而確保本端和對端設備之間可以成功建立BGP會話。
如果對端設備支持4字節AS號,請不要使能4字節AS號抑製功能,否則會導致BGP會話無法建立。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字節AS號抑製功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise suppress-4-byte-as
缺省情況下, 4字節AS號抑製功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能4字節AS號抑製功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise suppress-4-byte-as
缺省情況下,4字節AS號抑製功能處於關閉狀態。
由於網絡升級維護等原因,需要暫時斷開與某個對等體/對等體組的BGP會話時,可以通過本配置禁止與對等體/對等體組建立會話。當網絡恢複後,通過執行undo peer ignore命令以恢複與對等體/對等體組的會話。這樣,網絡管理員無需刪除並重新進行對等體/對等體組相關配置,減少了網絡維護的工作量。
設備可以通過以下兩種方式禁止與對等體/對等體組建立會話:
· 僅禁止與指定對等體/對等體組建立會話。
· 禁止與所有對等體建立會話。
執行本配置時,如果可以指定了graceful參數,則設備會啟動等待鄰居關係斷開定時器,並重新發布路由信息。不同方式下,發布的路由信息有所不同:
· 僅禁止與指定對等體/對等體組建立會話:
¡ 向指定的對等體/對等體組發送本設備上全部的路由。
¡ 向其他的IBGP對等體/對等體組發送來自指定對等體/對等體組的路由。
· 禁止與所有對等體建立會話:向所有對等體/對等體組重新發送本設備上全部的路由。
執行本配置還可以配置這些路由的屬性,以降低重新發布路由的優先級,使得鄰居路由器優選從其他鄰居學到的路由,從而避免當定時器超時、鄰居關係斷開時造成流量的中斷。
如果同時配置ignore all-peers和peer ignore命令,則針對同一對等體/對等體組,以peer ignore命令的配置為準。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止與對等體/對等體組建立會話。
peer { group-name | ipv4-address [ mask-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情況下,允許與BGP對等體/對等體組建立會話。
如果本設備和對等體的會話已經建立,則執行本命令後,會停止該會話,並且清除所有相關路由信息;如果本設備和對等體組的會話已經建立,則執行本命令後,會終止與對等體組內所有對等體之間的會話,並且清除所有相關路由信息。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 禁止與IPv6 BGP對等體/對等體組建立會話。
peer { group-name | ipv6-address [ prefix-length ] } ignore [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情況下,允許與BGP對等體/對等體組建立會話。
如果本設備和對等體的會話已經建立,則執行本命令後,會停止該會話,並且清除所有相關路由信息;如果本設備和對等體組的會話已經建立,則執行本命令後,會終止與對等體組內所有對等體之間的會話,並且清除所有相關路由信息。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 禁止與所有對等體/對等體組建立會話。
ignore all-peers [ graceful graceful-time { community { community-number | aa:nn } | local-preference preference | med med } * ]
缺省情況下,允許與BGP對等體/對等體組建立會話。
如果本設備和對等體/對等體組的會話已經建立,則執行本命令後,會斷開本設備和對等體/對等體組的會話,並且清除所有路由信息。
BGP的選路策略改變,即影響BGP路由選擇的配置(如路由首選值等)發生變化後,為了使新的策略生效,必須複位BGP會話,即刪除並重新建立BGP會話,以便重新發布路由信息,並應用新的策略對路由信息進行過濾。複位BGP會話時,會造成短暫的BGP會話中斷。
通過BGP軟複位,可以實現在不中斷BGP會話的情況下,對BGP路由表進行更新,並應用新的選路策略。
BGP軟複位的方法有以下三種:
· 通過Route-refresh功能實現BGP軟複位:如果BGP的選路策略發生了變化,則本地路由器會向BGP對等體發送Route-refresh消息,收到此消息的對等體將其路由信息重新發給本地路由器,本地路由器根據新的路由策略對接收到的路由信息進行過濾。采用這種方式時,要求當前路由器和對等體都支持Route-refresh功能。
· 通過將所有路由更新信息保存在本地的方式實現BGP軟複位:將從對等體接收的所有原始路由更新信息保存在本地,當選路策略發生改變後,對保存在本地的所有路由使用新的路由策略重新進行過濾。采用這種方式時,不要求當前路由器和對等體都支持Route-refresh功能,但是保存路由更新需要占用較多的內存資源。
· 手工軟複位BGP會話:執行refresh bgp命令手工觸發本地路由器將本地路由信息發送給BGP對等體或向BGP對等體發送Route-refresh消息,收到Route-refresh消息的對等體將其路由信息重新發給本地路由器,以便本地路由器根據新的路由策略對接收到的路由信息進行過濾。采用這種方式時,要求當前路由器和對等體都支持Route-refresh功能。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通過Route-refresh功能實現BGP軟複位。請選擇其中一項進行配置。
¡ 使能本地路由器與指定對等體/對等體組的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器與指定BGP對等體/對等體組的BGP路由刷新、多協議擴展和4字節AS號功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情況下,BGP路由刷新、多協議擴展和4字節AS號功能處於使能狀態。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 通過Route-refresh功能實現BGP軟複位。請選擇其中一項進行配置。
¡ 使能本地路由器與指定IPv6 BGP對等體/對等體組的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器與指定IPv6 BGP對等體/對等體組的BGP路由刷新、多協議擴展和4字節AS號功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情況下,BGP路由刷新、多協議擴展和4字節AS號功能處於使能狀態。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖、BGP-VPN IPv4單播地址族視圖或BGP IPv4組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv4組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 保存所有來自指定對等體/對等體組的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } keep-all-routes
缺省情況下,不保存來自對等體/對等體組的原始路由更新信息。
BGP IPv4組播地址族視圖下不支持IPv6參數。
本命令隻對執行該命令後接收到的路由生效。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖、BGP-VPN IPv6單播地址族視圖或BGP IPv6組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv6組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 保存所有來自指定對等體/對等體組的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } keep-all-routes
缺省情況下,不保存來自對等體/對等體組的原始路由更新信息。
BGP IPv6組播地址族視圖下不支持IPv4參數。
本命令隻對執行該命令後接收到的路由生效。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。請選擇其中一項進行配置。
¡ 使能本地路由器與指定對等體/對等體組的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] } capability-advertise route-refresh
¡ 使能本地路由器與指定BGP對等體/對等體組的BGP路由刷新、多協議擴展和4字節AS號功能。
undo peer { group-name | ipv4-address [ mask-length ] } capability-advertise conventional
缺省情況下,BGP路由刷新、多協議擴展和4字節AS號功能處於使能狀態。
(4) 依次執行以下命令退回用戶視圖。
a. quit
b. quit
(5) 手工對BGP會話進行軟複位。請選擇其中一項進行配置。
a. 手工軟複位IPv4地址族下的BGP IPv4會話。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv4 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
¡ 手工軟複位IPv4地址族下的BGP IPv6會話。
refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv4 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置Route-refresh功能。請選擇其中一項進行配置。
¡ 使能本地路由器與IPv6 BGP指定對等體/對等體組的BGP路由刷新功能。
peer { group-name | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器與指定IPv6 BGP對等體/對等體組的BGP路由刷新、多協議擴展和4字節AS號功能。
undo peer { group-name | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情況下,BGP路由刷新、多協議擴展和4字節AS號功能處於使能狀態。
(4) 依次執行以下命令退回用戶視圖。
a. quit
b. quit
(5) 手工對BGP會話進行軟複位。請選擇其中一項進行配置。
a. 手工軟複位IPv6地址族下的BGP IPv6會話。
refresh bgp [ instance instance-name ] { ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
¡ 手工軟複位IPv6地址族下的BGP IPv4會話。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } ipv6 [ multicast | [ unicast ] [ vpn-instance vpn-instance-name ] ]
通過改變BGP選路規則實現負載分擔時,設備根據balance命令配置的進行BGP負載分擔的路由條數,選擇指定數目的路由進行負載分擔,以提高鏈路利用率。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) (可選)配置BGP在選擇最優路由時忽略IGP Metric的比較。
bestroute igp-metric-ignore
缺省情況下,BGP在選擇最優路由時會比較這些路由下一跳的IGP路由的Metric值,並優選IGP Metric值最小的路由。
下一跳IGP Metric不相同的BGP路由之間無法形成負載分擔。配置本命令使得不同路由的下一跳IGP Metric不同時能夠形成BGP負載分擔。
(4) 退回係統視圖。
¡ 在BGP實例視圖下退回係統視圖。
quit
¡ 在BGP-VPN實例視圖下請依次執行以下命令退回係統視圖。
quit
quit
(5) 進入BGP IPv4單播地址族視圖、BGP-VPN IPv4單播地址族視圖或BGP IPv4組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv4組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(6) 配置進行BGP負載分擔的路由條數。
balance [ ebgp | eibgp | ibgp ] number
缺省情況下,不會進行BGP負載分擔。
(7) (可選)配置不同AS_PATH屬性的路由能夠形成BGP負載分擔。
balance as-path-neglect
缺省情況下,不同AS_PATH屬性的路由之間不能形成BGP負載分擔。
(8) (可選)配置內容不同但長度相同的AS_PATH屬性的路由能夠形成BGP負載分擔。
balance as-path-relax [ ebgp | ibgp ]
缺省情況下,內容不同但長度相同的AS_PATH屬性的路由不能形成BGP負載分擔。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) (可選)配置BGP在選擇最優路由時忽略IGP Metric的比較。
bestroute igp-metric-ignore
缺省情況下,BGP在選擇最優路由時會比較這些路由下一跳的IGP路由的Metric值,並優選IGP Metric值最小的路由。
下一跳IGP Metric不相同的BGP路由之間無法形成負載分擔。配置本命令使得不同路由的下一跳IGP Metric不同時能夠形成BGP負載分擔。
(4) 退回係統視圖。
¡ 在BGP實例視圖下退回係統視圖。
quit
¡ 在BGP-VPN實例視圖下請依次執行以下命令退回係統視圖。
quit
quit
(5) 進入BGP IPv6單播地址族視圖、BGP-VPN IPv6單播地址族視圖或BGP IPv6組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv6組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(6) 配置進行BGP負載分擔的路由條數。
balance [ ebgp | eibgp | ibgp ] number
缺省情況下,不會進行BGP負載分擔。
(7) (可選)配置不同AS_PATH屬性的路由能夠形成BGP負載分擔。
balance as-path-neglect
缺省情況下,不同AS_PATH屬性的路由之間不能形成BGP負載分擔。
(8) (可選)配置內容不同但長度相同的AS_PATH屬性的路由能夠形成BGP負載分擔。
balance as-path-relax [ ebgp | ibgp ]
缺省情況下,內容不同但長度相同的AS_PATH屬性的路由不能形成BGP負載分擔。
缺省情況下,BGP隻發布一條最優路由。如果最優路由所在路徑出現網絡故障,數據流量將會被中斷,直到BGP根據新的網絡拓撲路由收斂後,被中斷的流量才能恢複正常的傳輸。
配置了Add-Path(Additional Paths)功能後,BGP可以向鄰居發送本地前綴相同下一跳不同的多條路由。網絡出現故障後,次優路由可以成為新的最優路由,這樣就縮短了流量中斷時間。
Add-Path能力包括接收和發送兩種。為了讓對等體間的Add-Path能力協商成功,必須一端使能接收能力,另一端使能發送能力。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖或BGP-VPN IPv4單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情況下,未配置Add-Path功能。
(4) 配置向指定對等體/對等體組發送的Add-Path優選路由的最大條數。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情況下,向指定對等體/對等體組發送的Add-Path優選路由的最大條數為1。
(5) 配置Add-Path優選路由的最大條數。
additional-paths select-best best-number
缺省情況下,Add-Path優選路由的最大條數為1。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖或BGP-VPN IPv6單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情況下,未配置Add-Path功能。
(4) 配置向指定對等體/對等體組發送的Add-Path優選路由的最大條數。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情況下,向指定對等體/對等體組發送的Add-Path優選路由的最大條數為1。
(5) 配置Add-Path優選路由的最大條數。
additional-paths select-best best-number
缺省情況下,Add-Path優選路由的最大條數為1。
如圖1-1所示,設備之間均通過BGP協議互通,Device A與Device D之間存在兩條路徑,當Device D和Device B之間的鏈路不通時,流量切換到備份路徑上轉發,之後若主用路徑恢複正常,流量將切回主用路徑。這種情況下,當主用鏈路恢複正常時,Device B會向Device A發送Update消息更新路由,Device A收到路由後觸發路由優選,將流量切換到主用路徑上進行轉發,此時Device B可能未完成FIB轉發表項的刷新,導致流量丟失。通過在Device A上開啟延遲路由優選功能可以在觸發路由優選時延遲一段時間再進行重新選路,避免切換路徑時由於表項未完成刷新導致的流量丟失現象。
配置本功能時,需要注意:
· 僅路由變化後存在多條相同前綴的有效路由時路由優選才會延遲。
· 將路由優選延遲時間修改為非0值時,正在等待延遲路由優選時間的路由不受影響,仍采用延遲開始時的時間;將路由優選延遲時間修改為0時,正在等待延遲路由優選時間的路由會立即進行優選。
以下情況需要進行路由優選時不受路由優選延遲時間影響,仍會立即進行路由優選:
· 本地的配置發生變化引起路由變化。
· 撤銷路由引起路由變化。
· 路由變化後去往某一目的隻有一條路由。
· BGP發生主備進程倒換時。
· 存在多條等價路由的情況下,選中路由發生變化。
· 配置了FRR情況下僅存在最優路由和次優路由。
· 引入的路由觸發路由優選。
· 最優路由下一跳發生變化且存在正在等待延遲優選時間的相同前綴路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖、BGP-VPN IPv4單播地址族視圖或BGP IPv4組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv4組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 配置BGP路由延遲優選時間。
route-select delay delay-value
缺省情況下,延遲時間為0秒,即路由優選不延遲。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖、BGP-VPN IPv6單播地址族視圖或BGP IPv6組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv6組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 配置BGP路由延遲優選時間。
route-select delay delay-value
缺省情況下,延遲時間為0秒,即路由優選不延遲。
路由迭代變化可以分為以下兩種:
· 緊急路由迭代變化:路由迭代變化後路由是否可達也發生變化,如由於網絡故障,BGP路由無法正確迭代出下一跳路由或隧道,導致流量中斷。
· 非緊急路由迭代變化:迭代路由或依賴路由發生變化,但路由是否可達未變化,如BGP路由迭代出的接口或隧道發生了變化,但流量仍可以正確轉發。
當BGP路由的迭代路由或依賴路由頻繁變化時,開啟本功能為下一跳路由的變化配置延遲響應時間,可以減少不必要的重新選路和Update消息的發送,從而避免路由變化時流量大量丟失的問題。
本功能僅適用於到達同一目的地有多條鏈路的場景。當去往某一目的地的鏈路唯一時,如果配置本功能,則在鏈路故障後會造成更大的流量損失。
請根據實際組網配置適當的延遲響應時間。配置時間過短可能由於路由未收斂完成,導致BGP依然進行了不必要的重新選路和Update消息的發送;配置時間過長可能造成不必要的流量損失。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖、BGP-VPN IPv4單播地址族視圖或BGP IPv4組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv4組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 multicast
(3) 開啟下一跳路由迭代變化延遲響應功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情況下,下一跳路由迭代變化延遲響應功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖、BGP-VPN IPv6單播地址族視圖或BGP IPv6組播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP IPv6組播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 multicast
(3) 開啟下一跳路由迭代變化延遲響應功能。
nexthop recursive-lookup [ non-critical-event ] delay [ delay-value ]
缺省情況下,下一跳路由迭代變化延遲響應功能處於關閉狀態。
通過配置本功能,可以抑製BGP鄰居狀態頻繁切換,減少BGP報文的發送和CPU及帶寬資源的占用,降低設備負擔。
配置本功能後,如果BGP會話在短時間內反複up/down,則每次BGP會話啟動時保持在Idle狀態的時間都將被延長,達到所配置的Idle狀態最長保持時間後該時間不再繼續增長;當此BGP會話保持Established狀態時間大於等於配置的抑製回退時間時,下次BGP會話啟動的Idle保持時間將重置為初始值。
請根據實際組網配置適當的Idle狀態最長保持時間和抑製回退時間,Idle狀態最長保持時間過短可能起不到抑製作用,過長可能導致BGP鄰居長時間不能建立連接。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置鄰居震蕩抑製功能。
peer { group-name | ipv4-address | ipv6-address } flap-dampen [ max-idle-time max-time | min-established-time min-time ]*
缺省情況下,對等體/對等體組的鄰居震蕩抑製功能處於關閉狀態。
當係統進入二級內存門限告警狀態後,BGP會周期性地選擇一個EBGP對等體,斷開與該對等體之間的BGP會話,直到係統內存恢複為止。用戶可以通過本配置來避免在二級內存門限告警狀態下,斷開與指定EBGP對等體/對等體組之間的BGP會話,以達到對特定EBGP對等體/對等體組進行保護的目的。
內存告警門限的詳細介紹,請參見“基礎配置指導”中的“設備管理”。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置係統進入二級內存門限告警狀態後,不斷開與指定EBGP對等體/對等體組之間的會話。
peer { group-name | ipv4-address [ mask-length ] } low-memory-exempt
缺省情況下,係統在二級內存門限告警狀態下,會周期性地選擇一個EBGP對等體,並斷開與該對等體之間的BGP會話。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置係統進入二級內存門限告警狀態後,不斷開與指定EBGP對等體/對等體組之間的會話。
peer { group-name | ipv6-address [ prefix-length ] } low-memory-exempt
缺省情況下,係統在二級內存門限告警狀態下,會周期性地選擇一個EBGP對等體,並斷開與該對等體之間的BGP會話。
DSCP(Differentiated Services Code Point,差分服務編碼點)攜帶在IP報文中的ToS字段,用來體現報文自身的優先等級,決定報文傳輸的優先程度。通過配置本功能,可以對BGP發送協議報文的DSCP優先級進行設置。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP發送協議報文的DSCP優先級。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } dscp dscp-value
缺省情況下,BGP發送協議報文的DSCP優先級為48。
通過protocol nexthop recursive-lookup命令配置BGP路由按照路由策略進行迭代下一跳查找後,可以防止路由變化時的流量丟失,從對等體學到的所有路由都會受迭代策略控製。但在某些組網環境中,不希望來自特定對等體的路由受迭代策略控製(比如直連EBGP)時,可以配置本功能。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置從對等體/對等體組學到的路由不受迭代策略控製。
peer { group-name | ip-address [ mask-length ] | ipv6-address [ prefix-length ] } nexthop-recursive-policy disable
缺省情況下,從對等體/對等體組學到的路由受迭代策略控製。
開啟BGP次優路由下刷RIB功能後,當BGP路由表中最優路由為通過network命令生成或import-route命令引入的路由,次優路由為從BGP對等體收到的路由時,次優路由會下刷到RIB表項中。在某些組網情況下,執行本命令下刷到達同一目的網絡次優路由到RIB後,當最優路由發生故障時,係統可以快速切換到次優路由。例如,設備有一條到達1.1.1.0/24網絡的靜態路由,其優先級高於BGP路由,BGP本地引入該靜態路由同時從對等體收到到達該網段的路由,執行本命令BGP將從對等體收到的路由作為次優路由下刷到RIB,這時如果開啟協議間的FRR功能,當靜態路由發生故障時,本地引入的靜態路由不可達,係統可以快速切換到BGP次優路由,從而大大縮短了流量中斷時間。
協議間FRR功能的詳細介紹,請參見“三層技術-IP路由配置指導”中的“IP路由基礎”。
(1) 進入係統視圖。
system-view
(2) 進入BGP視圖。
bgp as-number [ instance instance-name ]
(3) 開啟BGP次優路由下刷RIB功能。
flush suboptimal-route
缺省情況下,BGP次優路由下刷RIB功能處於關閉狀態,即隻有BGP最優路由可以下刷到RIB。
通過配置本功能,BGP可以通過以下三種方式為私網路由申請標簽:
· 為每條路由申請一個標簽:采用這種方式時,路由條目和標簽一一對應;
· 為每個下一跳申請一個標簽:當按照每條路由申請標簽方式需要申請的標簽數量大於設備支持的最大標簽數目時,通過采用此方式,可以減少申請的標簽數量;
· 為每個VPN實例申請一個標簽:當存在大量需要申請標簽的路由,並且采用下一跳申請標簽的方式申請的標簽數量仍然超過設備支持的最大標簽數目時,可以采用此方式。
為每條路由或者每個下一跳申請標簽方式可以與vpn popgo命令配合使用,以實現報文根據標簽查找出接口轉發報文;為每個VPN實例申請標簽方式與vpn popgo命令互斥,采用該方式時,隻能根據標簽查找FIB轉發報文。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置標簽申請方式。
label-allocation-mode { per-prefix | per-vrf }
缺省情況下,BGP按照每個下一跳分配一個標簽的方式申請標簽。
改變標簽分配方式將重新下刷所有BGP路由,會導致業務的短暫中斷,請慎重使用。
通過配置本功能,帶隧道信息的標簽路由才能參與路由優選。不帶隧道信息的標簽路由不能參與路由優選,即無法成為最優路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置帶隧道信息的標簽路由才能參與路由優選。
labeled-route ignore-no-tunnel
缺省情況下,不帶隧道信息的標簽路由可以參與路由優選。
MPLS Local Ifnet隧道是一條BGP用來轉發EBGP MPLS流量的空隧道,隻能指導直連EBGP對等體間的流量轉發,不能指導非直連EBGP對等體間的流量轉發。
如果MP-EBGP對等體之間的隧道出現故障,流量會迭代到MPLS Local Ifnet隧道,而不會通過FRR功能將流量切換至備份隧道上,這樣會導致非直連MP-EBGP對等體間出現流量中斷。為了避免這個問題,可以通過配置本命令關閉非直連MP-EBGP對等體間的MPLS Local Ifnet隧道自動創建功能。
· 關閉與對等體/對等體組之間的MPLS Local Ifnet隧道自動創建功能後,已經建立的MPLS Local Ifnet隧道將被刪除。
· 本功能也能夠禁止直連MP-EBGP間自動創建MPLS Local Ifnet隧道,建議您在配置本功能前,完全了解其對網絡產生的影響。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置關閉與指定EBGP對等體/對等體組間的MPLS Local Ifnet隧道自動創建功能。
peer { group name | ipv4-address [ mask-length ] } mpls-local-ifnet disable
缺省情況下,MPLS Local Ifnet隧道自動創建功能處於開啟狀態,MP-EBGP對等體間交換了帶標簽路由和VPNv4路由後將自動建立MPLS Local Ifnet 隧道。
當BGP路由策略或協議發生變化後,可以通過複位BGP會話使新的配置生效。執行複位BGP相關命令後,設備會斷開並重新建立BGP鄰居關係,以便更新BGP路由信息。
複位BGP會話時,會造成短暫的BGP會話中斷。
本節所有命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“BGP基礎命令”。
請在用戶視圖下執行以下命令:
· 複位IPv4單播地址族下的BGP會話。
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 [ unicast ] [ vpn-instance vpn-instance-name ]
reset bgp [ instance instance-name ] ipv6-address [ prefix-length ] ipv4 [ unicast ] [ vpn-instance vpn-instance-name ]
· 複位IPv4組播地址族下的BGP會話。
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } ipv4 multicast
· 複位IPv6單播地址族下的BGP會話。
reset bgp [ instance instance-name ] { as-number | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 [ unicast ] [ vpn-instance vpn-instance-name ]
reset bgp ipv4-address [ mask-length ] ipv6 [ unicast ] [ vpn-instance vpn-instance-name ]
· 複位IPv6組播地址族下的BGP會話。
reset bgp [ instance instance-name ] { as-number | ipv6-address [ prefix-length ] | all | external | group group-name | internal } ipv6 multicast
· 複位所有BGP會話。
reset bgp [ instance instance-name ] all
所有路由器都配置BGP,Router A在AS 65008中,Router B和Router C在AS 65009中。
Router A與Router B、Router C之間運行EBGP,Router B和Router C之間運行IBGP。
在Router A上配置負載分擔的路由條數為2,以提高鏈路利用率。
圖1-2 BGP負載分擔配置組網圖
(1) 配置各接口的IP地址(略)
(2) 配置BGP連接
¡ 在Router A上與Router B、Router C分別建立EBGP連接,並將8.1.1.0/24網段的路由通告給Router B和Router C,以便Router B和Router C能夠訪問Router A的內部網絡。
¡ 在Router B上與Router A建立EBGP連接,與Router C建立IBGP連接,並將9.1.1.0/24網段的路由通告給Router A,以便Router A能夠通過Router B訪問內部網絡。同時,在Router B上配置一條到Router C Loopback0接口的靜態路由(也可以用OSPF等協議來實現),以便使用Loopback接口建立IBGP連接。
¡ 在Router C上與Router A建立EBGP連接,與Router B建立IBGP連接,並將9.1.1.0/24網段的路由通告給Router A,以便Router A能夠通過Router C訪問內部網絡。同時,在Router C上配置一條到Router B Loopback0接口的靜態路由(也可以用OSPF等協議來實現),以便使用Loopback接口建立IBGP連接。
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 3.1.1.1 as-number 65009
[RouterA-bgp-default] peer 3.1.2.1 as-number 65009
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.1.1.1 enable
[RouterA-bgp-default-ipv4] peer 3.1.2.1 enable
[RouterA-bgp-default-ipv4] network 8.1.1.0 24
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 3.1.1.2 as-number 65008
[RouterB-bgp-default] peer 3.3.3.3 as-number 65009
[RouterB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 3.1.1.2 enable
[RouterB-bgp-default-ipv4] peer 3.3.3.3 enable
[RouterB-bgp-default-ipv4] network 9.1.1.0 24
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
[RouterB] ip route-static 3.3.3.3 32 9.1.1.2
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 3.1.2.2 as-number 65008
[RouterC-bgp-default] peer 2.2.2.2 as-number 65009
[RouterC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 3.1.2.2 enable
[RouterC-bgp-default-ipv4] peer 2.2.2.2 enable
[RouterC-bgp-default-ipv4] network 9.1.1.0 24
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
[RouterC] ip route-static 2.2.2.2 32 9.1.1.1
# 查看Router A的路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a – additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 32768 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009i
* e 3.1.2.1 0 0 65009i
¡ 從BGP路由表中可以看出,到目的地址9.1.1.0/24有兩條有效路由,其中下一跳為3.1.1.1的路由前有標誌“>”,表示它是當前有效的最優路由(因為Router B的路由器ID要小一些);而下一跳為3.1.2.1的路由前有標誌“*”,表示它是當前有效的路由,但不是最優的。
¡ 使用display ip routing-table命令查看IP路由表項,可以看出到達目的地址9.1.1.0/24的路由隻有一條,下一跳地址為3.1.1.1,出接口為GigabitEthernet0/0/2。
(3) 配置負載分擔
因為Router A有兩條路徑到達AS 65009的內部網絡,所以,可以在Router A配置負載分擔的路由條數為2,以提高鏈路利用率。
# 配置Router A。
[RouterA] bgp 65008
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] balance 2
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 查看Router A的BGP路由表。
[RouterA] display bgp routing-table ipv4
Total number of routes: 3
BGP local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a – additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 8.1.1.0/24 8.1.1.1 0 32768 i
* >e 9.1.1.0/24 3.1.1.1 0 0 65009i
* >e 3.1.2.1 0 0 65009i
· 從BGP路由表中可以看到,BGP路由9.1.1.0/24存在兩個下一跳,分別是3.1.1.1和3.1.2.1,兩條路由前都有標誌“>”,表明它們都是當前有效的最優路由。
· 使用display ip routing-table命令查看IP路由表項,可以看出到達目的地址9.1.1.0/24的路由有兩條,其中一條的下一跳地址為3.1.1.1,出接口為GigabitEthernet0/0/2;另一條的下一跳地址為3.1.2.1,出接口為GigabitEthernet0/0/3。
所有路由器運行BGP協議,Router A與Router B和Router C建立EBGP連接,Router B、Router C和Router D之間建立IBGP連接,Route D與Route E建立IBGP連接。
Router D作為路由反射器,Router E為Router D的客戶機。
配置Add-Path功能,使Router E通過Router D學到Router B和Router C轉發的前綴相同下一跳不同的路由信息。
圖1-3 BGP Add-Path配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Router A |
GE0/0/1 |
10.1.1.1/24 |
Router D |
GE0/0/1 |
30.1.1.1/24 |
|
GE0/0/2 |
20.1.1.1/24 |
|
GE0/0/2 |
40.1.1.1/24 |
Router B |
GE0/0/1 |
10.1.1.2/24 |
|
GE0/0/3 |
50.1.1.1/24 |
|
GE0/0/2 |
30.1.1.2/24 |
Router E |
GE0/0/1 |
50.1.1.2/24 |
Router C |
GE0/0/1 |
20.1.1.2/24 |
|
|
|
|
GE0/0/2 |
40.1.1.2/24 |
|
|
|
(1) 配置各接口的IP地址。
(2) 配置BGP連接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 10
[RouterA-bgp-default] peer 10.1.1.2 as-number 20
[RouterA-bgp-default] peer 20.1.1.2 as-number 20
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 20.1.1.2 enable
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 20
[RouterB-bgp-default] peer 10.1.1.1 as-number 10
[RouterB-bgp-default] peer 30.1.1.1 as-number 20
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 30.1.1.1 enable
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 20
[RouterC-bgp-default] peer 20.1.1.1 as-number 10
[RouterC-bgp-default] peer 40.1.1.1 as-number 20
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 20.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 40.1.1.1 enable
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 20
[RouterD-bgp-default] peer 30.1.1.2 as-number 20
[RouterD-bgp-default] peer 40.1.1.2 as-number 20
[RouterD-bgp-default] peer 50.1.1.2 as-number 20
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 30.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 40.1.1.2 enable
[RouterD-bgp-default-ipv4] peer 50.1.1.2 enable
# 配置Router E。
<RouterE> system-view
[RouterE] bgp 20
[RouterE-bgp-default] peer 50.1.1.1 as-number 20
[RouterE-bgp-default] address-family ipv4 unicast
[RouterE-bgp-default-ipv4] peer 50.1.1.1 enable
(3) 配置發布本地路由
# 配置Router A發布本地10.1.1.0 24的路由信息
[RouterA-bgp-default-ipv4] network 10.1.1.0 24
(4) 將下一跳的屬性修改成自身的地址
# 配置Router B。
[RouterB-bgp-default-ipv4] peer 30.1.1.1 next-hop-local
# 配置Router C。
[RouterC-bgp-default-ipv4] peer 40.1.1.1 next-hop-local
(5) 配置路由反射器
# 配置Router D。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 reflect-client
(6) 配置Add-Path
# 配置Router D使能Add-Path發送能力,配置Add-Path優選路由的最大條數為2,配置向對等體50.1.1.2發送Add-Path優選路由的最大條數為2。
[RouterD-bgp-default-ipv4] peer 50.1.1.2 additional-paths send
[RouterD-bgp-default-ipv4] additional-paths select-best 2
[RouterD-bgp-default-ipv4] peer 50.1.1.2 advertise additional-paths best 2
# 配置Router E使能Add-Path接收能力。
[RouterE-bgp-default-ipv4] peer 50.1.1.1 additional-paths receive
# 查看Router E的BGP路由信息。
[Router E] display bgp routing-table ipv4
Total number of routes: 2
BGP local router ID is 50.1.1.2
Status codes: * - valid, > - best, d - dampened, h - history
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 10.1.1.0/24 30.1.1.2 0 100 0 10i
i 40.1.1.2 0 100 0 10i
可以看到從Router D學到的兩條前綴相同下一跳不同的路由信息。
BGP安全功能配置任務如下:
通過為BGP對等體配置BGP的MD5認證,可以在以下兩方麵提高BGP的安全性:
· 為BGP建立TCP連接時進行MD5認證,隻有兩台路由器配置的密鑰相同時,才能建立TCP連接,從而避免與非法的BGP路由器建立TCP連接。
· 傳遞BGP報文時,對封裝BGP報文的TCP報文段進行MD5運算,從而保證BGP報文不會被篡改。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5認證。
peer { group-name | ipv4-address [ mask-length ] } password { cipher | simple } password
缺省情況下,不進行BGP的MD5認證。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的MD5認證。
peer { group-name | ipv6-address [ prefix-length ] } password { cipher | simple } password
缺省情況下,不進行BGP的MD5認證。
GTSM(Generalized TTL Security Mechanism,通用TTL安全保護機製)是一種簡單易行的、對基於IP協議的上層業務進行保護的安全機製。GTSM通過檢查接收到的IP報文頭中的TTL值是否在一個預先定義好的範圍內,來判斷IP報文是否合法,避免攻擊者向網絡設備發送大量有效的IP報文時對網絡設備造成的CPU利用(CPU-utilization)等類型的攻擊。
配置BGP GTSM功能時,用戶可以指定本地設備到達某個對等體的最大跳數為hop-count,則從該對等體接收到的BGP報文的合法TTL範圍為255-“hop-count”+1到255。隻有來自該對等體的報文TTL值在該合法範圍內時,才將報文上送CPU處理;否則,直接丟棄報文。另外,配置BGP GTSM功能後,設備會將發送報文的初始TTL設置為255。
對於直連EBGP對等體,GTSM可以提供最佳的保護效果;對於非直連EBGP或IBGP對等體,由於中間設備可能對TTL值進行篡改,GTSM的保護效果受到中間設備安全性的限製。
執行本配置後,隻要本地設備和指定的對等體通過了GTSM檢查,就允許在二者之間建立EBGP會話,不管二者之間的跳數是否超過peer ebgp-max-hop命令指定的跳數範圍。
使用BGP GTSM功能時,要求本設備和對等體設備上同時配置本特性,指定的hop-count值可以不同,隻要能夠滿足合法性檢查即可。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能對等體/對等體組的BGP GTSM功能。
peer { group-name | ipv4-address [ mask-length ] } ttl-security hops hop-count
缺省情況下,BGP GTSM功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 使能對等體/對等體組的BGP GTSM功能。
peer { group-name | ipv6-address [ prefix-length ] } ttl-security hops hop-count
缺省情況下,BGP GTSM功能處於關閉狀態。
配置keychain認證可以提高TCP連接的安全性。為了保證正常建立TCP連接、正常交互BGP消息,BGP對等體兩端必須同時配置keychain認證,且兩端使用的keychain需要滿足如下條件:
· 同一時間內使用的key的標識符相同。
· 相同標識符的key的認證算法和認證密鑰必須一致。
關於keychain的介紹和配置,請參見“安全配置指導”中的“keychain”。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的keychain認證。
peer { group-name | ip-address [ mask-length ] } keychain keychain-name
缺省情況下,不進行BGP的keychain認證。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置BGP的keychain認證。
peer { group-name | ipv6-address [ prefix-length ] } keychain keychain-name
缺省情況下,不進行BGP的keychain認證。
為了避免路由信息外泄或者非法者對設備進行惡意攻擊,可以利用IPsec安全隧道對IPv6 BGP報文進行保護。通過IPsec提供的數據機密性、完整性、數據源認證等功能,確保IPv6 BGP報文不會被偵聽或惡意篡改,並避免非法者構造IPv6 BGP報文對設備進行攻擊。
在互為IPv6 BGP鄰居的兩台設備上都配置通過IPsec保護IPv6 BGP報文後,一端設備在發送IPv6 BGP報文時通過IPsec對報文進行加封裝,另一端設備接收到報文後,通過IPsec對報文進行解封裝。如果解封裝成功,則接收該報文,正常建立IPv6 BGP對等體關係或學習IPv6 BGP路由;如果設備接收到不受IPsec保護的IPv6 BGP報文,或IPv6 BGP報文解封裝失敗,則會丟棄該報文。
(1) 進入係統視圖。
system-view
(2) 配置IPsec安全提議和手工方式的IPsec安全框架。
配置方法請參見“安全配置指導”中的“IPsec”。
(3) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(4) 為IPv6 BGP對等體/對等體組應用IPsec安全框架。
peer { group-name | ipv6-address [ prefix-length ] } ipsec-profile profile-name
缺省情況下,IPv6 BGP對等體/對等體組沒有應用IPsec安全框架。
應用的安全框架必須是手工方式的IPsec安全框架。
BGP路由中的AS_PATH屬性記錄了某條路由從本地到某個IP地址(網段)所要經過的所有AS號。其中,該IP地址(網段)所處的AS稱為源AS。如果源AS號錯誤會導致無法到達指定IP地址(網段)甚至網絡癱瘓。使用BGP RPKI(Resource Public Key Infrastructure,資源公鑰基礎設施)功能,設備在收到BGP路由的時候,會驗證源AS是否合法,並根據驗證結果來決定是否使用該BGP路由以及是否發布該路由。
路由器通過TCP協議與RPKI服務器建立連接。TCP連接建立後,路由器從RPKI服務器獲取ROA信息。
路由器會根據刷新時間間隔檢測與RPKI服務器的連接關係,如果在響應時間內沒有收到服務器的回應,路由器與RPKI服務器的連接斷開。
與RPKI服務器的連接斷開後(不包括用戶執行shutdown命令關閉接口引起的連接斷開),路由器會嚐試與RPKI服務器重新建立連接,並將從該服務器獲得的ROA信息置為老化狀態,路由器將執行如下操作:
· 如果老化時間內,路由器重新與RPKI服務器建立連接,則解除ROA信息的老化狀態。
· 如果直到老化時間超時,路由器與RPKI服務器仍然無法重新建立連接,則刪除該ROA信息。
ROA信息的老化時間建議大於BGP RPKI服務器的響應等待時間。
RPKI連接建立後,會一直處於通信狀態,並周期更新ROA信息。如果需要暫時斷開某個RPKI連接,請在BGP RPKI服務器視圖下執行undo port命令。
執行undo rpki命令後,BGP RPKI視圖下的所有配置都會被刪除。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 開啟BGP RPKI功能,並進入BGP RPKI視圖。
rpki
(4) 配置BGP RPKI服務器地址,並進入BGP RPKI服務器視圖。
server [ vpn-instance vpn-instance-name ] tcp { ipv4-address | ipv6-address }
缺省情況下,未配置BGP RPKI的服務器地址。
(5) 配置BGP RPKI服務端口號。
port port-number
缺省情況下,未配置BGP RPKI服務端口。
隻有配置與BGP RPKI服務器連接的TCP端口,才能與RPKI服務器建立連接,且本地配置的端口號必須與BGP RPKI服務器上使用的端口號保持一致。
(6) (可選)指定RPKI連接中使用的MD5認證密碼。
passwords { cipher | simple } string
缺省情況下,BGP RPKI服務器不進行MD5的認證。
使用MD5認證時,認證密碼必須與RPKI服務器上的認證密碼保持一致。MD5認證既可以確保路由器與合法的BGP RPKI服務器建立連接,也可以確保BGP RPKI報文不會被篡改。
(7) (可選)配置RPKI連接的檢測周期。
refresh-time refresh-time
缺省情況下,RPKI連接的檢測周期為600秒。
本功能用於檢測路由器與RPKI服務器的連接狀態。
(8) (可選)配置等待BGP RPKI服務器的響應時間。
response-time response-time
缺省情況下,等待BGP RPKI服務器響應時間為30秒。
(9) (可選)配置ROA信息的老化時間。
purge-time purge-time
缺省情況下,ROA信息的老化時間為60秒。
配置本功能後,設備收到BGP路由時,會對IP地址(網段)和源AS號進行RPKI驗證。驗證結果有以下三種:
· Not-found:表示ROA數據庫中不存在包含該IP地址(網段)的表項。
· Valid:表示ROA數據庫中至少存在一條包含該IP地址(網段)的表項,且表項中的AS號和收到的路由的源AS號相同。
· Invalid:表示ROA數據庫中至少存在一條包含該IP地址(網段)的表項,但表項中的AS號和收到的路由的源AS號均不同。
配置本功能後,設備將使用本地驗證的結果作為RPKI驗證結果;未配置本功能時,將使用BGP路由報文中的RPKI驗證結果。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP RPKI視圖。
rpki
(4) 開啟BGP RPKI驗證功能。
check-origin-validation
缺省情況下,BGP RPKI驗證功能處於關閉狀態。
RPKI驗證結果的優先級從高到低依次為Valid、Not found、Invalid。
配置本功能後,RPKI驗證結果將參與路由優選。BGP選擇路由時首先丟棄下一跳不可達的路由,其次按照RPKI驗證結果進行路由優選,即對於去往同一個IP地址(網段)的多條BGP路由,選擇RPKI驗證結果優先級最高的路由為最優路由。如果RPKI驗證結果相同,則根據BGP的選路規則選擇路由。
無RPKI驗證結果的路由在與有驗證結果的路由共同參與路由優選時,按Not-found驗證結果處理。
用戶可以使用路由策略設置BGP RPKI驗證結果的匹配條件,從而靈活控製路由的發布與接收。關於路由策略的詳細介紹,請參見“三層技術-IP路由配置指導”中的“路由策略”。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖或BGP-VPN IPv4單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置BGP RPKI驗證結果參與路由優選。
bestroute origin-as-validation [ allow-invalid ]
缺省情況下,BGP RPKI驗證結果不參與路由優選。
未配置allow-invalid參數時,驗證結果為Invalid的路由不參與路由優選。如果希望驗證結果為Invalid的路由參與路由優選,可以配置allow-invalid參數。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖或BGP-VPN IPv6單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置BGP RPKI驗證結果參與路由優選。
bestroute origin-as-validation [ allow-invalid ]
缺省情況下,BGP RPKI驗證結果不參與路由優選。
未配置allow-invalid參數時,驗證結果為Invalid的路由不參與路由優選。如果希望驗證結果為Invalid的路由參與路由優選,可以配置allow-invalid參數。
BGP RPKI驗證結果以擴展團體屬性的方式傳遞,配置本條命令前必先配置向對等體/對等體組發布擴展團體屬性且RPKI正確配置。未配置向對等體/對等體組發布擴展團體屬性,此配置不生效。
目前,設備僅支持向IBGP對等體/對等體組發送BGP RPKI驗證結果。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv4單播地址族視圖或BGP-VPN IPv4單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(3) 配置向對等體/對等體組發布擴展團體屬性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情況下,不向對等體/對等體組發布擴展團體屬性。
(4) 配置向對等體/對等體組發送BGP RPKI驗證結果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情況下,不會向對等體/對等體組發送BGP RPKI驗證結果。
(1) 進入係統視圖。
system-view
(2) 進入BGP IPv6單播地址族視圖或BGP-VPN IPv6單播地址族視圖。
¡ 請依次執行以下命令進入BGP IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
address-family ipv6 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv6單播地址族視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(3) 配置向對等體/對等體組發布擴展團體屬性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-ext-community
缺省情況下,不向對等體/對等體組發布擴展團體屬性。
(4) 配置向對等體/對等體組發送BGP RPKI驗證結果。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise origin-as-validation
缺省情況下,不會向對等體/對等體組發送BGP RPKI驗證結果。
可在任意視圖下執行以下命令:
· 顯示與RPKI服務器連接的相關信息。
display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv4-address ]
· 顯示從RPKI服務器獲得的ROA信息。
display bgp [ instance instance-name ] rpki table ipv4 [ ipv4-address min min-length max max-length ]
可在任意視圖下執行以下命令:
· 顯示與RPKI服務器連接的相關信息。
display bgp [ instance instance-name ] rpki server [ [ vpn-instance vpn-instance-name ] ipv6-address ]
· 顯示從RPKI服務器獲得的ROA信息。
display bgp [ instance instance-name ] rpki table ipv6 [ ipv6-address min min-length max max-length
在用戶視圖下執行以下命令複位BGP RPKI連接。
reset bgp [ instance instance-name ] rpki server [ vpn-instance vpn-instance-name ] tcp { ipv4 address | ipv6 address }
配置本命令後,設備將刪除並重新建立指定的BGP RPKI會話,會造成BGP RPKI會話短暫中斷。
可在任意視圖執行以下命令,顯示BGP GTSM功能丟棄報文數量的統計信息。
display ttl-security statistics [ slot slot-number ]
請在用戶視圖下執行以下命令,清除BGP GTSM功能丟棄報文數量的統計信息。
reset ttl-security statistics [ slot slot-number ]
· 所有路由器運行BGP協議,Router A與RPKI服務器建立連接。Router A與Router B建立IBGP連接。
· Router A將BGP RPKI驗證結果發送給Router B。
· 配置路由策略,使得Router B對收到的BGP RPKI驗證結果設置匹配條件,控製路由的接收。
圖2-1 BGP RPKI配置組網圖
(1) 配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP鄰居,配置過程略
(2) 配置Router A與RPKI服務器建立連接
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] rpki
[RouterA-bgp-default-rpki] server tcp 1.1.1.2
[RouterA-bgp-default-rpki-server] port 1234
[RouterA-bgp-default-rpki-server] quit
(3) 在Router A上開啟BGP RPKI驗證
[RouterA-bgp-default-rpki] check-origin-validation
[RouterA-bgp-default-rpki] quit
(4) 在Router A上配置BGP RPKI驗證結果參與路由優選
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] bestroute origin-as-validation
(5) 在Router A上配置向對等體1.2.3.2發送BGP RPKI驗證結果
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise-ext-community
[RouterA-bgp-default-ipv4] peer 1.2.3.2 advertise origin-as-validation
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
(6) 在Router B上對收到的BGP RPKI驗證結果設置匹配條件,僅接收驗證結果為Valid的路由
# 配置路由策略。
<RouterB> system-view
[RouterB] route-policy rpki_policy permit node 0
[RouterB-route-policy-rpki_policy-0] if-match rpki valid
[RouterB-route-policy-rpki_policy-0] quit
# 應用路由策略。
[RouterB] bgp 100
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] peer 1.2.3.1 route-policy rpki_policy import
# 查看Router A與RPKI服務器的連接信息,可以看到Router A與RPKI服務器已經建立連接。
[RouterA] display bgp rpki server
Server VPN-index Port State Time ROAs(IPv4/IPv6)
1.1.1.2 0 1234 Establish 00:04:43 5/4
# 查看從RPKI服務器獲取的ROA信息,可以看到已經獲得ROA信息。
[RouterA] display bgp rpki table ipv4
Total number of entries: 5
Status codes: S - stale, U - used
Network Mask-range Origin-AS Server Status
1.2.3.4 8-24 100 1.1.1.2 U
2.2.3.6 8-32 100 1.1.1.2 U
2.2.3.6 10-24 4294967295 1.1.1.2 U
2.2.3.9 20-24 4294967295 1.1.1.2 U
3.2.3.5 8-26 200 1.1.1.2 U
# 查看Router A上BGP RPKI驗證結果。
[RouterA] display bgp routing-table ipv4 1.2.3.0
BGP local router ID: 2.2.2.2
Local AS number: 100
Paths: 1 available, 1 best
BGP routing table information of 1.2.3.0/24:
Imported route.
Original nexthop: 0.0.0.0
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, pref-val 32768
State : valid, local, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
1.2.3.0/24在ROA數據庫中的Network為1.2.3.4,Mask-range為8-24的地址前綴範圍內,且AS和路由的源AS號相匹配,因此驗證結果為Valid。
# 查看Router B上到達目的網絡1.2.3.0的BGP IPv4單播路由的詳細信息。
[RouterB] display bgp routing-table ipv4 1.2.3.0
RR-client route.
From : 1.2.3.1 (192.168.56.22)
Rely nexthop : 1.2.3.1
Original nexthop: 1.2.3.1
OutLabel : NULL
Ext-Community : <Origin Valid State: Valid >
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
由於Router B僅允許BGP RPKI驗證結果為Valid的路由信息通過,因此可以看到到達目的網絡1.2.3.0的BGP IPv4單播路由的信息。該路由信息中的擴展團體屬性包含了BGP RPKI驗證結果。
· Router A、Router B和Router C三台路由器之間運行IPv6 BGP交互路由信息。Router A和Router B之間建立IBGP連接,Router B和Router C之間建立EBGP連接。
· 為了提高安全性,配置通過IPsec對IPv6 BGP報文進行保護。
圖2-2 通過IPsec保護IPv6 BGP報文組網圖
(1) 配置各接口的IPv6地址(略)
(2) 配置IBGP連接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] group ibgp internal
[RouterA-bgp-default] peer 1::2 group ibgp
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer ibgp enable
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 65008
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] group ibgp internal
[RouterB-bgp-default] peer 1::1 group ibgp
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer ibgp enable
[RouterB-bgp-default-ipv6] quit
(3) 配置EBGP連接
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] group ebgp external
[RouterC-bgp-default] peer 3::1 as-number 65008
[RouterC-bgp-default] peer 3::1 group ebgp
[RouterC-bgp-default] address-family ipv6 unicast
[RouterC-bgp-default-ipv6] peer ebgp enable
[RouterC-bgp-default-ipv6] quit
[RouterC-bgp-default] quit
# 配置Router B。
[RouterB-bgp-default] group ebgp external
[RouterB-bgp-default] peer 3::2 as-number 65009
[RouterB-bgp-default] peer 3::2 group ebgp
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer ebgp enable
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
(4) 配置IPsec安全提議和安全框架
# 配置Router A。創建名為tran1的安全提議,報文封裝形式采用傳輸模式,安全協議采用ESP協議。創建手工方式的安全框架policy001,配置SPI和密鑰。
[RouterA] ipsec transform-set tran1
[RouterA-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterA-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterA-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterA-ipsec-transform-set-tran1] quit
[RouterA] ipsec profile policy001 manual
[RouterA-ipsec-profile-policy001-manual] transform-set tran1
[RouterA-ipsec-profile-policy001-manual] sa spi outbound esp 12345
[RouterA-ipsec-profile-policy001-manual] sa spi inbound esp 12345
[RouterA-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg
[RouterA-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg
[RouterA-ipsec-profile-policy001-manual] quit
# 配置Router B。創建名為tran1的安全提議,報文封裝形式采用傳輸模式,安全協議采用ESP協議;創建手工方式的安全框架policy001,配置SPI和密鑰。創建名為tran2的安全提議,報文封裝形式采用傳輸模式,安全協議采用ESP協議;創建手工方式的安全框架policy002,配置SPI和密鑰。
[RouterB] ipsec transform-set tran1
[RouterB-ipsec-transform-set-tran1] encapsulation-mode transport
[RouterB-ipsec-transform-set-tran1] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran1] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran1] quit
[RouterB] ipsec profile policy001 manual
[RouterB-ipsec-profile-policy001-manual] transform-set tran1
[RouterB-ipsec-profile-policy001-manual] sa spi outbound esp 12345
[RouterB-ipsec-profile-policy001-manual] sa spi inbound esp 12345
[RouterB-ipsec-profile-policy001-manual] sa string-key outbound esp simple abcdefg
[RouterB-ipsec-profile-policy001-manual] sa string-key inbound esp simple abcdefg
[RouterB-ipsec-profile-policy001-manual] quit
[RouterB] ipsec transform-set tran2
[RouterB-ipsec-transform-set-tran2] encapsulation-mode transport
[RouterB-ipsec-transform-set-tran2] esp encryption-algorithm des
[RouterB-ipsec-transform-set-tran2] esp authentication-algorithm sha1
[RouterB-ipsec-transform-set-tran2] quit
[RouterB] ipsec profile policy002 manual
[RouterB-ipsec-profile-policy002-manual] transform-set tran2
[RouterB-ipsec-profile-policy002-manual] sa spi outbound esp 54321
[RouterB-ipsec-profile-policy002-manual] sa spi inbound esp 54321
[RouterB-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba
[RouterB-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba
[RouterB-ipsec-profile-policy002-manual] quit
# 配置Router C。創建名為tran2的安全提議,報文封裝形式采用傳輸模式,安全協議采用ESP協議。創建手工方式的安全框架policy002,配置SPI和密鑰。
[RouterC] ipsec transform-set tran2
[RouterC-ipsec-transform-set-tran2] encapsulation-mode transport
[RouterC-ipsec-transform-set-tran2] esp encryption-algorithm des
[RouterC-ipsec-transform-set-tran2] esp authentication-algorithm sha1
[RouterC-ipsec-transform-set-tran2] quit
[RouterC] ipsec profile policy002 manual
[RouterC-ipsec-profile-policy002-manual] transform-set tran2
[RouterC-ipsec-profile-policy002-manual] sa spi outbound esp 54321
[RouterC-ipsec-profile-policy002-manual] sa spi inbound esp 54321
[RouterC-ipsec-profile-policy002-manual] sa string-key outbound esp simple gfedcba
[RouterC-ipsec-profile-policy002-manual] sa string-key inbound esp simple gfedcba
[RouterC-ipsec-profile-policy002-manual] quit
(5) 配置通過IPsec保護Router A和Router B之間的IPv6 BGP報文
# 配置Router A。
[RouterA] bgp 65008
[RouterA-bgp-default] peer 1::2 ipsec-profile policy001
[RouterA-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65008
[RouterB-bgp-default] peer 1::1 ipsec-profile policy001
[RouterB-bgp-default] quit
(6) 配置通過IPsec保護Router B和Router C之間的IPv6 BGP報文
# 配置Router C。
[RouterC] bgp 65009
[RouterC-bgp-default] peer ebgp ipsec-profile policy002
[RouterC-bgp-default] quit
# 配置Router B。
[RouterB] bgp 65008
[RouterB-bgp-default] peer ebgp ipsec-profile policy002
[RouterB-bgp-default] quit
# 在Router B上顯示IPv6 BGP對等體的詳細信息。可以看出完成上述配置後IBGP、EBGP對等體能夠正常建立,且發送和接收的IPv6 BGP報文都經過加密。
[RouterB] display bgp peer ipv6 verbose
Peer: 1::1 Local: 2.2.2.2
Type: IBGP link
BGP version 4, remote router ID 1.1.1.1
BGP current state: Established, Up for 00h05m54s
BGP current event: KATimerExpired
BGP last state: OpenConfirm
Port: Local - 24896 Remote - 179
Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec
Received : Active Hold Time: 180 sec
Negotiated: Active Hold Time: 180 sec Keepalive Time: 60 sec
Peer optional capabilities:
Peer supports BGP multi-protocol extension
Peer supports BGP route refresh capability
Peer supports BGP route AS4 capability
Address family IPv6 Unicast: advertised and received
InQ updates: 0, OutQ updates: 0
NLRI statistics:
Rcvd: UnReach NLRI 0, Reach NLRI 0
Sent: UnReach NLRI 0, Reach NLRI 3
Message statistics:
Msg type Last rcvd time/ Current rcvd count/ History rcvd count/
Last sent time Current sent count History sent count
Open 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 2
Update - 0 0
18:59:16-2013.4.24 1 1
Notification - 0 0
18:59:15-2013.4.24 0 1
Keepalive 18:59:15-2013.4.24 1 1
18:59:15-2013.4.24 1 1
RouteRefresh - 0 0
- 0 0
Total - 2 2
- 3 5
Maximum allowed prefix number: 4294967295
Threshold: 75%
Minimum time between advertisements is 15 seconds
Optional capabilities:
Multi-protocol extended capability has been enabled
Route refresh capability has been enabled
Peer preferred value: 0
IPsec profile name: policy001
Routing policy configured:
No routing policy is configured
Peer: 3::2 Local: 2.2.2.2
Type: EBGP link
BGP version 4, remote router ID 3.3.3.3
BGP current state: Established, Up for 00h05m00s
BGP current event: KATimerExpired
BGP last state: OpenConfirm
Port: Local - 24897 Remote - 179
Configured: Active Hold Time: 180 sec Keepalive Time: 60 sec
Received : Active Hold Time: 180 sec
Negotiated: Active Hold Time: 180 sec Keepalive Time: 60 sec
Peer optional capabilities:
Peer supports BGP multi-protocol extension
Peer supports BGP route refresh capability
Peer supports BGP route AS4 capability
Address family IPv6 Unicast: advertised and received
Maximum allowed prefix number: 4294967295
Threshold: 75%
Minimum time between advertisements is 30 seconds
Optional capabilities:
Multi-protocol extended capability has been enabled
Route refresh capability has been enabled
Peer preferred value: 0
IPsec profile name: policy002
Routing policy configured:
No routing policy is configured
· 所有路由器運行BGP協議,Router A與RPKI服務器建立連接。Router A與Router B建立IBGP連接。
· Router A將BGP RPKI驗證結果發送給Router B。
· 配置路由策略,使得Router B對收到的BGP RPKI驗證結果設置匹配條件,控製路由的接收。
圖2-3 BGP RPKI配置組網圖
(1) 配置各接口的IP地址,在Router A和Router B上配置BGP,建立IBGP鄰居,配置過程略
(2) 配置Router A與RPKI服務器建立連接
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] rpki
[RouterA-bgp-default-rpki] server tcp 1::2
[RouterA-bgp-default-rpki-server] port 1234
[RouterA-bgp-default-rpki-server] quit
(3) 在Router A上開啟BGP RPKI驗證
[RouterA-bgp-default-rpki] check-origin-validation
[RouterA-bgp-default-rpki] quit
(4) 在Router A上配置BGP RPKI驗證結果參與路由優選
[RouterA-bgp-default] address-family ipv6
[RouterA-bgp-default-ipv6] bestroute origin-as-validation
(5) 在Router A上配置向對等體2001::2發送BGP RPKI驗證結果
[RouterA-bgp-default-ipv6] peer 2001::2 advertise-ext-community
[RouterA-bgp-default-ipv6] peer 2001::2 advertise origin-as-validation
[SwitchA-bgp-default-ipv6] quit
[SwitchA-bgp-default] quit
(6) 在Router B上對收到的BGP RPKI驗證結果設置匹配條件,僅接收驗證結果為Valid的路由
# 配置路由策略。
<RouterB> system-view
[RouterB] route-policy rpki_policy permit node 0
[RouterB-route-policy-rpki_policy-0] if-match rpki valid
# 應用路由策略。
<RouterB> system-view
[RouterB] bgp 100
[RouterB-bgp-default] address-family ipv6
[RouterB-bgp-default-ipv6] peer 2001::1 route-policy rpki_policy import
# 查看Router A與RPKI服務器的連接信息,可以看到Router A與RPKI服務器已經建立連接。
[RouterA] display bgp rpki server
Server VPN-index Port State Time ROAs(IPv4/IPv6)
1::2 0 1234 Establish 00:04:43 5/5
# 查看從RPKI服務器獲取的ROA信息,可以看到已經獲得ROA信息。
[RouterA] display bgp rpki table ipv6
Total number of entries: 5
Status codes: S - stale, U - used
Network Mask-range Origin-AS Server Status
2001:4860:: 32-32 100 1::2 U
2404:6800:: 32-32 100 1::2 U
2607:F8B0:: 28-28 4294967295 1::2 U
2A03:ACE0:: 40-40 4294967295 1::2 U
2001::1 64-64 200 1::2 U
# 查看Router A上BGP RPKI驗證結果。
[RouterA] display bgp routing-table ipv6 2001::1 64
BGP local router ID: 2.2.2.2
Local AS number: 100
Paths: 1 available, 1 best
BGP routing table information of 2001::1/64:
Imported route.
Original nexthop: 0.0.0.0
OutLabel : NULL
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Valid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, pref-val 32768
State : valid, local, best
IP precedence : N/A
QoS local ID : N/A
2001::1/64在ROA數據庫中的Network為2001::1,Mask-range為64-64的地址前綴範圍內,且AS和路由的源AS號相匹配,因此驗證結果為Valid。
# 查看Router B上到達目的網絡2001::1的BGP IPv6單播路由的詳細信息。
[RouterB] display bgp routing-table ipv6 2001::1 64
RR-client route.
From : 2001::1 64 (192.168.56.22)
Rely nexthop : 2001::1
Original nexthop: 2001::1
OutLabel : NULL
Ext-Community : <Origin Valid State: Valid >
RxPathID : 0x0
TxPathID : 0x0
Org-validation : Invalid
AS-path : (null)
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
由於Router B僅允許BGP RPKI驗證結果為Valid的路由信息通過,因此可以看到到達目的網絡2001::1的BGP IPv6單播路由的信息。該路由信息中的擴展團體屬性包含了BGP RPKI驗證結果。
提高BGP網絡的可靠性配置任務如下:
· 配置BGP GR
BGP GR(Graceful Restart,平滑重啟)是一種在主備倒換或BGP協議重啟時保證轉發業務不中斷的機製。GR有兩個角色:
· GR Restarter:發生主備倒換或協議重啟,且具有GR能力的設備。
· GR Helper:和GR Restarter具有鄰居關係,協助完成GR流程的設備。GR Helper也具有GR能力。
設備既可以作為GR Restarter,又可以作為GR Helper。設備的角色由該設備在BGP GR過程中的作用決定。
BGP GR的工作過程為:
(1) GR Restarter和GR Helper通過Open消息交互GR能力。隻有雙方都具有GR能力時,建立起的BGP會話才具備GR能力。GR Restarter還會通過Open消息,將本端通過graceful-restart timer restart命令配置的對端等待重建BGP會話時間通告給GR Helper。
(2) 建立具備GR能力的BGP會話後,GR Restarter進行主備倒換或BGP協議重啟時,GR Restarter不會刪除RIB(Routing Information Base,路由信息庫)和FIB(Forwarding Information Base,轉發信息庫)表項,仍然按照原有的轉發表項轉發報文,並啟動RIB路由老化定時器(定時器的值由graceful-restart timer purge-time命令配置)。GR Helper發現GR Restarter進行主備倒換或BGP協議重啟後,GR Helper不會刪除從該GR Restarter學習到的路由,而是將這些路由標記為失效路由,仍按照這些路由轉發報文,從而確保在GR Restarter進行主備倒換或BGP協議重啟的過程中,報文轉發不會中斷。
(3) GR Restarter主備倒換或BGP協議重啟完成後,它會重新與GR Helper建立BGP會話。如果在GR Restarter通告的BGP會話重建時間加上GR Helper上配置的等待重建額外時間(額外時間通過peer graceful-restart timer restart extra命令配置)內沒有成功建立BGP會話,則GR Helper會刪除標記為失效的路由。
(4) 如果在GR Restarter通告的BGP會話重建時間內成功建立BGP會話,則GR Restarter和GR Helper在建立的BGP會話上進行路由信息交互,以便GR Restarter恢複路由信息、GR Helper根據學習到的路由刪除路由的失效標記。
(5) BGP會話建立後,在GR Restarter和GR Helper上都會啟動End-Of-RIB(路由信息庫結束)標記等待定時器(定時器的值通過graceful-restart timer wait-for-rib命令配置),該定時器用來控製路由信息收斂的速度。如果定時器超時時沒有完成路由信息的交互,則GR Restarter不再接收新的路由,根據已經學習到的BGP路由信息更新RIB表項,刪除老化的RIB表項;GR Helper則刪除標記為失效的路由。
(6) 如果在RIB路由老化定時器超時時沒有完成路由信息的交互,則GR Restarter會強製退出GR過程,根據已經學習到的BGP路由信息更新RIB表項,刪除老化的RIB表項。
在TCP連接斷開、保持時間超時或BGP會話允許交換路由的地址族發生變化時,BGP會話需要斷開並重新建立,造成業務流量轉發中斷。開啟設備通過GR方式複位BGP會話功能後,在TCP連接斷開、保持時間超時和BGP會話允許交換路由的地址族發生變化時,設備采用BGP GR方式進行BGP會話重建,仍按照已有的路由信息轉發報文,從而避免對流量轉發造成影響。
End-Of-RIB標記用來標識路由更新發送的結束。
本端配置的等待End-Of-RIB標記的時間不會通告給對端,隻用來控製本端路由信息交互的時間,即GR Restarter上配置的時間隻用來控製GR Restarter從GR Helper接收路由更新的時間,GR Helper上配置的時間隻用來控製GR Helper從GR Restarter接收路由更新的時間。當路由信息的數量較多時,建議將本端等待End-Of-RIB標記的時間調大,以保證完成所有路由信息的交互。
由於設備在GR過程中的角色不可預知,建議在作為GR Restarter和GR Helper的設備上均進行本配置。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 使能BGP協議的GR能力。
graceful-restart
缺省情況下,BGP協議的GR能力處於關閉狀態。
(4) 配置對端等待重建BGP會話的時間。
graceful-restart timer restart timer
缺省情況下,對端等待重建BGP會話的時間為150秒。
對端等待重建BGP會話的時間應小於Open消息中的Holdtime時間。
(5) (可選)配置BGP GR過程中本端作為GR Helper時等待對等體/對等體組重建BGP會話的額外時間。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } graceful-restart timer restart extra { time | no-limit }
缺省情況下,本端作為GR Helper時等待對等體/對等體組重建BGP會話的額外時間為0秒。
(6) 配置本端等待End-Of-RIB標記的時間。
graceful-restart timer wait-for-rib timer
缺省情況下,本端等待End-Of-RIB標記的時間為600秒。
(7) 配置BGP GR過程中等待通知RIB老化失效表項的時間。
graceful-restart timer purge-time timer
缺省情況下,BGP GR過程中等待通知RIB老化失效表項的時間為480秒。
(8) (可選)開啟設備通過GR方式複位BGP會話功能。
graceful-restart peer-reset [ all ]
缺省情況下,設備以GR方式複位BGP會話功能處於關閉狀態。
(9) (可選)配置BGP GR完成後等待其他協議完成GR或NSR的最長時間。
bgp update-delay wait-other-protocol seconds
缺省情況下,BGP GR完成後等待周邊其他協議完成GR的最長時間為300秒。
BGP NSR(Nonstop Routing,不間斷路由)是一種通過在BGP協議主備進程之間備份必要的協議狀態和數據(如BGP鄰居信息和路由信息),使得BGP協議的主進程中斷時,備份進程能夠無縫地接管主進程的工作,從而確保對等體感知不到BGP協議中斷,保持BGP路由,並保證轉發不會中斷的技術。
導致BGP主進程中斷的事件包括以下幾種:
· BGP主進程重啟
· BGP主進程所在的主控板發生故障
· BGP主進程所在的主控板進行ISSU(In-Service Software Upgrade,不中斷業務升級)
BGP NSR與BGP GR具有如下區別,請根據實際情況選擇合適的方式確保數據轉發不中斷:
· 對設備要求不同:BGP協議的主進程和備進程運行在不同的主控板或IRF成員設備上,因此要運行BGP NSR功能,必須有兩個或兩個以上的主控板;要運行BGP GR功能,可以隻有一個主控板。
· 對BGP對等體的要求不同:使用BGP NSR功能時,BGP對等體不會感知本地設備發生了BGP進程的異常重啟或主備倒換等故障,不需要BGP對等體協助恢複BGP路由信息。BGP GR要求BGP對等體具有GR能力,並且在BGP會話中斷恢複時,BGP對等體能夠作為GR helper協助本地設備恢複BGP路由信息。
如果在設備上同時配置了BGP NSR和BGP GR功能,則二者的關係如下:
· BGP NSR優先級高於BGP GR,即BGP主進程中斷時通過BGP NSR確保轉發不中斷,設備不會作為GR Restarter啟動GR過程。
· GR Helper協助GR Restarter恢複重啟前狀態時,如果GR Helper發生了主備進程倒換,則即便GR Helper上配置了BGP NSR,也無法保證GR過程成功。
在MPLS L3VPN組網中,使能BGP NSR功能的同時,需要使能RIB NSR功能,以確保流量轉發不會中斷。關於RIB NSR功能的詳細介紹,請參見“三層技術-IP路由配置指導”中的“IP路由基礎”。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 使能BGP NSR功能。
non-stop-routing
缺省情況下,BGP NSR功能處於關閉狀態。
(4) (可選)配置BGP NSR完成後等待其他協議完成NSR的最長時間。
bgp update-delay wait-other-protocol seconds
缺省情況下,BGP NSR完成後等待周邊其他協議完成NSR的最長時間為300秒。
可在任意視圖下執行以下命令,顯示BGP NSR的運行狀態:
display bgp [ instance instance-name ] non-stop-routing status
BGP協議通過存活時間(Keepalive)定時器和保持時間(Holdtime)定時器來維護鄰居關係。但這些定時器都是秒級的,而且根據協議規定,設置的保持時間應該至少為存活時間間隔的三倍。這樣使得BGP鄰居關係的檢測比較慢,對於報文收發速度快的接口會導致大量報文丟失。通過配置BGP與BFD聯動,可以使用BFD來檢測本地路由器和BGP對等體之間的鏈路。當本地路由器和BGP對等體之間的鏈路出現故障時,BFD可以快速檢測到該故障,從而加快BGP協議的收斂速度。有關BFD的介紹和詳細配置,請參見“可靠性配置指導”中的“BFD”。
配置通過BFD檢測本地路由器和指定BGP對等體/對等體組之間的鏈路之前,需要先在本地路由器和指定BGP對等體/對等體組之間建立BGP會話。
通過本功能配置echo報文方式的BFD檢測時,需要注意:
· echo報文方式的BFD會話隻能用於檢測與直連對等體之間的鏈路狀態。
· 通過LoopBack接口建立的BGP會話無法通過echo報文方式檢測對等體之間的鏈路。
· 需要配置bfd echo-source-ip或bfd echo-source-ipv6命令為echo報文指定源地址,否則本端無法建立BFD會話。
通過鏈路本地地址建立的BGP會話隻能通過控製報文方式的單跳BFD會話檢測對等體之間的鏈路。
采用控製報文方式的BFD會話檢測鏈路時,本地路由器和BGP對等體采用的BFD檢測方式(單跳或多跳)必須相同,否則無法建立BFD會話。
配置BGP GR功能後,請慎用BGP與BFD聯動功能。因為當鏈路故障時,係統可能還沒來得及啟用GR處理流程,BFD已經檢測到鏈路故障了,從而導致GR失敗。如果設備上同時配置了BGP GR和BGP BFD,則在BGP GR期間請勿去使能BGP BFD,否則可能導致GR失敗。
為指定對等體/對等體組配置BFD檢測參數(BFD檢測時間倍數、接收/發送BFD控製報文的時間間隔)時,需要注意:
· 對等體在加入對等體組時將同步所加入對等體組的BFD檢測參數配置。
· 配置對等體組的BFD檢測參數時,相應配置將同步給組內所有的對等體。
· 如果對同一個對等體/對等體組的某項BFD檢測參數多次進行配置,則以最後一次的配置為準。
對於一個對等體的一項BFD檢測參數而言,總是以最後一次的配置為準,無論該配置是通過直接配置獲得還是同步對等體組的配置獲得。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置通過BFD檢測本地路由器和指定BGP對等體/對等體組之間的鏈路。
peer { group-name | ipv4-address [ mask-length ] } bfd [ echo | multi-hop | single-hop ]
缺省情況下,不使用BFD檢測本地路由器和BGP對等體/對等體組之間的鏈路。
(4) (可選)配置指定對等體/對等體組的BFD檢測參數。
peer { group-name | ipv4-address [ mask-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *
缺省情況下,未配置對等體/對等體組的BFD檢測參數。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 配置通過BFD檢測本地路由器和指定IPv6 BGP對等體/對等體組之間的鏈路。
peer { group-name | ipv6-address [ prefix-length ] } bfd [ echo | multi-hop | single-hop ]
缺省情況下,不使用BFD檢測本地路由器和IPv6 BGP對等體/對等體組之間的鏈路。
(4) (可選)配置指定對等體/對等體組的BFD檢測參數。
peer { group-name | ipv6-address [ prefix-length ] } bfd parameters { detect-multiplier detect-multiplier | min-receive-interval min-receive-interval | min-transmit-interval min-transmit-interval } *
缺省情況下,未配置對等體/對等體組的BFD檢測參數。
當BGP網絡中的鏈路或某台路由器發生故障時,需要通過故障鏈路或故障路由器傳輸才能到達目的地的報文將會丟失或產生路由環路,數據流量將會被中斷。直到BGP根據新的網絡拓撲路由收斂後,被中斷的流量才能恢複正常的傳輸。
為了盡可能縮短網絡故障導致的流量中斷時間,網絡管理員可以開啟BGP快速重路由功能。
圖3-1 BGP快速重路由功能示意圖
如圖3-1所示,在Router B上開啟快速重路由功能後,BGP將為主路由生成備份下一跳。IPv4組網中BGP通過ARP或Echo方式的BFD會話檢測主路由的下一跳是否可達,IPv6組網中BGP通過ND(Neighbor Discovery,鄰居發現)協議檢測主路由的下一跳是否可達。當Router B檢測到主路由的下一跳不可達後,BGP會使用備份下一跳替換失效下一跳,通過備份下一跳來指導報文的轉發,從而大大縮短了流量中斷時間。在使用備份下一跳指導報文轉發的同時,BGP會重新進行路由優選,優選完畢後,使用新的最優路由來指導報文轉發。
開啟BGP快速重路由功能的方法有如下兩種:
· 在BGP地址族視圖下執行pic命令開啟當前地址族的BGP快速重路由功能。采用這種方法時,BGP會為當前地址族的所有BGP路由自動計算備份下一跳,即隻要從不同BGP對等體學習到了到達同一目的網絡的路由,且這些路由不等價,就會生成主備兩條路由。
· 在BGP地址族視圖下執行fast-reroute route-policy命令指定快速重路由引用的路由策略,並在引用的路由策略中,通過apply [ ipv6 ] fast-reroute backup-nexthop命令指定備份下一跳的地址。采用這種方式時,隻有為主路由計算出的備份下一跳地址與指定的地址相同時,才會為其生成備份下一跳;否則,不會為主路由生成備份下一跳。在引用的路由策略中,還可以配置if-match子句,用來決定哪些路由可以進行快速重路由保護,BGP隻會為通過if-match子句過濾的路由生成備份下一跳。
引用路由策略方式的優先級高於通過pic命令開啟BGP快速重路由方式。
IPv4單播路由和IPv6單播路由支持BGP快速重路由功能;IPv4組播路由和IPv6組播路由不支持BGP快速重路由功能。
(1) 進入係統視圖。
system-view
(2) 配置echo報文的源IP地址。
bfd echo-source-ip ipv4-address
缺省情況下,未配置echo報文的源IP地址。
通過Echo方式的BFD會話檢測主路由的下一跳是否可達時,必須執行本配置。
echo報文的源IP地址用戶可以任意指定。建議配置echo報文的源IP地址不屬於該設備任何一個接口所在網段。
本命令的詳細介紹,請參見“可靠性命令參考”中的“BFD”。
(3) 創建路由策略,並進入路由策略視圖。
route-policy route-policy-name permit node node-number
本命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“路由策略”。
(4) 配置快速重路由的備份下一跳地址。
apply fast-reroute backup-nexthop ipv4-address
缺省情況下,未指定快速重路由的備份下一跳地址。
本命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“路由策略”。
(5) 退回係統視圖。
quit
(6) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(7) 進入BGP IPv4單播地址族視圖或BGP-VPN IPv4單播地址族視圖。
¡ 進入BGP IPv4單播地址族視圖
address-family ipv4 [ unicast ]
¡ 請依次執行以下命令進入BGP-VPN IPv4單播地址族視圖
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
(8) 在當前地址族視圖下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情況下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,隻有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不會生效。
(1) 進入係統視圖。
system-view
(2) 創建路由策略,並進入路由策略視圖。
route-policy route-policy-name permit node node-number
本命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“路由策略”。
(3) 配置快速重路由的備份下一跳地址。
apply ipv6 fast-reroute backup-nexthop ipv6-address
缺省情況下,未指定快速重路由的備份下一跳地址。
本命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“路由策略”。
(4) 退回係統視圖。
quit
(5) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(6) 進入BGP IPv6單播地址族視圖或BGP-VPN IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(7) 在當前地址族視圖下指定BGP快速重路由引用的路由策略。
fast-reroute route-policy route-policy-name
缺省情況下,BGP快速重路由未引用任何路由策略。
引用的路由策略中,隻有apply fast-reroute backup-nexthop和apply ipv6 fast-reroute backup-nexthop命令生效,其他apply子句不會生效。
在某些組網情況下,執行pic命令為所有BGP路由生成備份下一跳後,可能會導致路由環路,請謹慎使用本功能。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 進入BGP IPv4單播地址族視圖或BGP-VPN IPv4單播地址族視圖。
address-family ipv4 [ unicast ]
(4) 開啟BGP快速重路由功能。
pic
缺省情況下,BGP快速重路由功能處於關閉狀態。
在某些組網情況下,執行pic命令為所有BGP路由生成備份下一跳後,可能會導致路由環路,請謹慎使用本功能。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(3) 進入BGP IPv6單播地址族視圖或BGP-VPN IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 開啟BGP快速重路由功能。
pic
缺省情況下,BGP快速重路由功能處於關閉狀態.
在某些組網情況下,執行pic命令為所有BGP路由生成備份下一跳後,可能會導致路由環路,請謹慎使用本命令。
缺省情況下,BGP快速重路由通過ARP檢測主路由的下一跳是否可達,該方式對於快速重路由的主鏈路失效檢測較慢,業務流量可能無法及時切換到備用路徑上,導致流量丟失。配置本功能後,設備會自動創建一個協議類型為IPFRR的BFD會話,通過該BFD會話對主路由的下一跳檢測,以提高主路由下一跳失效時,流量切換到備路由下一跳上的收斂速度。
隻有存在已經生成了備份下一跳的主路由時,本功能才會生效並自動創建BFD會話。
由於BGP暫不支持為負載分擔路由計算備份下一跳,本功能無法為等價路由作為主路由的場景提供通過BFD會話檢測功能。如需通過BFD會話檢測BGP等價路由的下一跳可達性,請配置primary-path-detect bfd protocol-ecmp bgp或primary-path-detect bfd protocol-ecmp bgp4+命令。有關上述兩條命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“IP路由基礎”。
通過控製報文方式的BFD會話檢測主路由的下一跳是否可達時,由於控製報文方式的BFD會話需要兩端進行協商才能成功建立,如需設備成功使用控製報文方式的BFD會話來檢測主鏈路的下一跳,可以通過以下兩種方式進行配置:
· 在主鏈路的對端設備上也執行primary-path-detect bfd命令。此方式適用於主鏈路兩端設備均配置快速重路由功能的場景。
· 在主鏈路的對端設備上手工創建一個靜態BFD會話,該靜態BFD會話指定的會話源IP地址為本端自動創建的BFD會話的會話目的IP地址、會話目的IP地址為本端自動創建的BFD會話的源IP地址、遠端標識符為本端自動創建的BFD會話的本地標識符。
使用echo方式的BFD會話檢測主路由的下一跳是否可達時,僅需要在本地路由器上配置本功能。
其他業務模塊在通過BFD會話檢測主路由的下一跳是否可達時,也會自動創建BFD會話(如RIB、OSPF、IS-IS等)。如果其他協議創建的自動BFD會話檢測的鏈路與BGP主路由下一跳所在的鏈路相同,則BGP不會重複自動創建同類型的BFD會話,而是複用其他協議的BFD會話。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置BGP快速重路由通過BFD會話檢測主路由的下一跳是否可達。
primary-path-detect bfd { ctrl | echo }
缺省情況下,BGP快速重路由通過ARP檢測主路由的下一跳是否可達。
當用戶需要對某台設備上的BGP進程進行調試或升級等維護操作時,可以使用BGP isolate功能或BGP shutdown功能,將該設備上的BGP進程從當前網絡中移除。網絡中的其他設備重新計算路由,不會再通過該設備轉發流量,從而降低設備維護對網絡的影響,提高網絡的可靠性。
BGP isolate功能和BGP shutdown功能使得網絡管理員在進行網絡設備維護時,無需刪除並重新進行對等體/對等體組相關配置,減少了網絡維護的工作量。完成設備維護後,網絡管理員可以關閉BGP isolate功能和BGP shutdown功能,以使該設備重新投入使用。
本功能可以將BGP進程從網絡中隔離出來,具體工作機製如下:
(1) 開啟BGP isolate功能的設備撤銷發布給鄰居的BGP路由(本設備直連路由除外),同時保留所有從鄰居學習到的BGP路由。
(2) 遠端鄰居收到路由撤銷消息後,重新進行路由優選並更新FIB表。在此期間,遠端鄰居仍然可以通過BGP isolate設備發布的BGP路由轉發流量。
(3) 遠端鄰居刪除所有BGP isolate設備發布的BGP路由並完成FIB表項更新後,除目的地為BGP isolate設備的流量外,其他流量不再經過BGP isolate設備。此時,BGP isolate設備完全從當前組網中隔離出來,可以對該設備上的BGP協議進行升級等處理。
(4) 對BGP isolate設備的維護結束後,關閉BGP isolate功能可讓該設備重新加入網絡。設備重新加入網絡後,BGP路由的發布和學習機製如下:
¡ 設備重新向鄰居發布路由。
¡ 設備隔離前保留了從鄰居學習到的路由。如果設備隔離後沒有對BGP協議進行重啟等操作,則無需重新進行路由學習;否則,設備重新加入網絡後需要重新進行路由學習。
設備進行GR或NSR期間,建議用戶不要使用BGP isolate功能,否則無法保證執行操作後的結果與預期結果一致。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置BGP isolate功能,將設備的BGP協議從當前組網中隔離出來。
isolate enable
缺省情況下,未配置BGP協議隔離功能。
(4) 完成設備維護後,使設備的BGP重新加入網絡。
undo isolate enable
本功能通過暫時斷開與所有對等體/對等體組的BGP會話,來實現BGP進程的移除。完成設備維護後,通過取消本功能可以恢複與所有對等體/對等體組的BGP會話。
如果本設備和對等體/對等體組的會話已經建立,則配置本功能後,會斷開本設備和對等體/對等體組的會話,並清除所有路由信息。
同時配置本功能和禁止與對等體/對等體組建立會話功能時,若任一功能禁止了與對等體/對等體組建立會話,則設備不能與相應的對等體/對等體組建立BGP會話。禁止與對等體/對等體組建立會話功能的詳細介紹,請參見“1.7 禁止與對等體/對等體組建立會話”。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 配置BGP shutdown功能,禁止與所有對等體/對等體組建立會話。
shutdown process
缺省情況下,設備允許與所有BGP對等體/對等體組建立會話。
(4) 完成設備維護後,使設備的BGP重新加入網絡。
undo shutdown process
如圖3-2所示,所有路由器均運行BGP協議,Router A和Router B之間建立EBGP連接,Router B和Router C之間建立IBGP連接。現要求實現即便Router B發生主備倒換,也不會影響Router A和Router C之間正在進行的數據傳輸。
圖3-2 BGP GR配置組網圖
(1) Router A的配置
# 配置各接口的IP地址(略)。
# 配置Router A與Router B的EBGP連接。
<RouterA> system-view
[RouterA] bgp 65008
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 200.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterA-bgp-default] graceful-restart
# 將8.0.0.0/8網段路由通告到IPv4 BGP路由表中。
[RouterA-bgp-default] address-family ipv4
[RouterA-bgp-default-ipv4] network 8.0.0.0
# 使能與Router B交換BGP IPv4單播路由的能力。
[RouterA-bgp-default-ipv4] peer 200.1.1.1 enable
(2) Router B的配置
# 配置各接口的IP地址(略)。
# 配置Router B與Router A的EBGP連接。
<RouterB> system-view
[RouterB] bgp 65009
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 200.1.1.2 as-number 65008
# 配置Router B與Router C的IBGP連接。
[RouterB-bgp-default] peer 9.1.1.2 as-number 65009
# 使能BGP GR功能。
[RouterB-bgp-default] graceful-restart
# 將200.1.1.0/24和9.1.1.0/24網段路由通告到IPv4 BGP路由表中。
[RouterB-bgp-default] address-family ipv4
[RouterB-bgp-default-ipv4] network 200.1.1.0 24
[RouterB-bgp-default-ipv4] network 9.1.1.0 24
# 使能與Router A、Router C交換BGP IPv4單播路由的能力。
[RouterB-bgp-default-ipv4] peer 200.1.1.2 enable
[RouterB-bgp-default-ipv4] peer 9.1.1.2 enable
(3) Router C的配置
# 配置各接口的IP地址(略)。
# 配置Router C與Router B的IBGP連接。
<RouterC> system-view
[RouterC] bgp 65009
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 9.1.1.1 as-number 65009
# 使能BGP GR功能。
[RouterC-bgp-default] graceful-restart
# 使能與Router B交換BGP IPv4單播路由的能力。
[RouterC-bgp-default] address-family ipv4
[RouterC-bgp-default-ipv4] peer 9.1.1.1 enable
在Router A上ping Router C,同時在Router B上觸發主備倒換,可以發現在整個倒換過程中Router A都可以ping通Router C。
· 在AS 200內使用OSPF作為IGP協議,實現AS內的互通。
· Router A與Router C之間建立兩條IBGP連接。當Router A與Router C之間的兩條路徑均連通時,Router C與1.1.1.0/24之間的報文使用Router A<->Router B<->Router C這條路徑轉發;當Router A<->Router B<->Router C這條路徑發生故障時,BFD能夠快速檢測並通告BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
圖3-3 配置BGP與BFD聯動組網圖
(1) 配置各接口的IP地址(略)
(2) 配置OSPF,保證Router A和Router C之間路由可達(略)
(3) Router A上的BGP配置
# 配置Router A和Router C建立兩條IBGP連接。
<RouterA> system-view
[RouterA] bgp 200
[RouterA-bgp-default] peer 3.0.2.2 as-number 200
[RouterA-bgp-default] peer 2.0.2.2 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.0.2.2 enable
[RouterA-bgp-default-ipv4] peer 2.0.2.2 enable
[RouterA-bgp-default-ipv4] quit
# 配置當Router A與Router C之間的兩條路徑均連通時,Router C與1.1.1.0/24之間的報文使用Router A<->Router B<->Router C這條路徑轉發。(在Router A上對發布給對等體2.0.2.2的1.1.1.0/24路由配置較高的MED屬性值)
¡ 定義編號為2000的IPv4基本ACL,允許路由1.1.1.0/24通過。
[RouterA] acl basic 2000
[RouterA-acl-ipv4-basic-2000] rule permit source 1.1.1.0 0.0.0.255
[RouterA-acl-ipv4-basic-2000] quit
¡ 定義兩個Route-policy,一個名為apply_med_50,為路由1.1.1.0/24設置MED屬性值為50;另一個名為apply_med_100,為路由1.1.1.0/24設置MED屬性值為100。
[RouterA] route-policy apply_med_50 permit node 10
[RouterA-route-policy-apply_med_50-10] if-match ip address acl 2000
[RouterA-route-policy-apply_med_50-10] apply cost 50
[RouterA-route-policy-apply_med_50-10] quit
[RouterA] route-policy apply_med_100 permit node 10
[RouterA-route-policy-apply_med_100-10] if-match ip address acl 2000
[RouterA-route-policy-apply_med_100-10] apply cost 100
[RouterA-route-policy-apply_med_100-10] quit
¡ 對發布給對等體3.0.2.2的路由應用名為apply_med_50的Route-policy,對發布給對等體2.0.2.2的路由應用名為apply_med_100的Route-policy。
[RouterA] bgp 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 3.0.2.2 route-policy apply_med_50 export
[RouterA-bgp-default-ipv4] peer 2.0.2.2 route-policy apply_med_100 export
[RouterA-bgp-default-ipv4] quit
# 配置當Router A<->Router B<->Router C這條路徑發生故障時,BFD能夠快速檢測並通告BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
[RouterA-bgp-default] peer 3.0.2.2 bfd
[RouterA-bgp-default] quit
(4) Router C上的BGP配置。
# 配置Router A和Router C建立兩條IBGP連接。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] peer 3.0.1.1 as-number 200
[RouterC-bgp-default] peer 2.0.1.1 as-number 200
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 3.0.1.1 enable
[RouterC-bgp-default-ipv4] peer 2.0.1.1 enable
[RouterC-bgp-default-ipv4] quit
# 配置當Router A<->Router B<->Router C這條路徑發生故障時,BFD能夠快速檢測並通告BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
[RouterC-bgp-default] peer 3.0.1.1 bfd
[RouterC-bgp-default] quit
[RouterC] quit
下麵以Router C為例,Router A和Router C類似,不再贅述。
# 顯示Router C的BFD信息。
<RouterC> display bfd session verbose
Total Session Num: 1 Up Session Num: 1 Init Mode: Active
IPv4 Session Working in control packet mode:
Local Discr: 513 Remote Discr: 513
Source IP: 3.0.2.2 Destination IP: 3.0.1.1
Session State: Up Interface: N/A
Min Tx Inter: 500ms Act Tx Inter: 500ms
Min Rx Inter: 500ms Detect Inter: 2500ms
Rx Count: 135 Tx Count: 135
Connect Type: Indirect Running Up for: 00:00:58
Hold Time: 2457ms Auth mode: None
Detect Mode: Async Slot: 0
Protocol: BGP
Version:1
Diag Info: No Diagnostic
以上顯示信息表明:Router A和Router C之間已經建立了BFD連接,而且BFD協議運行正常。
# 在Router C上查看BGP鄰居信息,可以看出Router A和Router C之間建立兩條BGP連接,且均處於Established狀態。
<RouterC> display bgp peer ipv4
BGP local router ID: 3.3.3.3
Local AS number: 200
Total number of peers: 2 Peers in established state: 2
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2.0.1.1 200 4 5 0 0 00:01:55 Established
3.0.1.1 200 4 5 0 0 00:01:52 Established
# 在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通過Router A<->Router B<->Router C這條路徑與1.1.1.0/24網段通信。
<RouterC> display ip routing-table 1.1.1.0 24 verbose
Summary count : 1
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h00m09s
Cost: 50 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x15000001 LastAs: 0
AttrID: 0x1 Neighbor: 3.0.1.1
Flags: 0x10060 OrigNextHop: 3.0.1.1
Label: NULL RealNextHop: 3.0.2.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
# Router A和Router B之間的鏈路發生故障後,在Router C上查看1.1.1.0/24的路由信息,可以看出Router C通過Router A<->Router D<->Router C這條路徑與1.1.1.0/24網段通信。
<RouterC> display ip routing-table 1.1.1.0 24 verbose
Summary count : 1
Destination: 1.1.1.0/24
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h03m08s
Cost: 100 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 0
NibID: 0x15000000 LastAs: 0
AttrID: 0x0 Neighbor: 2.0.1.1
Flags: 0x10060 OrigNextHop: 2.0.1.1
Label: NULL RealNextHop: 2.0.2.1
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet0/0/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/2
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
如圖3-4所示,Router A、Router B、Router C和Router D通過BGP協議實現網絡互連。要求鏈路B正常時,Router A和Router D之間的流量通過鏈路B轉發;鏈路B出現故障時,流量可以快速切換到鏈路A上。
圖3-4 配置BGP快速重路由組網圖
(1) 配置各接口的IP地址(略)
(2) 在AS 200內配置OSPF,發布接口地址所在網段的路由(包括Loopback接口),確保Router B、Router C和Router D之間路由可達(略)
(3) 配置BGP連接
# 配置Router A分別與Router B和Router C建立EBGP會話,並配置通過BGP發布路由1.1.1.1/32。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 10.1.1.2 as-number 200
[RouterA-bgp-default] peer 30.1.1.3 as-number 200
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] peer 10.1.1.2 enable
[RouterA-bgp-default-ipv4] peer 30.1.1.3 enable
[RouterA-bgp-default-ipv4] network 1.1.1.1 32
# 配置Router B與Router A建立EBGP會話,與Router D建立IBGP會話。
<RouterB> system-view
[RouterB] bgp 200
[RouterB-bgp-default] router-id 2.2.2.2
[RouterB-bgp-default] peer 10.1.1.1 as-number 100
[RouterB-bgp-default] peer 4.4.4.4 as-number 200
[RouterB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[RouterB-bgp-default] address-family ipv4 unicast
[RouterB-bgp-default-ipv4] peer 10.1.1.1 enable
[RouterB-bgp-default-ipv4] peer 4.4.4.4 enable
[RouterB-bgp-default-ipv4] peer 4.4.4.4 next-hop-local
[RouterB-bgp-default-ipv4] quit
[RouterB-bgp-default] quit
# 配置Router C與Router A建立EBGP會話,與Router D建立IBGP會話。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 30.1.1.1 as-number 100
[RouterC-bgp-default] peer 4.4.4.4 as-number 200
[RouterC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[RouterC-bgp-default] address-family ipv4 unicast
[RouterC-bgp-default-ipv4] peer 30.1.1.1 enable
[RouterC-bgp-default-ipv4] peer 4.4.4.4 enable
[RouterC-bgp-default-ipv4] peer 4.4.4.4 next-hop-local
[RouterC-bgp-default-ipv4] quit
[RouterC-bgp-default] quit
# 配置Router D分別與Router B和Router C建立IBGP會話,並配置BGP發布路由4.4.4.4/32。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] router-id 4.4.4.4
[RouterD-bgp-default] peer 2.2.2.2 as-number 200
[RouterD-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[RouterD-bgp-default] peer 3.3.3.3 as-number 200
[RouterD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] peer 2.2.2.2 enable
[RouterD-bgp-default-ipv4] peer 3.3.3.3 enable
[RouterD-bgp-default-ipv4] network 4.4.4.4 32
(4) 修改路由的首選值,使得Router A和Router D之間的流量優先通過鏈路B轉發
# 在Router A上配置從Router B接收到的路由的首選值為100。
[RouterA-bgp-default-ipv4] peer 10.1.1.2 preferred-value 100
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 在Router D上配置從Router B接收到的路由的首選值為100。
[RouterD-bgp-default-ipv4] peer 2.2.2.2 preferred-value 100
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
(5) 配置BGP快速重路由
# 配置Router A:配置通過Echo方式的BFD會話檢測主路由的下一跳是否可達,並配置BFD echo報文的源IP地址為11.1.1.1;創建路由策略frr,為路由4.4.4.4/32指定備份下一跳的地址為30.1.1.3(對等體Router C的地址);在BGP IPv4單播地址族下應用該路由策略。
[RouterA] bfd echo-source-ip 11.1.1.1
[RouterA] ip prefix-list abc index 10 permit 4.4.4.4 32
[RouterA] route-policy frr permit node 10
[RouterA-route-policy] if-match ip address prefix-list abc
[RouterA-route-policy] apply fast-reroute backup-nexthop 30.1.1.3
[RouterA-route-policy] quit
[RouterA] bgp 100
[RouterA-bgp-default] primary-path-detect bfd echo
[RouterA-bgp-default] address-family ipv4 unicast
[RouterA-bgp-default-ipv4] fast-reroute route-policy frr
[RouterA-bgp-default-ipv4] quit
[RouterA-bgp-default] quit
# 配置Router D:配置通過Echo方式的BFD會話檢測主路由的下一跳是否可達,並配置BFD echo報文的源IP地址為44.1.1.1;創建路由策略frr,為路由1.1.1.1/32指定備份下一跳的地址為3.3.3.3(對等體Router C的地址);在BGP IPv4單播地址族下應用該路由策略。
[RouterD] bfd echo-source-ip 44.1.1.1
[RouterD] ip prefix-list abc index 10 permit 1.1.1.1 32
[RouterD] route-policy frr permit node 10
[RouterD-route-policy] if-match ip address prefix-list abc
[RouterD-route-policy] apply fast-reroute backup-nexthop 3.3.3.3
[RouterD-route-policy] quit
[RouterD] bgp 200
[RouterD-bgp-default] primary-path-detect bfd echo
[RouterD-bgp-default] address-family ipv4 unicast
[RouterD-bgp-default-ipv4] fast-reroute route-policy frr
[RouterD-bgp-default-ipv4] quit
[RouterD-bgp-default] quit
# 在Router A上查看4.4.4.4/32路由,可以看到備份下一跳信息。
[RouterA] display ip routing-table 4.4.4.4 32 verbose
Summary count : 1
Destination: 4.4.4.4/32
Protocol: BGP Process ID: 0
SubProtID: 0x2 Age: 00h01m52s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 200
NibID: 0x15000003 LastAs: 200
AttrID: 0x5 Neighbor: 10.1.1.2
Flags: 0x10060 OrigNextHop: 10.1.1.2
Label: NULL RealNextHop: 10.1.1.2
BkLabel: NULL BkNextHop: 30.1.1.3
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: GigabitEthernet0/0/2
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
# 在Router D上查看1.1.1.1/32路由,可以看到備份下一跳信息。
[RouterD] display ip routing-table 1.1.1.1 32 verbose
Summary count : 1
Destination: 1.1.1.1/32
Protocol: BGP Process ID: 0
SubProtID: 0x1 Age: 00h00m36s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0x2 OrigAs: 100
NibID: 0x15000003 LastAs: 100
AttrID: 0x1 Neighbor: 2.2.2.2
Flags: 0x10060 OrigNextHop: 2.2.2.2
Label: NULL RealNextHop: 20.1.1.2
BkLabel: NULL BkNextHop: 40.1.1.3
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: GigabitEthernet0/0/2
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
· 在AS 200內使用OSPFv3作為IGP協議,實現AS內的互通。
· Router A與Router C之間建立兩條IBGP連接。當Router A與Router C之間的兩條路徑均連通時,Router C與1200::0/64之間的報文使用Router A<->Router B<->Router C這條路徑轉發;當Router A<->Router B<->Router C這條路徑發生故障時,BFD能夠快速檢測並通告IPv6 BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
圖3-5 IPv6 BGP與BFD聯動配置組網圖
(1) 配置各接口的IPv6地址(略)
(2) 配置OSPFv3,保證Router A和Router C之間路由可達(略)
(3) Router A上的IPv6 BGP配置
# 配置Router A和Router C建立兩條IBGP連接。
<RouterA> system-view
[RouterA] bgp 200
[RouterA-bgp-default] router-id 1.1.1.1
[RouterA-bgp-default] peer 2002::2 as-number 200
[RouterA-bgp-default] peer 3002::2 as-number 200
[RouterA-bgp-default] address-family ipv6
[RouterA-bgp-default-ipv6] peer 2002::2 enable
[RouterA-bgp-default-ipv6] peer 3002::2 enable
[RouterA-bgp-default-ipv6] quit
# 配置當Router A與Router C之間的兩條路徑均連通時,Router C與1200::0/64之間的報文使用Router A<->Router B<->Router C這條路徑轉發。(在Router A上對發布給對等體2002::2的1200::0/64路由配置較高的MED屬性值)
¡ 定義編號為2000的IPv6基本ACL,允許路由1200::0/64通過。
[RouterA] acl ipv6 basic 2000
[RouterA-acl-ipv6-basic-2000] rule permit source 1200:: 64
[RouterA-acl-ipv6-basic-2000] quit
¡ 定義兩個Route-policy,一個名為apply_med_50,為路由1200::0/64設置MED屬性值為50;另一個名為apply_med_100,為路由1200::0/64設置MED屬性值為100。
[RouterA] route-policy apply_med_50 permit node 10
[RouterA-route-policy-apply_med_50-10] if-match ipv6 address acl 2000
[RouterA-route-policy-apply_med_50-10] apply cost 50
[RouterA-route-policy-apply_med_50-10] quit
[RouterA] route-policy apply_med_100 permit node 10
[RouterA-route-policy-apply_med_100-10] if-match ipv6 address acl 2000
[RouterA-route-policy-apply_med_100-10] apply cost 100
[RouterA-route-policy-apply_med_100-10] quit
¡ 對發布給對等體3002::2的路由應用名為apply_med_50的Route-policy,對發布給對等體2002::2的路由應用名為apply_med_100的Route-policy。
[RouterA] bgp 200
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer 3002::2 route-policy apply_med_50 export
[RouterA-bgp-default-ipv6] peer 2002::2 route-policy apply_med_100 export
[RouterA-bgp-default-ipv6] quit
# 配置通過BFD檢測Router A<->Router B<->Router C這條路徑,當該路徑出現故障時,BFD能夠快速檢測到並通告IPv6 BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
[RouterA-bgp-default] peer 3002::2 bfd
[RouterA-bgp-default] quit
(4) Router C上的IPv6 BGP配置。
# 配置Router A和Router C建立兩條IBGP連接。
<RouterC> system-view
[RouterC] bgp 200
[RouterC-bgp-default] router-id 3.3.3.3
[RouterC-bgp-default] peer 3001::1 as-number 200
[RouterC-bgp-default] peer 2001::1 as-number 200
[RouterC-bgp-default] address-family ipv6
[RouterC-bgp-default-ipv6] peer 3001::1 enable
[RouterC-bgp-default-ipv6] peer 2001::1 enable
[RouterC-bgp-default-ipv6] quit
# 配置通過BFD檢測Router A<->Router B<->Router C這條路徑,當該路徑出現故障時,BFD能夠快速檢測到,並通告IPv6 BGP協議,使得Router A<->Router D<->Router C這條路徑能夠迅速生效。
[RouterC-bgp-default] peer 3001::1 bfd
[RouterC-bgp-default] quit
[RouterC] quit
下麵以Router C為例,Router A與此類似,不再贅述。
# 顯示Router C的BFD信息。可以看出,Router A和Router C之間已經建立了BFD會話,而且BFD協議運行正常。
<RouterC> display bfd session verbose
Total Session Num: 1 Up Session Num: 1 Init Mode: Active
IPv6 Session Working in control packet mode:
Local Discr: 513 Remote Discr: 513
Source IP: 3002::2
Destination IP: 3001::1
Session State: Up Interface: N/A
Min Tx Inter: 500ms Act Tx Inter: 500ms
Min Rx Inter: 500ms Detect Inter: 2500ms
Rx Count: 13 Tx Count: 14
Connect Type: Indirect Running Up for: 00:00:05
Hold Time: 2243ms Auth mode: None
Detect Mode: Async Slot: 0
Protocol: BGP4+
Version:1
Diag Info: No Diagnostic
# 在Router C上查看BGP鄰居信息。可以看出,Router A和Router C之間建立兩條BGP連接,且均處於Established狀態。
<RouterC> display bgp peer ipv6
BGP local router ID: 3.3.3.3
Local AS number: 200
Total number of peers: 2 Peers in established state: 2
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
2001::1 200 8 8 0 0 00:04:45 Established
3001::1 200 5 4 0 0 00:01:53 Established
# 在Router C上查看1200::0/64的路由信息,可以看出Router C通過Router A<->Router B<->Router C這條路徑與1200::0/64網段通信。
<RouterC> display ipv6 routing-table 1200::0 64 verbose
Summary count : 1
Destination: 1200::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x1 Age: 00h01m07s
Cost: 50 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0xa OrigAs: 0
NibID: 0x25000001 LastAs: 0
AttrID: 0x1 Neighbor: 3001::1
Flags: 0x10060 OrigNextHop: 3001::1
Label: NULL RealNextHop: FE80::20C:29FF:FE4A:3873
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
# Router A<->Router B<->Router C這條路徑發生故障後,在Router C上查看1200::0/64的路由信息,可以看出Router C通過Router A<->Router D<->Router C這條路徑轉發報文。
<RouterC> display ipv6 routing-table 1200::0 64 verbose
Summary count : 1
Destination: 1200::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x1 Age: 00h00m57s
Cost: 100 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x1 OrigVrf: default-vrf
TableID: 0xa OrigAs: 0
NibID: 0x25000000 LastAs: 0
AttrID: 0x0 Neighbor: 2001::1
Flags: 0x10060 OrigNextHop: 2001::1
Label: NULL RealNextHop: FE80::20C:29FF:FE40:715
BkLabel: NULL BkNextHop: N/A
SRLabel: NULL Interface: GigabitEthernet0/0/2
BkSRLabel: NULL BkInterface: N/A
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/2
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
如圖3-6所示,Router A、Router B、Router C和Router D通過BGP協議實現網絡互連。要求鏈路B正常時,Router A和Router D之間的流量通過鏈路B轉發;鏈路B出現故障時,流量可以快速切換到鏈路A上。
圖3-6 配置BGP快速重路由
(1) 配置各接口的IP地址(略)
(2) 在AS 200內配置OSPFv3,發布接口地址所在網段的路由,確保Router B、Router C和Router D之間IPv6路由可達(略)
(3) 配置BGP連接
# 配置Router A分別與Router B和Router C建立EBGP會話,並配置通過BGP發布路由1::/64。
<RouterA> system-view
[RouterA] bgp 100
[RouterA] router-id 1.1.1.1
[RouterA-bgp-default] peer 3001::2 as-number 200
[RouterA-bgp-default] peer 2001::2 as-number 200
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] peer 3001::2 enable
[RouterA-bgp-default-ipv6] peer 2001::2 enable
[RouterA-bgp-default-ipv6] network 1:: 64
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router B與Router A建立EBGP會話,與Router D建立IBGP會話。
<RouterB> system-view
[RouterB] bgp 200
[RouterB] router-id 2.2.2.2
[RouterB-bgp-default] peer 3001::1 as-number 100
[RouterB-bgp-default] peer 3002::2 as-number 200
[RouterB-bgp-default] address-family ipv6 unicast
[RouterB-bgp-default-ipv6] peer 3001::1 enable
[RouterB-bgp-default-ipv6] peer 3002::2 enable
[RouterB-bgp-default-ipv6] peer 3002::2 next-hop-local
[RouterB-bgp-default-ipv6] quit
[RouterB-bgp-default] quit
# 配置Router C與Router A建立EBGP會話,與Router D建立IBGP會話。
<RouterC> system-view
[RouterC] bgp 200
[RouterC] router-id 3.3.3.3
[RouterC-bgp-default] peer 2001::1 as-number 100
[RouterC-bgp-default] peer 2002::2 as-number 200
[RouterC-bgp-default] address-family ipv6 unicast
[RouterC-bgp-default-ipv6] peer 2001::1 enable
[RouterC-bgp-default-ipv6] peer 2002::2 enable
[RouterC-bgp-default-ipv6] peer 2002::2 next-hop-local
[RouterC-bgp-default-ipv6] quit
[RouterC-bgp-default] quit
# 配置Router D分別與Router B和Router C建立IBGP會話,並配置BGP發布路由4::/64。
<RouterD> system-view
[RouterD] bgp 200
[RouterD-bgp-default] peer 3002::1 as-number 200
[RouterD-bgp-default] peer 2002::1 as-number 200
[RouterD-bgp-default] address-family ipv6 unicast
[RouterD-bgp-default-ipv6] peer 3002::1 enable
[RouterD-bgp-default-ipv6] peer 2002::1 enable
[RouterD-bgp-default-ipv6] network 4:: 64
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
(4) 修改路由的首選值,使得Router A和Router D之間的流量優先通過鏈路B轉發
# 在Router A上配置從Router B接收到的路由的首選值為100。
[RouterA-bgp-default-ipv6] peer 3001::2 preferred-value 100
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 在Router D上配置從Router B接收到的路由的首選值為100。
[RouterD-bgp-default-ipv6] peer 3002::1 preferred-value 100
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
(5) 配置BGP快速重路由
# 配置Router A:創建路由策略frr,為路由4::/64指定備份下一跳的地址為2001::2(對等體Router C的地址);在BGP IPv6單播地址族下應用該路由策略。
<RouterA> system-view
[RouterA] ipv6 prefix-list abc index 10 permit 4:: 64
[RouterA] route-policy frr permit node 10
[RouterA-route-policy] if-match ipv6 address prefix-list abc
[RouterA-route-policy] apply ipv6 fast-reroute backup-nexthop 2001::2
[RouterA-route-policy] quit
[RouterA] bgp 100
[RouterA-bgp-default] address-family ipv6 unicast
[RouterA-bgp-default-ipv6] fast-reroute route-policy frr
[RouterA-bgp-default-ipv6] quit
[RouterA-bgp-default] quit
# 配置Router D:創建路由策略frr,為路由1::/64指定備份下一跳的地址為2002::1(對等體Router C的地址);在BGP IPv6單播地址族下應用該路由策略。
<RouterD> system-view
[RouterD] ipv6 prefix-list abc index 10 permit 1:: 64
[RouterD] route-policy frr permit node 10
[RouterD-route-policy] if-match ipv6 address prefix-list abc
[RouterD-route-policy] apply ipv6 fast-reroute backup-nexthop 2002::1
[RouterD-route-policy] quit
[RouterD] bgp 200
[RouterD-bgp-default] address-family ipv6 unicast
[RouterD-bgp-default-ipv6] fast-reroute route-policy frr
[RouterD-bgp-default-ipv6] quit
[RouterD-bgp-default] quit
# 在Router A上查看4::/64路由,可以看到備份下一跳信息。
[RouterA] display ipv6 routing-table 4:: 64 verbose
Summary count : 1
Destination: 4::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x2 Age: 00h00m58s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0xa OrigAs: 200
NibID: 0x25000003 LastAs: 200
AttrID: 0x3 Neighbor: 3001::2
Flags: 0x10060 OrigNextHop: 3001::2
Label: NULL RealNextHop: 3001::2
BkLabel: NULL BkNextHop: 2001::2
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: GigabitEthernet0/0/2
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
# 在Router D上查看1::/64路由,可以看到備份下一跳信息。
[RouterD] display ipv6 routing-table 1:: 64 verbose
Summary count : 1
Destination: 1::/64
Protocol: BGP4+ Process ID: 0
SubProtID: 0x1 Age: 00h03m24s
Cost: 0 Preference: 255
IpPre: N/A QosLocalID: N/A
Tag: 0 State: Active Adv
OrigTblID: 0x0 OrigVrf: default-vrf
TableID: 0xa OrigAs: 100
NibID: 0x25000003 LastAs: 100
AttrID: 0x4 Neighbor: 3002::1
Flags: 0x10060 OrigNextHop: 3002::1
Label: NULL RealNextHop: 3002::1
BkLabel: NULL BkNextHop: 2002::1
SRLabel: NULL Interface: GigabitEthernet0/0/1
BkSRLabel: NULL BkInterface: GigabitEthernet0/0/2
Tunnel ID: Invalid IPInterface: GigabitEthernet0/0/1
BkTunnel ID: Invalid BKIPInterface: N/A
InLabel: NULL ColorInterface: N/A
SIDIndex: NULL BKColorInterface: N/A
FtnIndex: 0x0 TunnelInterface: N/A
TrafficIndex: N/A BKTunnelInterface: N/A
Connector: N/A PathID: 0x0
SRTunnelID: Invalid
SID Type: N/A NID: Invalid
FlushNID: Invalid BkNID: Invalid
BkFlushNID: Invalid StatFlags: 0x0
Exp: N/A
VpnPeerId: N/A Dscp: N/A
SID: N/A OrigLinkID: 0x0
BkSID: N/A RealLinkID: 0x0
CommBlockLen: 0
BGP擴展功能配置任務如下:
· 配置BGP LS
¡ (可選)配置BGP LS路由反射功能
¡ (可選)配置BGP LS信息的AS號和Router ID
¡ (可選)手工軟複位LS地址族下的BGP會話
· 配置6PE
¡ (可選)控製6PE的路徑選擇
¡ (可選)控製6PE路由的發布與接收
¡ (可選)配置6PE路由反射功能
¡ (可選)複位BGP 6PE連接
通過配置BMP(BGP Monitoring Protocol,BGP監控協議)特性,監控服務器可以對網絡中設備上BGP會話的運行狀態進行實時監控,包括對等體關係的建立與解除、路由信息等。
配置BMP的設備稱為客戶端,監控服務器稱為監控端,一個客戶端可以連接多個監控服務器,通過配置監控服務器的地址和監聽端口號來建立與監控服務器的TCP連接。
(1) 進入係統視圖。
system-view
(2) 創建BGP監控服務器,並進入BMP Server視圖。
bmp server server-number
(3) 配置監控服務器的IP地址和端口號。
server address { ipv4-address | ipv6-address } port port-number
缺省情況下,未配置監控服務器的連接地址和端口號。
(4) 配置發送統計信息的周期。
statistics-interval value
缺省情況下,不向監控服務器發送統計信息。
(5) (可選)配置監控服務器所屬的VPN實例。
server vpn-instance vpn-instance-name
缺省情況下,未指定監控服務其所屬的VPN實例,監控服務器位於公網中。
(6) (可選)配置本地設備與監控服務器之間TCP連接的源接口。
server connect-interface interface-type interface-number
缺省情況下,BGP使用到達監控服務器的最佳路由出接口的主IPv4地址建立TCP連接。
在同一個BMP Server視圖下,當源接口所關聯的VPN與server vpn-instance命令指定的VPN不一致時,本命令不生效。
(7) (可選)配置本地設備與監控服務器之間TCP連接的源地址。
server source-address { ipv4-address | ipv6-address }
缺省情況下,BGP根據監控服務器的地址類型,選擇到達監控服務器的最佳路由出接口的主IPv4地址或IPv6地址建立TCP連接。
在同一個BMP Server視圖下,同時配置本命令和server connect-interface命令時,以本命令的配置為準。
(8) (可選)配置本地設備與監控服務器建立TCP連接時使用的認證方式和認證密鑰。
server password { keychain keychain-name | md5 { cipher | simple } string }
缺省情況下,本地設備與監控服務器建立TCP連接時不進行認證。
(9) (可選)全局配置發送給監控服務器的路由信息,請至少選擇其中一項進行配置。
¡ 配置將本地設備發送給所有監控對等體/對等體組的路由信息發送給監控服務器。
route-mode adj-rib-out [ pre-policy | post-policy | both ]
缺省情況下,不會將本地設備發送給所有監控對等體/對等體組的路由信息發送給監控服務器。
¡ 配置將本地設備從所有監控對等體/對等體組接收的路由信息發送給監控服務器
route-mode adj-rib-in [ pre-policy | post-policy | both ]
缺省情況下,本地設備將從所有監控對等體/對等體組接收的路由策略過濾前的路由信息發送給監控服務器。
¡ 配置向監控服務器發送BGP優選後的路由信息。
route-mode loc-rib
缺省情況下,不向監控服務器發送BGP優選後的最優路由信息。
本功能配置後會先向監控服務器發送一次BGP所有的路由,之後路由更新時,僅向監控服務器發送BGP優選後的最優更新路由信息。
(10) 退回係統視圖。
quit
(11) 進入BGP實例視圖或BGP-VPN實例視圖。
¡ 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
¡ 請依次執行以下命令進入BGP-VPN實例視圖。
bgp as-number [ instance instance-name ]
ip vpn-instance vpn-instance-name
(12) 配置BMP Server監控對等體/對等體組。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } bmp server server-number-list
缺省情況下,未配置BMP Server監控對等體/對等體組。
對於同一個對等體/對等體組,如果執行多次命令,最後一次配置生效。
(13) (可選)配置將本地設備與指定監控對等體/對等體組之間交換的路由信息發送給監控服務器。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-mode { adj-rib-in { pre-policy | post-policy | both } | adj-rib-out { pre-policy | post-policy | both } } *
缺省情況下,未配置將指定監控對等體/對等體組之間交換的路由信息發送給監控服務器,此時是否發送路由信息受BMP Server視圖下的route-mode adj-rib-in和route-mode adj-rib-out命令控製。
可在任意視圖執行以下命令,顯示BGP監控服務器的信息:
display bgp [ instance instance-name ] bmp server server-number
請在用戶視圖下執行以下命令,清除BMP監控服務器記錄的報文統計信息:
reset bgp [ instance instance-name ] bmp server server-number statistics
BGP LS(Link State,鏈路狀態)功能可以進行跨域和跨AS的LSDB(Link State DataBase,鏈路狀態數據庫)、TEDB(TE DataBase,流量工程數據庫)信息發布。設備把收集到的鏈路狀態信息發送給控製器,實現了業務與流量的端到端管理和調度,還可以滿足需要鏈路狀態信息的各種應用需求。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 指定LS對等體/對等體組的AS號。
peer { { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } | group-name } as-number as-number
缺省情況下,未指定LS對等體/對等體組的AS號。
(4) 創建BGP LS地址族,並進入LS地址族視圖。
address-family link-state
(5) 使能本地路由器與對等體/對等體組交換LS信息的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情況下,本地路由器不能與對等體/對等體組交換LS信息。
通常在同一個AS內,為了減少IBGP連接數,可以把幾個BGP路由器劃分為一個集群,將其中的一台路由器配置為路由反射器,其它路由器作為客戶機,通過路由反射器在客戶機之間反射路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP LS地址族視圖。
address-family link-state
(4) 配置BGP LS路由反射功能。
¡ 配置本機作為路由反射器,對等體/對等體組作為路由反射器的客戶機。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情況下,未配置路由反射器及其客戶機。
¡ (可選)允許路由反射器在客戶機之間反射路由。
reflect between-clients
缺省情況下,允許路由反射器在客戶機之間反射路由。
配置本命令後,可減少同一AS內IBGP的連接數。
¡ (可選)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情況下,每個路由反射器都使用自己的Router ID作為集群ID。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP LS地址族視圖。
address-family link-state
(4) 配置BGP LS信息的AS號和Router ID。
domain-distinguisher as-number:router-id
缺省情況下,使用本BGP進程的AS號和Router ID。
在一個AS內,當兩台設備把相同的LS信息發送到同一個EBGP鄰居時,由於Router ID標識的不同,會被認為是不同的LS信息。通過配置本功能,可以解決這個問題。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖
bgp as-number [ instance instance-name ]
(3) 配置Route-refresh功能。請選擇其中一項進行配置。
¡ 使能本地路由器與指定對等體/對等體組的BGP路由刷新功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise route-refresh
¡ 使能本地路由器與指定BGP對等體/對等體組的BGP路由刷新、多協議擴展和4字節AS號功能。
undo peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } capability-advertise conventional
缺省情況下,BGP路由刷新、多協議擴展和4字節AS號功能處於使能狀態。
(4) 手工對LS地址族下的BGP會話進行軟複位。
a. 退回係統視圖。
quit
b. 退回用戶視圖。
quit
c. 手工對LS地址族下的BGP會話進行軟複位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } link-state
可在任意視圖執行以下命令:
· 顯示BGP LS對等體組的信息。
display bgp [ instance instance-name ] group link-state [ group-name group-name ]
· 顯示BGP LS對等體或對等體組的信息。
display bgp [ instance instance-name ] peer link-state [ ipv4-address mask-length | ipv6-address prefix-length | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address | ipv6-address ] verbose ]
· 顯示BGP LS地址族信息。
display bgp [ instance instance-name ] link-state [ ls-prefix | peer { ipv4-address | ipv6-address } { advertised | received } [ statistics ] | statistics ]
display bgp [ instance instance-name ] link-state [ color color-value end-point { ipv4 ipv4-address | ipv6 ipv6-address } ]
· 顯示BGP LS地址族的打包組信息。
display bgp [ instance instance-name ] update-group link-state [ ipv4-address | ipv6-address ]
請在用戶視圖下執行以下命令,複位LS地址族下的BGP會話:
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } link-state
如圖4-1所示,6PE(IPv6 Provider Edge,IPv6供應商邊緣)是一種過渡技術,它采用MPLS(Multiprotocol Label Switching,多協議標簽交換)技術實現通過IPv4骨幹網連接隔離的IPv6用戶網絡。當ISP希望在自己原有的IPv4/MPLS骨幹網的基礎上,為用戶網絡提供IPv6流量轉發能力時,可以采用6PE技術方便地達到該目的。
圖4-1 6PE組網圖
6PE的主要思想是:
· 6PE設備從CE(Customer Edge,用戶網絡邊緣)設備接收到用戶網絡的IPv6路由信息後,為該路由信息分配標簽,通過MP-BGP會話將帶有標簽的IPv6路由信息發布給對端的6PE設備。對端6PE設備將接收到的IPv6路由信息擴散到本地連接的用戶網絡。從而,實現IPv6用戶網絡之間的路由信息發布。
· 為了隱藏IPv6報文、使得IPv4骨幹網中的設備能夠轉發IPv6用戶網絡的報文,在IPv4骨幹網絡中需要建立公網隧道。公網隧道可以是GRE隧道、MPLS LSP、MPLS TE隧道等。
· 6PE設備轉發IPv6報文時,先為IPv6報文封裝IPv6路由信息對應的標簽(內層標簽),再為其封裝公網隧道對應的標簽(外層標簽)。骨幹網中的設備根據外層標簽轉發報文,意識不到該報文為IPv6報文。對端6PE設備接收到報文後,刪除內層和外層標簽,將原始的IPv6報文轉發到本地連接的用戶網絡。
MPLS、MPLS TE、CE設備、P(Provider,服務提供商網絡)設備的詳細介紹,請參見“MPLS配置指導”。GRE的詳細介紹,請參見“IP隧道及安全VPN配置指導”中的“GRE”。
為了實現IPv6路由信息的交互,CE和6PE之間可以配置IPv6靜態路由、運行IPv6 IGP協議或IPv6 BGP協議。
6PE組網環境中,需要進行如下配置:
· 在IPv4骨幹網上建立公網隧道。具體配置請參見“IP隧道及安全VPN配置指導”中的“GRE”或“MPLS配置指導”。
· 在6PE設備上配置MPLS基本能力。具體配置請參見“MPLS配置指導”中的“MPLS基礎”。
· 在6PE設備上配置BGP相關功能,以便通過BGP會話發布帶有標簽的IPv6路由信息。本文隻介紹6PE設備上的BGP相關配置。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 指定6PE對等體/對等體組的AS號。
peer { group-name | ipv4-address [ mask-length ] } as-number as-number
缺省情況下,未指定6PE對等體/對等體組的AS號。
(4) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(5) 使能本地路由器與6PE對等體/對等體組交換IPv6單播路由信息的能力。
peer { group-name | ipv4-address [ mask-length ] } enable
缺省情況下,本地路由器不能與6PE對等體/對等體組交換IPv6單播路由信息。
(6) 使能與6PE對等體/對等體組交換帶標簽IPv6路由的能力。
peer { group-name | ipv4-address [ mask-length ] } label-route-capability
缺省情況下,不具有與6PE對等體/對等體組交換帶標簽IPv6路由的能力。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 為6PE對等體/對等體組配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] } additional-paths { receive | send } *
缺省情況下,沒有為6PE對等體/對等體組配置Add-Path功能。
(5) 配置向6PE對等體/對等體組發送的Add-Path優選路由的最大條數。
peer { group-name | ipv4-address [ mask-length ] } advertise additional-paths best number
缺省情況下,不向6PE對等體/對等體組發送Add-Path優選路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 配置向6PE對等體/對等體組發布團體屬性。
peer { group-name | ipv4-address [ mask-length ] } advertise-community
缺省情況下,不向6PE對等體/對等體組發布團體屬性。
(5) 配置向6PE對等體/對等體組發布擴展團體屬性。
peer { group-name | ipv4-address [ mask-length ] } advertise-ext-community
缺省情況下,不向6PE對等體/對等體組發布擴展團體屬性。
(6) 配置向指定6PE對等體/對等體組發送BGP更新消息時隻攜帶公有AS號,不攜帶私有AS號。
peer { group-name | ipv4-address [ mask-length ] } public-as-only
缺省情況下,向4PE對等體/對等體組發送BGP更新消息時,既可以攜帶公有AS號,又可以攜帶私有AS號。
(7) 為從指定6PE對等體/對等體組接收的路由分配首選值。
peer { group-name | ipv4-address [ mask-length ] } preferred-value value
缺省情況下,從6PE對等體/對等體組接收的路由的首選值為0。
(8) 為6PE對等體/對等體組配置鏈路帶寬屬性。
peer { group-name | ipv6-address [ prefix-length ] } bandwidth
缺省情況下,沒有為6PE對等體/對等體組配置鏈路帶寬屬性。
(9) 為指定對等體/對等體組配置AIGP屬性。
peer { group-name | ipv4-address [ mask-length ] } aigp
缺省情況下,沒有為BGP對等體/對等體組配置AIGP屬性。
(10) 配置將AIGP屬性值拷貝到MED屬性中發送給對等體/對等體組。
peer { group-name | ipv4-address [ mask-length ] } aigp send med
缺省情況下,AIGP屬性值不會拷貝到MED屬性中發送給對等體/對等體組。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 配置向6PE對等體/對等體組發送缺省路由。
peer { group-name | ipv4-address [ mask-length ] } default-route-advertise [ route-policy route-policy-name ]
缺省情況下,不向6PE對等體/對等體組發送缺省路由。
(5) 配置路由過濾策略。
¡ 為6PE對等體/對等體組配置基於AS路徑過濾列表的路由過濾策略。
peer { group-name | ipv4-address [ mask-length ] } as-path-acl { as-path-acl-number | as-path-acl-name } { export | import }
缺省情況下,沒有為6PE對等體/對等體組配置基於AS路徑過濾列表的路由接收過濾策略。
¡ 為6PE對等體/對等體組配置基於IPv6 ACL的過濾策略。
peer { group-name | ipv4-address [ mask-length ] } filter-policy { ipv6-acl-number | name ipv6-acl-name } { export | import }
缺省情況下,沒有為6PE對等體/對等體組配置基於IPv6 ACL的過濾策略。
¡ 為6PE對等體/對等體組配置基於IPv6地址前綴列表的路由過濾策略。
peer { group-name | ipv4-address [ mask-length ] } prefix-list ipv6-prefix-list-name { export | import }
缺省情況下,沒有為6PE對等體/對等體組配置基於IPv6前綴列表的路由過濾策略。
¡ 為6PE對等體/對等體組設置基於路由策略的路由過濾策略。
peer { group-name | ipv4-address [ mask-length ] } route-policy route-policy-name { export | import }
缺省情況下,沒有為6PE對等體/對等體組配置基於路由策略的路由過濾策略。
(6) 保存所有來自指定6PE對等體/對等體組的原始路由更新信息。
peer { group-name | ipv4-address [ mask-length ] } keep-all-routes
缺省情況下,不保存來自6PE對等體/對等體組的原始路由更新信息。
(7) 配置允許從6PE對等體/對等體組接收的路由的最大數量。
peer { group-name | ipv4-address [ mask-length ] } route-limit prefix-number [ { alert-only | discard | reconnect reconnect-time } | percentage-value ] *
缺省情況下,不限製從6PE對等體/對等體組接收的路由數量。
(8) 為BGP對等體/對等體組配置SoO屬性。
peer { group-name | ipv4-address [ mask-length ] } soo site-of-origin
缺省情況下,沒有為BGP對等體/對等體組配置SoO屬性。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 配置對於從6PE對等體/對等體組接收的路由,允許本地AS號在接收路由的AS_PATH屬性中出現,並配置允許出現的次數。
peer { group-name | ipv4-address [ mask-length ] } allow-as-loop [ number ]
缺省情況下,不允許本地AS號在接收路由的AS_PATH屬性中出現。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(4) 配置本機作為路由反射器,對等體/對等體組作為路由反射器的客戶機
peer { group-name | ipv4-address [ mask-length ] } reflect-client
缺省情況下,未配置路由反射器及其客戶機。
在用戶視圖下執行以下命令複位BGP 6PE連接。請選擇其中一項進行配置。
· 軟複位指定的BGP 6PE連接。
refresh bgp [ instance instance-name ] ipv4-address [ mask-length ] { export | import } ipv6 [ unicast ]
· 複位指定的BGP 6PE連接。
reset bgp [ instance instance-name ] ipv4-address [ mask-length ] ipv6 [ unicast ]
複位BGP會話時,會造成短暫的BGP會話中斷。
· 所有路由器運行BGP協議,Router A與Router B建立IBGP連接,Router B分別與Router C和Router D建立IBGP連接。
· Router B作為路由反射器,Router A為Router B的客戶機。
· Router A能夠通過Router B學到Router C和Router D發布的LS信息。
圖4-2 BGP LS配置組網圖
(1) 配置各接口的IP地址,在Router C和Router D上配置OSPF
(2) 配置BGP連接
# 配置Router A。
<RouterA> system-view
[RouterA] bgp 100
[RouterA-bgp-default] peer 192.1.1.2 as-number 100
[RouterA-bgp-default] address-family link-state
[RouterA-bgp-default-ls] peer 192.1.1.2 enable
[RouterA-bgp-default-ls] quit
[RouterA-bgp-default] quit
# 配置Router B。
<RouterB> system-view
[RouterB] bgp 100
[RouterB-bgp-default] peer 192.1.1.1 as-number 100
[RouterB-bgp-default] peer 193.1.1.1 as-number 100
[RouterB-bgp-default] peer 194.1.1.1 as-number 100
[RouterB-bgp-default] address-family link-state
[RouterB-bgp-default-ls] peer 192.1.1.1 enable
[RouterB-bgp-default-ls] peer 193.1.1.1 enable
[RouterB-bgp-default-ls] peer 194.1.1.1 enable
[RouterB-bgp-default-ls] quit
[RouterB-bgp-default] quit
# 配置Router C。
<RouterC> system-view
[RouterC] bgp 100
[RouterC-bgp-default] peer 193.1.1.2 as-number 100
[RouterC-bgp-default] address-family link-state
[RouterC-bgp-default-ls] peer 193.1.1.2 enable
[RouterC-bgp-default-ls] quit
[RouterC-bgp-default] quit
[RouterC] ospf
[RouterC-ospf-1] distribute bgp-ls
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 配置Router D。
<RouterD> system-view
[RouterD] bgp 100
[RouterD-bgp-default] peer 194.1.1.2 as-number 100
[RouterD-bgp-default] address-family link-state
[RouterD-bgp-default-ls] peer 194.1.1.2 enable
[RouterD-bgp-default-ls] quit
[RouterD-bgp-default] quit
[RouterD] ospf
[RouterD-ospf-1] distribute bgp-ls
[RouterD-ospf-1] area 0
[RouterD-ospf-1-area-0.0.0.0] network 0.0.0.0 0.0.0.0
[RouterD-ospf-1-area-0.0.0.0] quit
[RouterD-ospf-1] quit
(3) 配置路由反射器
# 配置Router B。
[RouterB] bgp 100
[RouterB-bgp-default] address-family link-state
[RouterB-bgp-default-ls] peer 192.1.1.1 reflect-client
[RouterB-bgp-default-ls] quit
[RouterB-bgp-default] quit
# 查看Router A的LS信息。
[RouterA] display bgp link-state
Total number of routes: 4
BGP local router ID is 192.1.1.1
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a – additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Prefix codes: E link, V node, T4 IPv4 route, T6 IPv6 route, SD SRv6 SID desc
u/U unknown,
I Identifier, N local node, R remote node, L link, P prefix,
L1/L2 ISIS level-1/level-2, O OSPF, O3 OSPFv3,
D direct, S static, B BGP, SS SRv6 SID,
a area-ID, l link-ID, t topology-ID, s ISO-ID,
c confed-ID/ASN, b bgp-identifier, r router-ID,
i if-address, n peer-address, o OSPF Route-type, p IP-prefix
d designated router address/interface ID
i Network : [V][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]]/376
NextHop : 193.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [V][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]]/376
NextHop : 194.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [T4][O][I0x0][N[c100][b193.1.1.1][a0.0.0.0][r193.1.1.1]][P[o0x1][p193.1.1.0/24]]/480
NextHop : 193.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
i Network : [T4][O][I0x0][N[c100][b194.1.1.1][a0.0.0.0][r194.1.1.1]][P[o0x1][p194.1.1.0/24]]/480
NextHop : 194.1.1.1 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED :
Path/Ogn: i
可以看出,Router A從Router C和Router D 學到了LS信息。
通過配置6PE實現利用MPLS技術跨越運營商的IPv4網絡連接隔離的兩個IPv6用戶網絡。其中:
· 運營商網絡內部采用OSPF作為IGP路由協議。
· PE 1和PE 2為運營商網絡的邊緣設備,PE 1和PE 2之間建立IPv4 IBGP連接。
· CE 1和CE 2為IPv6用戶網絡的邊緣設備,用戶網絡通過該設備接入運營商網絡。
· CE與PE之間配置IPv6靜態路由,以指導IPv6報文的轉發。
圖4-3 6PE配置組網圖
(1) 配置各接口的IPv6地址及IPv4地址(略)
(2) 配置PE 1
# 全局使能LDP能力,並配置LSP觸發策略。
<PE1> system-view
[PE1] mpls lsr-id 2.2.2.2
[PE1] mpls ldp
[PE1-ldp] lsp-trigger all
[PE1-ldp] quit
# 在接口GigabitEthernet0/0/2上使能MPLS和LDP能力。
[PE1] interface gigabitethernet 0/0/2
[PE1-GigabitEthernet0/0/2] mpls enable
[PE1-GigabitEthernet0/0/2] mpls ldp enable
[PE1-GigabitEthernet0/0/2] quit
# 配置IBGP,使能對等體的6PE能力,並引入IPv6的直連和靜態路由。
[PE1] bgp 65100
[PE1-bgp-default] router-id 2.2.2.2
[PE1-bgp-default] peer 3.3.3.3 as-number 65100
[PE1-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[PE1-bgp-default] address-family ipv6
[PE1-bgp-default-ipv6] import-route direct
[PE1-bgp-default-ipv6] import-route static
[PE1-bgp-default-ipv6] peer 3.3.3.3 enable
[PE1-bgp-default-ipv6] peer 3.3.3.3 label-route-capability
[PE1-bgp-default-ipv6] quit
[PE1-bgp-default] quit
# 配置到CE 1的靜態路由。
[PE1] ipv6 route-static 1::1 128 10::1
# 配置OSPF,實現運營商網絡內部互通。
[PE1] ospf
[PE1-ospf-1] area 0
[PE1-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255
[PE1-ospf-1-area-0.0.0.0] quit
[PE1-ospf-1] quit
(3) 配置PE 2
# 全局使能LDP能力,並配置LSP觸發策略。
<PE2> system-view
[PE2] mpls lsr-id 3.3.3.3
[PE2] mpls ldp
[PE2-mpls-ldp] lsp-trigger all
[PE2-mpls-ldp] quit
# 在接口GigabitEthernet0/0/2上使能MPLS和LDP能力。
[PE2] interface gigabitethernet 0/0/2
[PE2-GigabitEthernet0/0/2] mpls enable
[PE2-GigabitEthernet0/0/2] mpls ldp enable
[PE2-GigabitEthernet0/0/2] quit
# 配置IBGP,使能對等體的6PE能力,並引入IPv6的直連和靜態路由。
[PE2] bgp 65100
[PE2-bgp-default] router-id 3.3.3.3
[PE2-bgp-default] peer 2.2.2.2 as-number 65100
[PE2-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[PE2-bgp-default] address-family ipv6
[PE2-bgp-default-ipv6] import-route direct
[PE2-bgp-default-ipv6] import-route static
[PE2-bgp-default-ipv6] peer 2.2.2.2 enable
[PE2-bgp-default-ipv6] peer 2.2.2.2 label-route-capability
[PE2-bgp-default-ipv6] quit
[PE2-bgp-default] quit
# 配置到CE 2的靜態路由。
[PE2] ipv6 route-static 4::4 128 20::1
# 配置OSPF,實現運營商內部互通。
[PE2] ospf
[PE2-ospf-1] area 0
[PE2-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 1.1.0.0 0.0.255.255
[PE2-ospf-1-area-0.0.0.0] quit
[PE2-ospf-1] quit
(4) 配置CE 1
# 配置靜態路由,缺省下一跳為PE 1。
<CE1> system-view
[CE1] ipv6 route-static :: 0 10::2
(5) 配置CE 2
# 配置靜態路由,缺省下一跳為PE 2。
<CE2> system-view
[CE2] ipv6 route-static :: 0 20::2
# 顯示PE 1上的IPv6 BGP路由信息。可以看到PE 1上存在到達兩個IPv6用戶網絡的路由。
[PE1] display bgp routing-table ipv6
Total number of routes: 5
BGP local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a – additional-path
Origin: i - IGP, e - EGP, ? - incomplete
* > Network : 1::1 PrefixLen : 128
NextHop : 10::1 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* >i Network : 4::4 PrefixLen : 128
NextHop : ::FFFF:3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : 1279
MED : 0
Path/Ogn: ?
* > Network : 10:: PrefixLen : 64
NextHop : :: LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* > Network : 10::2 PrefixLen : 128
NextHop : ::1 LocPrf :
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: ?
* >i Network : 20:: PrefixLen : 64
NextHop : ::FFFF:3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : 1278
MED : 0
Path/Ogn: ?
# CE 1可以ping通CE 2的IPv6地址(Loopback接口地址4::4)。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!