Life is a Roller Coaster

March 1, 2009

IPv6 – 6PE

Filed under: Technical section — Tags: — adisubrata @ 4:00 AM

At this post I will try and explain IPv6 over IPv4 island connectivity. You can download the complete configuration at the end of this post.

There are some choices that can be used to connecting IPv6 customer over IPv4 network. Tunnel is one of available choice. Both IPIP tunnel and MPLS tunnel can be used here. Both LDP LSP or RSVP LSP able to deliver IPv6 6PR. However in this post I will use MPLS RSVP tunnel. ISP can use both 6PE or vpnv6.

6PE will be used here.

I use logical router to simulate network in this test.

CE1 and CE2 is IPv6 customer. They connected to ISP which use MPLS in the backbone.

Ce1 connected to PE1 and CE2 connected to PE2. Pe1 and PE2 uses 6PE BGP session.

Two PEs have MP-BGP session to exchange IPv6 routes with AFI IPv6 “value 2″.

Diagram

<--ipv6 (AS1000)-> <---------ipv4 AS(3000)-------> <--ipv6 (AS2000)->
+-----+        +-----+         +-----+         +-----+       +-----+
| ce1 |--------| pe1 |---------|  p  |---------| pe2 |-------| ce2 |
+-----+        +-----+         +-----+         +-----+       +-----+
     10::1/126     192.168.0.0/30   192.168.0.4/30    11::0/126
Loopback address:
ce1: 98::1/128
ce2: 99::1/128
pe1: 1.1.1.1/32
pe2: 2.2.2.2/32
p: 10.10.10.10/32

ce1 advertised 98::1/128 to pe1.

ce2 advertised 99::1/128 to pe2.

Objective:

The objective of this test is connecting CE1 and CE2 IPV6.

Config Clue

1. IPv6 BGP router ID

As mentioned in the RFC 2544, in the IPv6 network (only IPv6), BGP router id need to be specified 32 bit. OPEN message  need to be add on both CEs router.

Quote from RFC 2544:

  "Note that the information referred above is distinct from the BGP
   Identifier used in the BGP-4 tie breaking procedure. The BGP
   Identifier is a 32 bit unsigned integer exchanged between two peers
   at session establishment time, within an OPEN message. This is a
   system wide value determined at startup which must be unique in the
   network and should be derived from an IPv4 address regardless of the
   network protocol(s) a particular BGP-4 instance is configured to
   convey at a given moment."

If you are not configure router ID on CE router, OPEN message will fail.  BGP session cannot established. Debug will show why IPv6 BGP session failed when CE router have no router id.

Mar  1 08:57:35  prime pe2: rpd[3251]: bgp_get_open: NOTIFICATION sent to 11::2+4597 (proto): 
code 2 (Open Message Error) subcode 3 (bad BGP ID), Reason: peer 11::2+4597 (proto): 
invalid BGP identifier 0x0

(CE sent OPEN message with 0.0.0.0 as an ID).

2. Explicit null must be configured on labeled unicast family inet6. By default Junos always advertised ipv6 route with label value 2. This label value 2 use as inner label while LSP label use as a outer label.

Example:

enugadi@prime# run show route 99::1/128 logical-router pe1 detail 

inet6.0: 7 destinations, 8 routes (7 active, 0 holddown, 0 hidden)
99::1/128 (1 entry, 1 announced)

        *BGP    Preference: 170/-101
                Next hop type: Indirect
                Next-hop reference count: 3
                Source: 2.2.2.2
                Next hop type: Router, Next hop index: 591
                Next hop: 192.168.0.2 via fe-1/3/0.1 weight 0x1, selected
                Label-switched-path pe1-to-pe2
                Label operation: Push 2, Push 100016(top)
                Protocol next hop: ::ffff:2.2.2.2
                Push 2
                Indirect next hop: 89d9000 131070
                State: <Active Int Ext>
                Local AS:  3000 Peer AS:  3000
                Age: 33         Metric2: 2 
                Task: BGP_3000.2.2.2.2+2027
                Announcement bits (3): 0-KRT 1-BGP RT Background 2-Resolve tree 1 
                AS path: 2000 I
                Route Label: 2
                Localpref: 100
                Router ID: 2.2.2.2

3. PE interface core facing interface MUST be configured with family inet6. This is used for IPv6 received packet verification.

4. You have to configured ipv6-tunneling on protocol MPLS stanza. This rule is applied both LDP or RSVP signaling.

Configuration

Ipv6 Configuration on PE1

enugadi@prime# show logical-routers pe1 interfaces
fe-1/3/0 {
    unit 1 {
        vlan-id 1;
        family inet {
            address 192.168.0.1/30;
        }
        family inet6;
        family mpls;
    }
}
fe-1/3/1 {
    unit 3 {
        description "PE1 to CE1 IPV6 Customer";
        vlan-id 3;
        family inet6 {
            address 10::2/126;
        }
    }
}
lo0 {
    unit 1 {
        family inet {
            address 1.1.1.1/32;
        }
    }
}

enugadi@prime# show logical-routers pe1 protocols bgp
group ibgp {
    type internal;
    local-address 1.1.1.1;
    family inet6 {
        labeled-unicast {
            explicit-null;
        }
    }
    neighbor 2.2.2.2;
}
group ipv6 {
    family inet6 {
        unicast;
    }
    neighbor 10::1 {
        peer-as 1000;
    }
}

enugadi@prime# show logical-routers pe1 protocols mpls
ipv6-tunneling;
label-switched-path pe1-to-pe2 {
    to 2.2.2.2;
}
interface fe-1/3/0.1;

