Description

Customer use MX as DHCP-Local Server and want to MX provide both SLAAC/NDRA and IA_NA address to subscriber CPE device and let the CPE to choose which one to use. But found the IA_NA doesnt work once [router-advertisement] is configured in the dynamic-profile.

KB36460 [juniper.net] has specified that "for IPv6 IA_NA /128 address disable 'router-advertisement'".

 

This article provide an example on how to support them and DHCPv6-PD at the same time.

 

Symptoms

Once [router-advertisement]is configured in the DHCP subscriber dynamic-profile, the IPv6 IA_NA /128 address doesnt work any more.

Solution

In customer and KB36460 [juniper.net] configure, the [router-advertisement] is set in the dynamic-profile for DHCP subscriber interface. Alternatively, this knob can be moved to the VLAN dynamic-profile.

Here is an example using AE bundle and demux interface configure.

 

system {

   services {

       dhcp-local-server {

           dhcpv6 {

               group V6 {

                   authentication {

                       password 123;

                       username-include {

                           user-prefix dhcp_dualstack;

                       }

                   }

                   access-profile RADIUS-AAA;

                   overrides {

                       rapid-commit;

                       dual-stack BNG-DualStack;

                   }

                   interface demux0.0;

               }

               requested-ip-interface-match;

           }

           pool-match-order {

               external-authority;

               ip-address-first;

           }

           group v4 {

               authentication {

                   password 123;

                   username-include {

                       user-prefix dhcp_dualstack;

                   }

               }

               overrides {

                   client-discover-match option60-and-option82;

                   dual-stack dhcp_dualstack;

               }

               access-profile RADIUS-AAA;

               interface demux0.0;

           }

           dual-stack-group BNG-DualStack {

               dynamic-profile DHCP_DualStack;

               classification-key {

                   mac-address;

               }

               protocol-master inet;

           }

       }

   }

}

interfaces {

   ae0 {

       hierarchical-scheduler;

       flexible-vlan-tagging;

       auto-configure {

           stacked-vlan-ranges {

               dynamic-profile VDEMUX {

                   accept [ dhcp-v4 pppoe dhcp-v6 ];

                   ranges {

                       3100-3299,any;

                   }

               }

           }

            vlan-ranges {

               dynamic-profile SingleVLAN {

                   accept [ dhcp-v4 dhcp-v6 ];

                   ranges {

                       3550-3560;

                   }

               }

               authentication {

                   password 123;

                   username-include {

                       user-prefix fake;   ##Here use a different username for authentication. It can be a dummy user or even no authentication, as we only need [protocols router-advertisement] with VLAN interface creation.

                   }

               }

           }

           remove-when-no-subscribers;

       }

   }

}

access {

   address-assignment {

       neighbor-discovery-router-advertisement BNG-SLAAC-NDRA;   <<<<< For VLAN/SVLAN interface SLAAC/NDRA prefix assignment

       pool BNG-DHCPv6-IA-PD {

           family inet6 {

               prefix 2406:46c0:4100::/41;

               range ia-pd prefix-length 48;

               dhcp-attributes {

                   exclude-prefix-len 64;

               }

           }

       }

       pool BNG-SLAAC-NDRA {

           family inet6 {

               prefix 2406:46c0:4300::/41;

               range ndra-range prefix-length 64;

               dhcp-attributes {

                   valid-lifetime 1800;

                   preferred-lifetime 1800;

               }

           }

       }

       pool BNG-DHCPv6-IA-NA {

           family inet6 {

               prefix 2406:46c0:4010::/64;

               range ia-na {

                   low 2406:46c0:4010::2/128;

                   high 2406:46c0:4010::ffff:ffff/128;

               }

           }

       }

       pool DHCP-pool01 {

           family inet {

               network 172.31.0.0/24;

           }

       }

   }

}

