Skip to content

Latest commit

 

History

History
765 lines (725 loc) · 22.9 KB

Inter AS Option C IPv6 Tunneling.md

File metadata and controls

765 lines (725 loc) · 22.9 KB

Inter AS MPLS VPN Option C for IPv6 (6PE)

Objective

The objective is to tunnel IPv6 (6PE) traffic that spans different autonomous systems. This implementation offers the ability to tunnel IPv6 across segments that do not support IPv6. In this case with reference to below topology, the NNI between AS64512 and AS64515 does not support IPv6 yet both systems support IPv6 in their core network, therefore we need to tunnel IPv6 across the NNI which does not support IPv6 so as to bridge the IPv6 core networks from AS64512 and AS64515

6PE Inter AS Option C

Design

This design follows the principles of inter AS MPLS Option C in which ASBR64515 will redistribute the IP of RR64515 from OSPF to eBGP and redistribute to OSPF the IP of RR64512 received via eBGP from ASBR64512 as well as generate labels. ASBR64512 will redistribute the IP of RR64512 from OSPF to eBGP and redistribute to OSPF the IP of RR64515 received via eBGP from ASBR64515. The RRs will exchange routing information with each other making IPv6 routes from AS64512 available in AS64515 and vice versa.

Configuration

PE64512

interface Loopback0
 ip address 11.11.11.36 255.255.255.255
 ip ospf 1 area 0
!
interface FastEthernet0/0
 description CONNECTION TO RR
 ip address 155.12.0.36 255.255.255.0
 ip ospf 1 area 0
mpls ip
!
interface FastEthernet0/1
description SAMPLE CUSTOMER
ipv6 address 2001:ABCD:100::36/128
!
router ospf 1
!
router bgp 100
neighbor iBGP peer-group
 neighbor iBGP remote-as 100
 neighbor iBGP update-source Loopback0
 neighbor 10.11.11.29 peer-group iBGP
 !
 address-family ipv4
  neighbor iBGP next-hop-self
  neighbor 10.11.11.29 activate
 exit-address-family
 !
 address-family ipv6
  redistribute connected
  redistribute static
  neighbor iBGP send-community both
  neighbor iBGP next-hop-self
  neighbor iBGP send-label
  neighbor 10.11.11.29 activate
 exit-address-family
!
ip bgp-community new-format
!
ipv6 route 2002::/64 Null0

PE64515

interfaces {
    em0 {
        unit 200 {
            description "SAMPLE CUSTOMER";
            vlan-id 200;
            family inet6 {
                address 2001:abcd:300::36/128;
            }
        }
    }
    em1 {
        unit 10 {
            description "CONNECTION TO RR";
            vlan-id 10;
            family inet {
                address 172.17.0.36/24;
            }
            family inet6;
            family mpls;
        }
    }
    lo0 {
        unit 300 {
            family inet {               
                address 10.33.33.36/32;
            }
        }
    }
}
protocols {
    mpls {
        ipv6-tunneling;
        interface em1.10;
    }
    bgp {
        group iBGP {
            type internal;
            local-address 10.33.33.36;
            family inet {
                unicast;
            }
            family inet6 {
                labeled-unicast {
                    explicit-null;
                }
            }
            export POL_iBGP_EXPORT;     
            local-as 64515;
            neighbor 10.33.33.29;
        }
    }
    ospf {
        area 0.0.0.0 {
            interface lo0.300 {
                passive;
            }
            interface em1.10;
        }
    }
    ldp {
        interface em1.10;
        interface lo0.300;
    }
}
policy-options {
    policy-statement POL_iBGP_EXPORT {
        term NEXT_HOP {
            then {
                next-hop self;
            }                           
        }
        term IPV6_TUNNELLING {
            from family inet6;
            then accept;
        }
    }
}
routing-options {
    rib inet6.0 {
        static {
            route 2003::/64 discard;
        }
    }
    router-id 10.33.33.36;
    autonomous-system 64515;
}

RR64512

interface Loopback0
 ip address 10.11.11.29 255.255.255.255
 ip ospf 1 area 0
!
interface FastEthernet0/0
 description CONNECTION TO PE1
 ip address 172.16.0.29 255.255.255.0
 ip ospf 1 area 0
mpls ip
!
interface FastEthernet0/1
 description CONNECTION TO ASBR1
 ip address 172.16.1.29 255.255.255.0
 ip ospf 1 area 0
