《CCIE路由和交换认证考试指南(第5版) (第2卷)》——1.2节构建BGP邻居关系...
本節書摘來自異步社區《CCIE路由和交換認證考試指南(第5版) (第2卷)》一書中的第1章,第1.2節構建BGP鄰居關系,作者 【美】那比克 科查理安(Narbik Kocharians) , 特里 文森(Terry Vinson) , 瑞克 格拉齊亞尼(Rick Graziani),更多章節內容可以訪問云棲社區“異步社區”公眾號查看
1.2 構建BGP鄰居關系
BGP鄰居之間需要構建TCP連接,并通過TCP連接發送BGP消息,特別是通過TCP連接發送包含路由信息的BGP更新(Update)消息。每臺路由器都要顯式配置鄰居的IP地址,目的是通過這些定義來告訴鄰居路由器將與哪個IP地址建立TCP連接。如果路由器收到了從非BGP鄰居的源IP地址發送的TCP連接請求(BGP端口179),那么就會拒絕該請求。
建立了TCP連接之后,BGP就開始發送BGP打開(Open)消息。交換了一對BGP 打開消息之后,鄰居就可以進入建立(established)狀態,該狀態是兩個活躍BGP對等體所處的一種穩定狀態,此時就可以交換BGP更新消息了。
本節將詳細介紹BGP鄰居建立過程中涉及的協議及配置信息,如果大家已經熟悉了這部分內容,那么就可以直接查看表1-2列出的一些關鍵知識點。
關鍵
表1-2 BGP鄰居匯總表
1.2.1 內部BGP鄰居
BGP路由器將每個鄰居均視為iBGP對等體或eBGP對等體,由于每臺BGP路由器都位于單個AS中,因而相應的鄰居關系要么是與相同AS中的路由器建立的(iBGP鄰居),要么是與其他AS中的路由器建立的(eBGP鄰居)。這兩種鄰居關系的建立方式并無多大區別,但不同類型的鄰居(iBGP或eBGP)在BGP更新進程以及向路由表添加路由的方式上存在較大差別。
iBGP對等體通常使用環回接口IP地址來建立BGP對等關系,從而獲得更高的可用性。對于單個AS來說,其物理拓撲結構通常在每對路由器之間最少包含兩條路由。如果BGP對等體使用接口IP地址來建立TCP連接,那么在該接口出現故障后,雖然兩臺路由器之間可能還有一條路由,但是低層的BGP TCP連接已經中斷。只要兩個BGP對等體之間擁有一條以上的路由,且通過這些路由均能到達對端路由器,那么使用環回接口IP地址建立對等關系將是最佳選擇。
下面將通過一些案例來解釋BGP鄰居的配置方式以及相應的協議信息。首先來看例1-1,該例顯示了一些基本的BGP配置信息,AS 123中的R1、R2及R3是iBGP對等體(如圖1-2所示),本例配置了如下功能特性:
AS 123中的三臺路由器之間將建立iBGP鄰居關系(全網狀連接);
R1將使用bgp router-id命令來配置其RID,而不是使用環回接口地址;
R3使用peer-group命令來配置鄰居R1和R2,由于只要為對等體組(peer group)準備一套出站更新消息(向對等體組中的所有對等體發送相同的更新消息),因而能夠大大減少配置命令并提高處理效率;
R1-R3之間的對等關系使用BGP MD5認證,該認證方式是Cisco IOS支持的唯一一種BGP認證方式。
例1-1 基本的iBGP鄰居配置
! R1 Config—R1 correctly sets its update-source to 1.1.1.1 for both R2 and R3, ! in order to match the R2 and R3 neighbor commands. The first three highlighted ! commands below were not typed, but added automatically as defaults by IOS 12.3 ! in fact, IOS 12.3 docs imply that the defaults of sync and auto-summary at ! IOS 12.2 has changed to no sync and no auto-summary as of IOS 12.3. Also, R1 ! knows that neighbors 2.2.2.2 and 3.3.3.3 are iBGP because their remote-as values ! match R1’s router BGP command. interface Loopback1ip address 1.1.1.1 255.255.255.255 ! router bgp 123no synchronizationbgp router-id 111.111.111.111bgp log-neighbor-changesneighbor 2.2.2.2 remote-as 123neighbor 2.2.2.2 update-source Loopback1neighbor 3.3.3.3 remote-as 123neighbor 3.3.3.3 password secret-pwneighbor 3.3.3.3 update-source Loopback1no auto-summary ! R3 Config—R3 uses a peer group called "my-as" for combining commands related ! to R1 and R2. Note that not all parameters must be in the peer group: R3-R2 does ! not use authentication, but R3-R1 does, so the neighbor password command was ! not placed inside the peer group, but instead on a neighbor 1.1.1.1 command. interface Loopback1ip address 3.3.3.3 255.255.255.255 ! router bgp 123no synchronizationbgp log-neighbor-changesneighbor my-as peer-groupneighbor my-as remote-as 123neighbor my-as update-source Loopback1neighbor 1.1.1.1 peer-group my-asneighbor 1.1.1.1 password secret-pwneighbor 2.2.2.2 peer-group my-asno auto-summary ! Next, R1 has two established peers, but the fact that the status is "established" ! is implied by not having the state listed on the right side of the output, under ! the heading State/PfxRcd. Once established, that column lists the number of ! prefixes learned via BGP Updates received from each peer. Note also R1’s ! configured RID, and the fact that it is not used as the update source. R1# show ip bgp summary BGP router identifier 111.111.111.111 , local AS number 123 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 123 59 59 0 0 0 00:56:52 0 3.3.3.3 4 123 64 64 0 0 0 00:11:14 0例1-1給出了一些非常重要的功能特性。首先,該配置并沒有顯式地將對等體定義為iBGP對等體或eBGP對等體,而是由每臺路由器檢查自己的ASN(定義在router bgp命令中),并與neighbor remote-as命令中列出的鄰居ASN進行比較,如果匹配,那么就是iBGP對等體,否則就是eBGP對等體。
例1-1中的R3顯示了利用peer-group命令建立對等體組以減少配置命令的配置方式。請注意,不能在BGP對等體組中設置任何新的BGP配置,只能簡單地將這些BGP鄰居配置組合為一個組,然后利用neighbor peer-group命令將該組設置應用到鄰居上。此外,BGP會為對等體組構建一套更新消息,并將路由策略應用到整個對等體組上(而不是每次僅用于一臺路由器),因而能夠大大減輕BGP的處理壓力及內存開銷。
1.2.2 外部BGP鄰居
eBGP對等體之間的物理拓撲結構通常都是單鏈路,主要原因在于該連接是不同自治系統中的不同企業之間的連接,因而eBGP對等關系可以簡單地使用接口IP地址來實現冗余性,這是因為鏈路失效后,TCP連接也將中斷(因為此時的對等體之間已經沒有IP路由了)。例如,圖1-2中的R1-R6 eBGP對等關系使用的就是neighbor命令中定義的接口IP地址。
如果兩個eBGP對等體之間擁有冗余連接,那么eBGP neighbor命令就應該使用環回IP地址以充分利用冗余連接。例如,R3和R4之間擁有兩條并行鏈路,如果在neighbor命令中使用環回地址,那么即使這兩條鏈路中有一條出現了故障,TCP連接仍然能夠保持正常運行。例1-2給出了圖1-2所示網絡的額外配置信息,即在R3與R4之間使用環回接口地址,而在R1與R6之間使用接口地址。
例1-2 基本的eBGP鄰居配置
! R1 Config -This example shows only commands added since Example 1-1 . router bgp 123neighbor 172.16.16.6 remote-as 678 ! R1 does not have a neighbor 172.16.16.6 update-source command configured. R1 ! uses its s0/0/0.6 IP address, 172.16.16.1, because R1’s route to 172.16.16.6 ! uses s0/0/0.6 as the outgoing interface, as seen below. R1# show ip route 172.16.16.6 Routing entry for 172.16.16.0/24Known via "connected", distance 0, metric 0 (connected, via interface)Routing Descriptor Blocks:* directly connected, via Serial0/0/0.6Route metric is 0, traffic share count is 1 R1# show ip int brief | include 0/0/0.6 Serial0/0/0.6 172.16.16.1 YES manual up up ! R3 Config—Because R3 refers to R4’s loopback (4.4.4.4), and R4 is an eBGP ! peer, R3 and R4 have added the neighbor ebgp-multihop command to set TTL to 2. ! R3’s update source must be identified as its loopback in order to match ! R4’s neighbor 3.3.3.3 commands. router bgp 123neighbor 4.4.4.4 remote-as 45neighbor 4.4.4.4 update-source loopback1neighbor 4.4.4.4 ebgp-multihop 2 ! R3 now has three working neighbors. Also note the three TCP connections, one for ! each BGP peer. Note that because R3 is listed using a dynamic port number, and ! R4 as using port 179, R3 actually initiated the TCP connection to R4. R3# show ip bgp summary BGP router identifier 3.3.3.3, local AS number 123 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 1.1.1.1 4 123 247 247 0 0 0 03:14:49 0 2.2.2.2 4 123 263 263 0 0 0 03:15:07 0 4.4.4.4 4 45 17 17 0 0 0 00:00:11 0 R3# show tcp brief TCB Local Address Foreign Address (state) 649DD08C 3.3.3.3.179 2.2.2.2.43521 ESTAB 649DD550 3.3.3.3.179 1.1.1.1.27222 ESTAB 647D928C 3.3.3.3.21449 4.4.4.4.179 ESTAB從例1-2可以看出,eBGP配置與iBGP配置之間存在一些細微差別。首先,與route bgp命令不同,neighbor remote-as命令引用的是不同的AS,因而意味著對等體是eBGP對等體。其次,R3必須配置neighbor 4.4.4.4 ebgp-multihop 2命令(R4的命令相似),否則將無法建立對等連接。對于eBGP連接來說,Cisco IOS默認將IP包的TTL字段設置為數值1,其依據是假定使用接口IP地址建立對等連接(如例1-2中的R1-R6所示)。對于本例來說,如果R3沒有使用多跳特性,那么就會以TTL 1向R4發送數據包,R4收到數據包之后(此時TTL為1),會將數據包路由到自己的環回接口,該過程會將TTL遞減至0,導致R4丟棄該數據包。因此,即使路由器僅在一跳之外,也要將環回接口視為位于路由器的另一端,需要額外的跳數。
1.2.3 成為BGP鄰居之前的檢查操作
與IGP相似,在其他路由器成為鄰居(進入BGP建立狀態)之前,BGP也要執行一些必要的檢查操作,此時大多數設置都比較直觀,唯一容易出錯的地方就是IP地址問題。下面列出了BGP構建鄰居關系時需要執行的一些檢查操作。
關鍵
1.路由器必須收到一條TCP連接請求,且路由器必須在BGP neighbor命令中能夠發現該請求的源地址。
2.路由器的ASN(位于router bgp asn命令中)必須與鄰居路由器在其neighbor remote-as asn命令中引用的ASN相匹配(聯盟配置無此要求)。
3.兩臺路由器的BGP RID必須相同。
4.如果配置了認證機制,那么還必須通過MD5認證。
圖1-3給出了上述檢查操作中前3項的檢查過程,R3向R1發起BGP TCP連接請求,帶圓圈的數字1、2、3分別對應于上述檢查操作中的前3項。請注意,R1在第2步檢查操作中使用的neighbor命令是R1在第1步中確定的。
圖1-3中的R3以其更新源IP地址(3.3.3.3)為數據包的源地址發起了一條TCP連接請求,第一項檢查操作發生在R1收到第一個數據包的時候,需要查看數據包的源IP地址(3.3.3.3),發現該地址位于neighbor命令中。第二項檢查是R1將R3宣稱的ASN(位于R3的BGP打開消息中)與R1的neighbor命令(在第1步中確定的)進行對比。第三項檢查的目的是確定BGP RID的唯一性,利用BGP打開消息來宣告發送端的BGP RID。
雖然第1步檢查操作看起來很直觀,但有趣的是,即使反向檢查操作通不過,也能建立鄰居關系。例如,即使R1沒有配置neighbor 3.3.3.3 update-source 1.1.1.1命令,圖1-3所示的進程也能正常運行。也就是說,只要兩臺路由器的更新源IP地址中有一個位于對端路由器的neighbor命令中,就能建立鄰居關系。例1-1和例1-2顯示了這兩臺路由器正確的更新源地址,這種情況當然沒問題,只要其中一個正確就可以建立鄰居關系。
關鍵
BGP利用保持激活定時器來定義路由器發送保持激活消息的頻率,利用保持定時器(Hold timer)來定義路由器在重置鄰居連接之前等待接收保持激活消息的時間。打開消息包含了每臺路由器宣稱的保持激活定時器,如果不匹配,那么每臺路由器都將為這兩個定時器使用較小值。參數設置不匹配不會妨礙路由器成為鄰居。
1.2.4 BGP消息與鄰居狀態
BGP鄰居的期望狀態是建立狀態,此狀態下的路由器已經建立了TCP連接,交換了打開消息,而且參數檢查也全部通過,此時可以利用更新消息交換拓撲結構信息。表1-3列出了可能的BGP鄰居狀態及相應的狀態特性。請注意,如果IP地址不匹配,那么鄰居將進入Active(激活)狀態。
1.BGP消息類型
BGP使用4種基本消息,表1-4列出了這些消息類型并給出了相應的描述信息。
2.主動重置BGP對等連接
例1-3顯示了利用neighbor shutdown命令重置鄰居連接的方式,同時給出了各種BGP鄰居狀態。本例中的路由器R1和R6來自圖1-2,相應的配置信息見例1-2。
例1-3 鄰居狀態示例
! R1 shuts down R6’s peer connection. debug ip bgp shows moving to a down state, ! which shows as "Idle (Admin)" under show ip bgp summary . R1# debug ip bgp BGP debugging is on for address family: BGP IPv4 R1# conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)# router bgp 123 R1(config-router)# neigh 172.16.16.6 shutdown R1# *Mar 4 21:01:45.946: BGP: 172.16.16.6 went from Established to Idle *Mar 4 21:01:45.946: %BGP-5-ADJCHANGE: neighbor 172.16.16.6 Down Admin. shutdown *Mar 4 21:01:45.946: BGP: 172.16.16.6 closing R1# show ip bgp summary | include 172.16.16.6 172.16.16.6 4 678 353 353 0 0 0 00:00:06 Idle (Admin) ! Next, the no neighbor shutdown command reverses the admin state. The various ! debug messages (with some omitted) list the various states. Also note that the ! final message is the one log message in this example that occurs due to the ! default configuration of bgp log-neighbor-changes . The rest are the result of ! a debug ip bgp command. R1# conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)# router bgp 123 R1(config-router)# no neigh 172.16.16.6 shutdown *Mar 4 21:02:16.958: BGP: 172.16.16.6 went from Idle to Active *Mar 4 21:02:16.958: BGP: 172.16.16.6 open active , delay 15571ms *Mar 4 21:02:29.378: BGP: 172.16.16.6 went from Idle to Connect *Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv message type 1, length (excl. header) 26 *Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv OPEN , version 4, holdtime 180 seconds *Mar 4 21:02:29.382: BGP: 172.16.16.6 went from Connect to OpenSent *Mar 4 21:02:29.382: BGP: 172.16.16.6 sending OPEN , version 4, my as: 123 ,holdtime 180 seconds *Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv OPEN w/ OPTION parameter len: 16 BGP: 172.16.16.6 rcvd OPEN w/ remote AS 678 *Mar 4 21:02:29.382: BGP: 172.16.16.6 went from OpenSent to OpenConfirm *Mar 4 21:02:29.382: BGP: 172.16.16.6 send message type 1, length (incl. header)45 *Mar 4 21:02:29.394: BGP: 172.16.16.6 went from OpenConfirm to Established *Mar 4 21:02:29.398: %BGP-5-ADJCHANGE: neighbor 10.16.16.6 Up與neighbor shutdown命令相似,EXEC命令clear ip bgp *也能重置所有BGP鄰居,該命令可以重置鄰居連接、關閉與該鄰居之間的TCP連接并刪除BGP表中學自該鄰居的所有表項。本章還會在后面顯示clear命令的其他使用方式,包括同時清除多個鄰居的方式。
注:
利用軟重配(soft reconfiguration)特性,clear命令可以在不完全重置鄰居的情況下實現路由策略的變更操作。有關軟重配特性的詳細信息,請參見第2章的“軟重配”一節。
總結
以上是生活随笔為你收集整理的《CCIE路由和交换认证考试指南(第5版) (第2卷)》——1.2节构建BGP邻居关系...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python数据可视化2.6 一些最好的
- 下一篇: 如何在云计算平台使用R语言编程的快速入门