本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本檔案介紹五個邊界閘道通訊協定(BGP)個案研究。
本文件沒有特定需求。
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
RFC 1771 定義的BGP允許您在自治系統(AS)之間建立無環路的域間路由。AS是一組路由器,受單一技術管理。AS中的路由器可以使用多個內部網關協定(IGP)來交換AS中的路由資訊。路由器可以使用外部網關協定在AS外部路由資料包。
BGP在連線埠179上使用TCP作為傳輸通訊協定。兩台BGP路由器在彼此之間形成TCP連線。這些路由器是對等路由器。對等路由器交換消息以開啟並確認連線引數。
BGP路由器交換網路可達性資訊。此資訊主要表示路由到達目的網路必須採用的完整路徑。路徑是BGP AS編號。此資訊有助於構建無環的AS圖。該圖還顯示了應用路由策略的位置,以便對路由行為實施一些限制。
形成TCP連線以交換BGP路由資訊的任意兩台路由器是「對等體」或「鄰居」。BGP對等體最初交換完整的BGP路由表。進行此交換後,對等體會隨路由表的變化傳送增量更新。BGP保留BGP表的版本號。所有BGP對等體的版本號相同。每當BGP使用路由資訊更新表時,版本號都會更改。傳送keepalive資料包可以確保BGP對等體之間的連線處於活動狀態。通知資料包因錯誤或特殊情況而發出。
如果AS有多個BGP揚聲器,則AS可以充當其他AS的中轉服務。如本節的下一圖所示,AS200是AS100和AS300的傳輸AS。
為了將資訊傳送到外部AS,必須確保網路的可達性。為確保網路可達性,將執行以下過程:
AS內路由器之間的內部BGP(iBGP)對等
將BGP資訊重新分發到在AS中運行的IGP
當BGP在屬於兩個不同AS的路由器之間運行時,這稱為外部BGP(eBGP)。當BGP在同一AS中的路由器之間運行時,稱為iBGP。
完成以下步驟即可啟用和設定BGP。
假設您要有兩個路由器(RTA和RTB)通過BGP進行通訊。在第一個示例中,RTA和RTB位於不同的AS中。在第二個示例中,兩台路由器屬於同一個AS。
定義路由器進程以及路由器所屬的AS編號。
發出以下命令以在路由器上啟用BGP:
router bgp <autonomous-system>
RTA#
router bgp 100
RTB#
router bgp 200
這些語句指示RTA運行BGP並屬於AS100。RTB運行BGP並屬於AS200。
定義BGP鄰居。
BGP鄰居構成表示嘗試通過BGP進行通訊的路由器。下一節將介紹此過程。
兩台BGP路由器在彼此之間建立了TCP連線後成為鄰居。TCP連線對於兩個對等路由器開始交換路由更新至關重要。
TCP連線開啟後,路由器會傳送開啟訊息以交換值。路由器交換的值包括AS編號、路由器運行的BGP版本、BGP路由器ID和keepalive保持時間。確認並接受這些值後,將建立鄰居連線。除Established之外的任何狀態都表示兩台路由器沒有成為鄰居,並且路由器無法交換BGP更新。
發出此 neighbor
命令建立TCP連線:
neighbor <ip-address> remote-as <number>
命令中的number是要使用BGP連線的路由器的AS編號。ip-address是直接連線eBGP的下一跳地址。對於iBGP,ip-address是另一台路由器上的任何IP地址。
在中使用的兩個IP地址 neighbor
對等路由器的命令必須能夠相互訪問。檢驗連通性的一種方法是在兩個IP地址之間執行擴展ping。擴展ping會強制ping路由器使用 neighbor
命令指定。路由器必須使用此地址,而不是資料包所來自的介面的IP地址。
如果有任何BGP配置更改,您必須重置鄰居連線以允許新引數生效。 .
clear ip bgp address
註:地址是鄰居地址
clear ip bgp *
此命令清除所有鄰居連線。
預設情況下,BGP會話開始使用BGP版本4,並在必要時向下協商到早期版本。您可以阻止協商並強制路由器用於與鄰居通訊的BGP版本。在路由器配置模式下發出以下命令:
neighbor {ip address | peer-group-name} version <value>
以下是 neighbor
命令配置:
RTA# router bgp 100 neighbor 192.168.129.213 remote-as 200 RTB# router bgp 200 neighbor 192.168.129.212 remote-as 100 neighbor 172.22.1.2 remote-as 200 RTC# router bgp 200 neighbor 172.22.212.1 remote-as 200
在此範例中,RTA和RTB執行eBGP。RTB和RTC運行iBGP。遠端AS編號指向外部或內部AS,代表eBGP或iBGP。此外,eBGP對等體具有直接連線,但iBGP對等體沒有直接連線。iBGP路由器不需要具有直接連線。但是必須有某種IGP運行,允許兩個鄰居相互通訊。
本節提供show ip bgp neighbors 命令所顯示資訊的範例。
註:請特別注意BGP狀態。除「已建立」以外的任何狀態均表示對等體未啟動。 另外,請注意以下事項:
BGP版本,即4
遠程路由器ID
此編號是路由器上的最高IP位址,或是最高的回送介面(若存在)。
表版本
表版本提供表的狀態。每當新資訊進入時,該表都會增加版本。繼續遞增的版本表示存在一些導致路由持續更新的路由翻動。
Router#show ip bgp neighbors BGP neighbor is 192.168.129.213, remote AS 200, external link BGP version 4, remote router ID 172.22.12.1 BGP state = Established, table version = 3, up for 0:10:59 Last read 0:00:29, hold time is 180, keepalive interval is 60 seconds Minimum time between advertisement runs is 30 seconds Received 2828 messages, 0 notifications, 0 in queue Sent 2826 messages, 0 notifications, 0 in queue Connections established 11; dropped 10
iBGP通常使用環回介面定義鄰居,而eBGP通常不使用此介面。通常,使用環回介面確保鄰居的IP地址保持正常運行且獨立於運行正常的硬體。若是eBGP,對等路由器通常會使用直接連線,且環回不適用。
如果您使用中環回介面的IP neighbor
命令,則需要在鄰居路由器上進行一些額外配置。鄰居路由器需要通知BGP使用環回介面而不是物理介面來發起BGP鄰居TCP連線。若要表示回送介面,請發出以下命令:
neighbor <ip-address> update-source <interface>
此範例說明此命令的使用方式:
RTA# router bgp 100 neighbor 10.195.225.11 remote-as 100 neighbor 10.195.225.11 update-source loopback 1
RTB# router bgp 100 neighbor 10.212.1.1 remote-as 100
在本例中,RTA和RTB在AS100內運行iBGP。在 neighbor
命令,RTB使用RTA的環回介面10.212.1.1。在這種情況下,RTA必須強制BGP在TCP鄰居連線中使用環回IP地址作為源。為了強制執行該操作,RTA新增了 update-source interface-type interface-number
因此命令是 neighbor
10.195.225.11 update-source loopback 1
. 此語句強制BGP在BGP與鄰居10.195.225.11通訊時使用環回介面的IP地址。
註:RTA使用RTB的物理介面IP地址10.195.225.11作為鄰居。使用此IP地址是RTB不需要任何特殊配置的原因。有關完整網路場景示例配置,請參閱具有或不具有環回地址的iBGP和eBGP的示例配置。
在某些情況下,思科路由器可以使用不允許直接連線兩個外部對等體的第三方路由器運行eBGP。若要實現連線,可以使用eBGP多重躍點。eBGP多重躍點允許兩個沒有直接連線的外部對等點之間的鄰居連線。多重躍點僅適用於eBGP,不適用於iBGP。此範例說明eBGP多重躍點:
RTA# router bgp 100 neighbor 10.180.225.11 remote-as 300 neighbor 10.180.225.11 ebgp-multihop
RTB# router bgp 300 neighbor 192.168.129.212 remote-as 100
RTA表示沒有直接連線的外部鄰居。RTA需要指示其使用neighbor ebgp-multihop命令。另一方面,RTB表示具有直接連線的鄰居,即192.168.129.212。由於這種直接連線,RTB不需要 neighbor ebgp-multihop
指令。您還必須配置IGP或靜態路由,以允許沒有連線的鄰居相互通訊。
BGP multihop(Load Balancing)一節中的範例顯示如何在並行線路上使用eBGP的情況下使用BGP實現負載平衡。
RTA# int loopback 0 ip address 10.150.1.1 255.255.255.0
router bgp 100 neighbor 172.31.160.10 remote-as 200 neighbor 172.31.160.10 ebgp-multihop neighbor 172.31.160.10 update-source loopback 0 network 172.31.202.2 ip route 172.31.160.0 255.255.0.0 10.1.1.2 ip route 172.31.160.0 255.255.0.0 10.2.2.2
RTB# int loopback 0 ip address 172.31.160.10 255.255.255.0
router bgp 200 neighbor 10.150.1.1 remote-as 100 neighbor 10.150.1.1 update-source loopback 0 neighbor 10.150.1.1 ebgp-multihop network 172.31.160.0 ip route 172.31.202.2 255.255.0.0 10.1.1.1 ip route 172.31.202.2 255.255.0.0 10.2.2.1
此範例說明回送介面的使用, update-source
,和 ebgp-multihop
.本示例是一個解決方法,目的是通過並行串列線路實現兩個eBGP揚聲器之間的負載均衡。在正常情況下,BGP會選擇其中一條線路來傳送資料包,因此不會進行負載均衡。引入環回介面後,eBGP的下一跳就是環回介面。使用靜態路由(即IGP)引入兩條到達目的地的等價路徑。RTA有兩個到達下一跳172.31.160.10的選項:一條路徑通過10.1.1.2,另一條路徑通過10.2.2.2。RTB有相同的選擇。
BGP大量使用路由對映。在BGP環境中,路由對映是一種控制和修改路由資訊的方法。通過定義路由從一個路由協定重分發到另一個路由協定的條件,可以控制和修改路由資訊。或者,路由資訊的控制可在注入和傳出BGP時發生。路由對映的格式如下:
route-map map-tag [[permit | deny] | [sequence-number]]
對映標籤只是您為路由對映提供的名稱。您可以定義同一路由對映的多個例項,或者定義相同的名稱標籤。序列號只是表示新路由對映在已使用相同名稱配置的路由對映清單中的位置。
在此示例中,定義了兩個名為MYMAP的路由對映例項。第一個例項的序列號為10,第二個例項的序列號為20。
route-map MYMAP permit 10(此處是第一組條件。)
route-map MYMAP permit 20(此處為第二組條件。)
將路由對映MYMAP應用於傳入或傳出路由時,通過例項10應用第一組條件。如果不滿足第一組條件,則繼續路由對映的更高例項。
每個路由對映都包含 match
和 set
配置命令。匹配項指定 match
criteria and set指定 set
操作,如果條件為 match
命令執行已滿足。
例如,您可以定義檢查傳出更新的路由對映。如果IP地址10.1.1.1存在匹配項,則該更新的度量設定為5。以下命令說明了示例:
match ip address 10.1.1.1 set metric 5
現在,如果滿足匹配條件並且您擁有 permit
,路由將進行重新分發或控制,如set操作所指定。你從名單中脫穎而出。
如果滿足匹配條件並且您擁有 deny
,則沒有路由的重新分發或控制。你從名單中脫穎而出。
如果匹配條件未滿足,則您有 permit
或 deny
,檢查路由對映的下一個例項。例如,檢查例項20。此下一例項檢查將一直持續,直到您中斷或完成路由對映的所有例項。如果完成清單時沒有匹配項,則路由將為 not accepted nor forwarded
.
在低於Cisco IOS軟體版本11.2的Cisco IOS®軟體版本中,當使用路由對映來過濾BGP更新而不是在通訊協定之間重新分發時,在IP位址上使用match命令時,不能對傳入進行過濾。出站上的過濾器是可接受的。Cisco IOS軟體版本11.2和更新版本沒有此限制。
的相關命令 match
是:
match
as-path
match
community
match
clns
match
interface
match
ip address
match
ip nexthop
match
ip route-source
match
metric
match
route-type
match
tag
的相關命令 set
是:
set as-path
set clns
set automatic-tag
set community
set interface
set default interface
set ip default nexthop
set level
set local-preference
set metric
set metric-type
set nexthop
set origin
set tag
set weight
請檢視一些路由對映示例:
假設RTA和RTB運行路由資訊協定(RIP),而RTA和RTC運行BGP。RTA通過BGP獲取更新並將更新重新分發到RIP。假設RTA希望將度量為2的約172.16.10.0路由和度量為5的所有其他路由重分佈到RTB路由。在這種情況下,您可以使用以下設定:
RTA# router rip network 10.3.0.0 network 10.2.0.0 network 172.31.202.2 passive-interface Serial0 redistribute bgp 100 route-map SETMETRIC router bgp 100 neighbor 10.2.2.3 remote-as 300 network 172.31.202.2 route-map SETMETRIC permit 10 match ip-address 1 set metric 2 route-map SETMETRIC permit 20 set metric 5 access-list 1 permit 172.16.10.0 0.0.255.255
在以下示例中,如果路由與IP地址172.16.10.0匹配,則路由的度量為2。然後,您從路由對映清單中跳出。如果沒有匹配項,則沿路由對映清單繼續操作,這表示其他所有內容都設定為度量5。
注意:請始終詢問「What haps to routs not match any the match statements?(如果不匹配任何匹配語句,路由會發生什麼情況?)」 預設情況下,這些路由會丟棄。
假設在示例1中,您不希望AS100接受有關172.16.10.0的更新。當以IP位址為基準進行匹配時,不能在入站上應用路由對應。因此,必須在RTC上使用出站路由對映:
RTC# router bgp 300 network 172.16.10.0 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map STOPUPDATES out route-map STOPUPDATES permit 10 match ip address 1 access-list 1 deny 172.16.10.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255
現在,您對如何啟動BGP以及如何定義鄰居感到更自在,請檢視如何啟動網路資訊交換。
使用BGP傳送網路資訊的方法有多種。以下各節逐一介紹方法:
網路指令
再分發
靜態路由和重新分發
的格式 network
命令為:
network <network-number> mask <network-mask>
其 network
命令控制來自此框的網路。此概念與熟悉的內部閘道路由通訊協定(IGRP)和RIP的組態不同。使用此命令,您不會嘗試在特定介面上運行BGP。相反,您試圖向BGP指示BGP必須源自此盒的網路。此命令使用遮罩部分,因為BGP版本4(BGP4)可以處理子網劃分和超網劃分。最多200個條目 network
命令是可接受的。
其 network
如果路由器知道您嘗試通告的網路(無論是已連線、靜態還是動態獲知),該命令將起作用。
network 命令的示例為:
RTA# router bgp 1 network 192.168.213.0 mask 255.255.0.0
ip route 192.168.213.0 255.255.0.0 null 0
此範例表示路由器A為192.168.213.0/16產生網路專案。/16表示您使用C類地址的超網並通告前兩個八位組或前16位。
注意:您需要靜態路由來使路由器生成192.168.213.0,因為靜態路由在路由表中放置了匹配條目。
其 network
命令是通過BGP通告網路的一種方式。另一種方法是將IGP重新分發到BGP。IGP可以是IGRP、開放最短路徑優先(OSPF)協定、RIP、增強型內部網關路由協定(EIGRP)或其他協定。這種重分發看起來很可怕,因為現在您將所有內部路由轉儲到BGP中;其中一些路由可以通過BGP獲知,您無需再次傳送它們。過濾時請小心,確保傳送到要通告的僅Internet路由,而不是傳送到所有路由。以下提供範例。
RTA宣佈192.168.92.213,RTC宣佈172.22.0.0。檢視RTC配置:
如果您發出 network
指令,您可以:
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 network 172.22.0.0 mask 255.255.0.0 !--- This limits the networks that your AS originates to 172.22.0.0.
如果您使用重分發,則具有以下功能:
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 redistribute eigrp 10 !--- EIGRP injects 192.168.92.213 again into BGP.
此重分發會導致AS生成192.168.92.213。您不是192.168.92.213的源;AS100是源。因此,您必須使用過濾器來阻止源被AS從網路中移除。正確的配置是:
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 neighbor 10.1.1.1 distribute-list 1 out redistribute eigrp 10 access-list 1 permit 172.22.0.0 0.0.255.255
您使用 access-list
命令控制源自AS200的網路。
將OSPF重分發到BGP與將其他IGP重分發略有不同。簡單的問題 redistribute ospf 1
在 router bgp
不起作用。特定關鍵字,例如 internal
中, external
,和 nssa-external
重分發各自路由所必需的。有關詳細資訊,請參閱瞭解OSPF路由重分配到BGP。
您始終可以使用靜態路由來發起網路或子網。唯一的區別是BGP認為這些路由的來源不完整或未知。您可以實現Redistribution部分中的示例通過以下方式實現的相同結果:
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 redistribute static ip route 172.22.0.0 255.255.255.0 null0
其 null0
interface表示忽略資料包。因此,如果您取得封包,且有比172.22.0.0(已存在)更特定的match,則路由器會將封包傳送到特定的match。否則,路由器會捨棄封包。此方法是一種通告超網的一種好方法。
本文討論如何使用不同的方法從AS發出路由。請記住,這些路由是除BGP通過內部或外部鄰居獲知的其他BGP路由之外生成的。BGP將BGP從一個對等體獲取的資訊傳遞給其他對等體。不同之處在於, network
命令、重分發或靜態指示您的AS是這些網路的來源。
再分佈總是將BGP注入IGP的方法。
以下是範例:
RTA# router bgp 100 neighbor 10.150.20.2 remote-as 300 network 172.31.202.2 RTB# router bgp 200 neighbor 10.160.20.2 remote-as 300 network 172.31.160.0 RTC# router bgp 300 neighbor 10.150.20.1 remote-as 100 neighbor 10.160.20.21 remote-as 200 network 170.10.00
註:在RTC中不需要網路172.31.202.2或網路172.31.160.0,除非您希望RTC生成這些網路,並在這些網路從AS100和AS200傳入時將其傳遞出去。同樣,不同之處在於network命令會為這些相同的網路新增額外通告,這表明AS300也是這些路由的起源。
注意:請記住,BGP不接受源自其自身AS的更新。這種拒絕確保了無環路的域間拓撲。
例如,假設本節中的示例中的AS200具有到AS100的直接BGP連線。RTA生成路由172.31.202.2並將該路由傳送到AS300。然後,RTC將此路由傳遞到AS200,並將源保留為AS100。RTB將172.31.202.2傳遞到AS100,而原始源仍為AS100。RTA注意到更新來自自己的AS,並忽略更新。
如果AS想充當其它AS的傳輸系統,則使用iBGP。如果通過eBGP學習,可以執行相同操作,重新分發到IGP,然後重新分發到另一個AS。但iBGP提供了在AS內交換資訊的更靈活和更有效的方法。例如,iBGP提供了使用本地首選項控制AS中的最佳出口點的方法。Local Preference Attribute部分提供了有關本地首選項的詳細資訊。
RTA# router bgp 100 neighbor 192.168.10.50 remote-as 100 neighbor 172.31.20.2 remote-as 300 network 172.31.202.2 RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100 neighbor 172.16.40.1 remote-as 400 network 192.168.10.150 RTC# router bgp 400 neighbor 172.16.40.2 remote-as 100 network 172.16.0.0
注意:請記住,當BGP發言人收到來自其自身AS(iBGP)中的其他BGP發言人的更新時,收到更新的BGP發言人不會將該資訊重新分發到其自身AS中的其他BGP發言人。收到更新的BGP揚聲器將資訊重新分發到其AS之外的其他BGP揚聲器。因此,在AS內保持iBGP揚聲器之間的完全網狀。
RTA和RTB運行iBGP。RTA和RTD也執行iBGP。從RTB到RTA的BGP更新會傳輸到AS外部的RTE。更新不會傳輸到AS中的RTD。因此,請在RTB和RTD之間建立iBGP對等,以便不中斷更新流。
BGP收到來自不同自治系統的不同目的地的更新後,協定必須選擇到達特定目的地的路徑。BGP只會選擇單一路徑來到達特定目的地。
BGP根據以下不同情況做出決策 attributes
,例如下一跳、管理權重、本地優先順序、路由來源、路徑長度、來原始碼、度量和其他屬性。
BGP總是將最佳路徑傳播到鄰居。如需詳細資訊,請參閱BGP最佳路徑選取演演算法。
下一節將介紹這些屬性及其用途。
每當路由更新通過AS時,該AS編號會加在該更新之前。AS_PATH屬性實際上是路由為到達目的地而經過的AS編號清單。AS_SET是已遍歷的所有AS中的有序數學集{}。本文檔的CIDR示例2(as-set)部分提供了一個AS_SET示例。
在本節的示例中,RTB在AS200中通告網路192.168.190.0。當該路由遍歷AS300時,RTC會將自己的AS編號附加到網路。當192.168.190.0到達RTA時,網路連線兩個AS編號:第一個200,然後是300。對於RTA,到達192.168.190.0的路徑為(300, 200)。
相同過程適用於172.16.10.0和192.168.180.10。RTB必須採用路徑(300、100);RTB遍歷AS300和AS100才能到達172.16.10.0。RTC必須遍歷路徑(200)才能到達192.168.190.0,且必須遍歷路徑(100)才能到達172.16.10.0。
原點是定義路徑資訊原點的必需屬性。原始屬性可以採用三個值:
IGP — 網路層可達性資訊(NLRI)位於起始的AS內部。通常當您發出 bgp network
指令。BGP表中的Aniin表示IGP。
EGP — 通過外部網關協定(EGP)獲取NLRI。BGP表中的另一個表示EGP。
INCOMPLETE - NLRI未知或通過其他方法獲知。當您將路由從其他路由協定重分發到BGP並且路由來源不完整時,通常會發生不完整。BGP表中的?表示INCOMPLETE。
RTA# router bgp 100 neighbor 192.168.10.50 remote-as 100 neighbor 172.31.20.2 remote-as 300 network 172.31.202.2 redistribute static ip route 192.168.190.0 255.255.0.0 null0 RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100 network 192.168.10.150
RTE# router bgp 300 neighbor 172.31.20.1 remote-as 100 network 172.16.10.0
RTA通過300 i達到172.16.10.0。「300 i」表示下一個AS路徑為300,路由來源為IGP。RTA也通過i到達192.168.10.150。此「i」表示條目在同一AS中,來源為IGP。RTE通過100 i到達172.31.202.2。「100 i」表示下一個AS為100,來源為IGP。RTE也可通過100?到達192.168.190.0。「100 ?」表示下一個AS為100,來源不完整,並且來自靜態路由。
BGP下一躍點屬性是用於到達特定目的地的下一躍點IP地址。
對於eBGP,下一跳始終是鄰居的IP地址, neighbor
命令指定。在本節的範例中,RTC將172.16.10.0通告給RTA,告知下一個躍點為172.31.20.2。RTA向RTC通告172.31.202.2,下一跳為172.31.20.1。對於iBGP,協定規定eBGP通告的下一跳必須攜帶到iBGP中。由於此規則,RTA會使用下一躍點172.31.20.2將172.16.10.0通告給其iBGP對等體RTB。根據RTB,到達172.16.10.0的下一跳是172.31.20.2,而非10.150.10.30。
確保RTB可以通過IGP到達172.31.20.2。否則,由於無法存取下一個躍點位址,RTB會捨棄目的地為172.16.10.0的封包。例如,如果RTB運行iGRP,則您也可以在RTA網路172.16.10.0上運行iGRP。您希望在指向RTC的鏈路上將iGRP設定為被動,以便僅交換BGP。
RTA# router bgp 100 neighbor 172.31.20.2 remote-as 300 neighbor 192.168.150.10 remote-as 100 network 172.31.202.2
RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100
RTC# router bgp 300 neighbor 172.31.20.1 remote-as 100 network 172.16.10.0
註:RTC向RTA通告172.16.10.0,下一跳等於172.31.20.2。
註:RTA向RTB通告172.16.10.0,下一跳等於172.31.20.2。eBGP下一躍點在iBGP中傳輸。
處理多路訪問和非廣播多路訪問(NBMA)網路時要特別注意。「BGP下一跳(多路訪問網路)」和「BGP下一跳(NBMA)」部分提供了更多詳細資訊。
此範例顯示下一個躍點在多路存取網路(例如乙太網路)上的運作方式。
假設AS300中的RTC和RTD運行OSPF。RTC使用RTA運行BGP。RTC可以通過172.16.20.3到達網路192.168.180.20。當RTC向RTA傳送有關192.168.180.20的BGP更新時,RTC使用下一躍點172.16.20.3。RTC不使用自己的IP地址172.31.20.2。RTC使用此地址,因為RTA、RTC和RTD之間的網路是多路訪問網路。RTA使用RTD作為到達192.168.180.20的下一躍點,比通過RTC的額外躍點更明智。
註:RTC使用下一跳172.16.20.3向RTA通告192.168.180.20。
如果對RTA、RTC和RTD的通用介質不是多路訪問,而是NBMA,則會發生進一步的併發症。
公共介質在圖中顯示為雲。如果常用介質是幀中繼或任何NBMA雲,則其行為就如同通過乙太網連線。RTC將192.168.180.20通告給RTA,下一跳為172.16.20.3。
問題在於RTA沒有到RTD的直接永久虛擬電路(PVC),因此無法到達下一躍點。在這種情況下,路由失敗。
其 next-hop-self
指揮部會補救此情況。
對於下一躍點的情況(如BGP下一躍點(NBMA)示例),您可以使用 next-hop-self
指令。語法為:
neighbor {ip-address | peer-group-name} next-hop-self
其 next-hop-self
命令可迫使BGP使用特定的IP位址作為下一躍點。
在BGP下一躍點(NBMA)範例中,此組態會解決以下問題:
RTC# router bgp 300 neighbor 172.31.20.1 remote-as 100 neighbor 172.31.20.1 next-hop-self
RTC通告192.168.180.20,下一跳等於172.31.20.2。
在上圖中,RTA和RTC運行eBGP。RTB和RTC運行eBGP。RTA和RTB運行某種IGP,可以是RIP、IGRP或另一種協定。根據定義,eBGP更新的距離為20,小於IGP距離。預設距離為:
RIP為120
IGRP為100
EIGRP為90
OSPF為110
RTA通過兩個路由協定接收有關172.31.160.0的更新:
距離為20的eBGP
距離大於20的IGP
預設情況下,BGP具有以下距離:
外部距離(External distance)- 20
內部距離(Internal distance)- 200
本地距離(Local distance)- 200
但是您可以使用 distance
命令更改預設距離:
distance bgp <external-distance>
由於距離較短,RTA會通過RTC選擇eBGP。
如果您希望RTA通過RTB(IGP)瞭解有關172.31.160.0的資訊,則有兩個選項:
更改eBGP的外部距離或IGP距離。
註:不建議進行此更改。
使用BGP後門。
BGP後門使IGP路由成為首選路由。
已配置的網路是您希望通過IGP訪問的網路。對於BGP,此網路與本地分配的網路得到相同的處理,不同之處在於BGP更新不會通告此網路。
RTA# router eigrp 10 network 172.31.202.2 router bgp 100 neighbor 10.2.2.1 remote-as 300 network 172.31.160.0 backdoor
網路172.31.160.0被視為本地條目,但不會作為正常網路條目進行通告。
RTA通過EIGRP從RTB獲知172.31.160.0,距離為90。RTA還通過eBGP從RTC獲取距離20的地址。通常eBGP是優先使用協定,但由於network backdoor 命令的原因,EIGRP是優先使用協定。
在討論同步之前,請看一下此情境。AS300中的RTC傳送有關172.16.10.0的更新。RTA和RTB運行iBGP,因此RTB獲取更新並通過下一躍點10.2.2.1到達172.16.10.0。請記住,下一跳是通過iBGP傳送的。為了到達下一個躍點,RTB必須將流量傳送到RTE。
假設RTA沒有將網路172.16.10.0重分發到IGP。此時,RTE甚至不知道172.16.10.0存在。
如果RTB開始向AS400通告RTB可以達到172.16.10.0,則從RTD到RTB且目標172.16.10.0的流量將進入RTE並在RTE處丟棄。
同步規定,如果您的AS將流量從另一個AS傳遞到第三個AS,則BGP不得在AS中的所有路由器通過IGP獲知該路由之前通告路由。BGP會等待,直到IGP在AS中傳播路由。接著,BGP會將此路由通告給外部對等點。
在本節的示例中,RTB等待通過IGP收聽172.16.10.0。接著,RTB開始將更新傳送到RTD。如果在RTB中新增指向172.16.10.0的靜態路由,可以讓RTB認為IGP已傳播了資訊。確保其它路由器可以到達172.16.10.0。
在某些情況下,您不需要同步。如果沒有將來自其他AS的流量通過AS,則可以禁用同步。如果AS中的所有路由器都運行BGP,您還可以禁用同步。禁用此功能可讓您在IGP中承載更少的路由,並使BGP更快速地收斂。
同步的停用不是自動的。如果AS中的所有路由器都運行BGP,而您根本沒有運行IGP,則路由器無法知道。路由器將路由傳送到外部對等體之前,路由器會無限期等待有關特定路由的IGP更新。在這種情況下,您必須手動禁用同步,以便路由可以正常工作:
router bgp 100 no synchronization
注意:請確保發出clear ip bgp address命令以重置會話。
RTB# router bgp 100 network 172.31.202.2 neighbor 10.1.1.2 remote-as 400 neighbor 10.3.3.3 remote-as 100 no synchronization !--- RTB puts 172.16.10.0 in its IP routing table and advertises the network
!--- to RTD, even if RTB does not have an IGP path to 172.16.10.0. RTD# router bgp 400 neighbor 10.1.1.1 remote-as 100 network 172.16.0.0 RTA# router bgp 100 network 172.31.202.2 neighbor 10.3.3.4 remote-as 100
weight屬性是思科定義的屬性。此屬性使用權重來選擇最佳路徑。權重在本地分配給路由器。該值只對特定路由器有意義。該值不會通過任何路由更新傳播或承載。權重可以是0到65,535之間的一個數字。預設情況下,路由器發起的路徑具有32,768的權重,而其他路徑具有0的權重。
當存在多條到達同一目的地的路由時,具有更高權重值的路由具有優先權。請看本節中的示例。RTA已從AS4獲知網路172.16.0.0。RTA將更新傳播到RTC。RTB還從AS4瞭解網路172.16.0.0。RTB將更新傳播到RTC。現在,RTC有兩種方法可以到達172.16.0.0,並且必須決定該走哪條路。如果設定來自RTA的RTC更新的權重,使其大於來自RTB的更新的權重,則可以強制RTC使用RTA作為下一跳來達到172.16.0.0。多種方法可以實現此權重設定:
使用neighbor命令。
neighbor {ip-address|peer-group} weight <weight>
使用AS_PATH訪問清單。
ip as-path access-list <access-list-number>{permit | deny} <as-regular-expression>
neighbor <ip-address>filter-list <access-list-number>weight <weight>
注意:在某些情況下,可能只有很少命令在某些軟體版本中不可用。
使用路由對映。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 weight 200 !--- The route to 172.16.0.0 from RTA has a 200 weight. neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 weight 100 !--- The route to 172.16.0.0 from RTB has a 100 weight.
權重值較高的RTA優先作為下一跳。
使用IP AS_PATH和過濾器清單可以達到相同的結果。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 filter-list 5 weight 200 neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 filter-list 6 weight 100 ... ip as-path access-list 5 permit ^100$ !--- This only permits path 100. ip as-path access-list 6 permit ^200$ ...
使用路由對映也可以獲得相同的結果。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-map setweightin in neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 route-map setweightin in ... ip as-path access-list 5 permit ^100$ ... route-map setweightin permit 10 match as-path 5 set weight 200 !--- Anything that applies to access list 5, such as packets from AS100, has weight 200. route-map setweightin permit 20 set weight 100 !--- Anything else has weight 100.
注意:您可以修改權重以優先使用將IGP路徑用作備份的MPLS VPN BGP路徑。
本地優先順序是指AS哪條路徑優先退出AS以到達特定網路。具有更高區域性優先順序的路徑更優先使用。本地優先順序的預設值為100。
與權重屬性(只與本地路由器相關)不同,本地優先順序屬性是路由器在同一AS中交換的屬性。
您可以使用bgp default local-preference value 命令來設定本地首選項。您還可以使用路由對映設定本地首選項,如本節中的示例所示:
註:必須執行軟重設(即清除路由器上的bgp進程),才能將變更考慮在內。若要清除bgp進程,請使用 clear ip bgp [soft][in/out]
其中soft的命令表示軟重置且不會斷開會話,並且[in/out]指定入站或出站配置。如果未指定in/out,則入站和出站會話都會重置。
bgp default local-preference 命令設定從路由器發出、前往同一AS中的對等體的更新上的本地首選項。在本節的圖表中,AS256從組織的兩個不同方面接收有關172.16.10.0的更新。本地首選項可幫助您確定以何種方式退出AS256以便到達該網路。假設RTD是出口點優先選項。此配置將本地優先順序設定為來自AS300到200的更新以及來自AS100到150的更新:
RTC# router bgp 256 neighbor 10.1.1.1 remote-as 100 neighbor 10.213.11.2 remote-as 256 bgp default local-preference 150 RTD# router bgp 256 neighbor 10.3.3.4 remote-as 300 neighbor 10.213.11.1 remote-as 256 bgp default local-preference 200
在此配置中,RTC將所有更新的本地優先順序設定為150。同一RTD將所有更新的本地優先順序設定為200。在AS256內交換了本地優先順序。因此,當更新來自AS300而不是AS100時,RTC和RTD都意識到網路172.16.10.0具有更高的本地優先權。AS256中將該網路作為目的地的所有流量都以RTD作為出口點進行傳輸。
路由對映的使用提供了更大的靈活性。在本節的範例中,當更新到達RTD時,RTD接收的所有更新都以本機優先選項200標籤。來自AS34的更新也會使用本地首選項200進行標籤。可能不需要此標籤。因此,您可以使用路由對映指定需要用特定本地首選項標籤的特定更新。以下是範例:
RTD# router bgp 256 neighbor 10.3.3.4 remote-as 300 neighbor 10.3.3.4 route-map setlocalin in neighbor 10.213.11.1 remote-as 256 .... ip as-path access-list 7 permit ^300$ ... route-map setlocalin permit 10 match as-path 7 set local-preference 200 route-map setlocalin permit 20 set local-preference 150
使用此配置,來自AS300的任何更新都具有本地優先順序200。任何其他更新(例如來自AS34的更新)的值為150。
metric屬性的名稱為MULTI_EXIT_DISCRIMINATOR、MED(BGP4)或INTER_AS(BGP3)。該屬性是提示外部鄰居進入AS的路徑首選項。當該AS有多個入口點時,該屬性提供了一種動態方式以影響另一個AS到達特定路由的方式。更優選更低的度量值。
與本地優先順序不同,度量在AS之間交換。度量被攜帶到AS中,但不離開AS。當更新使用特定度量進入AS時,該度量用於在AS內做出決策。當同一更新傳遞到第三個AS時,該度量將返回到0。本節中的圖表顯示了度量集。度量預設值為0。
除非路由器收到其他方向,否則路由器會比較來自同一AS中鄰居的路徑的度量。為了讓路由器比較來自不同AS的鄰居的度量,需要在路由器上發出特殊配置命令bgp always-compare-med 。
註:有兩個BGP配置命令可影響基於多出口鑑別器(MED)的路徑選取。命令是bgp deterministic-med命令和bgp always-compare-med命令。bgp deterministic-med命令的一個問題可確保當不同的對等體在同一個AS中通告時,在路由選擇時比較MED變數。bgp always-compare-med命令的問題可確保比較來自不同AS中鄰居的路徑的MED。當多個服務提供商或企業商定如何設定MED的統一策略時,bgp always-compare-med命令非常有用。請參閱BGP Deterministic-Med命令與BGP Always-Compare-Med命令之間的區別,瞭解這些命令如何影響BGP路徑選擇。
在本節的圖表中,AS100透過三個不同的路由器(RTC、RTD和RTB)取得網路192.168.180.10的相關資訊。RTC和RTD在AS300中,RTB在AS400中。
在本範例中,會略過使用bgp bestpath as-path ignore 指令對RTA進行AS-Path比較。它配置為強制BGP進入下一個屬性以進行路由比較(在此例中為metric或MED)。如果省略此命令,BGP可以從路由器RTC安裝具有最短AS-Path的路由192.168.180.10。
假定已將來自RTC的度量設定為120,將來自RTD的度量設定為200,將來自RTB的度量設定為50。預設情況下,路由器會比較來自同一AS中鄰居的度量。因此,RTA只能比較來自RTC的度量與來自RTD的度量。RTA選擇RTC作為最佳下一跳,因為120小於200。當RTA從RTB獲取度量為50的更新時,RTA無法將該度量與120進行比較,因為RTC和RTB位於不同的AS中。RTA必須基於其他某些屬性進行選擇。
為了強制RTA比較度量,必須在RTA上發出bgp always-compare-med 命令。這些配置說明了此過程:
RTA# router bgp 100 neighbor 10.2.2.1 remote-as 300 neighbor 10.3.3.3 remote-as 300 neighbor 10.4.4.3 remote-as 400 bgp bestpath as-path ignore RTC# router bgp 300 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map setmetricout out neighbor 10.1.1.2 remote-as 300 route-map setmetricout permit 10 set metric 120 RTD# router bgp 300 neighbor 10.3.3.2 remote-as 100 neighbor 10.3.3.2 route-map setmetricout out neighbor 10.1.1.1 remote-as 300 route-map setmetricout permit 10 set metric 200 RTB# router bgp 400 neighbor 10.4.4.4 remote-as 100 neighbor 10.4.4.4 route-map setmetricout out route-map setmetricout permit 10 set metric 50
在這些配置中,RTA選擇RTC作為下一跳,並考慮所有其他屬性都相同這一事實。為了將RTB包括在度量比較中,必須以下列方式配置RTA:
RTA# router bgp 100 neighbor 2.2.21 remote-as 300 neighbor 10.3.3.3 remote-as 300 neighbor 10.4.4.3 remote-as 400 bgp always-compare-med
在本例中,RTA選擇RTB作為到達網路192.168.180.10的最佳下一跳。
如果您發出default-metricnumber 命令,則也可以在將路由重分配到BGP的過程中設置度量。
在本節的示例中,假設RTB通過靜態向AS100注入網路。以下是組態:
RTB# router bgp 400 redistribute static default-metric 50 ip route 192.168.180.10 255.255.0.0 null 0 !--- This causes RTB to send out 192.168.180.10 with a metric of 50.
community屬性是一個傳遞的可選屬性,範圍為0到4,294,967,200。community屬性是對特定社群中的目標進行分組並應用與這些社群匹配的路由決策的方法。路由決策包括接受、優先和重新分配。
您可以使用路由對映來設定社群屬性。路由對映set 命令具有以下語法:
set community community-number [additive] [well-known-community]
在此命令中使用的幾個預定義的公認團體包括:
no-export — 不通告給eBGP對等體。將此路由保留在AS內。
no-advertise — 不將此路由通告給任何對等體、內部或外部。
internet — 向Internet社群通告此路由。任何路由器都屬於此社群。
local-as — 用於聯盟方案以防止在本地AS外部傳輸資料包。
以下是設定社群的路由對映的兩個範例:
route-map communitymap match ip address 1 set community no-advertise
或
route-map setcommunity match as-path 1 set community 200 additive
如果不設定additive關鍵字,則200會取代任何已存在的舊社群。如果您使用關鍵字additive,則會將關鍵字200新增到社群中。即使設定了community屬性,預設情況下,該屬性不會傳輸到鄰居。若要將屬性傳送到鄰居,必須使用以下命令:
neighbor {ip-address | peer-group-name} send-community
以下是範例:
RTA# router bgp 100 neighbor 10.3.3.3 remote-as 300 neighbor 10.3.3.3 send-community neighbor 10.3.3.3 route-map setcommunity out
在Cisco IOS軟體版本12.0和更新版本中,可以三種不同格式設定社群:十進位、十六進位制和AA:NN。預設情況下,Cisco IOS軟體使用較舊的十進位制格式。若要在AA:NN中設定和顯示,請發出ip bgp-community new-formatglobal configuration
指令。AA:NN的第一部分代表AS編號,第二部分代表2位元組編號。
以下是範例:
在全域性配置中沒有ip bgp-community new-format命令,show ip bgp 10.6.0.0命令的問題將以十進位制格式顯示社群屬性值。在本例中,community屬性值顯示為6553620。
Router#show ip bgp 10.6.0.0 BGP routing table entry for 10.6.0.0/8, version 7 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 1 10.10.10.1 from 10.10.10.1 (10.255.255.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 6553620
現在,在此路由器上全域性發出ip bgp-community new-format命令。
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip bgp-community new-format Router(config)#exit
使用ip bgp-community new-formatglobal configuration命令,團體值以AA:NN格式顯示。在以下範例中,show ip bgp 10.6.0.0命令的輸出中,該值顯示為100:20:
Router#show ip bgp 10.6.0.0 BGP routing table entry for 10.6.0.0/8, version 9 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 1 10.10.10.1 from 10.10.10.1 (10.255.255.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 100:20
許多不同的過濾方法允許您控制BGP更新的傳送和接收。您可以以路由資訊為基礎,或者以路徑資訊或群體為基礎,過濾BGP更新。所有方法都取得了相同的效果。根據特定網路配置,選擇一種方法而不是另一種方法。
為了限制路由器獲知或通告的路由資訊,您可以使用路由更新來過濾發往或來自特定鄰居的BGP。您可以定義訪問清單,並將訪問清單應用於鄰居的更新或來自鄰居的更新。在路由器組態模式下發出以下命令:
neighbor {ip-address | peer-group-name} distribute-list access-list-number {in | out}
在本例中,RTB建立網路172.31.160.0並將更新傳送到RTC。如果RTC要停止將更新傳播到AS100,您必須定義訪問清單以過濾這些更新,並在與RTA通訊期間應用訪問清單:
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 distribute-list 1 out access-list 1 deny 172.31.160.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255 !--- Filter out all routing updates about 160.10.x.x.
處理可能導致某些衝突的超網時,訪問清單的使用會有些棘手。
在本節的示例中,假設RTB具有不同的子網160.10.x.x。您的目標是過濾更新並僅通告192.168.160.0/8。
註: /8表示法表示使用8位子網掩碼,從IP地址最左邊開始。此地址相當於192.168.160.0 255.0.0.0。
指令 access-list 1 permit 192.168.160.0 0.255.255.25
5
允許192.168.160.0/8、192.168.160.0/9等。若要將更新限製為僅192.168.160.0/8,必須使用以下格式的擴展訪問清單:
access-list 101 permit ip 192.168.160.0 0.255.255.255 255.0.0.0 0.0.0.0.
此清單僅允許192.168.160.0/8。
有關如何從BGP對等點過濾網路的示例配置,請參閱從BGP對等點阻止一個或多個網路。此方法將distribute-list命令與標準型和延伸型存取控制清單(ACL)搭配使用,並能夠過濾首碼清單。
您還可以篩選路徑。
您可以使用BGP AS路徑資訊,指定傳入和傳出更新的存取清單。在本節的圖表中,您可以阻止有關172.31.160.0的更新,使它們不轉到AS100。要阻止更新,請在RTC上定義一個訪問清單,阻止將源自AS200的任何更新傳輸到AS100。發出以下命令:
ip as-path access-list access-list-number {permit | deny} as-regular-expression
neighbor {ip-address | peer-group-name} filter-list access-list-number {in | out}
此示例停止將有關172.31.160.0的更新傳送到RTA:
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 filter-list 1 out !--- The 1 is the access list number below. ip as-path access-list 1 deny ^200$ ip as-path access-list 1 permit .*
其 access-list 1
此示例中的命令強制拒絕包含以200開頭並以200結尾的路徑資訊的任何更新。命令中的^200$是「正規表示式」,其中^表示「starts with」,$表示「end with」。由於RTB傳送有關172.31.160.0的更新,該更新包含從200開始到200結束的路徑資訊,因此這些更新與訪問清單匹配。訪問清單拒絕這些更新。
.*是另一個正規表示式,其中.表示「任何字元」,*表示「該字元的重複」。So.*表示允許傳輸所有其他更新所必需的任何路徑資訊。
如果不使用^200$而使用^200$,會發生什麼情況?如果使用AS400(如本節中的圖表所示),則更新AS400原件具有窗體(200、400)的路徑資訊。在此路徑資訊中,200是第一個,400是最後一個。這些更新與訪問清單^200匹配,因為路徑資訊以200開頭。訪問清單阻止將這些更新傳輸到RTA,這不是要求。
若要檢查是否已實現正確的正規表示式,請發出show ip bgp regexpregular-expression 命令。此命令顯示與正規表示式配置匹配的所有路徑。
本節介紹如何建立正規表示式。
正規表示式是一種與輸入字串匹配的模式。構建正規表示式時,應指定一個輸入必須匹配的字串。對於BGP,請指定包含輸入必須匹配的路徑資訊的字串。
在Path Filter一節的示例中,您指定了字串^200$。您希望更新內部包含的路徑資訊與字串匹配以便決定。
正規表示式包括:
範圍
範圍是左方括弧和右方括弧中的字元序列。例如[abcd]。
阿托姆
原子是一個字元。以下是一些範例:
.
.匹配任何單個字元。
^
^匹配輸入字串的開頭。
$
$匹配輸入字串的結尾。
\
\匹配字元。
-
_匹配逗號(,)、左大括弧({)、右大括弧(})、輸入字串的開始、輸入字串的結束或空格。
片段
一塊是這些符號中的一個,出現在一個原子之後:
*
*匹配0個或多個原子序列。
+
+匹配原子的1個或多個序列。
?
?匹配atom或null字串。
分支
一個分支是0個或更多串聯的段。
以下是正規表示式的一些示例:
a*
此表達式表示出現任何字母「a」,其中不包含任何字母。
a+
此表達式表示必須至少出現一個字母「a」。
ab?a
此表達式匹配「aa」或「aba」。
_100_
此表達式表示通過AS100。
_100$
此表達式表示AS100的原點。
^100 .*
此表達式指示從AS100的傳輸。
^$
此表達式指示來自此AS的起源。
有關正規表示式過濾的示例配置,請參閱在BGP中使用正規表示式。
本文檔介紹了路由過濾和AS路徑過濾。另一種方法是社群過濾。社群屬性部分討論了社群,此部分提供了幾個有關如何使用社群的示例。
在本例中,您希望RTB將community屬性設定為RTB通告的BGP路由,以便RTC不將這些路由傳播到外部對等體。使用 no-export
community屬性。
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 neighbor 10.3.3.1 send-community neighbor 10.3.3.1 route-map setcommunity out route-map setcommunity match ip address 1 set community no-export access-list 1 permit 0.0.0.0 255.255.255.255
註:此示例使用 route-map setcommunity
命令,將團體設定為no-export。
註: neighbor send-community
命令是將該屬性傳送到RTC所必需的。
當RTC獲得具有NO_EXPORT屬性的更新時,RTC不會將更新傳播到外部對等RTA。
在本例中,RTB將community屬性設定為100 200 additive
.此操作會將值100 200新增到傳輸到RTC之前的任何當前團體值。
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 neighbor 10.3.3.1 send-community neighbor 10.3.3.1 route-map setcommunity out route-map setcommunity match ip address 2 set community 100 200 additive access-list 2 permit 0.0.0.0 255.255.255.255
社群清單是在路由對映的match子句中使用的一組社群。社群清單允許您過濾或設定屬性,以社群編號的不同清單為基礎。
ip community-list <community-list-number> {permit | deny} <community-number>
例如,您可以定義此路由對映match-on-community:
route-map match-on-community match community 10 !--- The community list number is 10. set weight 20 ip community-list 10 permit 200 300 !--- The community number is 200 300.
您可以使用社群清單過濾或設定某些引數(如權重和度量),以便以社群值為基礎進行某些更新。在本部分的第二個示例中,RTB向RTC傳送社群為100 200的更新。如果RTC希望以這些值為基礎設定權重,您可以執行以下操作:
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map check-community in route-map check-community permit 10 match community 1 set weight 20 route-map check-community permit 20 match community 2 exact set weight 10 route-map check-community permit 30 match community 3 ip community-list 1 permit 100 ip community-list 2 permit 200 ip community-list 3 permit internet
在本例中,社群屬性中具有100的任何路由都匹配清單1。此路由的權重設定為20。社群匹配項清單2中只有200且權重為20的任何路由。關鍵字exact表示社群僅包含200個成員,不包含其他成員。最後一個社群清單位於此處,以確保不會捨棄其他更新。請記住,預設情況下,任何不匹配的內容都會丟棄。關鍵字internet表示所有路由,因為所有路由都是Internet社群的成員。
如需詳細資訊,請參閱使用BGP社群值設定和控制上游供應商網路。
您可以將neighbor命令與路由對映結合使用,以篩選或設定傳入和傳出更新的引數。
當您基於IP地址進行匹配時,與neighbor語句關聯的路由對映對傳入更新沒有影響:
neighbor <ip-address> route-map <route-map-name>
假設在本節的圖表中,您希望RTC從AS200瞭解本地到AS200的網路,而不要瞭解其他內容。此外,您還需要將已接受路由的權重設定為20。使用neighbor和as-path存取清單的組合:
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map stamp in route-map stamp match as-path 1 set weight 20 ip as-path access-list 1 permit ^200$
任何源自AS200的更新都具有以200開始並以200結束的路徑資訊。允許這些更新。任何其它更新都會丟失。
假設您需要:
接受來自AS200且權重為20的更新
來自AS400的更新丟棄
其他更新的權重為10
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map stamp in route-map stamp permit 10 match as-path 1 set weight 20 route-map stamp permit 20 match as-path 2 set weight 10 ip as-path access-list 1 permit ^200$ ip as-path access-list 2 permit ^200 600 .*
此語句將AS200本地更新的權重設定為20。該語句還將AS400之後的更新的權重設定為10,並丟棄來自AS400的更新。
在某些情況下,必須操縱路徑資訊才能操縱BGP決策過程。與路由對映一起使用的命令是:
set as-path prepend <as-path#> <as-path#>
假設,在BGP鄰居和路由對映一節的圖表中,RTC將自己的網路172.16.10.0通告給兩個不同的AS,AS100和AS200。當資訊傳播到AS600時,AS600中的路由器通過兩個不同的路由擁有有關172.16.10.0的網路可達性資訊。第一條 路由是經由AS100及路徑(100、300),第二條路由是經由AS400及路徑(400、200、300)。如果所有其他屬性都相同,AS600將選擇最短路徑,並通過AS100選擇路由。
AS300通過AS100獲取所有流量。如果您希望從AS300端影響此決定,您可以使通過AS100的路徑看起來比通過AS400的路徑長。如果將AS編號附加到通告到AS100的當前路徑資訊,則可以執行此操作。常見的做法是以此方式重複您自己的AS編號:
RTC# router bgp 300 network 172.16.10.0 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map SETPATH out route-map SETPATH set as-path prepend 300 300
由於此配置,AS600通過AS100接收有關172.16.10.0的更新,路徑資訊為:(100、300、300、300)。此路徑資訊比AS600從AS400接收的(400、200、300)長。
BGP對等體組是一組具有相同更新策略的BGP鄰居。路由對映、分發清單和過濾器清單通常設定更新策略。您沒有為每個單獨的鄰居定義相同的策略;而是定義對等體組名稱並將這些策略分配給對等體組。
對等體組的成員繼承對等體組的所有配置選項。您也可以將成員配置為在選項不影響出站更新時覆蓋這些選項。您只能覆蓋在入站上設定的選項。
若要定義對等組,請發出以下命令:
neighbor peer-group-name peer-group
此範例將對等群組套用到內部和外部BGP鄰居:
RTC# router bgp 300 neighbor internalmap peer-group neighbor internalmap remote-as 300 neighbor internalmap route-map SETMETRIC out neighbor internalmap filter-list 1 out neighbor internalmap filter-list 2 in neighbor 10.5.5.2 peer-group internalmap neighbor 10.6.6.2 peer-group internalmap neighbor 10.3.3.2 peer-group internalmap neighbor 10.3.3.2 filter-list 3 in
此配置定義名為internalmap的對等組。 該配置為組定義了一些策略,例如將度量設定為5的路由對映SETMETRIC以及兩個不同的過濾器清單1和2。此配置將對等體組應用於所有內部鄰居、RTE、RTF和RTG。此外,此組態會為鄰居RTE定義獨立的篩選條件清單3。此過濾器清單會覆蓋對等組中的過濾器清單2。
註:您只能改寫影響入站更新的選項。
現在,請看一下如何與外部鄰居一起使用對等組。使用本節中的相同圖表,可以使用對等組externalmap配置RTC,並將對等組應用於外部鄰居。
RTC# router bgp 300 neighbor externalmap peer-group neighbor externalmap route-map SETMETRIC neighbor externalmap filter-list 1 out neighbor externalmap filter-list 2 in neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 peer-group externalmap neighbor 10.4.4.2 remote-as 600 neighbor 10.4.4.2 peer-group externalmap neighbor 10.1.1.2 remote-as 200 neighbor 10.1.1.2 peer-group externalmap neighbor 10.1.1.2 filter-list 3 in
注意:在這些配置中,您定義對等體組外部的remote-as語句,因為您必須定義不同的外部AS。此外,您還可以使用過濾器清單3的指定覆蓋鄰居10.1.1.2的入站更新。有關對等組的詳細資訊,請參閱BGP對等組。
註:在Cisco IOS軟體版本12.0(24)S中,思科引入了BGP動態更新對等組功能。在更高版本的Cisco IOS軟體中,此功能也可用。此功能引入了一種新演算法,可動態計算和最佳化共用相同出站策略的鄰居更新組。這些鄰居可以共用相同的更新消息。在早期版本的Cisco IOS軟體中,BGP更新訊息群組是基於對等群組組態的。此方法用於對有限的出站策略和特定會話配置進行分組更新。BGP動態更新對等體組功能將更新組複製與對等體組配置分開。這種分離提高了收斂時間和鄰居配置的靈活性。有關詳細資訊,請參閱BGP動態更新對等組。
BGP4相對於BGP3的主要增強功能之一是無類別網域間路由(CIDR)。CIDR或超網劃分是檢視IP地址的新方式。使用CIDR時,沒有類(如A、B或C)的概念。例如,網路192.168.213.0曾經是非法的C類網路。現在,該網路是一個合法的超網,192.168.213.0/16。16表示從IP地址最左側開始計數時,子網掩碼中的位數。此表示類似於192.168.213.0 255.255.0.0。
可以使用聚合來最小化路由表的大小。聚合是一種將多個不同路由的特徵組合在一起,從而可能通告單個路由的過程。在本例中,RTB生成網路172.31.160.0。您可以配置RTC將該路由192.168.160.0的超網傳播到RTA:
RTB# router bgp 200 neighbor 10.3.3.1 remote-as 300 network 172.31.160.0 #RTC router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 network 172.16.10.0 aggregate-address 192.168.160.0 255.0.0.0
RTC將聚合地址192.168.160.0傳播到RTA。
有各種各樣的聚合命令。您必須瞭解每個聚合的運作方式,才能獲得所需的聚合行為。
第一個命令是CIDR和Aggregate Addresses一節中的示例中的命令:
aggregate-address address-mask
此命令通告字首路由和所有更具體路由。aggregate-address 192.168.160.0 命令傳播其他網路192.168.160.0,但不會阻止172.31.160.0傳播到RTA。結果是將兩個網路192.168.160.0和172.31.160.0傳播到RTA,後者將通告字首和更具體的路由。
註:如果您在BGP路由表中沒有該地址的更具體路由,則無法聚合該地址。
例如,如果RTB在BGP表中沒有更具體的192.168.160.0條目,則RTB無法為192.168.160.0生成聚合。可以將更具體路由注入到BGP表中。路由注入可通過以下方式進行:
來自其他AS的傳入更新
將IGP或靜態重新分發到BGP
network 指令,例如network 172.31.160.0
如果您希望RTC僅傳播網路192.168.160.0,而不是更具體路由,請發出以下命令:
aggregate-address <address>
summary-only
此命令僅通告字首。該命令會抑制所有更具體路由。
aggregate 192.168.160.0 255.0.0.0 summary-only命令傳播網路192.168.160.0並抑制更具體的路由172.31.160.0。
注意:如果聚合通過network語句注入到BGP中的網路,則網路條目始終會注入到BGP更新中。即使您使用aggregate summary-only命令,也會發生此注入。CIDR示例1部分中的示例討論了這種情況。
aggregate-address <address>
as-set
此命令通告字首和更具體的路由。但該命令在路由更新的路徑資訊中包括as-set資訊。
aggregate 192.168.0.0 255.0.0.0 as-set
CIDR示例2(as-set)部分討論了此命令。
如果要在執行聚合時抑制更具體的路由,請定義路由對映並將路由對映應用於聚合。該操作允許您選擇要抑制哪些更具體路由。
aggregate-address <address>suppress-map <map-name>
此命令通告字首和更具體的路由。但是該命令使用路由對映基來抑制通告。假設,根據CIDR和聚合地址一節中的圖表,您要聚合192.168.160.0,抑制更具體路由192.168.160.20,並允許傳播172.31.160.0。使用以下路由對映:
route-map CHECK permit 10 match ip address 1 access-list 1 permit 192.168.160.20 0.0.255.255 access-list 1 deny 0.0.0.0 255.255.255.255
根據suppress-map 的定義,會抑制存取清單允許的任何封包的更新。
然後,將路由對映應用到aggregate 語句。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 remote-as 100 network 172.16.10.0 aggregate-address 192.168.160.0 255.0.0.0 suppress-map CHECK
以下是另一個變體:
aggregate-address <address>attribute-map <map-name>
此命令允許您在傳送聚合時設定屬性(如度量)。要將聚合源設定為IGP,請將此路由對映應用於aggregate attribute-map 命令:
route-map SETMETRIC set origin igp aggregate-address 192.168.160.0 255.0.0.0 attribute-map SETORIGIN
如需詳細資訊,請參閱瞭解BGP中的路由彙總。
請求:允許RTB通告字首192.168.160.0並禁止所有更具體路由。此請求的問題在於網路172.31.160.0是AS200的本地網路,這意味著AS200是172.31.160.0的發起者。如果不生成172.31.160.0的條目,則不能讓RTB為192.168.160.0生成字首,即使使用aggregate summary-only 命令也是如此。RTB會同時生成這兩個網路,因為RTB是172.31.160.0的建立者。這個問題有兩種解決辦法。
第一個解決方案是使用靜態路由並重新分配到BGP。結果是RTB以不完整(?)的源通告聚合數據。
RTB# router bgp 200 neighbor 10.3.3.1 remote-as 300 redistribute static !--- This generates an update for 192.168.160.0 !--- with the origin path as "incomplete". ip route 192.168.160.0 255.0.0.0 null0
在第二個解決方案中,除了靜態路由之外,您還可以為network 命令新增一個條目。此條目具有相同的效果,不同之處是該條目將更新來源設定為IGP。
RTB# router bgp 200 network 192.168.160.0 mask 255.0.0.0 !--- This entry marks the update with origin IGP. neighbor 10.3.3.1 remote-as 300 redistribute static
ip route 192.168.160.0 255.0.0.0 null0
在聚合中使用as-set語句可減小路徑資訊的大小。若使用as-set,則AS編號只會列出一次,而不管聚合的多個路徑中出現AS編號的次數。在資訊聚合導致路徑屬性資訊丟失的情況下,可使用aggregate as-set命令。在本例中,RTC從RTA獲取關於192.168.160.20的更新,並從RTB獲取關於172.31.160.0的更新。假設RTC要聚合網路192.168.160.0/8並將網路傳送到RTD。RTD不知道該路由的來源。如果新增aggregate as-set語句,則會強制RTC以集合{}的形式生成路徑資訊。該集合包括所有路徑資訊,而不管哪個路徑最先。
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 RTA# router bgp 100 network 192.168.160.20 neighbor 10.2.2.1 remote-as 300
案例1:
RTC沒有as-set語句。RTC向RTD傳送包含路徑資訊(300)的更新192.168.160.0/8,就像是路由是從AS300發出一樣。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.4.4.4 remote-as 400 aggregate 192.168.160.0 255.0.0.0 summary-only !--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with no indication that 192.168.160.0 actually comes from two different ASs.
!--- This may create loops if RTD has an entry back into AS100 or AS200.
案例2:
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.4.4.4 remote-as 400 aggregate 192.168.160.0 255.0.0.0 summary-only aggregate 192.168.160.0 255.0.0.0 as-set !--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with an indication that 192.168.160.0 belongs to a set {100 200}.
接下來的兩個主題,BGP聯盟和路由反射器,面向希望進一步控制其AS內iBGP對等爆發的Internet服務提供商(ISP)。
BGP聯盟的實現減少了AS內部的iBGP網格。訣竅是將一個AS劃分為多個AS並將整個組分配到單個聯盟。每個AS都具有iBGP完全網狀網路,並且與聯盟中的其他AS具有連線。即使這些AS在聯盟內有eBGP對等體到AS,AS也會交換路由,就像使用iBGP一樣。這樣,聯盟會保留下一跳、度量和本地優先順序資訊。在外界,聯盟看起來是單個AS。
若要設定BGP聯盟,請發出以下命令:
bgp confederation identifier <autonomous-system>
聯盟識別符號是聯盟組的AS編號。
此命令的問題在聯盟內的多個AS之間執行對等操作:
bgp confederation peers< autonomous-system>
以下是聯盟範例:
假設您有一個包含九個BGP揚聲器的AS500。其他非BGP揚聲器也存在,但您只對與其他AS具有eBGP連線的BGP揚聲器感興趣。如果您想在AS500內建立完整的iBGP網格,則每台路由器需要九個對等連線。您需要8個iBGP對等體和1個eBGP對等體到外部AS。
如果使用聯盟,可以將AS500劃分為多個AS:AS50、AS60和AS70。您將AS作為聯盟識別符號賦予500。外部世界只看到一個AS,AS500。對於AS50、AS60和AS70中的每一個,您定義了iBGP對等體的完整網格,並使用bgp confederation peers 命令定義聯盟對等體的清單。
以下是路由器RTC、RTD和RTA的組態範例:
註:RTA不瞭解AS50、AS60或AS70。RTA只知道AS500。
RTC# router bgp 50 bgp confederation identifier 500 bgp confederation peers 60 70 neighbor 10.128.213.10 remote-as 50 (IBGP connection within AS50) neighbor 10.128.213.20 remote-as 50 (IBGP connection within AS50) neighbor 10.128.213.11 remote-as 60 (BGP connection with confederation peer 60) neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70) neighbor 10.5.5.5 remote-as 100 (EBGP connection to external AS100) RTD# router bgp 60 bgp confederation identifier 500 bgp confederation peers 50 70 neighbor 10.128.210.2 remote-as 60 (IBGP connection within AS60) neighbor 10.128.213.30 remote-as 50(BGP connection with confederation peer 50) neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70) neighbor 10.6.6.16 remote-as 600 (EBGP connection to external AS600) RTA#
router bgp 100 neighbor 10.5.5.4 remote-as 500 (EBGP connection to confederation 500)
路由反射器(RR)是解決AS中iBGP對等爆炸的另一種解決方案。如其iBGP部分所示,BGP發言人不會向第三個iBGP發言人通告BGP發言人通過另一個iBGP發言人獲知的路由。您可以稍微放寬此限制,並提供額外的控制,這樣路由器就可以向其他iBGP揚聲器通告iBGP學習路由,或將其反映出來。此路由反射會減少AS中的iBGP對等體的數量。
在正常情況下,在AS100內在RTA、RTB和RTC之間保持完整的iBGP網狀。如果使用RR概念,則可以選擇RTC作為RR。透過這種方式,RTC與RTA和RTB具有部分iBGP對等。RTA和RTB之間不需要對等,因為RTC是來自RTA和RTB的更新的RR。
neighborroute-reflector-client
使用此命令的路由器是RR,命令點處的鄰居是該RR的客戶端。在本例中,RTC配置具有指向RTA和RTB IP地址的neighbor route-reflector-client命令。RR和客戶端的組合是一個「群集」。在此示例中,RTA、RTB和RTC組成了一個集群,在AS100內有一個RR。
非使用者端的RR的其他iBGP對等體是非使用者端。
一個AS可以有多個路由反射器。在這種情況下,RR將其他RR視為任何其他iBGP揚聲器。其他RR可以屬於同一群集(客戶端組)或其他群集。在簡單配置中,可以將AS劃分為多個群集。在完全網狀拓撲中,使用其他RR將每個RR配置為非客戶端對等體。客戶端不得與客戶端群集外部的iBGP揚聲器對等。
在上圖中,RTA、RTB和RTC組成了一個群集。RTC是RR對於RTC,RTA和RTB是客戶端,其他任何內容都是非客戶端。請記得neighbor route-reflector-client 命令指向RR的客戶端。同一RTD是使用者端RTE和RTF的RR。RTG是第三個群集中的RR。
注意:RTD、RTC和RTG完全網狀,但集群內的路由器則不網狀。
當RR收到路由時,RR會路由此清單。但是,此活動取決於對等體型別:
來自非客戶端對等體的路由 — 反映到群集中的所有客戶端。
來自客戶端對等體的路由 — 反映到所有非客戶端對等體以及客戶端對等體。
來自eBGP對等體的路由 — 將更新傳送到所有客戶端和非客戶端對等體。
以下是路由器RTC、RTD和RTB的相對BGP配置:
RTC# router bgp 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-reflector-client neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.8.8.8 remote-as 200 RTB# router bgp 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.12.12.12 remote-as 300 RTD# router bgp 100 neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100
由於存在iBGP獲知的路由的反映,因此可能會出現路由資訊環路。RR方案有幾種方法可避免此環路:
originator-id — 這是長度為4位元組的可選、不可傳遞的BGP屬性。RR將建立此屬性。該屬性攜帶本地AS中路由的發起方的路由器ID(RID)。如果由於配置不當,路由資訊返回到發起者,則忽略此資訊。
cluster-list — 群集中的多個RR一節介紹群集清單。
通常,客戶端群集具有單個RR。在這種情況下,RR的路由器ID標識集群。為了提高冗餘並避免單點故障,一個集群可以具有多個RR。您需要使用4位元組群集ID配置同一群集中的所有RR,以便RR能夠識別來自同一群集中的RR的更新。
群集清單是路由已通過的群集ID序列。當RR反映從RR客戶端到群集外部的非客戶端的路由時,RR會將本地群集ID附加到群集清單中。如果此更新具有空的群集清單,則RR會建立一個群集清單。使用此屬性,RR可以確定路由資訊是否由於配置不佳而環回到同一群集。如果在群集清單中找到本地群集ID,則忽略播發。
在本節的圖表中,RTD、RTE、RTF和RTH屬於一個群集。RTD和RTH都是同一集群的RR。
註:存在冗餘,因為RTH已與所有RR完全網狀對等。如果RTD關閉,RTH將取代RTD。
以下是RTH、RTD、RTF和RTC的配置:
RTH# router bgp 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.9.9.9 remote-as 300 bgp cluster-id 10 RTD# router bgp 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.11.11.11 remote-as 400 bgp cluster-id 10 RTF# router bgp 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.13.13.13 remote-as 500 RTC# router bgp 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-reflector-client neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-reflector-client neighbor 10.4.4.4 remote-as 100 neighbor 10.7.7.7 remote-as 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.8.8.8 remote-as 200
註:對於RTC,您不需要bgp cluster-id命令,因為該群集中僅存在一個RR。
注意:此配置不使用對等組。如果群集中的客戶端之間沒有直接iBGP對等體,並且客戶端通過RR交換更新,則不要使用對等組。如果配置對等體組,則可能撤回到RR上路由來源的路由會傳輸到群集中的所有客戶端。此傳輸可能會導致問題。
路由器子命令bgp client-to-client reflection 預設情況下在RR上啟用。如果您在RR上關閉BGP客戶端到客戶端反射,並在客戶端之間執行冗餘BGP對等,則您可以安全地使用對等組。有關詳細資訊,請參閱對等組的限制。
AS可能包含不理解RR概念的BGP揚聲器。本文檔將這些路由器稱為傳統BGP揚聲器。RR方案允許這樣的傳統BGP揚聲器共存。這些路由器可以是客戶端組或非客戶端組的成員。這些路由器的存在允許從目前的iBGP模式輕鬆且漸進地遷移到RR模式。如果將單個路由器配置為RR,並使其他RR和RR客戶端成為iBGP對等體正常的,可以開始建立群集。然後,您可以逐步建立更多的群集。
在此圖中,RTD、RTE和RTF具有路由反射的概念。RTC、RTA和RTB是傳統路由器。您不能將這些路由器配置為RR。您可以在這些路由器和RTD之間執行一般iBGP網狀網路。稍後,當您準備好升級時,您可以將RTC設定為具有客戶端RTA和RTB的RR。客戶端不必瞭解路由反射方案;只有RR需要升級。
以下是RTD和RTC的組態:
RTD# router bgp 100 neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.3.3.3 remote-as 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.13.13.13 remote-as 300 RTC# router bgp 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.14.14.14 remote-as 400
當您準備好升級RTC並使RTC成為RTC時,請刪除iBGP全網狀網並讓RTA和RTB成為RTC的客戶機。
到目前為止,本文檔提到了兩個可用於防止潛在資訊循環的屬性:originator-id和cluster-list。
控制環路的另一種方法是對出站路由對映的set子句施加更多限制。傳出路由對映的set子句不影響反映到iBGP對等體的路由。
您還可以對next-hop-self(每個鄰居的配置選項)施加更多限制。當您在RR上使用next-hop-selfo時,該子句僅影響eBGP獲知的路由的下一跳,因為不得更改所反映的路由的下一跳。
Cisco IOS軟體版本11.0引入了路由抑制。路由抑制是一種機制,用於最小化路由擺動導致的不穩定性。路由抑制還減少了網路中的振盪。您可以定義條件來標識行為不佳的路由。對於翻動的路由,每個翻動的代價為1000。一旦累積懲罰達到預先定義的抑制限制,就會發生路由通告的抑制。懲罰根據預配置的半衰期呈指數衰減。一旦懲罰在預定重複使用限制下減少,則不再抑制路由通告。
路由抑制不適用於在AS外部並通過iBGP獲知的路由。透過這種方式,路由阻尼避免了對AS外部路由的iBGP對等體產生更高代價。
懲罰以5秒的粒度衰減。路由在10秒的粒度內未被抑制。路由器會保留衰減資訊,直到懲罰小於重複使用限制的一半。此時,路由器會清除該資訊。
最初,預設情況下禁用緩衝。如果需要,將來可以預設啟用此功能。以下命令控制路由抑制:
bgp dampening — 開啟抑制。
no bgp dampening — 關閉阻尼功能。
bgp dampeninghalf-life-time — 更改半衰期時間。
可同時設定所有引數的命令為:
bgp dampeninghalf-life-timereusesuppressmaximum-suppress-time
此清單詳細列出語法:
half-life-time — 範圍是1-45分鐘,當前預設值為15分鐘。
reuse-value — 範圍為1-20,000,預設值為750。
suppress-value — 範圍為1-20,000,預設值為2000。
max-suppress-time — 這是路由抑制的最大持續時間。範圍是1-255分鐘,預設值是半衰期時間的4倍。
RTB# hostname RTB interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router bgp 100 bgp dampening network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 RTD# hostname RTD interface Loopback0 ip address 192.168.208.174 255.255.255.192 interface Serial0/0 ip address 192.168.10.5 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.6 remote-as 100
RTB的配置用於使用預設引數的路由抑制。如果您假設到RTD的eBGP連結穩定,則RTB BGP表如下所示:
RTB#show ip bgp BGP table version is 24, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i
若要模擬路由翻動,請在RTD上發出clear ip bgp 192.168.10.6命令。RTB BGP表如下所示:
RTB#show ip bgp BGP table version is 24, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path h 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i
192.168.10.0的BGP條目處於historystate。此放置意味著您沒有通往該路由的最佳路徑,但有關路由擺動的資訊仍然存在。
RTB#show ip bgp 192.168.10.0 BGP routing table entry for 192.168.10.0 255.255.255.0, version 25 Paths: (1 available, no best path) 300 (history entry) 192.168.10.5 from 192.168.10.5 (192.168.208.174) Origin IGP, metric 0, external Dampinfo: penalty 910, flapped 1 times in 0:02:03
該路由已收到抖動懲罰,但該懲罰仍處於suppress限制下。預設值為2000。尚未發生路由抑制。如果路由多次擺動,您將看到:
RTB#show ip bgp BGP table version is 32, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *d 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i RTB#show ip bgp 192.168.10.0 BGP routing table entry for 192.168.10.0 255.255.255.0, version 32 Paths: (1 available, no best path) 300, (suppressed due to dampening) 192.168.10.5 from 192.168.10.5 (192.168.208.174) Origin IGP, metric 0, valid, external Dampinfo: penalty 2615, flapped 3 times in 0:05:18 , reuse in 0:27:00
該路由已被抑制或抑制。當懲罰達到「重複使用值」時,路由會被重複使用。在這種情況下,重複使用值為預設值750。當補償變為小於重複使用限制的一半時,會清除抑制資訊。在這種情況下,當懲罰變為375(750/2=375)時,就會發生清除。以下命令顯示和清除翻動統計資訊:
show ip bgp flap-statistics — 顯示所有路徑的抖動統計資訊。
show ip bgp flap-statistics regexpregular-expression — 顯示與正規表示式匹配的所有路徑的抖動統計資訊。
show ip bgp flap-statistics filter-listlist — 顯示通過過濾器的所有路徑的抖動統計資訊。
show ip bgp flap-statisticsA.B.C.D m.m.m.m — 顯示單個條目的抖動統計資訊。
show ip bgp flap-statisticsA.B.C.D m.m.m.mlonger-prefix — 顯示更具體條目的抖動統計資訊。
show ip bgp neighbor [dampened-routes] | [flap-statistics] — 顯示來自鄰居的所有路徑的抖動統計資訊。
clear ip bgp flap-statistics — 清除所有路由的抖動統計資訊。
clear ip bgp flap-statistics regexpregular-expression — 清除與正規表示式匹配的所有路徑的抖動統計資訊。
clear ip bgp flap-statistics filter-listlist — 清除通過過濾器的所有路徑的抖動統計資訊。
clear ip bgp flap-statisticsA.B.C.D m.m.m.m — 清除單個條目的抖動統計資訊。
clear ip bgpA.B.C.Dflap-statistics — 清除來自鄰居的所有路徑的翻動統計資訊。
現在您已熟悉BGP屬性和術語,請參閱BGP最佳路徑選取演演算法。
本部分包含一個設計示例,該示例在思科路由器上實際顯示配置和路由表時顯示這些表。
本節介紹如何逐步建立此配置,以及在此過程中可能出現的問題。每當有通過eBGP連線到兩個ISP的AS時,請始終在AS中運行iBGP,以便更好地控制路由。在本示例中,iBGP在RTA和RTB之間的AS100內部運行,OSPF作為IGP運行。假設您連線到兩個ISP,AS200和AS300。這是所有路由器的首次配置運行:
註:這些配置不是最終配置。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 router bgp 100 network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 172.31.14.250 255.255.255.0 interface Serial1 ip address 172.16.15.250 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 RTB# hostname RTB ip subnet-zero interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 router bgp 100 network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.203.250 remote-as 100 RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 192.168.128.6330 255.255.255.192 interface Serial2/0 ip address 172.16.31.5 255.255.255.252 ! interface Serial2/1 ip address 172.31.63.250 255.255.255.252 router bgp 200 network 172.31.10.0 neighbor 192.168.128.63 remote-as 100 neighbor 172.31.63.213 remote-as 400 RTD# hostname RTD ip subnet-zero interface Loopback0 ip address 192.168.208.174 255.255.255.192 interface Serial0/0 ip address 192.168.10.5 255.255.255.252 ! interface Serial0/1 ip address 192.168.10.2 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.1 remote-as 500 neighbor 192.168.10.6 remote-as 100 RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 192.168.200.10 255.255.255.0 interface Serial0 ip address 192.168.195.211 255.255.255.252 interface Serial1 ip address 172.31.63.213 255.255.255.252 clockrate 1000000 router bgp 400 network 192.168.10.10 neighbor 172.16.31.5 remote-as 200 neighbor 192.168.211.195 remote-as 500 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 192.168.211.19574 255.255.255.192 interface Serial0 ip address 192.168.10.1 255.255.255.252 interface Serial1 ip address 192.168.211.195 255.255.255.252 router bgp 500 network 192.168.211.10 neighbor 192.168.10.2 remote-as 300 neighbor 192.168.195.211 remote-as 400
始終使用 network
命令或將靜態條目重新分發到BGP以通告網路。此方法比將IGP重新分發到BGP更好。本示例使用 network
命令將網路注入到BGP中。
在這裡,您從RTB關閉的s1介面開始,就像RTB和RTD之間的鏈路不存在一樣。以下是RTB BGP表:
RTB#show ip bgp BGP table version is 4, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *i172.31.10.0 172.31.63.250 0 100 0 200 i *i192.168.10.0 172.31.63.250 100 0 200 400 500 300 i *i192.168.211.10 172.31.63.250 100 0 200 400 500 i *i192.168.10.10 172.31.63.250 100 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *>192.168.250.15 0.0.0.0 0 32768 i
下表顯示了以下符號:
Aniat the beginning — 表示該條目是通過iBGP對等體獲取的。
Aniat the end — 指示路徑資訊的來源為IGP。
Pathinformation — 此資訊是直觀的。例如,網路172.31.10.0通過路徑200獲知,下一跳為172.31.63.250。
註:任何本地生成的條目(如192.168.250.15)都有一個下一跳0.0.0.0。
注意:注意「下一跳」屬性。RTB通過下一跳172.31.63.250知道大約172.31.10.0,該下一跳是傳送到iBGP的eBGP下一跳。
檢視IP路由表:
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/75] via 172.16.15.250, 02:50:45, Serial0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 02:50:46, Serial0
顯然,所有BGP條目均未到達路由表。這裡存在兩個問題。
第一個問題是無法訪問這些條目的下一跳172.31.63.250。無法通過此IGP(即OSPF)到達下一跳。RTB尚未通過OSPF獲知192.168.213.63。您可以在RTA s0介面上運行OSPF並將其設為被動介面;通過這種方式,RTB知道如何到達下一跳172.31.63.250。此RTA配置將顯示在此處:
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 network 192.168.203.25 mask 255.255.0.0 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0
註:您可以發出 bgp nexthop self
命令更改RTA和RTB之間的下一跳。
RTB上的新BGP表如下所示:
RTB#show ip bgp BGP table version is 10, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 100 0 200 i *>i192.168.10.0 172.31.63.250 100 0 200 400 500 300 i *>i192.168.211.10 172.31.63.250 100 0 200 400 500 i *>i192.168.10.10 172.31.63.250 100 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i
註:所有條目都具有>,這表示BGP可以到達下一跳。
請檢視路由表:
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/75] via 172.16.15.250, 00:04:46, Serial0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:04:46, Serial0 172.31.10.0 255.255.255.252 is subnetted, 1 subnets O 192.168.213.63 [110/138] via 172.16.15.250, 00:04:47, Serial0
第二個問題是,您仍看不到路由表中的BGP專案。唯一的區別是現在可通過OSPF到達192.168.213.63。此問題是同步問題。BGP不會將這些條目放在路由表中,也不會傳送BGP更新中的條目,因為缺少與IGP的同步。
註:RTF沒有網路192.168.10.0和192.168.211.10的概念,因為您尚未將BGP重分發到OSPF。
在此場景中,如果關閉同步,則條目會出現在路由表中。但連通性仍然中斷。
如果在RTB上關閉同步,則會發生以下情況:
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set B 192.168.10.10 [200/0] via 172.31.63.250, 00:01:07 B 192.168.211.10 [200/0] via 172.31.63.250, 00:01:07 B 192.168.10.0 [200/0] via 172.31.63.250, 00:01:07 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 00:12:37, Serial0 B 192.168.203.13 255.255.255.0 [200/0] via 192.168.203.250, 00:01:08 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:12:37, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks B 172.31.10.0 255.255.0.0 [200/0] via 172.31.63.250, 00:01:08 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 00:12:37, Serial0
路由表看起來正常,但無法到達這些網路。中間的RTF不知道如何到達網路:
RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/11] via 192.168.203.14, 00:14:15, Ethernet0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial1 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 255.255.255.252 is subnetted, 1 subnets O 192.168.213.63 [110/74] via 192.168.203.14, 00:14:15, Ethernet0
在此情況下,關閉同步時,問題仍然存在。但您以後需要同步處理其他問題。在RTA上將BGP重新分發到OSPF,度量為2000:
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 network 192.168.203.25 mask 255.255.0.0 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0
路由表如下所示:
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set O E2 192.168.10.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0 O E2 192.168.211.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0 O E2 192.168.10.0 [110/2000] via 172.16.15.250, 00:00:14, Serial0 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 00:00:15, Serial0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 172.16.15.250, 00:00:15, Serial0 192.168.250.15 255.255.255.252 is subnetted, 2 subnets C 172.31.250.8 is directly connected, Loopback1 C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:00:15, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250, 00:00:15,Serial0 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 00:00:16, Serial0
BGP專案已消失,因為OSPF的距離比iBGP的距離要遠。OSPF距離為110,而iBGP距離為200。
關閉RTA上的同步,以便RTA可以通告192.168.250.15。因為遮罩不同,RTA不能與OSPF同步,所以必須執行此操作。關閉RTB上的同步,以便RTB可以通告192.168.203.13。出於相同的原因,對RTB必須執行此操作。
現在,開啟RTB s1介面,檢視路由的樣子。此外,在RTB的串列1上啟用OSPF,使其成為被動介面。此步驟允許RTA通過IGP瞭解下一跳192.168.10.5。如果不執行此步驟,則會發生路由回圈,因為若要到達下一個躍點192.168.10.5,您需要透過eBGP進行反向傳輸。以下是RTA和RTB的新配置:
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 no synchronization network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 RTB# hostname RTB ip subnet-zero interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 192.168.203.25 0.0.255.255 area 0 network 192.168.208.0 0.0.255.255 area 0 router bgp 100 no synchronization network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.203.250 remote-as 100
BGP表如下所示:
RTA#show ip bgp BGP table version is 117, local router ID is 192.168.203.250 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.31.10.0 172.31.63.250 0 0 200 i *>i192.168.10.0 192.168.10.5 0 100 0 300 i *>i192.168.211.10 192.168.10.5 100 0 300 500 i * 172.31.63.250 0 200 400 500 i *> 192.168.10.10 172.31.63.250 0 200 400 i *> 192.168.203.13 0.0.0.0 0 32768 i *> 192.168.250.14 0.0.0.0 0 32768 i *>i192.168.250.15 192.168.250.2 0 100 0 i RTB#show ip bgp BGP table version is 12, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 100 0 200 i * 192.168.10.5 0 300 500 400 200 i *> 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.211.10 192.168.10.5 0 300 500 i *>i192.168.10.10 172.31.63.250 100 0 200 400 i * 192.168.10.5 0 300 500 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i
設計網路的方式有多種,以便與兩個不同的ISP(AS200和AS300)通訊。一種方法是擁有主ISP和備用ISP。您可以從其中一個ISP獲取部分路由,並獲取到兩個ISP的預設路由。在本例中,您從AS200接收部分路由,而僅從AS300接收本地路由。RTA和RTB都會生成到OSPF的預設路由,由於度量較低,RTB是優先使用的路由。通過這種方式,您可以平衡兩個ISP之間的傳出流量。
如果離開RTA的流量通過RTB返回,則可能出現潛在的不對稱。當您與兩個ISP通話時,如果您使用相同的IP地址池(即同一主網),則可能會發生這種情況。由於聚合,您的整個AS在外界看起來就像一個整體。可通過RTA或RTB進入您的網路。您可以發現,所有傳入您的AS的流量都通過一個單點到達,即使您有多個指向Internet的點。在示例中,當您與兩個ISP通訊時,有兩個不同的主網。
非對稱性的另一個潛在原因是到達您的AS的通告路徑長度不同。也許一個服務提供商比另一個服務提供商更接近某個目的地。在本例中,由於路徑較短,因此來自AS400的流量始終通過RTA進入,而您的網路作為目的地。你可以嘗試做出那個決定。您可以使用set as-path prepend 命令將路徑號附加到更新之前,並使路徑長度看起來更長。但是,對於諸如本地優先順序、度量或權重等屬性,AS400可以將出口點設定為AS200。在這種情況下,您什麼也做不了。
此配置是所有路由器的最終配置:
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 default-information originate metric 2000 router bgp 100 no synchronization network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 172.31.63.250 route-map setlocalpref in neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 ip classless ip default-network 172.31.200.200 route-map setlocalpref permit 10 set local-preference 200
在RTA上,本地對來自AS200的路由的首選項設定為200。此外,網路172.31.200.200是候選預設網路的選擇。ip default-network 指令可用於選擇預設值。
此外,在此示例中,對OSPF使用default-information originate 命令會在OSPF域內注入預設路由。此範例也將此命令用於中間系統到中間系統通訊協定(IS-IS通訊協定)和BGP。對於RIP,自動重分配到0.0.0.0的RIP,無需其他配置。對於IGRP和EIGRP,在BGP重分配到IGRP和IGRP後,會向IGP域中注入預設資訊。此外,通過IGRP和EIGRP,您可以將指向0.0.0.0的靜態路由重分發到IGP域。
RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 172.31.14.250 255.255.255.0 interface Serial1 ip address 172.16.15.250 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 ip classless RTB# hostname RTB ip subnet-zero interface Loopback1 ip address 172.16.15.2500 255.255.255.252 interface Serial0 ip address 192.168.250.2 255.255.255.252 ! interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 192.168.203.25 0.0.255.255 area 0 network 192.168.10.6 0.0.0.0 area 0 default-information originate metric 1000 ! router bgp 100 no synchronization network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.10.5 route-map localonly in neighbor 192.168.203.250 remote-as 100 ! ip classless ip default-network 192.168.10.0 ip as-path access-list 1 permit ^300$ route-map localonly permit 10 match as-path 1 set local-preference 300
對於RTB,本地對來自AS300的更新的首選項設定為300。此值高於來自RTA的iBGP更新的本地優先順序值。通過這種方式,AS100為AS300的本地路由選擇RTB。RTB上的任何其他路由(如果存在其他路由),則使用本地優先順序100進行內部傳輸。該值低於來自RTA的本地優先順序200。首選是RTA。
注意:您僅通告AS300本地路由。任何與^300$不匹配的路徑資訊都會丟棄。如果要通告ISP客戶的本地路由和鄰居路由,請使用^300_[0-9]*。
以下是指示AS300本地路由的正規表示式的輸出:
RTB#show ip bgp regexp ^300$ BGP table version is 14, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.168.10.0 192.168.10.5 0 300 0 300 RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 192.168.128.6330 255.255.255.192 interface Serial2/0 ip address 172.16.31.5 255.255.255.252 ! interface Serial2/1 ip address 172.31.63.250 255.255.255.252 router bgp 200 network 172.31.10.0 neighbor 192.168.128.63 remote-as 100 neighbor 192.168.128.63 distribute-list 1 out neighbor 172.31.63.213 remote-as 400 ip classless access-list 1 deny 192.168.211.0 0.0.255.255 access-list 1 permit any
在RTC上,您將匯聚172.31.10.0/16並指明要注入到AS100的特定路由。如果ISP拒絕執行此任務,您必須在AS100的傳入端進行過濾。
RTD# hostname RTD ip subnet-zero interface Loopback0 ip address 192.168.208.174 255.255.255.192 ! interface Serial0/0 ip address 192.168.10.5 255.255.255.252 ! interface Serial0/1 ip address 192.168.10.2 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.1 remote-as 500 neighbor 192.168.10.6 remote-as 100 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 192.168.211.19574 255.255.255.192 interface Serial0 ip address 192.168.10.1 255.255.255.252 interface Serial1 ip address 192.168.211.195 255.255.255.252 router bgp 500 network 192.168.211.10 aggregate-address 192.168.211.0 255.255.0.0 summary-only neighbor 192.168.10.2 remote-as 300 neighbor 192.168.10.2 send-community neighbor 192.168.10.2 route-map setcommunity out neighbor 192.168.195.211 remote-as 400 ! ip classless access-list 1 permit 192.168.211.0 0.0.255.255 access-list 2 permit any route-map setcommunity permit 20 match ip address 2 ! route-map setcommunity permit 10 match ip address 1 set community no-export
RTG上演示了如何使用社群過濾。您新增 no-export
到192.168.211.0的社群更新以實現RTD。透過這種方式,RTD不會將該路由匯出至RTB。但是,在這種情況下,RTB無論如何都不接受這些路由。
RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 192.168.200.10 255.255.255.0 interface Serial0 ip address 192.168.195.211 255.255.255.252 interface Serial1 ip address 172.31.63.213 255.255.255.252 router bgp 400 network 192.168.10.10 aggregate-address 172.31.200.200 255.255.0.0 summary-only neighbor 172.16.31.5 remote-as 200 neighbor 192.168.211.195 remote-as 500 ip classless
RTE聚合172.31.200.200/16。以下是RTA、RTF和RTB的最終BGP和路由表:
RTA#show ip bgp BGP table version is 21, local router ID is 192.168.203.250 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.31.10.0 172.31.63.250 0 200 0 200 i *>i192.168.10.0 192.168.10.5 0 300 0 300 i *> 172.31.200.200/16 172.31.63.250 200 0 200 400 i *> 192.168.203.13 0.0.0.0 0 32768 i *> 192.168.250.14 0.0.0.0 0 32768 i *>i192.168.250.15 192.168.250.2 0 100 0 i RTA#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 172.31.63.250 to network 172.31.200.200 192.168.10.0 is variably subnetted, 2 subnets, 2 masks O E2 192.168.10.0 255.255.255.0 [110/1000] via 172.31.14.250, 00:41:25, Ethernet0 O 192.168.10.4 255.255.255.252 [110/138] via 172.31.14.250, 00:41:25, Ethernet0 C 192.168.203.13 is directly connected, Loopback0 192.168.250.15 is variably subnetted, 3 subnets, 3 masks O 172.16.15.2500 255.255.255.255 [110/75] via 172.31.14.250, 00:41:25, Ethernet0 O 192.168.250.15 255.255.255.252 [110/74] via 172.31.14.250, 00:41:25, Ethernet0 B 192.168.250.15 255.255.255.0 [200/0] via 192.168.250.2, 00:41:25 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks B 172.31.10.0 255.255.0.0 [20/0] via 172.31.63.250, 00:41:26 C 192.168.213.63 255.255.255.252 is directly connected, Serial0 O*E2 0.0.0.0/0 [110/1000] via 172.31.14.250, Ethernet0/0 B* 172.31.200.200 255.255.0.0 [20/0] via 172.31.63.250, 00:02:38 RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 192.168.250.2 to network 0.0.0.0 192.168.10.0 is variably subnetted, 2 subnets, 2 masks O E2 192.168.10.0 255.255.255.0 [110/1000] via 192.168.250.2, 00:48:50, Serial1 O 192.168.10.4 255.255.255.252 [110/128] via 192.168.250.2, 01:12:09, Serial1 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/11] via 192.168.203.14, 01:12:09, Ethernet0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 192.168.203.14, 01:12:09, Ethernet0 192.168.250.15 is variably subnetted, 2 subnets, 2 masks O 172.16.15.2500 255.255.255.255 [110/65] via 192.168.250.2, 01:12:09, Serial1 C 192.168.250.15 255.255.255.252 is directly connected, Serial1 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 192.168.203.14, 00:45:01, Ethernet0 O 192.168.213.63 255.255.255.252 [110/74] via 192.168.203.14, 01:12:11, Ethernet0 O E2 172.31.200.200 255.255.0.0 [110/2000] via 192.168.203.14, 00:03:47, Ethernet0 O*E2 0.0.0.0 0.0.0.0 [110/1000] via 192.168.250.2, 00:03:33, Serial1
註:RTF路由表指示通過RTB到達AS300本地網路(如192.168.10.0)的方式。到達其他已知網路(例如172.31.200.200)的方法是通過RTA。最後選用網關設定為RTB。如果RTB和RTD之間的連線出現問題,則RTA通告的預設值以2000的度量開始。
RTB#show ip bgp BGP table version is 14, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 200 0 200 i *> 192.168.10.0 192.168.10.5 0 300 0 300 i *>i172.31.200.200/16 172.31.63.250 200 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 192.168.10.5 to network 192.168.10.0 * 192.168.10.0 is variably subnetted, 2 subnets, 2 masks B* 192.168.10.0 255.255.255.0 [20/0] via 192.168.10.5, 00:50:46 C 192.168.10.4 255.255.255.252 is directly connected, Serial1 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 01:20:33, Serial0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 172.16.15.250, 01:15:40, Serial0 192.168.250.15 255.255.255.252 is subnetted, 2 subnets C 172.31.250.8 is directly connected, Loopback1 C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 01:20:33, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250, 00:46:55, Serial0 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 01:20:34, Serial0 O*E2 0.0.0.0/0 [110/2000] via 172.16.15.250, 00:08:33, Serial0 O E2 172.31.200.200 255.255.0.0 [110/2000] via 172.16.15.250, 00:05:42, Serial0
修訂 | 發佈日期 | 意見 |
---|---|---|
4.0 |
08-Jun-2023 |
已更換所有PII,更新所有影象以刪除PII、格式化文章和修正CCW警報。重新認證。 |
3.0 |
17-Mar-2023 |
所有PII已更換、格式化文章和已修復的CCW警報。重新認證。 |
1.0 |
27-Aug-2002 |
初始版本 |