mpls ip  
!
router ospf 1
!
router bgp 64512
 neighbor iBGP peer-group
 neighbor iBGP remote-as 100
 neighbor iBGP update-source Loopback0
 neighbor eBGP-6PE peer-group
 neighbor eBGP-6PE remote-as 64515
 neighbor eBGP-6PE ebgp-multihop 255
 neighbor eBGP-6PE update-source Loopback0
 neighbor 10.11.11.33 peer-group iBGP
 neighbor 10.11.11.36 peer-group iBGP
 neighbor 10.33.33.29 peer-group eBGP-6PE
 !
 address-family ipv4
  neighbor iBGP soft-reconfiguration inbound
  neighbor 10.11.11.33 activate
  neighbor 10.11.11.36 activate
  no neighbor 10.33.33.29 activate
 exit-address-family
 !        
 address-family ipv6
  neighbor iBGP send-community both
  neighbor iBGP route-reflector-client
  neighbor iBGP soft-reconfiguration inbound
  neighbor iBGP send-label
  neighbor eBGP-6PE send-label
  neighbor 10.11.11.33 activate
  neighbor 10.11.11.36 activate
  neighbor 10.33.33.29 activate
 exit-address-family

RR64515

interfaces {
    em0 {
        unit 5 {
            description "CONNECTION TO ASBR";
            vlan-id 5;
            family inet {
                address 172.17.1.29/24;
            }
            family inet6;
            family mpls;
        }
    }
    em1 {
        unit 10 {
            description "CONNECTION TO PE";
            vlan-id 10;
            family inet {
                address 172.17.0.29/24;
            }
            family inet6;
            family mpls;
        }
    }
    lo0 {                               
        unit 300 {
            family inet {
                address 10.33.33.29/32;
            }
        }
    }
}
protocols {
    mpls {
        ipv6-tunneling;
        interface em0.5;
        interface em1.10;
    }
    bgp {
        group iBGP {
            type internal;
            local-address 10.33.33.29;
            family inet {
                unicast;
            }
            family inet6 {
                labeled-unicast {
                    explicit-null;      
                }
            }
            cluster 10.33.33.29;
            neighbor 10.33.33.36;
            neighbor 10.33.33.33;
        }
        group eBGP-6PE {
            type external;
            multihop {
                ttl 255;
            }
            local-address 10.33.33.29;
            family inet6 {
                labeled-unicast {
                    explicit-null;
                }
            }
            peer-as 64512;
            neighbor 10.11.11.29;
        }
    }
    ospf {
        area 0.0.0.0 {                  
            interface em0.5;
            interface lo0.300 {
                passive;
            }
            interface em1.10;
        }
    }
    ldp {
        interface em0.5;
        interface em1.10;
    }
}
routing-options {
    router-id 10.33.33.29;
    autonomous-system 64515;
}

ASBR64512

interface Loopback0
 ip address 10.11.11.33 255.255.255.255
 ip ospf 1 area 0
!
interface Loopback100
 description SAMPLE CUSTOMER
ipv6 address 2001:ABCD:100::33/128
!
interface FastEthernet0/0
 description INTER-AS LINK
 no ip address
!
interface FastEthernet0/0.100
 encapsulation dot1Q 100
 ip address 10.100.100.1 255.255.255.252
 mpls bgp forwarding
!
interface FastEthernet0/1
 description CONNECTION TO RR
 ip address 172.16.1.33 255.255.255.0
 ip ospf 1 area 0
mpls ip
!
auto
!
router ospf 1
 redistribute bgp 100 subnets route-map MAP_IGP_OUT
!
router bgp  64512
 neighbor iBGP peer-group
 neighbor iBGP remote-as 100
 neighbor iBGP update-source Loopback0
 neighbor eBGP peer-group
 neighbor eBGP remote-as 300
 neighbor 10.11.11.29 peer-group iBGP
 neighbor 10.100.100.2 peer-group eBGP
 !
 address-family ipv4
  network 10.11.11.29 mask 255.255.255.255
  neighbor iBGP next-hop-self
  neighbor iBGP route-map MAP_iBGP_OUT out
  neighbor eBGP send-label
  neighbor 10.11.11.29 activate
  neighbor 10.100.100.2 activate
 exit-address-family
 !
 address-family ipv6
  neighbor iBGP send-community both
  neighbor iBGP next-hop-self
  neighbor iBGP send-label
  neighbor 10.11.11.29 activate
 exit-address-family