dynamic-profiles {

/* For Stack-VLAN

   VDEMUX {

       routing-instances {

           "$junos-routing-instance" {

               interface "$junos-interface-name" {

                   any;

               }

           }

       }

       interfaces {

           demux0 {

               unit "$junos-interface-unit" {

                   actual-transit-statistics;

                   no-traps;

                   proxy-arp;

                    vlan-tags outer "$junos-stacked-vlan-id" inner "$junos-vlan-id";

                   demux-options {

                       underlying-interface "$junos-interface-ifd-name";

                   }

                   family inet {

                       unnumbered-address "$junos-loopback-interface";

                   }

                   family inet6 {

                       unnumbered-address "$junos-loopback-interface";

                   }

               }

           }

       }

       protocols {

           router-advertisement {

               interface "$junos-interface-name" {

                   managed-configuration;

                   default-lifetime 9000;

                   prefix $junos-ipv6-ndra-prefix {

                       valid-lifetime 1800;

                       preferred-lifetime 1800;

                       autonomous;

                   }

               }

           }

       }

}

/*For single VLAN creation

   SingleVLAN {

       routing-instances {

           "$junos-routing-instance" {

               interface "$junos-interface-name" {

                   any;

               }

           }

       }

       interfaces {

           demux0 {

               unit "$junos-interface-unit" {

                   actual-transit-statistics;

                   no-traps;

                   proxy-arp;

                    vlan-id "$junos-vlan-id";

                   demux-options {

                       underlying-interface "$junos-interface-ifd-name";

                   }

                   family inet {

                       unnumbered-address "$junos-loopback-interface";

                   }

                   family inet6 {

                       unnumbered-address "$junos-loopback-interface";

                   }

               }

           }

       }

        protocols {

           router-advertisement {

               interface "$junos-interface-name" {

                   managed-configuration;

                   default-lifetime 9000;

                   prefix $junos-ipv6-ndra-prefix {

                       valid-lifetime 1800;

                       preferred-lifetime 1800;

                       autonomous;

                   }

               }

           }

       }

   }

}

 

/*For DHCP-IP-interface

DHCP_DualStack {

   routing-instances {

       "$junos-routing-instance" {

           interface "$junos-interface-name" {

               any;

           }

       }

   }

   interfaces {

       "$junos-interface-ifd-name" {

           unit "$junos-interface-unit" {

               proxy-arp;

               demux-options {

                   underlying-interface "$junos-underlying-interface";

               }

               family inet {

                   unnumbered-address "$junos-loopback-interface";

               }

               family inet6 {

                   unnumbered-address "$junos-loopback-interface";

               }

           }

       }

   }

}

 

 

FreeRADIUS user configure profile:

DEFAULT User-Name =~ "fake", Cleartext-Password := "123"

       Service-Type = Framed-User,

       Framed-Protocol = PPP

 

DEFAULT User-Name =~ "dhcp_dualstack", Cleartext-Password := "123"

       Framed-IPv6-Pool = "BNG-DHCPv6-IA-NA",

       Jnpr-IPv6-Delegated-Pool-Name = "BNG-DHCPv6-IA-PD",

       Service-Type = Framed-User,

       Framed-Protocol = PPP

 

Output:

 

Bind DHCPv4 first:

labroot@jtac-mx204-r2039> show subscribers 

Interface                      IP Address/VLAN ID                     User Name                     LS:RI

demux0.3221225474               2406:46c0:4300:1::/64                  fake                   default:default      

demux0.3221225474              123.255.36.243                         dhcp_dualstack          default:default      

*                               2406:46c0:4010::3

*                               2406:46c0:4101::/48

 

No ipv6/DHCPv6 yet

labroot@jtac-mx204-r2039> show dhcpv6 server binding 

 

Bind DHCPv6+DHCP-PD:

labroot@jtac-mx204-r2039> show dhcpv6 server binding    

Prefix                 Session Id Expires State   Interface   Client DUID

2406:46c0:4010::3/128  4          86392   BOUND   demux0.3221225474 LL_TIME0x1-0x65d7aef0-00:10:94:00:00:01

2406:46c0:4101::/48    4          86392   BOUND   demux0.3221225474 LL_TIME0x1-0x65d7aef0-00:10:94:00:00:0

 

Disconnect DHCPv6 and PD:

 

labroot@jtac-mx204-r2039> show dhcpv6 server binding    

 

labroot@jtac-mx204-r2039> show ipv6 neighbors 

 

labroot@jtac-mx204-r2039> show ipv6 router-advertisement 

Interface: demux0.3221225474

 Advertisements sent: 3, last sent 0:02:51 ago

 Solicits received: 0

 Advertisements received: 0

 

Bind IPv6 Autoconfiguration:

labroot@jtac-mx204-r2039> show ipv6 neighbors               

IPv6 Address                           Linklayer Address State      Exp  Rtr Secure Interface               

fe80::210:94ff:fe00:1                   00:10:94:00:00:01 reachable  0    no  no     demux0.3221225474       

 

labroot@jtac-mx204-r2039> show ipv6 router-advertisement    

Interface: demux0.3221225474

 Advertisements sent: 4, last sent 0:00:12 ago

 Solicits received: 1, last received 0:00:12 ago

 Advertisements received: 0

 

 Be noted, with this approach, as only one VLAN interface will be created, so there will be only one NDRA prefix assigned to all this VLAN clients.

As can be seen below, demux0. 3221225509 is the single VLAN interface, the rest 5 interfaces are the DHCP IP demux interfaces.

 

labroot@jtac-mx204-r2039> show subscribers

Interface                      IP Address/VLAN ID                     User Name                     LS:RI

demux0.3221225509              2406:46c0:4300:f::/64                  fake                   default:default     

demux0.3221225510              172.31.0.20                            dhcp_dualstack         default:default     

*                              2406:46c0:4010::c

*                              2406:46c0:4104::/48

demux0.3221225511              172.31.0.21                            dhcp_dualstack         default:default     

*                              2406:46c0:4010::d

*                              2406:46c0:4105::/48

demux0.3221225512              172.31.0.22                            dhcp_dualstack         default:default     

*                              2406:46c0:4010::e

*                              2406:46c0:4106::/48

demux0.3221225513              172.31.0.23                            dhcp_dualstack         default:default     

*                              2406:46c0:4010::f

*                              2406:46c0:4107::/48

demux0.3221225514              172.31.0.24                            dhcp_dualstack         default:default     

*                              2406:46c0:4010::10

*                              2406:46c0:4108::/48 

 

 

 

 

Modification History

2024-03-18 : Article Created