This configuration can be used to deploy PPPoE client feature to vCPE.
And PPPoE client that deployed to vCPE is connected to external PPPoE server via VXLAN.
xos_services/vsg/extensions/pppoe
folderscripts
folder to nova-computebash scripts/nova_pppoe_setup.sh
on nova-computeNOTE:
The default IP version to support on user devices is IPv6 only. If IPv4 only user device is to be supported, the above command should have argument as below.bash nova_pppoe_setup.sh ipv4
When vCPE is generated, the PPPoE client feature is deployed to vCPE. This process will take a few minutes.
The user can monitor the process by checking on the log file, or on ONOS CLI to see if the REST device for the vCPE appears.
If you want to change VXLAN configuration:
NOVA PPPoE Params
)PPPoE server: "10.200.200.100" Eth3 of Nova Compute: "10.200.200.200" VXLAN id: "42"
Connect a PC to the ONU. The PC should obtain an IP address from the vCPE.
If PPPoE is enabled, the PC would not have internet access.
Open a Google Chrome web browser, type in one of the following URLs to access the PPPoE client web page.
Use the IP address of the vCPE IP address of eth1.
http://[2001:468:181:f100::1]
http://192.168.0.1
Use a valid domain-named URL, such as the following.https://www.google.com
NOTE:
Because of the browsers cache the site info, accessing the used web page may meet some problem. Or the browser's cache needs to be cleared.
The login page will be displayed on the browser. Input the authenticatable username and password, and click on button Connect.
The PPPoE client in the vCPE will initiate a PPPoE session with the username and password.
After a while, the popup window will display the result.
Click on the OK, the page will be redirected to google.com.
After that the user can browser to other web pages.
PPPoE server runs on an Ubuntu 14.04 VM. The latest Roaring Penguin release rp-pppoe-3.12.tar.gz is used.
It can be downloaded at the following site.
https://www.roaringpenguin.com/products/pppoe
It is installed by the following steps.
tar xvf rp-pppoe-3.12.tar.gz
vi rp-pppoe-3.12/src/pppoe-server.c
argv[c++] = "mru"; argv[c++] = "1442"; argv[c++] = "mtu"; argv[c++] = "1442";
NOTE:
The reason is that we use VXLAN that takes 50 bytes and PPPoE takes another 8 bytes.
We must modify the above code because this bug since version 3.11 makes "mtu" in configuration file not work.
cd ~/rp-pppoe-3.12/src/
./configure
sudo make install
Edit and get the following config file.
/etc/ppp/pppoe-server-options
.# PPP options for the PPPoE server # LIC: GPL #require-pap require-chap mtu 1442 #login lcp-echo-interval 10 lcp-echo-failure 2 plugin /usr/lib/pppd/2.4.5/radius.so radius-config-file /etc/radiusclient/radiusclient.conf logfile /var/log/pppd.log
FreeRadius client is used in this example. It is installed by the following commands.
sudo apt-get install libfreeradius-client2
touch /etc/radiusclient/port-id-map
/etc/radiusclient/radiusclient.conf
.auth_order radius
authserver X.X.X.X:1812
acctserver X.X.X.X:1813
/etc/radiusclient/servers
.## Server Name or Client/Server pair Key ## ---------------- --------------- # #portmaster.elemental.net hardlyasecret #portmaster2.elemental.net donttellanyone # ## uncomment the following line for simple testing of radlogin ## with freeradius-server # #localhost/localhost testing123 X.X.X.X xpass1
VXLAN is provisioned to bypass possible router between PPPoE client and server.
Suppose the eth1 of the PPPoE server VM is connected to eth2 of the head node host.
Configure the IP address of eth1 as 10.200.200.100.
Do not change the IP that is paired in the pppoe package script.ip link add vxlanp type vxlan id 42 remote 10.200.200.200 local 10.200.200.100 dev eth1
The VXLAN is between the PPPoE server VM eth1 and the Nova-Compute eth3.
The PPPoE Server runs on the VXLAN by command like the following one.
sudo pppoe-server -L 10.10.10.10 -I vxlanp -R 10.10.10.20 -N 50
FreeRadius RADIUS server is used in this project to verify the authentication path.
FreeRadius and FreeRadius-MySql is used in this example. It is installed by the following commands.
sudo apt-get install freeradius freeradius-mysql
/etc/freeradius/radiusd.conf
.yes
from no
.# Log authentication requests to the log file. # # allowed values: {no, yes} # auth = yes
/etc/freeradius/clients.conf
defines the RADIUS client with a key as the following.client xuser1 { ipaddr = Y.Y.Y.Y netmask = 16 secret = xpass1 shortname = xuser1 nastype = other }
The ipaddr (Y.Y.Y.Y) is that of the PPPoE server machine, secret must match the Key in /etc/radiusclient/servers
of PPPoE server VM.
/etc/freeradius/users
as like the following."user1" Cleartext-Password := "pass1" Service-Type = Framed-User, Framed-Compression = Van-Jacobsen-TCP-IP
For example:
test@isp.com Cleartext-Password := "test" Service-Type = Framed-User, Framed-Compression = Van-Jacobsen-TCP-IP
Here the user1/pass1 is the user ID and password the PPPoE client used to ask for PPPoE service.