!
ip prefix-list AS_64515_RR seq 5 permit 10.33.33.29/32
!
route-map MAP_iBGP_OUT deny 10
 description DENY AS64515 RR IN iBGP
 match ip address prefix-list AS_64515_RR
route-map MAP_iBGP_OUT permit 20
 description PERMIT OTHERS
!
route-map MAP_IGP_OUT permit 10
 description ALLOW AS64515 RR IN IGP
 match ip address prefix-list AS_64515_RR

ASBR64515

interfaces {
    em0 {
        unit 5 {
            description "CONNECTION TO RR";
            vlan-id 5;
            family inet {
                address 172.17.1.33/24;
            }
            family inet6;
            family mpls;
        }
    }
    em1 {
        unit 100 {
            description "NNI TO AS100";
            vlan-id 100;
            family inet {
                address 10.100.100.2/30;
            }
            family inet6;
            family mpls;
        }
    }
    lo0 {                               
        unit 300 {
            family inet {
                address 10.33.33.33/32;
            }
        }
    }
}
protocols {
    mpls {
        ipv6-tunneling;
        interface em0.5;
    }
    bgp {
        group iBGP {
            type internal;
            local-address10.33.33.33;
            family inet {
                unicast;
            }
            family inet6 {
                labeled-unicast {
                    explicit-null;
                }                       
            }
            export POL_iBGP_EXPORT;
            local-as 64515;
            neighbor 10.33.33.29;
        }
        group eBGP-6PE {
            type external;
            family inet {
                labeled-unicast;
            }
            export POL_eBGP_EXPORT;
            peer-as 64512;
            local-as 64515;
            neighbor 10.100.100.1;
        }
    }
    ospf {
        export POL_IGP_EXPORT;
        area 0.0.0.0 {
            interface lo0.300 {
                passive;
            }
            interface em0.5;            
        }
    }
    ldp {
        egress-policy LABELS;
        interface em0.5;
        interface lo0.300;
    }
}
policy-options {
    policy-statement LABELS {
        from {
            protocol [ bgp direct ];
            route-filter 0.0.0.0/0 prefix-length-range /32-/32;
        }
        then accept;
    }
    policy-statement POL_IGP_EXPORT {
        term AS64512_RR_IP {
            from {
                protocol bgp;
                route-filter 10.11.11.29/32 exact;
            }
            then accept;                
        }
    }
    policy-statement POL_eBGP_EXPORT {
        term AS64515_RR {
            from {
                protocol ospf;
                route-filter 10.33.33.29/32 exact;
            }
            then accept;
        }
    }
    policy-statement POL_iBGP_EXPORT {
        term NEXT_HOP {
            then {
                next-hop self;
            }
        }
        term AS64512_RR_IP {
            from {
                route-filter 10.11.11.29/32 exact;
            }
            then reject;
        }                               
    }
}
routing-options {
    router-id 10.33.33.33;
    autonomous-system 64515;
}

Verification

ASBR64515

show bgp summary | find ^peer 
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.33.33.29             64515        172        163       0       0     1:11:45 Establ
  inet.0: 0/0/0/0
  inet6.0: 4/4/4/0
10.100.100.1            64512        165        173       0       1        3:27 Establ
  inet.0: 1/1/1/0
show route advertising-protocol bgp 10.100.100.1
inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 10.33.33.29/32          Self                 1                  I

ASBR64512

sh bgp summary | b N
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.11.11.29     4          64512      81      94        5    0    0 01:13:03        0
10.100.100.2    4          64515      15      16        5    0    0 00:05:15        1

sh bgp neighbor 10.100.100.2 advertised-route | b Net
     Network          Next Hop            Metric LocPrf Weight Path
 *>  10.11.11.29/32   172.16.1.29              2         32768 i

Total number of prefixes 1

RR64512

sh bgp * all summary     
For address family: IPv4 Unicast

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.11.11.33     4          64512     102      88        6    0    0 01:12:06        1
10.11.11.36     4          64512      92      89        6    0    0 01:11:08        0

For address family: IPv6 Unicast
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.11.11.33     4          64512     102      88       15    0    0 01:12:07        0
10.11.11.36     4          64512      92      89       15    0    0 01:11:08        2
10.33.33.29     4          64515      64      66       15    0    0 00:27:32        2

