實驗拓撲及說明
設備編號及互聯線路如圖所示;所有設備的互聯地址段采用10.1.xy.0/24,其中xy為設備編號,x為編號較小的設備,y為編號較大的設備。例如R2及R3之間的直連鏈路,網段為10.1.23.0/24,這條鏈路上R2的接口IP地址為10.1.23.2/24,R3的接口IP地址為10.1.23.3/24。所有設備配置loopback0接口,ip地址為x.x.x.x/32,其中x為設備編號;
實驗需求一(完成基礎配置)
BGP鄰居關系如圖所示;除了圖中標記的BGP鄰居關系外不得建立其他的BGP連接。
R1、R2、R3、R4運行OSPF,注意OSPF域的范圍;四臺路由器都將自己的Loopback0口宣告進OSPF,AS之間的鏈路不宣告進OSPF。
eBGP鄰居關系采用直連接口建立;iBGP鄰居關系采用loopback0口建立;
在R5上開設Loopback1至Loopback4,IP地址分別為100.1.1.0/24、100.2.2.0/24、200.1.1.0/24、200.2.2.0/24。
R1的配置如下:
[R1]interfaceGigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ipaddress10.1.15.1255.255.255.0
[R1]interfaceGigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]ipaddress10.1.12.1255.255.255.0
[R1]interfaceGigabitEthernet0/0/2
[R1-GigabitEthernet0/0/2]ipaddress10.1.14.1255.255.255.0
[R1]interfaceLoopBack0
[R1-LoopBack0]ipaddress1.1.1.1255.255.255.255
[R1]ospf1router-id1.1.1.1
[R1-ospf-1]area0.0.0.0
[R1-ospf-1-0.0.0.0]network1.1.1.10.0.0.0
[R1-ospf-1-0.0.0.0]network10.1.12.10.0.0.0
[R1-ospf-1-0.0.0.0]network10.1.14.10.0.0.0
[R1]bgp200
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer2.2.2.2as-number200
[R1-bgp]peer2.2.2.2connect-interfaceLoopBack0
[R1-bgp]peer2.2.2.2next-hop-local
[R1-bgp]peer4.4.4.4as-number200
[R1-bgp]peer4.4.4.4connect-interfaceLoopBack0
[R1-bgp]peer4.4.4.4next-hop-local
[R1-bgp]peer10.1.15.5as-number100
R2的配置如下:
[R2]interfaceGigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0]ipaddress10.1.12.2255.255.255.0
[R2]interfaceGigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1]ipaddress10.1.23.2255.255.255.0
[R2]interfaceGigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2]ipaddress10.1.26.2255.255.255.0
[R2]interfaceLoopBack0
[R2-LoopBack0]ipaddress2.2.2.2255.255.255.255
[R2]ospf1router-id2.2.2.2
[R2-ospf-1]area0.0.0.0
[R2-ospf-1-0.0.0.0]network2.2.2.20.0.0.0
[R2-ospf-1-0.0.0.0]network10.1.12.20.0.0.0
[R2-ospf-1-0.0.0.0]network10.1.23.20.0.0.0
[R2]bgp200
[R2-bgp]router-id2.2.2.2
[R2-bgp]peer1.1.1.1as-number200
[R2-bgp]peer1.1.1.1connect-interfaceLoopBack0
[R2-bgp]peer3.3.3.3as-number200
[R2-bgp]peer3.3.3.3connect-interfaceLoopBack0
[R2-bgp]peer10.1.26.6as-number300
R3的配置如下:
[R3]interfaceGigabitEthernet0/0/0
[R3-GigabitEthernet0/0/0]ipaddress10.1.35.3255.255.255.0
[R3]interfaceGigabitEthernet0/0/1
[R3-GigabitEthernet0/0/1]ipaddress10.1.34.3255.255.255.0
[R3]interfaceGigabitEthernet0/0/2
[R3-GigabitEthernet0/0/2]ipaddress10.1.23.3255.255.255.0
[R3]interfaceLoopBack0
[R3-GigabitEthernet0/0/0]ipaddress3.3.3.3255.255.255.255
[R3]ospf1router-id3.3.3.3
[R3-ospf-1]area0.0.0.0
[R3-ospf-1-0.0.0.0]network3.3.3.30.0.0.0
[R3-ospf-1-0.0.0.0]network10.1.23.30.0.0.0
[R3-ospf-1-0.0.0.0]network10.1.34.30.0.0.0
[R3]bgp200
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer2.2.2.2as-number200
[R3-bgp]peer2.2.2.2connect-interfaceLoopBack0
[R3-bgp]peer2.2.2.2next-hop-local
[R3-bgp]peer4.4.4.4as-number200
[R3-bgp]peer4.4.4.4connect-interfaceLoopBack0
[R3-bgp]peer4.4.4.4next-hop-local
[R3-bgp]peer10.1.35.5as-number100
R4的配置如下:
[R4]interfaceGigabitEthernet0/0/0
[R4-GigabitEthernet0/0/0]ipaddress10.1.34.4255.255.255.0
[R4]interfaceGigabitEthernet0/0/1
[R4-GigabitEthernet0/0/1]ipaddress10.1.14.4255.255.255.0
[R4]interfaceGigabitEthernet0/0/2
[R4-GigabitEthernet0/0/2]ipaddress10.1.46.4255.255.255.0
[R4]interfaceLoopBack0
[R4-LoopBack0]ipaddress4.4.4.4255.255.255.255
[R4]ospf1router-id4.4.4.4
[R4-ospf-1]area0.0.0.0
[R4-ospf-1-0.0.0.0]network4.4.4.40.0.0.0
[R4-ospf-1-0.0.0.0]network10.1.14.40.0.0.0
[R4-ospf-1-0.0.0.0]network10.1.34.40.0.0.0
[R4]bgp200
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer1.1.1.1as-number200
[R4-bgp]peer1.1.1.1connect-interfaceLoopBack0
[R4-bgp]peer3.3.3.3as-number200
[R4-bgp]peer3.3.3.3connect-interfaceLoopBack0
[R4-bgp]peer10.1.46.6as-number300
R5的配置如下:
[R5]interfaceGigabitEthernet0/0/0
[R5-GigabitEthernet0/0/0]ipaddress10.1.15.5255.255.255.0
[R5]interfaceGigabitEthernet0/0/1
[R5-GigabitEthernet0/0/1]ipaddress10.1.35.5255.255.255.0
[R5]interfaceLoopBack0
[R5-LoopBack0]ipaddress5.5.5.5255.255.255.255
[R5]interfaceLoopBack1
[R5-LoopBack1]ipaddress100.1.1.1255.255.255.0
[R5]interfaceLoopBack2
[R5-LoopBack2]ipaddress100.2.2.2255.255.255.0
[R5]interfaceLoopBack3
[R5-LoopBack3]ipaddress200.1.1.1255.255.255.0
[R5]interfaceLoopBack4
[R5-LoopBack4]ipaddress200.2.2.2255.255.255.0
[R5]bgp100
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer10.1.15.1as-number200
[R5-bgp]peer10.1.35.3as-number200
[R5-bgp]network100.1.1.024
[R5-bgp]network100.2.2.024
[R5-bgp]network200.1.1.024
[R5-bgp]network200.2.2.024
R6的配置如下:
[R6]interfaceGigabitEthernet0/0/0
[R6-GigabitEthernet0/0/0]ipaddress10.1.26.6255.255.255.0
[R6]interfaceGigabitEthernet0/0/1
[R6-GigabitEthernet0/0/1]ipaddress10.1.46.6255.255.255.0
[R6]interfaceLoopBack0
[R6-LoopBack0]ipaddress6.6.6.6255.255.255.255
[R6]bgp300
[R6-bgp]router-id6.6.6.6
[R6-bgp]peer10.1.26.2as-number200
[R6-bgp]peer10.1.46.4as-number200
在R1上查看BGP鄰居關系:
[R1]displaybgppeer
BGPlocalrouterID:1.1.1.1
LocalASnumber:200
Totalnumberofpeers:3Peersinestablishedstate:3
PeerVASMsgRcvdMsgSentOutQUp/DownStatePrefRcv
2.2.2.24200101200044Established0
4.4.4.442006800028Established0
10.1.15.541007600050Established4
其他路由器的BGP鄰居請做相應查看,確保所有的BGP鄰居關系都正確的建立。
實驗需求二
- R1訪問100網段及200網段的流量直接送到R5,當R1與R5之間的鏈路發生故障時,R1訪問這兩個子網的流量自動切換到R2-R3-R5。當R1與R5及R2之間的鏈路均發生故障時,R1訪問這兩個子網的流量自動切換到R4-R3-R5。
- R3訪問100網段及200網段的流量直接送到R5,當R3與R5之間的鏈路發生故障時,R3訪問這兩個子網的流量自動切換到R4-R1-R5。當R3與R5及R4之間的鏈路均發生故障時,R1訪問這兩個子網的流量自動切換到R2-R1-R5。
- R2訪問100網段的流量優先走R1,當R1發生故障,或者R1-R2之間的互聯線路DOWN掉時,流量切換到R3。
- R2訪問200網段的流量優先走R3,當R3發生故障,或者R3-R2之間的互聯線路DOWN掉時,流量切換到R1。
- R4訪問100網段的流量優先走R1,當R1發生故障,或者R1-R4之間的互聯線路DOWN掉時,流量切換到R3。
- R4訪問200網段的流量優先走R3,當R3發生故障,或者R3-R4之間的互聯線路DOWN掉時,流量切換到R1。
- 注意,實驗過程中只需滿足以上需求即可,無需考慮往返路徑一致或者ping通的問題。
實際上滿足上述需求的方法有很多,畢竟BGP的路徑屬性非常豐富,路由策略工具也很多。這里我們考慮在R5上部署策略,采用MED屬性來操控路由,如此一來MED值除了影響R1、R3的路由優選,還將進一步的影響路由在AS200內的優選,大體思路如下:
R5的配置新增如下:
#寫兩個IP前綴列表,分別匹配100及200路由:
[R5]ipip-prefix1index10permit100.1.1.024
[R5]ipip-prefix1index20permit100.2.2.024
[R5]ipip-prefix2index10permit200.1.1.024
[R5]ipip-prefix2index20permit200.2.2.024
#寫兩個route-policy,分別對100及200的路由設置MED屬性值:
[R5]route-policytoR1permitnode10
[R5-route-policy]if-matchip-prefix1
[R5-route-policy]applycost100
[R5]route-policytoR1permitnode20
[R5-route-policy]if-matchip-prefix2
[R5-route-policy]applycost200
[R5]route-policytoR3permitnode10
[R5-route-policy]if-matchip-prefix1
[R5-route-policy]applycost200
[R5]route-policytoR3permitnode20
[R5-route-policy]if-matchip-prefix2
[R5-route-policy]applycost100
#在BGP配置視圖下,將路由策略應用在R1及R3的出站方向:
[R5]bgp100
[R5-bgp]peer10.1.15.1route-policytoR1export
[R5-bgp]peer10.1.35.3route-policytoR3export
完成上述配置后在網絡正常情況下,R1、R3訪問100網段及200網段的流量已經滿足需求,例如R1的BGP表如下:
displaybgprouting-table
BGPLocalrouterIDis1.1.1.1
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:4
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.1.1.0/2410.1.15.500100i
*>100.2.2.0/2410.1.15.500100i
*>200.1.1.010.1.15.500100i
*>200.2.2.010.1.15.500100i
R2及R4訪問100及200網絡也滿足需求,例如R2的BGP表:
displaybgprouting-table
BGPLocalrouterIDis2.2.2.2
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.1.1.0/241.1.1.11001000100i
*i3.3.3.32001000100i
*>i100.2.2.0/241.1.1.11001000100i
*i3.3.3.32001000100i
*>i200.1.1.03.3.3.31001000100i
*i1.1.1.12001000100i
*>i200.2.2.03.3.3.31001000100i
*i1.1.1.12001000100i
但是R1與R5之間的連線一旦斷開,R1將丟失到達這兩個子網的路由,這是因為R2及R4不會將自己從R3學習到的路由再傳遞給R1 -- IBGP水平分割規則使然。R3同樣存在類似的問題。
解決的辦法是,在AS200內構建路由反射簇,將R2設置為RR,R1及R3是它的Client;將R4也設置為RR,R1及R3是它的Client。
R2的配置增加如下:
[R2]bgp200
[R2-bgp]peer1.1.1.1reflect-client
[R2-bgp]peer3.3.3.3reflect-client
R4的配置增如如下:
[R4]bgp200
[R4-bgp]peer1.1.1.1reflect-client
[R4-bgp]peer3.3.3.3reflect-client
完成上述配置后,R1及R3的選路似乎出現了點問題,拿R1來說,關于100網段的路由在其BGP表中自然只有一條路徑那就是來自R5的。但是200網段的兩路由,BGP表里卻各有三條路徑:
displaybgprouting-table
BGPLocalrouterIDis1.1.1.1
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.1.1.0/2410.1.15.51000100i
*>100.2.2.0/2410.1.15.51000100i
*>i200.1.1.03.3.3.31001000100i
*i3.3.3.31001000100i
*10.1.15.52000100i
*>i200.2.2.03.3.3.31001000100i
*i3.3.3.31001000100i
*10.1.15.52000100i
三條路徑其中一條是更新自R5,另外兩條分別更新自R2和R4(他們將自己從R3學習到的200路由反射給了R1):
而R1關于200.1.1.0/24及200.2.2.0/24最終優選了來自R2的更新(這個更新實際上是R3將路由傳遞給R2,R2再更新給R1的)這個選路就不符合需求了,那么如何保證在網絡正常的情況下,R1關于100及200的路由都優選來自R5的更新,當R1丟失了與R5的連接,則優選來自R2的更新呢?
這里可以利用preferred-value這個屬性,在R1及R3上部署。在R1上部署時,將R5傳遞過來的100及200路由的preferred-value設置為100。在R3上部署時,將R5傳遞過來的100及200路由的preferred-value設置為100。
R1的配置如下:
[R1]ipip-prefix1index10permit100.1.1.024
[R1]ipip-prefix1index20permit100.2.2.024
[R1]ipip-prefix2index10permit200.1.1.024
[R1]ipip-prefix2index20permit200.2.2.024
[R1]route-policyFor_R5permitnode10
[R1-route-policy]if-matchip-prefix1
[R1-route-policy]applypreferred-value100
[R1]route-policyFor_R5permitnode20
[R1-route-policy]if-matchip-prefix2
[R1-route-policy]applypreferred-value100
[R1]bgp200
[R1-route-policy]peer10.1.15.5route-policyFor_R5import
R3的配置如下:
[R3]ipip-prefix1index10permit100.1.1.024
[R3]ipip-prefix1index20permit100.2.2.024
[R3]ipip-prefix2index10permit200.1.1.024
[R3]ipip-prefix2index20permit200.2.2.024
[R3]route-policyFor_R5permitnode10
[R3-route-policy]if-matchip-prefix1
[R3-route-policy]applypreferred-value100
[R3]route-policyFor_R5permitnode20
[R3-route-policy]if-matchip-prefix2
[R3-route-policy]applypreferred-value100
[R3]bgp200
[R3-bgp]peer10.1.35.5route-policyFor_R5import
完成上述配置后,看一下R1的BGP表:
[R1]displaybgprouting-table
BGPLocalrouterIDis1.1.1.1
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrPrefValPath/Ogn
*>100.1.1.0/2410.1.15.5100100100i
*>100.2.2.0/2410.1.15.5100100100i
*>200.1.1.010.1.15.5200100100i
*i3.3.3.31001000100i
*i3.3.3.31001000100i
*>200.2.2.010.1.15.5200100100i
*i3.3.3.31001000100i
*i3.3.3.31001000100i
200的路由R1優選了來自R5的更新。同樣的,R3也會優選來自R5的更新。
現在切斷R1與R5之間的連線:
R1的BGP表變成了這樣:
[R1]displaybgprouting-table
BGPLocalrouterIDis1.1.1.1
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.1.1.0/243.3.3.32001000100i
*i3.3.3.32001000100i
*>i100.2.2.0/243.3.3.32001000100i
*i3.3.3.32001000100i
*>i200.1.1.03.3.3.31001000100i
*i3.3.3.31001000100i
*>i200.2.2.03.3.3.31001000100i
*i3.3.3.31001000100i
R1上100及200的路由各有2條路徑,R1會優選來自R2的BGP路由更新,這是因為R2的peeraddress要更小。雖然如此,但實際上R1去往目標網段的流量是在R2和R4上進行負載分擔的,這是因為BGP路由的下一跳是3.3.3.3,而R1的3.3.3.3路由通過OSPF從R2及R4都可達并且是等代價的路徑,所以這與我們的需求就不符了,需求是要讓流量走R2,只當R2也掛掉的時候才走R4。
[R1]displayiprouting-tableprotocolbgp
RouteFlags:R-relay,D-downloadtofib
------------------------------------------------------------------------------
Publicroutingtable:BGP
Destinations:4Routes:4
BGProutingtablestatus:
Destinations:4Routes:4
Destination/MaskProtoPreCostFlagsNextHopInterface
100.1.1.0/24IBGP255200RD3.3.3.3GigabitEthernet0/0/1
IBGP255200RD3.3.3.3GigabitEthernet0/0/2
100.2.2.0/24IBGP255200RD3.3.3.3GigabitEthernet0/0/1
IBGP255200RD3.3.3.3GigabitEthernet0/0/2
200.1.1.0/24IBGP255100RD3.3.3.3GigabitEthernet0/0/1
IBGP255100RD3.3.3.3GigabitEthernet0/0/2
200.2.2.0/24IBGP255100RD3.3.3.3GigabitEthernet0/0/1
IBGP255100RD3.3.3.3GigabitEthernet0/0/2
BGProutingtablestatus:
Destinations:0Routes:0
如何解決這個問題呢?很簡單,將如下圖所示的接口的OSPF COST值調大即可:
R1:
[R1]interfaceGigabitEthernet0/0/2
[R1-GigabitEthernet0/0/2]ospfcost999
R3:
[R3]interfaceGigabitEthernet0/0/2
[R3-GigabitEthernet0/0/2]ospfcost999
這么一來,對于R1而言(R3也是類似的道理),在R1-R5之間線路DOWN掉時,其關于100及200的路由將優選來自R2的路由更新,并且數據轉發時將始終使用R2-R3-R5這條路徑。
[R1]displayiprouting-tableprotocolbgp
RouteFlags:R-relay,D-downloadtofib
------------------------------------------------------------------------------
Publicroutingtable:BGP
Destinations:4Routes:4
BGProutingtablestatus:
Destinations:4Routes:4
Destination/MaskProtoPreCostFlagsNextHopInterface
100.1.1.0/24IBGP255200RD3.3.3.3GigabitEthernet0/0/1
100.2.2.0/24IBGP255200RD3.3.3.3GigabitEthernet0/0/1
200.1.1.0/24IBGP255100RD3.3.3.3GigabitEthernet0/0/1
200.2.2.0/24IBGP255100RD3.3.3.3GigabitEthernet0/0/1
BGProutingtablestatus:
Destinations:0Routes:0
實驗需求三
在完成上述配置后,要求在R6上部署策略,使得R6去往100網段主走R2,R4為備份路徑;去往200網段主走R4,R2為備份路徑。
在完成上述配置后R2及R4都會向R6通告100及200的路由,并且路由的MED值均為空,也就是說,R5在發布路由時通過策略為路由攜帶的MED屬性值不會隨著路由傳遞給AS300。
對于這四條目標路由,R6均優選自R2的更新,這是因為R2的RouterID比R5要小,通過如下的輸出可以驗證:
displaybgprouting-table100.1.1.0
BGPlocalrouterID:6.6.6.6
LocalASnumber:300
Paths:2available,1best,1select
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.26.2(2.2.2.2)
RouteDuration:00h17m37s
DirectOut-interface:GigabitEthernet0/0/0
Originalnexthop:10.1.26.2
Qosinformation:0x0
AS-path200100,originigp,pref-val0,valid,external,best,select,active,
pre255
Advertisedtosuch2peers:
10.1.26.2
10.1.46.4
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.46.4(4.4.4.4)
RouteDuration:00h17m37s
DirectOut-interface:GigabitEthernet0/0/1
Originalnexthop:10.1.46.4
Qosinformation:0x0
AS-path200100,originigp,pref-val0,valid,external,pre255,notpreferred
forrouterID
Notadvertisedtoanypeeryet
現在我們在R6上部署策略來滿足需求,方法有不少,這里我們使用Local_preference屬性。
[R6]ipip-prefix1index10permit100.1.1.024
[R6]ipip-prefix1index20permit100.2.2.024
[R6]ipip-prefix2index10permit200.1.1.024
[R6]ipip-prefix2index20permit200.2.2.024
[R6]route-policyFor_R2permitnode10
[R6-route-policy]if-matchip-prefix1
[R6-route-policy]applylocal-preference200
[R6]route-policyFor_R2permitnode20
[R6-route-policy]if-matchip-prefix2
[R6-route-policy]applylocal-preference100
[R6]route-policyFor_R4permitnode10
[R6-route-policy]if-matchip-prefix1
[R6-route-policy]applylocal-preference100
[R6]route-policyFor_R4permitnode20
[R6-route-policy]if-matchip-prefix2
[R6-route-policy]applylocal-preference200
[R6]bgp300
[R6]peer10.1.26.2route-policyFor_R2import
[R6]peer10.1.46.4route-policyFor_R4import
[R6]displaybgprouting-table
BGPLocalrouterIDis6.6.6.6
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.1.1.0/2410.1.26.22000200100i
*10.1.46.41000200100i
*>100.2.2.0/2410.1.26.22000200100i
*10.1.46.41000200100i
*>200.1.1.010.1.46.42000200100i
*10.1.26.21000200100i
*>200.2.2.010.1.46.42000200100i
*10.1.26.21000200100i
從上面的輸出可以看出,關于100網段的兩條路由,R6優選來自R2的更新;而200網段的兩條路由,R6優選來自R4的更新。
實驗需求四
在上述需求的基礎上,AS200內的R1上有部分直連網段需要發布出來以便R5能夠通過BGP學習到,新增一個Loopback接口,配置IP:11.11.11.11/32用于模擬直連網段(實際可能較多),通告進BGP。但是R6也就學習到了這些路由,在R6上完成相應的配置,使得它僅僅收到AS100的路由,對于始發于AS200的路由,R6將過濾掉。注意始發于AS200的路由多而雜,請在R6上采用適當的方式過濾掉這些路由。R1增補配置如下:
[R1]Interfaceloopback11
[R1-LoopBack11]Ipaddress11.11.11.1132
[R1]bgp200
[R1-bgp]network11.11.11.1132
[R6]displaybgprouting-table
BGPLocalrouterIDis6.6.6.6
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>11.11.11.11/3210.1.26.20200i
*10.1.46.40200i
*>100.1.1.0/2410.1.26.22000200100i
*10.1.46.41000200100i
*>100.2.2.0/2410.1.26.22000200100i
*10.1.46.41000200100i
*>200.1.1.010.1.46.42000200100i
*10.1.26.21000200100i
*>200.2.2.010.1.46.42000200100i
*10.1.26.21000200100i
R6已經學習到AS200的路由11.11.11.11/32了。由于現在無法知道也不可能知道AS200內路由的所有前綴,因此無法使用ACL或者前綴列表來抓取路由從而進一步的過濾。實現這個需求最簡單的方法是采用基于AS_PATH的過濾,利用一個正則表達式來抓取200的AS號。
R6增加如下配置:
[R6]ipas-path-filternoAS200deny^200$#抓取AS200,deny所匹配的路由
[R6]ipas-path-filternoAS200permit.*#允許任意
[R6]bgp300
[R6-bgp]peer10.1.26.2as-path-filternoAS200import
[R6-bgp]peer10.1.46.4as-path-filternoAS200import
完成上述配置后,R6將過濾掉所有始發于AS200的路由。
實驗需求五
將實驗需求三、四中的相關配置刪除,將實驗場景還原到滿足需求二的情形。
現在要求通過在R2、R4上進行相關配置,使得R6去往100網段的流量主走R2,R4為備份;去往200網段的流量主走R4,R2為備。要求在R2、R4上不使用route-policy對R6做出站方向的策略。
利用“最長匹配原則”,可以很好的實現數據分流。如下圖所示,在R2上部署路由匯總,將200網段的兩條路由匯總成200.0.0.0/8,加上100網段的明細路由一并更新給R6;在R4上部署路由匯總,將100網段的路由匯總成100.0.0.0/8,加上200網段的明細路由一并更新給R6。
這么一來,在網絡正常的情況下,R6去往100.1.1.0/24及100.2.2.0/24會走R2,當R2發生故障時,由于還有一條R4發送過來的100.0.0.0/8匯總路由,因此流量能夠自動切換到R4。
R2的增補配置如下:
[R2]bgp200
[R2-bgp]aggregate200.0.0.08as-set
R4的增補配置如下:
[R4]bgp200
[R4-bgp]aggregate100.0.0.08as-set
注意,在R2及R4上部署路由匯總時,在這個場景中匯總命令不能加detail-suppressed而抑制明細,這是因為如果這里增加了該關鍵字,R2及R4將只發布匯總路由,而抑制明細,這會影響到前面的需求二。設想一下,如果R2的匯總命令中加了detail-suppressed關鍵字,那么R2將不再向R1及R3反射200網段的明細路由,在網絡發生故障時,R2將失去作為備份路徑的可能。
接下去,在R2上部署策略,將200網段的明細過濾掉不發給R6;在R4上部署策略,將100網段的明細過濾掉不發給R6:R2增補配置如下:
[R2]ipip-prefixtoR6index10deny200.0.0.08greater-equal24less-equal24
#上面這條前綴列表是匹配200開頭、掩碼是/24的路由
[R2]ipip-prefixtoR6index20permit0.0.0.00less-equal32
#上面這條前綴列表是匹配所有路由
[R2]bgp200
[R2-bgp]peer10.1.26.6ip-prefixtoR6export
R4增補配置如下:
[R4]ipip-prefixtoR6index10deny100.0.0.08greater-equal24less-equal24
[R4]ipip-prefixtoR6index20permit0.0.0.00less-equal32
[R4]bgp200
[R4-bgp]peer10.1.46.6ip-prefixtoR6export
displaybgprouting-table
BGPLocalrouterIDis6.6.6.6
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:6
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.0.0.010.1.46.40200100i
*>100.1.1.0/2410.1.26.20200100i
*>100.2.2.0/2410.1.26.20200100i
*>200.0.0.0/810.1.26.20200100i
*>200.1.1.010.1.46.40200100i
*>200.2.2.010.1.46.40200100i
需求滿足了,但是由于在R2、R4上部署了路由匯總,產生的匯總路由不僅傳遞給了R6,也傳遞給了R1及R3,而實際上,這兩條匯總路由R1及R3并不需要,因此還需過濾掉。同樣過濾的方法也很多。
R2的配置增補如下:
[R2]ipip-prefixnoAggregationindex10deny200.0.0.08
[R2]ipip-prefixnoAggregationindex20permit0.0.0.00less-equal32
[R2]bgp200
[R2-bgp]peer1.1.1.1ip-prefixnoAggregationexport
[R2-bgp]peer3.3.3.3ip-prefixnoAggregationexport
R4的配置增補如下:
[R4]ipip-prefixnoAggregationindex10deny100.0.0.08
[R4]ipip-prefixnoAggregationindex20permit0.0.0.00less-equal32
[R4-bgp]bgp200
[R4-bgp]peer1.1.1.1ip-prefixnoAggregationexport
[R4-bgp]peer3.3.3.3ip-prefixnoAggregationexport
實驗需求六
將實驗需求五中的相關配置及策略去除,再繼續下面的實驗。
100網段的路由是特殊的生產路由,從AS100通告給下游后,下游需要對這些路由進一步的部署針對性的策略,因此在上游引入100網段路由時,打上100:100的Community屬性值,并確保R2及R4、R6能夠學習到攜帶了該Community屬性值的100網段路由。
R5的配置修改如下:
[R5]ipip-prefix1index10permit100.1.1.024(已有)
[R5]ipip-prefix1index20permit100.2.2.024
[R5]ipip-prefix2index10permit200.1.1.024
[R5]ipip-prefix2index20permit200.2.2.024
[R5]route-policysetCommupermitnode10
[R5-route-policy]applycommunity100:100
[R5]bgp100
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer10.1.15.1as-number200
[R5-bgp]peer10.1.35.3as-number200
[R5-bgp]network100.1.1.0255.255.255.0route-policysetCommu
[R5-bgp]network100.2.2.0255.255.255.0route-policysetCommu
[R5-bgp]peer10.1.15.1advertise-community#務必配置該條命令
[R5-bgp]peer10.1.35.3advertise-community
R1的配置增補如下:
[R1]bgp200
[R1-bgp]peer2.2.2.2advertise-community
[R1-bgp]peer4.4.4.4advertise-community
R3的配置增補如下:
[R3]bgp200
[R3-bgp]peer2.2.2.2advertise-community
[R3-bgp]peer4.4.4.4advertise-community
R2的配置增補如下:
[R2]bgp200
[R2-bgp]peer10.1.26.6advertise-community
R4的配置增補如下:
[R4]bgp200
[R4-bgp]peer10.1.46.6advertise-community
Community屬性值必須執行peer x.x.x.x advertise-community命令,否則默認情況下在向鄰居發送路由時不攜帶Community,同時為了保證路由傳播途中Community屬性值不丟失,需要在沿途每一臺路由器上都執行該命令。
在R2上驗證一下,看看路由100.1.1.0是否攜帶community屬性值:
[R2]displaybgprouting-table100.1.1.0
BGPlocalrouterID:2.2.2.2
LocalASnumber:200
Paths:2available,1best,1select
BGProutingtableentryinformationof100.1.1.0/24:
RR-clientroute.
From:1.1.1.1(1.1.1.1)
RouteDuration:00h09m18s
RelayIPNexthop:10.1.12.1
RelayIPOut-Interface:GigabitEthernet0/0/0
Originalnexthop:1.1.1.1
Qosinformation:0x0
Community:<100:100>
AS-path100,originigp,MED100,localpref100,pref-val0,valid,internal,be
st,select,active,pre255,IGPcost1
Advertisedtosuch3peers:
1.1.1.1
3.3.3.3
10.1.26.6
BGProutingtableentryinformationof100.1.1.0/24:
RR-clientroute.
From:3.3.3.3(3.3.3.3)
RouteDuration:00h08m33s
RelayIPNexthop:10.1.23.3
RelayIPOut-Interface:GigabitEthernet0/0/1
Originalnexthop:3.3.3.3
Qosinformation:0x0
Community:<100:100>
AS-path100,originigp,MED200,localpref100,pref-val0,valid,internal,pr
e255,IGPcost1,notpreferredforMED
Notadvertisedtoanypeeryet
在R6上驗證一下:
displaybgprouting-table100.1.1.0
BGPlocalrouterID:6.6.6.6
LocalASnumber:300
Paths:2available,1best,1select
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.26.2(2.2.2.2)
RouteDuration:00h00m35s
DirectOut-interface:GigabitEthernet0/0/0
Originalnexthop:10.1.26.2
Qosinformation:0x0
Community:<100:100>
AS-path200100,originigp,pref-val0,valid,external,best,select,active,
pre255
Advertisedtosuch2peers:
10.1.26.2
10.1.46.4
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.46.4(4.4.4.4)
RouteDuration:00h00m25s
DirectOut-interface:GigabitEthernet0/0/1
Originalnexthop:10.1.46.4
Qosinformation:0x0
Community:<100:100>
AS-path200100,originigp,pref-val0,valid,external,pre255,notpreferred
forrouterID
Notadvertisedtoanypeeryet
再考慮另一個問題,如果在上述基礎增加一個需求,當AS200將100網段的這些路由更新AS300時,希望這些路由僅在AS300內傳遞,不能傳出AS300。在R2及R4上定義一個community-filter列表,抓取community值為100:100的路由,然后編寫一個route-policy,為匹配這個community-filter列表的路由增加一個no-export的community屬性值,再對R6應用這個route-policy即可。
R2的配置增補如下:
[R2]ipcommunity-filter1permit100:100
[R2]route-policysetCommupermitnode10
[R2-route-policy]if-matchcommunity-filter1
[R2-route-policy]applycommunityno-exportadditive
[R2-route-policy]route-policysetCommupermitnode20
[R2]bgp200
[R2-bgp]peer10.1.26.6route-policysetCommuexport
R4的配置增補如下:
[R4]ipcommunity-filter1permit100:100
[R4-route-policy]route-policysetCommupermitnode10
[R4-route-policy]if-matchcommunity-filter1
[R4-route-policy]applycommunityno-exportadditive
[R4-route-policy]route-policysetCommupermitnode20
[R4]bgp200
[R4-bgp]peer10.1.46.6route-policysetCommuexport
注意在上述的配置中,route-policy setCommu permit node 20并非無意義的命令,相反,這里如果不配置該條命令將導致R6上丟失200網段的路由。
displaybgprouting-table100.1.1.0
BGPlocalrouterID:6.6.6.6
LocalASnumber:300
Paths:2available,1best,1select
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.26.2(2.2.2.2)
RouteDuration:00h02m38s
DirectOut-interface:GigabitEthernet0/0/0
Originalnexthop:10.1.26.2
Qosinformation:0x0
Community:<100:100>,no-export
AS-path200100,originigp,pref-val0,valid,external,best,select,active,
pre255
Notadvertisedtoanypeeryet
BGProutingtableentryinformationof100.1.1.0/24:
From:10.1.46.4(4.4.4.4)
RouteDuration:00h00m42s
DirectOut-interface:GigabitEthernet0/0/1
Originalnexthop:10.1.46.4
Qosinformation:0x0
Community:<100:100>,no-export
AS-path200100,originigp,pref-val0,valid,external,pre255,notpreferred
forrouterID
Notadvertisedtoanypeeryet
實驗需求七
將實驗環境恢復一下,所有設備只保留接口IP等基礎配置。
R1及R3處于聯邦成員AS 65013;
R2、R4處于聯邦成員AS 65024;
AS200內運行OSPF,所有路由器通告自己的Loopback0接口,聯邦的鄰居關系建立在Loopback0口上。
OSPF的配置在這里就不列舉了。最終確保R6能夠學習到100及200網段的路由。R1的配置如下:
[R1]bgp65013
[R1-bgp]router-id1.1.1.1
[R1-bgp]confederationid200
[R1-bgp]confederationpeer-as65024
[R1-bgp]peer10.1.15.5as-number100
[R1-bgp]peer2.2.2.2as-number65024
[R1-bgp]peer2.2.2.2connect-interfaceloopback0
[R1-bgp]peer2.2.2.2next-hop-local
[R1-bgp]peer2.2.2.2ebgp-max-hop
[R1-bgp]peer4.4.4.4as-number65024
[R1-bgp]peer4.4.4.4connect-interfaceloopback0
[R1-bgp]peer4.4.4.4ebgp-max-hop
[R1-bgp]peer4.4.4.4next-hop-local
R3的配置如下:
[R3]bgp65013
[R3-bgp]router-id3.3.3.3
[R3-bgp]confederationid200
[R3-bgp]confederationpeer-as65024
[R3-bgp]peer10.1.35.5as-number100
[R3-bgp]peer2.2.2.2as-number65024
[R3-bgp]peer2.2.2.2connect-interfaceloopback0
[R3-bgp]peer2.2.2.2ebgp-max-hop
[R3-bgp]peer2.2.2.2next-hop-local
[R3-bgp]peer4.4.4.4as-number65024
[R3-bgp]peer4.4.4.4connect-interfaceloopback0
[R3-bgp]peer4.4.4.4ebgp-max-hop
[R3-bgp]peer4.4.4.4next-hop-local
R2的配置如下:
[R2]bgp65024
[R2-bgp]router-id2.2.2.2
[R2-bgp]confederationid200
[R2-bgp]confederationpeer-as65013
[R2-bgp]peer1.1.1.1as-number65013
[R2-bgp]peer1.1.1.1connect-interfaceloopback0
[R2-bgp]peer1.1.1.1ebgp-max-hop
[R2-bgp]peer3.3.3.3as-number65013
[R2-bgp]peer3.3.3.3connect-interfaceloopback0
[R2-bgp]peer3.3.3.3ebgp-max-hop
[R2-bgp]peer10.1.26.6as-number300
R4的配置如下:
[R4]bgp65024
[R4-bgp]router-id4.4.4.4
[R4-bgp]confederationid200
[R4-bgp]confederationpeer-as65013
[R4-bgp]peer1.1.1.1as-number65013
[R4-bgp]peer1.1.1.1connect-interfaceloopback0
[R4-bgp]peer1.1.1.1ebgp-max-hop
[R4-bgp]peer3.3.3.3as-number65013
[R4-bgp]peer3.3.3.3connect-interfaceloopback0
[R4-bgp]peer3.3.3.3ebgp-max-hop
[R4-bgp]peer10.1.46.6as-number300
R5的配置如下:
[R5]bgp100
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer10.1.15.1as-number200
[R5-bgp]peer10.1.35.3as-number200
[R5-bgp]network100.1.1.0255.255.255.0
[R5-bgp]network100.2.2.0255.255.255.0
[R5-bgp]network200.1.1.0255.255.255.0
[R5-bgp]network200.2.2.0255.255.255.0
R6的配置如下:
[R6]bgp300
[R6-bgp]router-id6.6.6.6
[R6-bgp]peer10.1.26.2as-number200
[R6-bgp]peer10.1.46.4as-number200
[R5]displaybgppeer
BGPlocalrouterID:5.5.5.5
LocalASnumber:100
Totalnumberofpeers:2Peersinestablishedstate:2
PeerVASMsgRcvdMsgSentOutQUp/DownStatePrefRcv
10.1.15.142003700022Established0
10.1.35.342003700022Established0
[R1]displaybgppeer
BGPlocalrouterID:1.1.1.1
LocalASnumber:65013
Totalnumberofpeers:3Peersinestablishedstate:3
PeerVASMsgRcvdMsgSentOutQUp/DownStatePrefRcv
2.2.2.24650246800005Established0
4.4.4.44650245700038Established0
10.1.15.541008500039Established4
觀察一下路由:
[R2]displaybgprouting-table
BGPLocalrouterIDis2.2.2.2
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>i100.1.1.0/241.1.1.101000(65013)100i
*i3.3.3.301000(65013)100i
*>i100.2.2.0/241.1.1.101000(65013)100i
*i3.3.3.301000(65013)100i
*>i200.1.1.01.1.1.101000(65013)100i
*i3.3.3.301000(65013)100i
*>i200.2.2.01.1.1.101000(65013)100i
*i3.3.3.301000(65013)100i
上面是R2的BGP表,關注一下AS_PATH屬性值,()括號內的AS號為聯邦成員AS號。
[R6]displaybgprouting-table
BGPLocalrouterIDis6.6.6.6
Statuscodes:*-valid,>-best,d-damped,
h-history,i-internal,s-suppressed,S-Stale
Origin:i-IGP,e-EGP,?-incomplete
TotalNumberofRoutes:8
NetworkNextHopMEDLocPrfPrefValPath/Ogn
*>100.1.1.0/2410.1.26.20200100i
*10.1.46.40200100i
*>100.2.2.0/2410.1.26.20200100i
*10.1.46.40200100i
*>200.1.1.010.1.26.20200100i
*10.1.46.40200100i
*>200.2.2.010.1.26.20200100i
*10.1.46.40200100i
R6已經能夠學習到100及200網段的路由了,并且這些路由的AS_PATH中是看不到聯邦的信息。
審核編輯:郭婷
-
接口
+關注
關注
33文章
8497瀏覽量
150835 -
拓撲
+關注
關注
4文章
337瀏覽量
29571 -
路由器
+關注
關注
22文章
3707瀏覽量
113542
原文標題:BGP進階:BGP 綜合實驗二
文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論