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.
router-advertisement] is configured in the dynamic-profile.
KB36460 [juniper.net] has specified that "for IPv6 IA_NA /128 address disable 'router-advertisement'".
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.
Once [router-advertisement]is configured in the DHCP subscriber dynamic-profile, the IPv6 IA_NA /128 address doesnt work any more.
router-advertisement]is configured in the DHCP subscriber dynamic-profile, the IPv6 IA_NA /128 address doesnt work any more.
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.
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 {
client-discover-match option60-and-option82;
dual-stack dhcp_dualstack;
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 ];
3550-3560;
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 {
prefix 2406:46c0:4300::/41;
range ndra-range prefix-length 64;
valid-lifetime 1800;
preferred-lifetime 1800;
pool BNG-DHCPv6-IA-NA {
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;
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";
unnumbered-address "$junos-loopback-interface";
protocols {
router-advertisement {
managed-configuration;
default-lifetime 9000;
prefix $junos-ipv6-ndra-prefix {
autonomous;
/*For single VLAN creation
SingleVLAN {
vlan-id "$junos-vlan-id";
/*For DHCP-IP-interface
DHCP_DualStack {
"$junos-interface-ifd-name" {
underlying-interface "$junos-underlying-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",
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:
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 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:
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
Advertisements sent: 4, last sent 0:00:12 ago
Solicits received: 1, last received 0:00:12 ago
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.
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