sh bgp ipv6 uni | b Net
     Network          Next Hop            Metric LocPrf Weight Path
 *>i 2001:ABCD:100::36/128
                       ::FFFF:10.11.11.36
                                                0    100      0 ?
 *>  2001:ABCD:300::36/128
                       ::FFFF:10.33.33.29
                                                              0 64515 i
 *>i 2002::/64        ::FFFF:10.11.11.36
                                                0    100      0 ?
 *>  2003::/64        ::FFFF:10.33.33.29
                                                              0 64515 i

sh mpls forwarding-table 10.33.33.29
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
17         17         10.33.33.29/32   976           Fa0/1      172.16.1.33

RR64515

show bgp summary | find ^peer 
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.11.11.29             64512         81         81       0       1       34:45 Establ
  inet6.0: 2/2/2/0
10.33.33.33             64512        198        206       0       0     1:27:51 Establ
  inet.0: 0/0/0/0
  inet6.0: 0/0/0/0
10.33.33.36             64512        200        197       0       0     1:25:56 Establ
  inet.0: 0/0/0/0
  inet6.0: 2/2/2/0

show route protocol bgp table inet6.0
inet6.0: 7 destinations, 8 routes (7 active, 0 holddown, 0 hidden)
2001:abcd:100::36/128
                   *[BGP/170] 00:37:06, localpref 100, from 10.11.11.29
                      AS path: 64512 ?
                    > to 172.17.1.33 via em0.5, Push 19, Push 299904(top)
2001:abcd:300::36/128
                   *[BGP/170] 00:56:08, localpref 100, from 10.33.33.36
                      AS path: I
                    > to 172.17.0.36 via em1.10, Push 2
2002::/64          *[BGP/170] 00:37:06, localpref 100, from 10.11.11.29
                      AS path: 64512 ?
                    > to 172.17.1.33 via em0.5, Push 20, Push 299904(top)
2003::/64          *[BGP/170] 00:56:09, localpref 100, from 10.33.33.36
                      AS path: I
                    > to 172.17.0.36 via em1.10, Push 2

show ldp path 10.11.11.29 
Output Session (label)          Input Session (label)
10.33.33.36:0(299824)           10.33.33.33:0(299904)
10.33.33.33:0(299824)
  Attached route:  10.11.11.29/32, Ingress route

Label analysis

PE64512 announces 2001:ABCD: 100::36/128 to RR64512 which then advertises the prefix to RR64515 which then advertises the prefix to PE64515

PE64512#sh run int lo100
interface Loopback100
ipv6 address 2001:ABCD:100::36/128
end

PE64512#sh ipv6 route 2001:ABCD:100::36/128                
Routing entry for 2001:ABCD:100::36/128
  Known via "connected", distance 0, metric 0, type receive, connected, bgp 64512
  Route count is 1/1, share count 0
  Routing paths:
    receive via Loopback100
      Last updated 01:49:12 ago

PE64512#sh bgp ipv6 unicast 2001:ABCD:100::36/128
BGP routing table entry for 2001:ABCD:100::36/128, version 2
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     1         
  Refresh Epoch 1
  Local
    :: from 0.0.0.0 (10.11.11.36)
      Origin incomplete, metric 0, localpref 100, weight 32768, valid, sourced, best
      mpls labels in/out 20/nolabel
      rx pathid: 0, tx pathid: 0x0

PE64512#show mpls forwarding-table labels 20
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
20         Pop Label  2001:ABCD:100::36/128   \
                                       2876          aggregate

RR64512# sh bgp ipv6 uni 2001:ABCD:100::36/128  
BGP routing table entry for 2001:ABCD:100::36/128, version 3
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     1          5         
  Refresh Epoch 1
  Local, (Received from a RR-client), (received & used)
    ::FFFF:10.11.11.36 (metric 2) from 10.11.11.36 (10.11.11.36)
      Origin incomplete, metric 0, localpref 100, valid, internal, best
      mpls labels in/out 19/20
      rx pathid: 0, tx pathid: 0x0

RR64512#show mpls forwarding-table labels 19
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
19         20         2001:ABCD:100::36/128   \
                                       3398          Fa0/0      172.16.0.36 
RR64512#show ip route 10.11.11.36
Routing entry for 10.11.11.36/32
  Known via "ospf 1", distance 110, metric 2, type intra area
  Last update from 172.16.0.36 on FastEthernet0/0, 01:43:26 ago
  Routing Descriptor Blocks:
  * 172.16.0.36, from 10.11.11.36, 01:43:26 ago, via FastEthernet0/0
      Route metric is 2, traffic share count is 1 

