各位好: 基于上次有同学提出了有关MPLS L3VPN Option C 跨域的问题,做一简单分析,主要对内部路由、外部路由、IGP LSP、BGP LSP、VPNV4路由传递等基本概念予以说明。
简要的示例拓扑如上图,两个VPN Site 属于同一个VPN,Site1通过AS100接入、Site2通过AS200接入,现有互通需求,拟定采用Option C跨域方式,实现跨AS的MPLS L3VPN互通。
首先,阐述两个基本概念,内部路由和外部路由。简单来讲一个AS一般都是一个运营商网络,运营商为自己的服务对象从自身地址块内分配的IP即为AS的内部地址,而其他AS的地址块会被认为是外部地址,一般本AS不会对其他AS的地址块路由予以存储、传递。 例如:本例中AS100为AS200从本地址块里分配的地址,AS200将这些地址配置在各路由器的loopback 0上,那么对于AS100来讲这些地址就是内部地址,需要在本AS的路由器中存储路由、转发数据。而对于AS200中的VPN路由、其他路由即为外部地址,一般本AS不存储也不负责转发这些地址的路由。内部路由器可以通过IGP承载,也可以通过IBGP承载。
其次,简单说一下Option C方式的好处,采用该方式的好处主要是便于扩展、管理,ASBR无需存储VPNV4路由,也符合MPLS L3VPN 的设计理念,即VPN路由都在PE设备上承载,中间设备无需感知这些路由,仅作标签转发即可。
下面对关键设备的一些配置加以说明:
(1). ASBR间使用BGP协议通告AS内部路由(即对方AS分配给本AS的地址块),包含PE、RR、ASBR的loopback 0接口地址,同时使用BGP的Label + 扩展,在发送IPV4路由的同时发布该路由的MPLS标签。 结合路由策略,仅仅对PE、RR、ASBR的loopback 0地址发布标签路由。
[ASBR1-bgp]dis this [V200R003C00] # bgp 100 peer 20.1.1.2 as-number 100 peer 20.1.1.2 connect-interface LoopBack0 peer 34.1.1.4 as-number 200 # ipv4-family unicast undo synchronization network 20.1.1.1 255.255.255.255 network 20.1.1.2 255.255.255.255 network 20.1.1.3 255.255.255.255 peer 20.1.1.2 enable peer 34.1.1.4 enable peer 34.1.1.4 route-policy 20 export peer 34.1.1.4 label-route-capability #
[ASBR1-bgp]display ip ip-prefix Prefix-list 20 Permitted 6 Denied 0 index: 10 permit 20.1.1.1/32 index: 20 permit 20.1.1.2/32 index: 30 permit 20.1.1.3/32 [ASBR1-bgp]display route-policy Route-policy : 20 permit : 10 (matched counts: 3) Match clauses : if-match ip-prefix 20 Apply clauses : apply mpls-label
[ASBR1-GigabitEthernet0/0/2]dis this [V200R003C00] # interface GigabitEthernet0/0/2 ip address 34.1.1.3 255.255.255.0 mpls # 在ASBR间互联的接口需要使能MPLS,无需使能LDP,因为BGP协议已经可以在发布IPV4路由的同时,发布路由与标签的绑定关系。
(2).在AS内部运行IGP(ISIS、OSPF)发布直连接口、loopback 0 接口,在互联接口上开启MPLS、LDP。
(3).在ASBR上需要开启MPLS 的 BGP Lable路由的触发功能,开启该功能主要是为了打通BGP LSP 与LDP LSP 建立端到端的LSP。 [ASBR1-mpls]dis this [V200R003C00] # mpls lsr-id 20.1.1.3 mpls lsp-trigger bgp-label-route # return [ASBR1-mpls]ls [ASBR1-mpls]lsp-trigger ? all Trigger all FEC for IGP bgp-label-route Trigger Host FEC for public labeled BGP
(4).在ASBR上将BGP路由引入到IGP中,保证本端路由器具有到达对端路由器loopback 0接口的路由,在做该操作后,可以通过查看标签抓发表看到上面提到的 BGP LSP 与 LDP LSP打通了。另外,引入时可以结合路由策略仅匹配带有label的32位BGP路由。在AS内部ASBR可以通过LDP协议将对端32地址的BGP Label 通告给内部的其他路由器了,这样端到端的LSP就打通了。
[ASBR1-isis-10]dis this [V200R003C00] # isis 10 is-level level-2 cost-style wide network-entity 49.0001.0030.0300.3003.00 import-route bgp #
[ASBR1]display mpls lsp ------------------------------------------------------------------------------- LSP Information: BGP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 20.1.1.1/32 1026/NULL -/- 20.1.1.2/32 1027/NULL -/- 20.1.1.3/32 1028/NULL -/- 10.1.1.1/32 NULL/1024 -/- 10.1.1.2/32 NULL/1025 -/- 10.1.1.3/32 NULL/1026 -/- ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 20.1.1.1/32 NULL/3 -/GE0/0/1 20.1.1.1/32 1024/3 -/GE0/0/1 20.1.1.3/32 3/NULL -/- 20.1.1.2/32 NULL/3 -/GE0/0/0 20.1.1.2/32 1025/3 -/GE0/0/0 10.1.1.1/32 1029/1024 -/- 10.1.1.2/32 1030/1025 -/- 10.1.1.3/32 1031/1026 -/- (5).在两个AS的RR路由间建立多条MPEBGP邻居关系,用于互相通告VPN Site的VPNV4路由。需要注意的是由于两台RR建立的是EBGP邻居关系,按照常规的BGP规则EBGP邻居在更新路由时会将next-hop属性修改为自身地址,由于在Option C方案中PE到PE的LSP已经建立,完全可以通过该LSP转发VPN数据,在RR上配置向对端RR发送路由时不修改下一跳地址,这样在RR反射给本端PE路由时,保持下一跳为对端PE的loopback0地址,这样可以避免VPN流量都需要到RR在进行转发。
[AS100_RR-bgp]dis this [V200R003C00] # bgp 100 undo default ipv4-unicast peer 10.1.1.2 as-number 200 peer 10.1.1.2 ebgp-max-hop 255 peer 10.1.1.2 connect-interface LoopBack0 peer 20.1.1.1 as-number 100 peer 20.1.1.1 connect-interface LoopBack0 peer 20.1.1.3 as-number 100 peer 20.1.1.3 ignore peer 20.1.1.3 connect-interface LoopBack0 # ipv4-family unicast undo synchronization undo peer 10.1.1.2 enable undo peer 20.1.1.1 enable undo peer 20.1.1.3 enable # ipv4-family vpnv4 undo policy vpn-target //由于RR上并没有VPN-instance,也就没有RT,关闭路由自动过滤功能 peer 10.1.1.2 enable peer 10.1.1.2 next-hop-invariable peer 20.1.1.1 enable peer 20.1.1.1 reflect-client peer 20.1.1.1 next-hop-invariable
(6).在PE路由器创建VPN-instance时,需要注意的是由于AS内部都会有自己的RD和RT规则,在配置RT时一定需要将对端PE的RT导出值,进行导入。 [PE1-vpn-instance-vpn1]dis this [V200R003C00] # ip vpn-instance vpn1 ipv4-family route-distinguisher 100:100 vpn-target 100:100 export-extcommunity vpn-target 100:100 200:100 import-extcommunity # (7).两端AS设备做类似配置后,在PE路由器上查看VPNV4路由,可以看到由于配置了EBGP不修改下一跳,RR在将路由反射给本端PE时下一跳保持了对端PE的loopback 0地址。 VPN-Instance vpn1, Router ID 23.1.1.2:
Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn
*> 11.11.1.0/24 12.1.1.1 0 0 65535i *>i 11.11.2.0/24 10.1.1.3 100 0
(8).由于在本例中CE与PE间运行BGP协议,且CE所在的AS均为65535,根据BGP的防环原则CE会将PE发送的包含自身AS的Update丢弃,需要配置CE允许 update中包含自身AS,以学习到对端的VPN路由。 [CE1-bgp]dis this [V200R003C00] # bgp 65535 router-id 1.1.1.1 peer 12.1.1.2 as-number 100 # ipv4-family unicast undo synchronization network 11.11.1.0 255.255.255.0 peer 12.1.1.2 enable peer 12.1.1.2 allow-as-loop # (9).在CE1上指定源地址pingCE2的业务地址,同时在ASBR互联链路上抓取数据包。 [CE1]ping -a 11.11.1.1 11.11.2.1 PING 11.11.2.1: 56 data bytes, press CTRL_C to break Reply from 11.11.2.1: bytes=56 Sequence=1 ttl=251 time=80 ms Reply from 11.11.2.1: bytes=56 Sequence=2 ttl=251 time=40 ms Reply from 11.11.2.1: bytes=56 Sequence=3 ttl=251 time=40 ms Reply from 11.11.2.1: bytes=56 Sequence=4 ttl=251 time=50 ms Reply from 11.11.2.1: bytes=56 Sequence=5 ttl=251 time=40 ms
ping包带有两层MPLS 标签,标签值分别为1026与1029。 其中1029标签为PE2为11.11.2.0/24的VPNV4路由分配的标签,用于告知对端PE,建立CE到CE的转发面。
<PE2>display bgp vpnv4 all routing-table 11.11.2.0
BGP local router ID : 46.1.1.6 Local AS number : 200
Total routes of Route Distinguisher(200:100): 1 BGP routing table entry information of 11.11.2.0/24: Label information (Received/Applied): NULL/1029
在ASBR上查看mpls lsp可以看到1026标签为通过BGP协议学习到的有关10.1.1.3/32的标签,同时,本机通过LDP向LDP邻居发送该前缀标签绑定关系时使用1031标签。 <ASBR1>display mpls lsp ------------------------------------------------------------------------------- LSP Information: BGP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.1.1.3/32 NULL/1026 -/- ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.1.1.3/32 1031/1026 -/-
在PE1上查看10.1.1.3/32的LSP,发现出标签为ASBR1分发的1031 <PE1>display mpls lsp | begin 10.1.1.3 ------------------------------------------------------------------------------- LSP Information: BGP LSP ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- 10.1.1.3/32 NULL/1031 -/GE0/0/1 10.1.1.3/32 1029/1031 -/GE0/0/1
在PE1上通过ping lsp检测到达PE2 loopback 0的LSP联通情况,同时在与ASBR1互联的链路上抓包。可以看到PE1路由器发送的MPLS echo 带有1031的标签。说明当PE1向PE2发送数据时压入的MPLS标签却为1031,(由ASBR1通过LDP分发的)。
<PE1>ping lsp -a 20.1.1.1 ip 10.1.1.3 32 LSP PING FEC: IPV4 PREFIX 10.1.1.3/32/ : 100 data bytes, press CTRL_C to brea k Reply from 10.1.1.3: bytes=100 Sequence=1 time=30 ms Reply from 10.1.1.3: bytes=100 Sequence=2 time=20 ms Reply from 10.1.1.3: bytes=100 Sequence=3 time=30 ms Reply from 10.1.1.3: bytes=100 Sequence=4 time=10 ms Reply from 10.1.1.3: bytes=100 Sequence=5 time=30 ms
总结:OptionC方案在MPLS L3VPN跨域支持方面根据扩展性和灵活性,端到端仅需建立LSP即可完成VPN Site间的数据转发,ASBR上无需保存VPN路由。同时,RR的引入可以兼顾域内、域外VPNV4路由同时传递。
谢谢。
|