So I have worked out that the PE is in fact forwarding the updates to the route reflector. The issue seems to be to do with what rd I am looking at. You see part of this scenario was to do a rewrite of the rt and rd at the change of AS. The rt rewrite is in fact working. Being translated from 2203:3000 to 46202:3000. The faulty assumption that I made was that the rd would also be translated. This is not happening.
So my problem is now not so much redistribution of routes, as this is working, but translation of the rd. I can't for the life of me work out how to do this on cisco.
Taken from a wireshark capture of the BGP updates:
Community Transitive Two-Octet AS Route Target: 46202:3000 Label Stack=16 (bottom) RD=2203:3000, IPv4=10.0.0.1/32
Update on this first issue:
The commands to do this are missing from any IOS release other than on XE (and maybe XR, I don't have access to an XR device).
From one of our production BRAS's:
(config-route-map)#set extcommunity ? cost Cost extended community rt Route Target extended community soo Site-of-Origin extended community vpn-distinguisher VPN Distinguisher
That last line doesn't exist on IOS ver 15, which is what I am running on my lab environment. So for the mean time that is as far as I can go with that part of the scenario.
End of update on that issue
So on top of this issue I have also found another one to do with MPLS PHP. From the PE going to the external AS it is popping off all labels and thus making it so it doesn't work at all. So the other AS receives a packet with no labels at all.
All packets from inside my AS are destined for the other AS next hop IP of 184.108.40.206:
PE-4#show mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 220.127.116.11/32 0 Gi0/0 18.104.22.168
As you can see it pops the label when it shouldn't as the other AS is expecting a label of 16:
LinkedISP#show mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 10.0.0.1/32[V] 0 aggregate/CUSTOMER_3000
Also not sure about how to solve this. Turning off PHP for a next hop doesn't seem to be able to be done.
Thanks in advance for any thoughts on this.
Original Post + Asked for Show commands:
I am labbing up a scenario where we would peer with another service provider that is in a location that our service provider isn't. For example another country. My plan is to peer with that SP and exchange vpnv4 extended communities so that our customers can access their sites that are off that SP's network over a L3VPN. The basic premise is as follows:
Customer<-into a L3VPN->Our MPLS network<->Peering with other SP<->their MPLS network<-Out of L3VPN->Customer
I have configured it all up and I am successfully exchanging the communities over eBGP. The issue I have that I have been so far unable to solve is that for some reason the cisco routers are not re-advertising the externally learnt vpnv4 routes over the internal vpnv4 BGP sessions. Outputs:
PE-4#show ip bgp vpnv4 rd 46202:3000 Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 46202:3000 (default for vrf CUSTOMER_3000_Mapped) *> 10.0.0.1/32 22.214.171.124 0 0 2203 ? *> 10.0.0.3/32 0.0.0.0 0 32768 ? * i10.0.0.200/32 126.96.36.199 0 100 0 ? *>i 188.8.131.52 0 100 0 ?
You can see the route being received from the other service provider (AS2203) and is also inserted into the routing table:
PE-4#show ip route vrf CUSTOMER_3000_Mapped 10.0.0.0/32 is subnetted, 3 subnets B 10.0.0.1 [20/0] via 184.108.40.206, 00:58:11 C 10.0.0.3 is directly connected, Loopback3001 B 10.0.0.200 [200/0] via 220.127.116.11, 00:58:11
It is also successfully receiving routes from the route reflector (10.0.0.200 route).
The route reflector is not being given the routes from the other service provider.
RR1#show ip bgp vpnv4 rd 46202:3000 Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 46202:3000 *>i10.0.0.3/32 18.104.22.168 0 100 0 ? *>i10.0.0.200/32 22.214.171.124 0 100 0 ?
I'm at a loss as to why the external vpnv4 routes are not redistributed internally. Below are the relevant configs. Thank you in advance for any help!
PE-4# vrf definition CUSTOMER_3000_Mapped rd 46202:3000 ! address-family ipv4 route-target export 46202:3000 route-target import 46202:3000 exit-address-family ! interface Loopback3001 vrf forwarding CUSTOMER_3000_Mapped ip address 10.0.0.3 255.255.255.255 ! interface GigabitEthernet0/0 description ### PE-4 <-> LinkedISP ### ip address 126.96.36.199 255.255.255.254 duplex full speed 1000 media-type gbic negotiation auto mpls bgp forwarding router bgp 46202 bgp log-neighbor-changes bgp graceful-restart restart-time 120 bgp graceful-restart stalepath-time 360 bgp graceful-restart no bgp default ipv4-unicast no bgp default route-target filter neighbor ROUTE-REFLECTORS peer-group neighbor ROUTE-REFLECTORS remote-as 46202 neighbor 188.8.131.52 remote-as 2203 neighbor 184.108.40.206 peer-group ROUTE-REFLECTORS neighbor 220.127.116.11 peer-group ROUTE-REFLECTORS ! address-family ipv4 neighbor ROUTE-REFLECTORS send-community extended neighbor 18.104.22.168 activate neighbor 22.214.171.124 activate exit-address-family ! address-family vpnv4 neighbor ROUTE-REFLECTORS send-community extended neighbor 126.96.36.199 activate neighbor 188.8.131.52 send-community extended neighbor 184.108.40.206 route-map community-rewrite-46202:3000 out neighbor 220.127.116.11 activate neighbor 18.104.22.168 activate exit-address-family ! address-family ipv6 neighbor 22.214.171.124 activate neighbor 126.96.36.199 activate exit-address-family ! address-family vpnv6 neighbor ROUTE-REFLECTORS send-community extended neighbor 188.8.131.52 activate neighbor 184.108.40.206 activate exit-address-family ! address-family ipv4 vrf CUSTOMER_3000_Mapped redistribute connected exit-address-family ! ip extcommunity-list 2 permit rt 46202:3000 ip bgp-community new-format ! route-map community-rewrite-46202:3000 permit 10 match extcommunity 2 set extcomm-list 2 delete set extcommunity rt 2203:3000
Route Reflectors are standard config, just simply set up with the PE's as route-reflector-clients.
The 'other provider' is set up basically as a mirror to the above config.
Updated with requested outputs:
PE-4#show bgp vpnv4 unicast all neighbors 220.127.116.11 advertised-routes --Output Omitted-- Route Distinguisher: 46202:3000 (default for vrf CUSTOMER_3000_Mapped) *> 10.0.0.3/32 0.0.0.0 0 32768 ? PE-4#show bgp vpnv4 unicast rd 46202:3000 10.0.0.1 BGP routing table entry for 46202:3000:10.0.0.1/32, version 37 Paths: (1 available, best #1, table CUSTOMER_3000_Mapped) Not advertised to any peer 2203, imported path from 2203:3000:10.0.0.1/32 18.104.22.168 from 22.214.171.124 (126.96.36.199) Origin incomplete, metric 0, localpref 100, valid, external, best Extended Community: RT:46202:3000 mpls labels in/out nolabel/16
More Updated shows:
PE-4#show ip route vrf CUSTOMER_3000_Mapped 10.0.0.1 Routing Table: CUSTOMER_3000_Mapped Routing entry for 10.0.0.1/32 Known via "bgp 46202", distance 20, metric 0 Tag 2203, type external Last update from 188.8.131.52 14:18:17 ago Routing Descriptor Blocks: * 184.108.40.206 (default), from 220.127.116.11, 14:18:17 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 2203 MPLS label: 16 MPLS Flags: MPLS Required PE-4#show ip cef vrf CUSTOMER_3000_Mapped 10.0.0.1 10.0.0.1/32 nexthop 18.104.22.168 GigabitEthernet0/0 label 16
22.214.171.124/31 is also advertised in the global routing table as a connected subnet over OSPF for MPLS:
PE-4#show ip ospf 1 0.0.0.8 interface GigabitEthernet0/0 is up, line protocol is up Internet Address 126.96.36.199/31, Area 8, Attached via Network Statement Process ID 1, Router ID 188.8.131.52, Network Type BROADCAST, Cost: 1 Topology-MTID Cost Disabled Shutdown Topology Name 0 1 no no Base Transmit Delay is 1 sec, State WAITING, Priority 1 No designated router on this network No backup designated router on this network Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 oob-resync timeout 40 No Hellos (Passive interface) Wait time before Designated router selection 00:00:37 Supports Link-local Signaling (LLS) Cisco NSF helper support enabled IETF NSF helper support enabled Index 3/3, flood queue length 0 Next 0x0(0)/0x0(0) Last flood scan length is 0, maximum is 0 Last flood scan time is 0 msec, maximum is 0 msec Neighbor Count is 0, Adjacent neighbor count is 0 Suppress hello for 0 neighbor(s)