RR64515# run show route table inet6.0 2001:ABCD:100::36/128 extensive
inet6.0: 8 destinations, 9 routes (8 active, 0 holddown, 0 hidden)
2001:abcd:100::36/128 (1 entry, 1 announced)
TSI:
KRT in-kernel 2001:abcd:100::36/128 -> {indirect(131072)}
Page 0 idx 0 Type 1 val 9364cb0
    Flags: Nexthop Change
    Nexthop: Self
    Localpref: 100
    AS path: [64512] 64515 ?
    Communities:
Path 2001:abcd:100::36 from 11.11.11.29 Vector len 4.  Val: 0
        *BGP    Preference: 170/-101
                Next hop type: Indirect
                Address: 0x9334dd8
                Next-hop reference count: 3
                Source: 10.11.11.29
                Next hop type: Router, Next hop index: 696
                Next hop: 172.17.1.33 via em0.5, selected
                Label operation: Push 19, Push 299904(top)
                Label TTL action: prop-ttl, prop-ttl(top)
                Protocol next hop: ::ffff:10.11.11.29
                Push 19
                Indirect next hop: 94b01f8 131072
                State: 
                Local AS:   64512 Peer AS:   64512
                Age: 55:57      Metric2: 1 
                Task: BGP_100.10.11.11.29+35003
                Announcement bits (3): 0-KRT 1-BGP_RT_Background 2-Resolve tree 3 
                AS path: 100 ?
                Accepted
                Route Label: 19
                Localpref: 100
                Router ID: 10.11.11.29
                Indirect next hops: 1
                        Protocol next hop: ::ffff:10.11.11.29 Metric: 1
                        Push 19
                        Indirect next hop: 94b01f8 131072
                        Indirect path forwarding next hops: 1
                                Next hop type: Router
                                Next hop: 172.17.1.33 via em0.5
                        ::ffff:10.11.11.29/128 Originating RIB: inet6.3
                          Metric: 1                       Node path count: 1
                          Forwarding nexthops: 1
                                Nexthop: 172.17.1.33 via em0.5

RR64515# run show route ::ffff:10.11.11.29 
inet6.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
::ffff:10.11.11.29/128
                   *[LDP/9] 01:03:02, metric 1
                    > to 172.17.1.33 via em0.5, Push 299904

RR64515# run show ldp path 10.11.11.29 
Output Session (label)          Input Session (label)
10.33.33.36:0(299824)           10.33.33.33:0(299904)
10.33.33.33:0(299824)
  Attached route:  10.11.11.29/32, Ingress route

PE64515# run show route table inet6.0 2001:ABCD:100::36/128 extensive
inet6.0: 8 destinations, 10 routes (8 active, 0 holddown, 0 hidden)
2001:abcd:100::36/128 (1 entry, 1 announced)
TSI:
KRT in-kernel 2001:abcd:100::36/128 -> {indirect(131070)}
        *BGP    Preference: 170/-101
                Next hop type: Indirect
                Address: 0x9334b08
                Next-hop reference count: 9
                Source: 10.33.33.29
                Next hop type: Router, Next hop index: 708
                Next hop: 172.17.0.29 via em1.10, selected
                Label operation: Push 2
                Label TTL action: prop-ttl
                Protocol next hop: ::ffff:10.33.33.29
                Push 2
                Indirect next hop: 948c000 131070
                State: 
                Local AS:   64515 Peer AS:   64515
                Age: 44:39      Metric2: 1 
                Task: BGP_300.10.33.33.29+179
                Announcement bits (2): 0-KRT 2-Resolve tree 3 
                AS path: 64515 ?
                Accepted                
                Route Label: 2
                Localpref: 100
                Router ID: 10.33.33.29
                Indirect next hops: 1
                        Protocol next hop: ::ffff:10.33.33.29 Metric: 1
                        Push 2
                        Indirect next hop: 948c000 131070
                        Indirect path forwarding next hops: 1
                                Next hop type: Router
                                Next hop: 172.17.0.29 via em1.10
                        ::ffff:10.33.33.29/128 Originating RIB: inet6.3
                          Metric: 1                       Node path count: 1
                          Forwarding nexthops: 1
                                Nexthop: 172.17.0.29 via em1.10

# run show route ::ffff:10.33.33.29/128 
inet6.3: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
::ffff:10.33.33.29/128
                   *[LDP/9] 01:46:54, metric 1
                    > to 172.17.0.29 via em1.10

PE64515 Pushes label 2 because of the bgp protocol configuration

    family inet6 {
        labeled-unicast {
            explicit-null;
        }