IPv6 & IPv4 over PPP

IPv6 & IPv4 over PPP

In order to establish communication over a point-to-point link, each end of the point-to-point link first sends LCP packet to configure and test the data-link. After the link has been established and optional facilities are negotiated for LCP, PPP sends NCP packets to choose and configure one or more Network Layer protocols. Once each of the chosen network layer protocols have been configured, datagrams from each network layer protocol can be forwarded over the point-to-point link.

Network topology:

Here, IPv6 and IPv4 are running on a single point-to-point link between routers R1 & R2.

LCP Phase:

LCP phase is common for both IPv4 & IPv6. As soon as PPP is notified that physical-layer is UP, it sends and receives CONFREQ and CONFACK packets.

LCP Phase

00:40:37.887: Se0/0 LCP: Timeout: State REQsent
00:40:37.887: Se0/0 LCP: O CONFREQ [REQsent] id 113 len 10
00:40:37.887: Se0/0 LCP:    MagicNumber 0x00351056 (0x050600351056)
00:40:37.927: Se0/0 LCP: I CONFREQ [REQsent] id 5 len 10
00:40:37.927: Se0/0 LCP:    MagicNumber 0x013549D2 (0x0506013549D2)
00:40:37.927: Se0/0 LCP: O CONFACK [REQsent] id 5 len 10
00:40:37.931: Se0/0 LCP:    MagicNumber 0x013549D2 (0x0506013549D2)
00:40:37.951: Se0/0 LCP: I CONFACK [ACKsent] id 113 len 10
00:40:37.951: Se0/0 LCP:    MagicNumber 0x00351056 (0x050600351056)
00:40:37.951: Se0/0 LCP: State is Open
00:40:37.955: Se0/0 PPP: Phase is FORWARDING, Attempting Forward
00:40:37.955: Se0/0 PPP: Phase is ESTABLISHING, Finish LCP
00:40:37.959: Se0/0 PPP: Phase is UP

NCP Phase:

RFC 2472 discusses IPv6 over PPP. Since IPv4 & IPv6 are configured on the link, PPP sends NCP packets for both network-layer protocols once LCP state is OPEN. For IPv4, the routers exchange IPCP (IP Control Packets) to negotiate options specific to IPv4. For IPv6, the routers exchange IPv6CP (IPv6 Control Packets) to negotiate options specific to IPv6. IPCP negotiates IPv4 address and IPv4 Compression protocol.

IPv4 NCP Phase

00:40:37.975: Se0/0 IPCP: I CONFREQ [REQsent] id 1 len 10
00:40:37.979: Se0/0 IPCP:    Address 10.1.1.2 (0x03060A010102)
00:40:37.979: Se0/0 IPCP: O CONFACK [REQsent] id 1 len 10
00:40:37.979: Se0/0 IPCP:    Address 10.1.1.2 (0x03060A010102)
00:40:38.023: Se0/0 CDPCP: I CONFACK [ACKsent] id 1 len 4
00:40:38.023: Se0/0 CDPCP: State is Open
00:40:38.047: Se0/0 IPCP: I CONFACK [ACKsent] id 1 len 10
00:40:38.047: Se0/0 IPCP:    Address 10.1.1.1 (0x03060A010101)
00:40:38.047: Se0/0 IPCP: State is Open

IPv6CP negotiates Interface-Identifier and IPv6 Compression protocol. An Interface-identifier is a unique 64-bit address obtained from the 48-bit MAC address of the interface by inserting FFFE in the middle. A Configure-Request packet (CONFREQ) contains exactly one instance of the interface-identifier. The interface-identifier must be unique for a PPP link.

IPv6 NCP Phase

00:40:37.971: Se0/0 IPV6CP: I CONFREQ [REQsent] id 1 len 14
00:40:37.971: Se0/0 IPV6CP:    Interface-Id C001:10FF:FE24:0000 (0x010AC00110FFFE240000)
00:40:37.971: Se0/0 IPV6CP: O CONFACK [REQsent] id 1 len 14
00:40:37.975: Se0/0 IPV6CP:    Interface-Id C001:10FF:FE24:0000 (0x010AC00110FFFE240000)
00:40:38.071: Se0/0 IPV6CP: I CONFACK [ACKsent] id 1 len 14
00:40:38.071: Se0/0 IPV6CP:    Interface-Id C000:10FF:FE24:0000 (0x010AC00010FFFE240000)
00:40:38.071: Se0/0 IPV6CP: State is Open

Unlike IPv4, no IPv6 route is created for the PPP peer.

IPv4 & IPv6 routing table

R1# show ip route | begin Gateway
Gateway of last resort is not set
     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C       10.1.1.2/32 is directly connected, Serial0/0
C       10.1.1.0/24 is directly connected, Serial0/0
R1# show ipv6 route
IPv6 Routing Table - 4 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
C   CAFE::/124 [0/0]
     via ::, Serial0/0
L   CAFE::1/128 [0/0]
     via ::, Serial0/0
L   FE80::/10 [0/0]
     via ::, Null0
L   FF00::/8 [0/0]
     via ::, Null0

IPv6 Neighbor Discovery (ND) over PPP:

IPv6 router sends Neighbor Solicitation (NS) message to obtain link-layer address of the neighbor as well to provide its own link-layer address and to verify reachability to the neighbor. NS messages are multicast to all nodes multicast address FF02::1 to resolve an address and unicast to verify reachability.

Neighbor Advertisement (NA) messages are sent in response to NS messages to propogate immediate node changes like link-layer address.

Duplicate Address Detection (DAD) is performed for all IPv6 addresses.

IPv6 ND over PPP

00:40:38.075: ICMPv6-ND: DELETE -> INCMP: FE80::C001:10FF:FE24:0
00:40:38.075: ICMPv6-ND: INCMP -> REACH: FE80::C001:10FF:FE24:0
00:40:38.079: ICMPv6-ND: Sending NA for FE80::C000:10FF:FE24:0 on Serial0/0
00:40:38.083: ICMPv6-ND: Address FE80::C000:10FF:FE24:0/10 is up on Serial0/0
00:40:38.091: ICMPv6-ND: Sending NS for CAFE::1 on Serial0/0
00:40:38.095: ICMPv6-ND: Received NA for FE80::C001:10FF:FE24:0 on Serial0/0 from FE80::C001:10FF:FE24:0
00:40:38.959: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
00:40:39.091: ICMPv6-ND: DAD: CAFE::1 is unique.
00:40:39.091: ICMPv6-ND: Sending NA for CAFE::1 on Serial0/0
00:40:39.095: ICMPv6-ND: Address CAFE::1/124 is up on Serial0/0
00:40:39.103: ICMPv6-ND: Received NA for CAFE::2 on Serial0/0 from CAFE::2

The following output shows IPv6 neighbor of R1 router after neighbor discovery.

IPv6 neighbor for R1

R1# show ipv6 neighbors
IPv6 Address                              Age Link-layer Addr State Interface
FE80::C001:10FF:FE24:0                      - -               REACH Se0/0