Configuration on PE2

enugadi@prime# show logical-routers pe2 interfaces
fe-1/3/0 {
    unit 4 {
        vlan-id 4;
        family inet6 {
            address 11::1/126;
        }
    }
}
fe-1/3/1 {
    unit 2 {
        vlan-id 2;
        family inet {
            address 192.168.0.6/30;
        }
        family inet6;
        family mpls;
    }
}
lo0 {
    unit 2 {
        family inet {
            address 2.2.2.2/32;
        }
    }
}
[edit]

enugadi@prime# show logical-routers pe2 protocols mpls
ipv6-tunneling;
label-switched-path pe2-to-pe1 {
    to 1.1.1.1;
}
interface fe-1/3/1.2;

[edit]
enugadi@prime# show logical-routers pe2 protocols bgp
group ipv6 {
    traceoptions {
        file debug-ipv6;
        flag all detail;
    }
    neighbor 11::2 {
        peer-as 2000;
    }
}
group ibgp {
    type internal;
    local-address 2.2.2.2;
    family inet6 {
        labeled-unicast {
            explicit-null;
        }
    }
    neighbor 1.1.1.1;
}

Network Verification

enugadi@prime# run show ospf neighbor logical-router p
Address          Interface              State     ID               Pri  Dead
192.168.0.6      fe-1/3/0.2                 Full      2.2.2.2          128    33
192.168.0.1      fe-1/3/1.1                 Full      1.1.1.1          128    33
[edit]

enugadi@prime# run show ospf neighbor logical-router pe1
Address          Interface              State     ID               Pri  Dead
192.168.0.2      fe-1/3/0.1                 Full      10.10.10.10      128    34
[edit]

enugadi@prime# run show ospf neighbor logical-router pe2
Address          Interface              State     ID               Pri  Dead
192.168.0.5      fe-1/3/1.2                 Full      10.10.10.10      128    38

enugadi@prime# run show mpls lsp logical-router pe2
Ingress LSP: 1 sessions
To              From            State Rt ActivePath       P     LSPname
1.1.1.1         2.2.2.2         Up     0                  *     pe2-to-pe1
Total 1 displayed, Up 1, Down 0
Egress LSP: 1 sessions
To              From            State   Rt Style Labelin Labelout LSPname
2.2.2.2         1.1.1.1         Up       0  1 FF       3        - pe1-to-pe2
Total 1 displayed, Up 1, Down 0
Transit LSP: 0 sessions
Total 0 displayed, Up 0, Down 0

enugadi@prime# run show bgp summary logical-router pe1
Groups: 2 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0                 0          0          0          0          0          0
inet6.0                2          2          0          0          0          0
Peer               AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Damped...
10::1            1000         73         73       0       0       31:50 Establ
  inet6.0: 1/1/0
2.2.2.2          3000         55         57       0       0       24:27 Establ
  inet6.0: 1/1/0

[edit]
enugadi@prime# run show bgp summary logical-router pe2
Groups: 2 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet6.0                2          2          0          0          0          0
inet.0                 0          0          0          0          0          0
Peer               AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Damped...
11::2            2000         84        137       0       1       32:19 Establ
  inet6.0: 1/1/0
1.1.1.1          3000         55         57       0       0       24:28 Establ
  inet6.0: 1/1/0

enugadi@prime# run show route logical-router ce1
inet6.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10::/126           *[Direct/0] 01:16:21
                    > via fe-1/3/0.3
10::1/128          *[Local/0] 01:16:21
                      Local via fe-1/3/0.3
98::1/128          *[Direct/0] 01:16:21
                    > via lo0.50
99::1/128          *[BGP/170] 00:24:49, localpref 100
                      AS path: 3000 2000 I
                    > to 10::2 via fe-1/3/0.3
fe80::/64          *[Direct/0] 01:16:21
                    > via fe-1/3/0.3
fe80::206:2900:3af:b362/128
                   *[Local/0] 01:16:21
                      Local via fe-1/3/0.3
fe80::208:c7ff:fe79:1d02/128
                   *[Direct/0] 01:16:21
                    > via lo0.50
enugadi@prime# run show route logical-router ce2
inet6.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
11::/126           *[Direct/0] 01:16:22
                    > via fe-1/3/1.4
11::2/128          *[Local/0] 01:16:22
                      Local via fe-1/3/1.4
98::1/128          *[BGP/170] 00:06:14, localpref 100
                      AS path: 3000 1000 I
                    > to 11::1 via fe-1/3/1.4
99::1/128          *[Direct/0] 01:16:22
                    > via lo0.51
fe80::/64          *[Direct/0] 01:16:22
                    > via fe-1/3/1.4
fe80::200:200:400:4/128
                   *[Local/0] 01:16:22
                      Local via fe-1/3/1.4
fe80::208:c7ff:fe79:1d02/128
                   *[Direct/0] 01:16:22
                    > via lo0.51

IPv6 Verification

enugadi@prime# run ping inet6 98::1 logical-router ce2 source 99::1 rapid count 100 
PING6(56=40+8+8 bytes) 99::1 --> 98::1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--- 98::1 ping6 statistics ---
100 packets transmitted, 100 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 0.419/0.428/0.497/0.010 ms

enugadi@prime# run ping inet6 99::1 logical-router ce1 source 98::1 rapid count 100    
PING6(56=40+8+8 bytes) 98::1 --> 99::1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--- 99::1 ping6 statistics ---
100 packets transmitted, 100 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 0.408/0.427/0.503/0.009 ms

You can download logical router configuration here.
Please drop me an email or comment if you have a questions.

No Comments Yet »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.