IPv6 is very easy to delegate to your customers if you are an ISP. This streamlines the way your customers connect to your provider edge and into the internet.

Lets see the small topology for this tutorial:

Here we have two routers for a basic configuration of IPv6 Prefix delegation. This scales much larger than just PTP links like this.

Lets get some basic configuration on these routers:

isp_edge(config)#ipv6 unicast-routing
isp_edge(config)#int fa0/0
isp_edge(config-if)#ipv6 enable
isp_edge(config-if)#ipv6 address 2001:db8:aaaa:1::1/64
isp_edge(config-if)#no shutdown
customer1(config)#ipv6 unicast-routing
customer1(config)#int fa0/0
customer1(config-if)#ipv6 enable
customer1(config-if)#ipv6 address autoconfig default
customer1(config-if)#no shutdown

Now the routers should have connectivity:

customer1#ping 2001:db8:aaaa:1::1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:db8:aaaa:1::1, timeout is 2 seconds:
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms

With basic connectivity verified, we can make a pool of addresses that we want to hand out to the clients, we also need to specify the prefix length that we want to split the pool up into.

isp_edge(config)#ipv6 local pool main-cust-pool01 2001:DB8:a:a000::/49 56

This is provisioning a pool that will be split up into /56 networks for customers.

isp_edge(config)#ipv6 dhcp pool cust-pool01
isp_edge(config-dhcp)#prefix-delegation pool main-cust-pool01 lifetime infinite infinite

These commands tie the local pool to a dhcp pool and set the lease time to forever so these do not get pulled back and reassigned accidentally

isp_edge(config)#int fa0/0
isp_edge(config-if)#ipv6 dhcp server seac-pool01

Now we have tied the DHCP pool to the interface connecting to the customer router as a DHCP server.

That is all of the config on the ISP side, now for the customer:

customer1(config)#int fa0/0
customer1(config-if)#ipv6 dhcp client pd ISP-DELEGATION

This sets the external interface to sent prefix delegation requests and should receive a prefix from the ISP router we just configured. The 'ISP-DELEGATION' string at the end of the second command can be completely random and doesn't correspond to anything configured on the ISP side.

We can test our configuration on both sides:

isp_edge#show ipv6 local pool
Pool                  Prefix                                       Free  In use
main-cust-pool01      2001:DB8:a:a000::/49                           127      1

This command shows that the pool is active and there is a network in use. We can also see how many more networks this pool can delegate.

Now lets verify which network we got on the customer equipment:

customer1#show ipv6 dhcp interface
FastEthernet0/0 is in client mode
  State is OPEN
  Renew will be sent in 3d11h
  List of known servers:
    Reachable via address: FE80::213:60FF:FE51:8FE
    DUID: 000300010013605108FE
    Preference: 0
    Configuration parameters:
      IA PD: IA ID 0x00040001, T1 302400, T2 483840
--->    Prefix: 2001:DB8:a:a000::/56
                preferred lifetime INFINITY, valid lifetime INFINITY
  Prefix name: ISP-DELEGATION
  Rapid-Commit: disabled

Here you can see we got given the 2001:DB8:a:a000::/56 network, this can now be subnetted further within the company to suit their needs.

If we look at the routing table on the ISP edge router we will see a static route pointing the prefix to the external interface of the customer router:

isp_edge#show ipv6 route
IPv6 Routing Table - 6 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
S   2001:DB8:a:a000::/56 [1/0]
     via FE80::218:73FF:FEF0:DD1B, FastEthernet0/0

In a real environment, this route would be redistributed into the ISP core so that traffic can be directed to the correct place.


Leave a Reply

Your email address will not be published. Required fields are marked *