This post is about terminating PPPoE sessions dynamicly on a Juniper MX. Recently i’ve setup dynamic PPPoE termination succesfully on a MX series, the goal was to migrate PPPoE termination functionality from a Cisco 7206 VXR towards one of our Juniper MX’s.
There is documentation from juniper that describes how to set this up:
I stumbled upon several weird things while testing with PPPoE that i thought may be worth sharing.
There are several ways to setup PPPoE termination on a MX:
- Static subscriber management
- Dynamic subscriber management
When configuring static subscriber management you need to provision a logical interface for each subscriber, this will not scale when you hit more subscribers.
Dynamic subscriber management is the way i wanted to go, because of the amount of subscribers we have.
JunOS version 13.3R9 experiences
I started testing on JunOS 13.3R9, some things:
- Documentation was not clear on whether you needed to set the access-profile at the vlan-profile or global.
- Noticed that the command set available was not very useful for some serious troubleshooting
- The dynamic ppp profile needs to end with -profile in the name, if you think of using a different name it will not work, it’s probably documented somewhere internally at Juniper.
- IPCP DNS configuration for clients was not configurable and supported in this release.
- test aaa commands cannot be used on a MX, you can give the command but it won’t do a thing. This command is apparently only valid on a Juniper EX?
After this experience a new recommended JTAC version was released so i continued with testing on JunOS 15.1R6.7.
JunOS version 15.1R6.7 experiences
Right after the upgrade from JunOS 13.3R9 towards 15.1R6.7, the PPPoE configuration that was previously working stopped completely.
After doing some packetcaptures i could see the PADI coming in from clients, but the MX was dead silent. “show pppoe statistics” were all at 0 confirming the MX was dead silent.
After some debugging i found the following message from auto-configuration:
Sep 9 11:55:53 autoconfd_if_l2_input: dropping request since resources are not available
The reason of this message is that dynamic subscriber management apparently only works on JunOS 15.x and onwards when you run the chassis in enhanced ip mode. I couldn’t find a reference of this in the release notes, but ok… :-)
After setting the configuration as described here PPPoE started working again! So what is this PPPoE configuration about?
The Cisco 7206VXR configuration for PPPoE that I was trying to convert was basicly the following config:
bba-group pppoe pppoe-profile
virtual-template 1
sessions per-vc limit 1
sessions per-mac limit 1
sessions auto cleanup
interface Virtual-Template1
description pppoe template
ip unnumbered Loopback2
ip verify unicast source reachable-via rx
no ip proxy-arp
ip mtu 1492
no logging event link-status
ipv6 enable
no snmp trap link-status
no peer default ip address
ppp mtu adaptive
ppp authentication pap ATM
ppp ipcp dns <ns-server-ip1> <ns-server-ip2>
ppp ipcp mask 255.255.255.255
end
Configuration of dynamic subscriber management
Here is the configuration that i have used to setup dynamic subscriber management using dynamic vlans and dynamic PPP interfaces. The result of this configuration is that end-users can plug-and-play and the only thing you need to do is have a radius account for the happy enduser.
AAA configuration
wp@MX> show configuration access
domain-name-server-inet {
<ns-server-ip1>;
<ns-server-ip2>;
}
domain-name-server-inet6 {
<ns-server-ip1>; <ns-server-ip2>;
}
profile radius-profile {
authentication-order radius;
radius {
authentication-server 192.168.254.2;
options {
nas-identifier MX;
}
}
radius-server {
<ip1> {
port 1812;
secret "<hash>"; ## SECRET-DATA
source-address x.x.x.x;
}
<ip2> {
port 1812;
secret "<hash>"; ## SECRET-DATA
source-address y.y.y.y;
}
}
}
wp@MX> show configuration access-profile
radius-profile;
System configuration
Before applying any dynamic-profile related stuff, I’ve enabled versioning on the MX, this allows a dynamic-profile to be adjusted while subscribers are online.
wp@MX> show configuration system dynamic-profile-options
versioning;
Dynamic vlan profile configuration
wp@MX> show configuration dynamic-profiles vlan-profile
interfaces {
demux0 {
unit "$junos-interface-unit" {
no-traps;
vlan-id "$junos-vlan-id";
demux-options {
underlying-interface "$junos-interface-ifd-name";
}
family pppoe {
access-concentrator <hostname-pe>;
duplicate-protection;
dynamic-profile pppoe-profile;
max-sessions 1;
}
}
}
}
Dynamic ppp profile configuration
wp@MX> show configuration dynamic-profiles pppoe-profile
interfaces {
pp0 {
unit "$junos-interface-unit" {
no-traps;
ppp-options {
pap;
ipcp-suggest-dns-option;
}
pppoe-options {
underlying-interface "$junos-underlying-interface";
server;
}
family inet {
rpf-check;
unnumbered-address lo0.0;
}
}
}
}
Interface configuration
wp@MX> show configuration interfaces xe-1/0/7
flexible-vlan-tagging;
auto-configure {
vlan-ranges {
dynamic-profile vlan-profile {
accept pppoe;
ranges {
100-900;
}
}
}
}
Although it looks easy, it took a while before getting things working and to know how the demux interface works (or not ;-)).
I hope this helps other people setting up PPPoE termination on the MX platform, feel free to comment.