VBNG Router Configuration Guide
VBNG Router Configuration Guide
Configurations Guide
Table of Contents
Router Management 8
Start, Stop, and Restart the router 8
Router Configuration Primer 8
Set time, date and time zone 9
Change admin access password and using ssh key for confd access 9
Create additional confd (router) users 9
Create additional confd users with admin rights 9
Create additional confd users with limited rights 10
Create user group for users whose access is limited to certain modules 12
Remove confd users 13
Centralized Router Access Management 14
TACACS+ User Login Authentication 14
Radius User Login Authentication 15
Configure Inband Router Access 16
Inband Router Access without VRF 16
Inband Router Access under VRF 17
Alarms and Events 18
Router Security Configuration 18
Open Ports On the Router 18
Protect Router WAN or LAN ports against attacks. 19
Control Plane Protection 20
Control Plane Protection By Limiting Control Traffic 20
Control Plane Protection by Blocking Certain Traffic Flows 21
Syslog Configuration 21
SNMP Configuration 22
SNMP In-band and Out-band Access 23
SNMP Trap/Inform 23
Protect Router Against Attacks via SNMP In-band Connections 23
Load netElastic’s SNMP MIB Files 24
Test SNMP server by snmpwalk. 24
Zabbix Templates. 25
SNMP Security. 25
SNMP troubleshooting. 26
Interface Management 27
Create/manage VLAN Interfaces 27
Create/manage eth-trunk/port channel/lacp Interface 29
Create Loopback Interfaces 30
Interface MTU, PPPoE MRU, TCP/IP MSS Settings 31
Setup Interface MTU 31
MTU, PPPoE MRU, and TCP/IP MSS adjustments 31
Test Link MTU With Ping Test 31
Assigning multiple IPs on an interface 32
QinQ and 802.1ad Settings 32
ARP Related Configurations 32
Configure ACL on an interface. 33
Configure Rate Limiter QoS on an interface 34
Configure Shaping on an interface 35
Shaping with a single rate limit on all traffic flows. 35
Shaping with group rate limit, but separate max rates for different flows. 36
Enable PPPoE/DHCP Client on Interfaces 37
Ingress Filtering for Multihomed Networks (RFC 3704) 38
Check interface stats 38
Check dropped packets stats 39
IPv4 Pool Configuration 39
Typical IPv4 Pool Configuration 40
IP Reservation and Static MAC/IP Binding 41
Configuring With Multiple Subnet Pools 42
IPoE With Multiple Subnet Pools. 42
Case I: Multiple Subnets separated by different VLANs 42
Case 2: Multiple Subnets sharing the same VLAN access 42
PPPoE With Multiple Subnet Pools 43
IP Pool Modification and Maintenance 44
Show IP Pool Status 44
DHCP Configuration 45
DHCP Configured as a Server 45
DHCP server as part of IPoE access 45
DHCP renew trigger user re-authentication with IPoE access 46
DHCP as standalone server for L2 connected clients 46
DHCP Broadcast Flag Override 47
DHCP as standalone server for clients through a relay agent 47
DHCP event logging with syslog. 49
DHCP Configured as a Relay Agent 50
DHCP Relay Agent Configuration. 50
DHCP Relay Agent Supported Options 52
DHCP Relay Agent Troubleshooting. 53
Configure DHCP Policies 53
Send DHCP Client TR069 URL With Option 43 53
Send DHCP Client Static Routes With Option 121 54
Send Provision Server IP With Option 66 55
Send NTP Server IP With Option 42 55
Send With Option 125 and Conditionally Send Option 60 55
Check DHCP Status 56
Reset DHCP Leases 56
Subscriber Access Configuration 57
Understand Subscriber Access Call Flow 57
Understand Subscriber Access Authentication Credentials 58
Subscriber Access Credentials for PPPoE 58
Subscriber Access Credentials for IPoE 58
Understand Subscriber Access Domain 59
Access domain specification for PPPoE 59
Access domain specification for IPoE 60
Domain specification summary 61
Subscriber Access Configuration Flow - Component by Component 61
Access Configuration Flow Hierarchy 62
Authentication Template Configuration 63
Authorization Template Configuration 64
Accounting Template Configuration 66
Domain Template Configuration 66
PPPoX Template Template Configuration 67
IPoE Template Template Configuration 67
Enabling PPPoE and IPoE on Access Interfaces 67
Local Authentication with IPv4/v6 static IP, Mac-binding 68
Access Configuration by Access Types 68
PPPoE Access Configuration 68
IPoE Access Configuration 68
IPhost Configuration 69
Leased Line Configuration 73
L3 Mhox Access Configuration. 74
L3 Flow Access Configuration. 77
Access over VxLAN Configuration. 79
PPPoE over L2TP (LAC/LNS) Configuration. 82
VPWS Pseudowire Headend (PWHE) Configuration 82
Inter-subscriber Communications 82
Enable user routes 82
Setup ARP Proxy 83
Block User Access Based on Uplink Availability. 83
Check User Access Status 84
User Access Troubleshooting 85
Check Online Fail Record Log 85
Check Abnormal Offline Record Log 85
Radius Integration and AAA 86
Radius Integration 86
Radius Global Configurations 86
Radius Authentication 86
Radius Authentication Group Definition 87
Authentication Template Definition 88
Check Authentication Request Status 90
Check Radius Access Status with radius-ping Test 90
Check Radius Access Status By Examining Radius Log 91
Check Access Status by Examining On-line Fail Records 91
Radius Authorization 91
Authorization Template 92
Check Radius Reply Attributes with Radius-ping 93
Commonly used Radius reply attributes. 93
Framed-IP-Address Attribute (public 8) 94
Framed-Route Attribute (public 22) 95
Framed-IPv6-Route (public 99) 96
User ACL 96
NetElastic-Qos-Profile-Name Attribute (private 31) 96
NetElastic-Domain-Name Attribute (private 138) 97
Radius DMCOA 97
Disconnect Subscribers 97
Switch Subscriber’s QoS Plan 98
Switch Subscriber’s Download and Upload Rates 98
User Reauthentication 98
Put Subscriber to Walled Garden 99
Radius Accounting 99
Enable Radius Accounting 99
More About Radius Accounting Templates 100
Check Radius Accounting Access with radius-ping Test 102
Flow Based Accounting 102
Example 1 - Separate Usage Accounting for Different Flows 103
Example 2 - Total Usage Accounting Excluding IPTV 104
Check Flow Based Accounting Results 105
Translate Other Vendor’s VSAs 106
Radius Troubleshooting 107
Access Control with ACL 109
User ACL to whitelist traffic from known IPs and apply to the interface. 109
Use ACL to blacklist traffic to/from known bad IPs and apply to an interface 109
Use ACL to block traffic to/from certain IPs and apply to subscribers 110
Domain-based ACL 111
QoS Rate Control and Queues 111
QoS Profile Based Rate Limiting 113
QoS profile with multiple rates for different flows. 113
QoS with priority given to speed test. 116
QoS - Priority Based Queues 117
Applying QoS profiles to subscribers. 120
Allow/deny users when users QoS profiles do not exist 120
Subcar Rate Limiting QoS 121
Subcar v.s QoS Profile Rate Limiting QoS 123
Time Based QoS 123
DNS Relay Agent Configuration 124
DNS Relay Server Configuration 124
DNS Relay Server Validation. 126
DNS Relay Configuration for Domain-based ACL 126
IPv4/IPv6 Dual Stack, IPv6 PD (Prefix Delegation) 127
Different Modes of IPv6 Address Allocations Supported 127
IPv4/IPv6 Dual Stack Authentication Process 128
IPv6 Stack Configurations 129
IPv4/IPv6 Dual Stack Troubleshooting 136
IGMP/PIM Configurations 137
IGMP Configuration 137
IGMP Troubleshooting 139
Router Configurations 139
General Router Debug Tips 139
Static Routes 140
OSPF 141
OSPF Example - V4 141
OSPF Example - V6 142
OSPF Route Filtering - Example 1 142
OSPF Route Filtering - Example 2 143
OSPF Route Advertise Tips 144
OSPF Troubleshooting 144
BGP 145
Sample BGP Configuration Overview 145
Advertise routes to neighbors 147
Add Route-map Filter to control BGP advertise/receive lists 150
Example 1: Use route filter on incoming and outgoing routes 151
Example 2: Use access list to filter incoming routes 153
Example 3: Use route map filter to only accept the default route 153
Example 4: Use prefix-list route map to filter outgoing routes 154
Example 5: Use aspath ACL to filter routes by AS numbers 155
Configure BGP Router as Route Reflector 156
Configure Both V4 and V6 Neighbours 156
Configuring BGP under VRF 157
Using BGP Confederation 159
Settings for Large BGP Routing Tables. 159
BGP Troubleshooting 160
ISIS 161
ISIS Configuration 161
ISIS troubleshooting 162
Use tracker to detect link state change and update routing table 162
Update Static routes with ping detect tracker 162
Update BGP routes with ping detect tracker 163
Update BGP routes with BFD tracker 164
Policy Based Routing (PBR). 165
VRF Configuration 167
Use VRF to create separate access and routing entities. 167
Use VRF to isolate radius control traffic. 169
Http redirect, walled garden, and portal access 169
Static HTTP Redirect 170
Always Redirect Upon Authentication 170
Conditional Redirect By Radius Authentication Instruction 172
Conditional Redirect Upon Authentication Failure 172
Dynamic HTTP Redirect/Walled Garden by Radius DMCOA 173
Prepaid Online Access Http Redirect 174
Statically Configure Usage Quota and Redirect Behavior. 175
Dynamically Set Usage Quota and Redirect URL 176
Portal Access Control. 176
IP Flow Information Export (IPFIX) 176
IPFIX Configuration 176
IPFIX Troubleshooting 179
Check the IPFIX flow tables in the DP 179
Common IPFIX Troubleshooting Tips 179
Lawful Intercept (LI) Configuration 180
LI Server Configuration. 180
LI Users Configuration. 181
Check LI Running Status. 181
Router Management
● To stop the router, type “flexbng -S”. This will stop the router
● To start or restart the router, type “flexbng -s”. This will star/restart the router. After the router
is started, give it some time (10-30 seconds) and type “flexbng” to check the running stats of all
the router processes. When all processes are in RUNNING status, the router restart process is
completed.
NOTE 1: You may be asked to set/enter a password when running commands “flexbng -S” or
“flexbng -S”. This password is saved in clear text and it is not meant for strong security, but to
prevent you from accidentally restarting the router. If you forget the saved password, you can recall it
by typing “cat /usr/local/certus/version/.[Link]”. If the command returns nothing ,it
means the password has not been set.
Change admin access password and using ssh key for confd access
Confd (router shell) comes with the default user “admin” with default password “admin”.
● To change admin password, please follow this guide
● To set up confd access with ssh key, please follow this guide.
To create additional confd users with admin rights, follow these steps.
1. Login to the router as admin (e.g. ssh admin@0 -p 2024 from the host). You won’t be able
to add users if you get to the router by the command “confd_cli”
2. To list current configured users type “show running-config aaa authentication
user”. The information for the current admin users will be listed as shown below
domain# show running-config aaa
aaa authentication ssh-key-mode none
aaa authentication users user admin
uid 9000
gid 100
password $1$LTbmqaem$J9KOGxoB8N6pWvqbH307f0
ssh_keydir /var/confd/homes/admin/.ssh
homedir /var/confd/homes/admin
exit
Take a note of the uid, gid, ssh_keydir, and homedir settings. You will use them for creating the
new admin user later.
3. After login into the router as admin. Type “config” to get into configuration mode.
4. Type “aaa authentication users user [userName]” to initiate user creation dialog.
You will be prompted to enter uid (user ID), gid (group id), password, and ssh_keydir (ssh key
directory), and homedir (home directory). You can use the same information shown in step 2.
Type exit to exit back to the root configuration level.
domain(config)# aaa authentication users user user2-admin
Value for 'uid' (<int>): 9000
Value for 'gid' (<int>): 100
Value for 'password' (<hash digest string>): **********
Value for 'ssh_keydir' (<string>): /var/confd/homes/admin/.ssh
Value for 'homedir' (<string>): /var/confd/homes/admin
domain(config-aaa-authentication-users-user-user2-admin)# exit
domain(config)#
5. Add the new user to the admin group so the new user will have admin rights as shown below.
Commit the changes and exit out of the configuration mode
domain(config)# nacm groups group admin user-name user2-admin
domain(config-nacm-groups-group-admin)# commit
Commit complete.
domain(config-nacm-groups-group-admin)# end
domain#
6. Log in with the new user and confirm the user does have admin rights.
[root@domain ~]# ssh user2-admin@0 -p 2024
user2-admin@0's password:
user2-admin connected from [Link] using ssh on domain
domain# show run aaa
aaa authentication ssh-key-mode none
aaa authentication users user admin
uid 9000
gid 100
password $1$LTbmqaem$J9KOGxoB8N6pWvqbH307f0
ssh_keydir /var/confd/homes/admin/.ssh
homedir /var/confd/homes/admin
exit
aaa authentication users user user2-admin
uid 9000
gid 100
password $1$JwTohfcZ$Wl.EZN1P7q.pKyHvoqalT0
ssh_keydir /var/confd/homes/admin/.ssh
homedir " /var/confd/homes/admin"
exit
The following screen capture shows the whole configuration process with the user inputs highlighted
in green
Create user group for users whose access is limited to certain modules
To create a user group for users who access right is limited to certain modules, follow these steps:
1. login to the router as admin
2. create a NACM limited access group and add the users who should be placed under this group
into this group.
3. Define a NACM rule list where the module access rules are defined and bind the rule to the
NACM access group defined in step 2.
Here is a configuration example for a user group whose members only have access to checking
certain modules states and show running configurations for certain modules. You can customize
access of your desired modules based on the examples provided.
! define a NACM rule list and bind it to the rule group defined
nacm rule-list nat-operator
group [ restricted-operato ] ! bind the rule-list to the rule group
! allow reading smgr session info
rule allow-smgr
module-name netelastic-flexbng-smgr
path *
access-operations read
action permit
exit
! allow reading pppoe session info
rule allow-pppoe
module-name netelastic-flexbng-pppoe
path *
access-operations read
action permit
exit
! allow reading acl configuration
rule allow-acl
module-name netelastic-flexbng-acl
path *
access-operations read
action permit
exit
rule allow-nat ! allow reading nat config
module-name netelastic-flexbng-nat
path *
access-operations read
action permit
exit
rule allow-hdp-nat ! allow reading nat status
module-name netelastic-flexbng-hdp-nat
path *
access-operations read
action permit
exit
rule allow-ippool ! allow reading ipool info
module-name netelastic-flexbng-ippool
path *
access-operations read
action permit
exit
! allow clearing online-fail-record
rule allow-clear-online-fail-record
module-name netelastic-flexbng-smgr
rpc-name clear-vbras-online-fail-record
access-operations exec
action permit
exit
! allow clearing pppoe sessions
rule allow-clear-pppoe-session
module-name netelastic-flexbng-pppoe
rpc-name clear-pppoe-session
access-operations exec
action permit
exit
rule others ! deny all other access
action deny
exit
! add a rule to block commands like “system clear config”,
! “system reboot”, and “system service reboot”, etc
cmdrule block-sys
command system
access-operations *
action deny
exit
exit
Here is a sample configuration for using tacsplus. Please be aware that the tacsplus group name
has to be "default".
NOTE:
● TACACS supports both inband and out-band connections. When using inband connections,
make sure to set tacplus out-band to disable
● When using TACACS, the password can not contain white spaces.
● The type of security for login that the router expects is PAP (Password Authentication
Protocol). PAP needs to be set as the auth option on the TACACS server for the TACACS to
work.
● The router currently does not support TACACS accounting.
NOTE: You can configure to use radius to authenticate and then fall back to local by configuring the
syslog login authentication order as “system login authentication-order radius local”
Configure Inband Router Access
You can access the router control (even the host) through inband connections. Inband connections
means connections through router interfaces as opposed to management (outband) interfaces. The
communication between inband connections and the host processes is made possible by a process
called flexlink. To show the forwarding rules of flexlink, use the command “show flexlink”
● To enable ssh inband connection to the router’s confd command line, configure the following (port
2024 is used in the example).
ssh-server in-band enable true
ssh-server in-band port 2024
With this configured, you can access router confd cmd by ssh admin@ip -p 2024
● To enable ssh inband connection to the router’s netconf machine interface, configure the following
(port 2022 is used in the example).
netconf-server in-band enable true
netconf-server in-band port 2022
With this configured, you can configure your netconf compatible application such as the BNG
Manager to access router netconf by ssh admin@ip -p 2022
● To enable ssh inband connection to the router’s host Linux system, configure the following (port
2222 is used in the example).
host-server in-band enable true
host-server in-band port 2222
With this configured, you can access router’s host Linux by ssh root@ip -p 2222
With all these inband access methods, if your ssh client has ssh-dss disabled by default, you might get
the error message “no matching host key type found”. In that case you can add the option
-oHostKeyAlgorithms=+ssh-dss to the SSH command such as
“ssh -oHostKeyAlgorithms=+ssh-dss admin@[Link] -p 2024”
You can also optionally bind the interface and inband access control list to control from which interface
and what IP address the inband access will be allowed. Here is an example of netconf-server inband
access configuration with interface and inband acl controls. In this example, the inband netconf control is
only allowed from interface 10gei-1/1/1 and from IPs within the subnet of [Link]/22. Please note that
the inband access control access list is defined differently from the general purpose access control list.
! define inband access control list
flexlink access-list
rule flexlink_access_list
global deny all
ip-prefix [Link]/22 permit
exit
exit
flexlink access-list
rule mgmt_access
global deny all
ip-prefix [Link]/8 permit
exit
exit
interface 100gei-1/1/1.200
description "Management Network"
bind vrf management
ipv4 address [Link] 29
dot1q 200
exit
router static
ip route vrf management [Link] [Link] nexthop [Link]
exit
To display the internal channel traffic rates from the dataplane to the control plane, follow these steps:
1. Login to the data plane by “telnet 0 5002”
2. Type “show int internal speed” to display the rx (cp->dp)/tx (dp->cp) rates.
The rx/tx rates are in the unit of packets per second. You want to limit the steady amount of traffic
between DP and CP to something less than 30M pps. It is expected that the internal traffic could
momentarily go beyond 30M pps when users are all trying to get online at the same time. However,
normal steady state control traffic for 32K subscribers should be less than 30M pps. If the steady state
internal traffic rate is high, you could try to reduce it by the following:
1. Reduce the radius accounting update rate.
2. Reduce dhcp renewal interval.
3. User outbound connection for snmp and nat logging.
security
sync-flood bandwidth 30000
cpu-defend-policy
white-list mode disable
black-list mode disable
cp-car mode enable
cp-car rule ospf-bandwidth 30000
cp-car rule bgp-bandwidth 30000
cp-car rule rip-bandwidth 20000
cp-car rule dhcp-c2s-bandwidth 20000
cp-car rule dhcp-s2c-bandwidth 20000
cp-car rule icmp-bandwidth 20000
cp-car rule igmp-bandwidth 20000
cp-car rule ldp-bandwidth 30000
cp-car rule pim-bandwidth 20000
cp-car rule l2tp-bandwidth 20000
cp-car rule multicast-bandwidth 30000
cp-car rule radius-bandwidth 20000
cp-car rule portal-bandwidth 20000
cp-car rule ipsec-bandwidth 20000
cp-car rule isis-bandwidth 30000
cp-car rule arp-bandwidth 20000
cp-car rule pppoe-disc-bandwidth 20000
cp-car rule pppoe-sess-req-bandwidth 20000
cp-car rule pppoe-sess-reply-bandwidth 20000
cp-car rule pppoe-sess-other-bandwidth 20000
cp-car rule default-bandwidth 1024
exit
exit
Here is an example of blocking BGP and HTTPS traffic destined for the user-side VGI interface IP:
! define an access list to specify the flows for bgp and https to the
! user side vgi interface IP.
access-list Block-BGP
rule 10 permit tcp source any gt 0 destination [Link]/32 eq bgp
rule 20 permit tcp source any gt 0 destination [Link]/32 eq 179
rule 30 permit tcp source any gt 0 destination [Link]/32 eq 443
exit
security
cpu-defend-policy
white-list mode disable
black-list mode enable ! eanble black list
black-list acl Block-BGP ! associate the black list rule
cp-car mode enable
cp-car rule ospf-bandwidth 30000
..
..
cp-car rule default-bandwidth 1000
exit
exit
NOTE: The permit statement is used instead of deny in the blacklist ACL because the blacklist itself
implies a deny action for all traffic that matches (i.e., is permitted by) the associated ACL rules.
Syslog Configuration
The vBNG router supports syslog export for NAT, DHCP, abnormal offline, and online fail event logging.
● For NAT logging, the configuration of the syslog is covered in the logging section of the CGNAT
application note. Please follow the link for configuration details.
● For DHCP event logging, please refer to the configuration guide in the DHCP section.
● For abnormal offline and online fail event syslog logging, configure the under
bras->subscriber-manager as shown in the following example
bras
subscriber-manage
user-group-identify circuit
offline-speed 1000
session abnormal-offline-record 32000
session normal-offline-record 32000
session online-fail-record 32
session abnormal-offline-syslog enable
session abnormal-offline-syslog facility local0
session abnormal-offline-syslog severity warning
session online-fail-syslog enable
session online-fail-syslog facility local0
session online-fail-syslog severity warning
exit
exit
SNMP Configuration
To enable SNMP server on netElastic’s vBNG, login to confd and follow the following reference
configuration. By default, the community string on netElastic’s snmp server is set to “public”.
! enable snmp
snmp-server agent enabled
! enable outband snmp and set snmp port number
snmp-server agent out-band enable true
snmp-server agent out-band port 161
! enable inband snmp, set snmp port number, and bind to an inband interface
snmp-server agent in-band enable true
snmp-server agent in-band port 161
snmp-server agent in-band bind interface gei-1/1/1.800
! enable/disable appropriate snmp versions
snmp-server version v1 true
snmp-server version v2c true
snmp-server version v3 true
! set max snmp packet size
snmp-server packet-max-size 50000
! enable/disable snmp event trap notification (no server ACK expected)
snmp-server trap enable
! enable/disable snmp event inform notification (require server ACK)
snmp-server inform enable
! define a snmp community and associate it with a defined snmp view
snmp-server community public view-name public-view rw
! define a snmp view and associate it with an oid tree
snmp-server view public-view [Link] included
! define snmp trap or inform servers, snmp version, and community name
snmp-server host [Link] udp-port 162 trap-outband version v2c community public
snmp-server host [Link] udp-port 162 trap-outband version v2c community
publicband version v2c community public
SNMP Trap/Inform
The router supports sending SNMP event notifications to SNMP servers in both trap mode (no
acknowledgment required) and inform mode (SNMP server acknowledgment required). To configure
SNMP traps, you need to configure the following:
● enable snmp agent
snmp-server agent enabled
● enable snmp trap or inform
snmp-server trap/inform enable
● configure snmp servers. You can configure multiple servers
snmp-server host [snmp server IP] udp-port [snmp trap udp port number]
trap-outband/trap-inband/inform-outband/inform-inband version [v1/v2c/v3]
community [community string]
! define an acl to block all connections with port 161 and 162
! except those from [Link]
access-list snmp-protector
rule 10 permit udp source [Link]/32 gt 0 destination any range 161 162
rule 20 deny udp source any gt 0 destination any range 161 162
exit
After downloading the netElastic MIB package, unpack it, you will find
● The folder named “netelastic” contains all netElastic MIB object files for the particular version
● The netElastic MIB OID list that shows the mapping between OID and the object name.
To load the MIB files depends on the SNMP client you use, please refer to the user guide of the SNMP
client you use on how to load third party MIB files. Here is an example on how to load MIBs if you are
using net-snmp and net-snmp-utils packages on CentOS.
1. Copy the netElastic MIBs to /usr/share/snmp/mibs folder. If the folder does not already exist,
create it.
2. Create a snmp configuration file [Link] under the /etc/snmp directory. If the folder
does not already exist, create it.
3. Add a line with “mibs +ALL” to the [Link] file. If you prefer to selectively add individual
MIBS instead of adding them all, you can add them one by one in [Link] as shown below.
mibs +NETELASTIC-FLEXBNG-ALARM
mibs +NETELASTIC-FLEXBNG-IPPOOL
…
In this example, I used local loopback IP as I installed snmpwalk on the same host where vBNG is
installed. I used OID [Link].4.1.54268.[Link] as the base OID prefix for smgr session summary
information. All objects whose OID starts with [Link].4.1.54268.[Link] will be displayed. If you
load netElastic’s MIB correctly, you should see netElastic’s OID objects printed out as shown below.
We know from the netElastic OID table that the OID for smgr session summary all and ipoe are:
You can use snmpget to query these specific field values as shown below.
Zabbix Templates.
For SMNP monitoring with Zabbix, here are two reference Zabbix templates
● Zabbix netElastic Main Template
● Zabbix netElastic Template with Per Subscriber Stats
SNMP Security.
Although the router supports both in-band and out-of-band SNMP access, it is recommended that you
disable the one you are not using by setting the corresponding command:
“snmp-server agent in-band/out-band enable false”
You should also create a FlexLink access list to allow SNMP access only from trusted clients. This rule
can be applied to both in-band and out-of-band connections. The following configuration example
illustrates how to do this.
SNMP troubleshooting.
The SNMP module is part of the confd process. It runs in the host Linux system and can serve
out-of-band SNMP connections natively through the host IPStack. Meanwhile in-band SNMP connections
need to be translated and forwarded to the confd process by a special process in the router called
flexlink. This extra translation adds to processing inefficiency. Therefore, it is recommended to
always use out-of-band SNMP connections when available.
Follow these steps if snmp query does not produce any output
● You can use the show snmp host, show snmp view commands to ensure snmp
configuration is taken properly by the router and host and view specifications are correct. If
everything looks right, you can do a local snmp walk to prove snmp information can be retrieved.
● For inband SNMP, make sure to add “snmp-server agent in-band bind interface
[interface]” so that the control plane does not have ambiguity on which interface to choose to
send snmp messages.
● If using inband SNMP, type “show flexlink” to see if there is an entry for snmp-inband in
flexlink which is the conduit between inband interface and confd snmp module. If examination of
the log file is warranted, it is located at /var/log/certus/go/flexlink/[Link].
● If you are using out-of-band SNMP and SNMP queries are not working, follow these
troubleshooting steps:
○ Run the command netstat -tulnp | grep ':161' on the host linux system to
ensure the process “flexlink” is the only process that is listening on port 161. If there
are other running processes listening on port 161, stop those processes. For example, if
the process “snmpd” is also running and listening on port 161, you can stop the process
by systemctl stop snmpd followed by systemctl disable snmpd.
○ Capture traffic on the outband interface to verify whether SNMP requests are arriving:.
For example “tcpdump -i eth0 udp port 161”
○ If SNMP requests are arriving but queries are still unsuccessful, check firewall rules to
ensure SNMP traffic is not being blocked: Run the command “iptables -L” to list all
iptables rules to make sure there are no firewall rules that are blocking SNMP queries.
You can test this by temporarily flushing all firewall rules to remove any potential
restrictions by running the command: “iptables -F”
Interface Management
domain# config
Entering configuration mode terminal
domain(config)#
domain(config)# interface 10gei-1/1/1.100
domain(config-interface-10gei-1/1/1.100)# dot1q 100
domain(config-interface-10gei-1/1/1.100)# sh fu
interface 10gei-1/1/1.100
bind acl out ipv4 spam-dst-block-list
dot1q 100
exit
NOTE 1: The [integer] portion in the sub interface name does not have to be the same as vlan ID. It
can be any integer from 1 to 4094. As a matter of fact, you can put multiple vlans under one subinterface
as shown in the following examples. Also you can not mix dot1q with qinq under one interface.
NOTE 2: For qinq configurations, the internal means the C-tag and external means the S-tag.
NOTE 3: For either dot1q or qinq tagging, you can use dot1q-range or qinq-range to specify a
range of vlan values instead of listing them out individually.
NOTE 4: You can optionally use the command “phys-address <HH:HH:HH:HH:HH:HH MAC-addr>”
to specify the MAC address of the subinterface to be different from the MAC of its parent physical
interface. If “phys-address” is not specified, the MAC of the subinterface will be the same as that of its
parent physical interface.
interface eth-trunk2
description "network interface"
bind acl in ipv4 DNS-INT-ACL
bind acl out ipv4 DNS-INT-ACL
bind qos in policy_interface_queue
bind qos out policy_interface_queue
nat outside
trunk-mode manual
balance ip-full
trunk-port 10gei-1/1/1
exit
trunk-port 10gei-1/1/3
exit
ipv4 address [Link] 30
exit
NOTE 1: It is recommended to set trunk-mode to manual as shown in the example for increased
stability. However you can also set it to lacp-static if you need to accommodate hot interface
changes.
NOTE 2: To change the trunk mode, all member interfaces must be removed from the trunk interface first.
After changing the trunk mode, the member interfaces can be added back.
Here is a sample corresponding Cisco switch [Link] work with vBNG trunk interface
configuration. On the Cisco switch side, the interfaces are GigabitEthernet1/0/5
and GigabitEthernet1/0/6
interface Port-channel2
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 101,102,600,2347
switchport mode trunk
no negotiate auto
interface GigabitEthernet1/0/5
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 101,102,600,2347
switchport mode trunk
channel-group 2 mode passive
interface GigabitEthernet1/0/6
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 101,102,600,2347
switchport mode trunk
channel-group 2 mode passive
After trunk interfaces are created, you can create vlan interfaces based on the created trunk interfaces
the same way as you would on physical interfaces. Here are some example of of vlan interfaces based
on trunk interfaces
interface eth-trunk1.100
description "vlan 1xx access interface"
dot1q 100
dot1q 105
dot1q-range 120 to 130
exit
You can also set TCP/IP MSS value on an interface with the “ip tcp adjust-mss [mss value]”
configuration. The relationship between MTU and MSS is “MTU - (TCP header + IP header) = MSS”.
Therefore interface MSS should be set to MTU minus the size of a TCP header and an IP header: Since
TCP and IP headers are both 20 bytes long. The default MSS value is 1500 - (20 + 20) = 1460 with the
default MTU value of 1500. If you set MTU smaller than 1500, you need to set MSS to a smaller value
accordingly. Here is a sample MSS configuration on an interface.
interface 10gei-1/1/0.1000
description "PPPoE Access Interface"
ip tcp adjust-mss 1436
dot1q 1000
exit
interface vgi1
description vgi
nat inside
ipv4 address [Link] 24
ipv4 address [Link] 24 secondary
exit
Next, we will use an example to illustrate the configuration. The rate control requirements in this example
are:
● Download/upload traffic on WAN interface 10gei-1/1/1.200 for CDN cache is 200/50Mbps
● Download/upload traffic on WAN interface 10gei-1/1/1.200 for internet is 100/20Mbps
NOTE: As shown above shaping is only relevant for egress traffic on appropriate interfaces. Shaping
for ingress traffic is irrelevant. As long as the processing capacity is not exceeded, all ingress traffic will
be processed.
Shaping with group rate limit, but separate max rates for different flows.
In this case, you have more than one flow competing for the same total interface bandwidth and each
flow shall have its own max limit when interface bandwidth limit is reached. The router will realize this
by creating a shaper buffer with multiple weighted fair queues. The netElastic vRouter supports 4
weighted fair queues per buffer instance. The weighted fair queues are AF1, AF2, AF3, and AF4 with
weight 1, 2, 3, 4 respectively. For example, if AF1 is used for flow1 and AF3 is used for flow2, flow1 will
get 1/(1+3) = 1/4 of the total bandwidth and flow2 will get 3/(1+3)=3/4 of the total bandwidth. Similarly, if
AF1 and AF2 is used for flow1 and AF3 and AF4 is used for flow2, flow1 will get (1+2)/(1+2+3+4) = 3/10
of the total bandwidth and flow2 will get (3+4)/(1+2+3+4)=7/10 of the total bandwidth.
Here are the sample configurations where traffic flows (class_map) traffic_localCache and
traffic_internet are for illustration purpose only and not explicitly defined
To check the DHCP client IP assignment, use the command “show dhcp wan”. If the interface
successfully obtains a DHCP address, the address will be displayed on the interface when you run the
command “show if-management-status”.
From release version 1.12.59.B4P18R2, you can display statistics and packet header information for
dropped packets, allowing dropped packets on interfaces to be investigated and examined..
● From the router command line, running the command “show if-drop summary” will display a
summary of the most recent dropped packets in the buffer.
● You can also capture dropped packets using the script “tools/capture_drop_pkts.sh”,
which saves them to a PCAP file for further offline analysis.
Once an ippool configuration is created, you can use the command “show ippool status | tab” to
display the ippool information. If a pool is successfully created, the pool details should be displayed.
warning-threshold [percentage]: This sets the ippool usage depletion trigger threshold in percentage.
When the ippool usage exceeds this percentage setting, the system will generate a system Warning (level
4) alarm event. For more information, please refer to the alarms and events section.
warning-exhaust [enable/disable]: This switches the enable/disable the generation of a system Critical
(level 2) alarm event when the pool resource is exhausted. For more information, please refer to the
alarms and events section.
reserved-section: Under each section, you can configure reserved-section to block IP ranges
from which the vBNG router will NOT dynamically allocate any IPs to subscribers. If you are allocating
IPs from radius, it is imperative that you configure reserved-section to block IPs that you are going to
assign from radius.
static-bind: With this feature, you can configure the router to always assign certain IP to subscribers with
certain MAC addresses. Note that the IP addresses bound by static-bind can NOT be under any section
definition and they need to be defined in parallel to section definition. If you need to use static-bind to
bind IPs within a section definition, you need to break the section definition into disjoint sections with the
static IPs excluded as shown in the following example.
ippool group myPrivatePool
gateway-ip [Link] gateway-mask [Link]
frame-pool disable
lease-time 3600
dns-primary [Link] secondary [Link]
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
exit
static-bind aa:bb:cc:dd:ee:f0 ip-address [Link]
static-bind aa:bb:cc:dd:ee:f1 ip-address [Link]
static-bind aa:bb:cc:dd:ee:f3 ip-address [Link]
exit
Using static-bind in the ippool configuration is one of the ways by which you can achieve static IP
assignment. Other static IP assignment methods include iphost and static IP assignment from radius
which we have covered under Framed-Ip assignment. Please note the difference between static bind and
iphost.
● iphost: subscribers are allocated IPs from their ISP and the users will have to manually configure
the IPs on their CPE devices. User session on the BNG router is triggered by the ARP requests
from the subscribers.
● static-bind: subscribers get IP assignments through the dynamic online process such as PPPoE
or IPoE. User sessions on the BNG router are triggered by the subscribers’ online processes
during which the BNG router will always assign the same IP to the subscriber by the static-bind
list in the ippool configuration.
Configurations with multiple subnet pools are handled differently between PPPoE and IPoE access. This
is because PPPoE is a point-to-point connection where the concept of gateway is arbitrary, while the
gateway is a very important access point for IPoE connections. We will deal with these two cases
separately in the following use case scenarios.
In this case, all subscribers come in under the same VLAN so we can not put them into different
domains based on VLANs to differentiate their access domain binding. Here is how we should
configure for this case:
● Create a separate IP pool for each vlan/subnet. For each IP pool, create a matching gateway.
● Create only one VGI whose IP should include all gateway IPs of the configured IP pools. Pick
any gateway IP as the primary and the rest gateway IPs should be configured as secondary IPs
on the VGI interface.
● Create one domain. Bind all the ippools and the singular vgi in the domain definition.
Here is an example. Suppose that I am configuring multiple IPoE pools with different subnets as
shown below.
[Link]/24, [Link]/24, [Link]/24, [Link]/24
You will configure 4 pools with 4 gateways. However, you will only need to configure one VGI. In the
user access domain you will bind all 4 pools and the one VGI. For the VGI interface, you do need to
bind all four gateway IPs to the VGI. You can pick any one gateway IP as the primary and then the
others as secondary as shown in the following example
interface vgi1
description vgi
nat inside
ipv4 address [Link] 24
ipv4 address [Link] 24 secondary
ipv4 address [Link] 24 secondary
ipv4 address [Link] 24 secondary
exit
interface vgi1
description vgi
nat inside
ipv4 address [Link] 32
exit
bras
vgi-configuration
interface vgi1
exit
exit
exit
If the IP pool is configured as part of the BNG services, clearing user sessions will automatically release
the associated IP pool allocations. If the IP pool is configured as part of a standalone DHCP service, or if
there are residual entries in the pool for any reason, the router provides the following commands to reset
the IP pools:
● recycle pool-name [pool name] all
Clears all IPs in the specified pool.
● recycle pool-name [pool name] start-ip-address [start ip] end-ip-address
[end ip]
Clears a block of IPs from the specified pool. To clear a single IP, set the start IP and end IP to
the same value.
DHCP Configuration
For provision of accepting DHCP/IPoE connections, The DHCP function needs to be configured on the
vBNG router. Please keep in mind that if you need to have IPoE user sessions on the vBNG router,
configuring the DHCP alone is not enough. For IPoE connections and related user management, DHCP
is only part of the IPoE configuration flow. Please consult the IPoE configuration guide for more
information on IPoE configuration.
The DHCP configuration has two parts: global configuration and interface specific configuration. The
vBNG router can be configured either as a DHCP server or as a relay agent at each interface level. The
global configuration of DHCP has the following main parameters:
When DHCP is enabled for IPoE access, the vBNG can serve as the DHCP server for incoming
DHCP/IPoE connections. A typical DHCP server configuration for this mode is shown below.
dhcp
dhcp enable
relay max-user 128000
relay option82 policy keep
relay option82 format dsl-forum
relay option82 user-configuration-policy interface
interface gei-1/1/2
mode server
user-quota 128000
reauth when-lease-renew ! enable dhcp renew authentication
exit
exit
DHCP renew trigger user re-authentication with IPoE access
In scenarios where periodic validation of user subscriptions is required, re-authenticating users
against the RADIUS database upon each DHCP renewal message can be an effective approach.
Starting from release version 1.12.55.B3P34, you can configure the router to trigger user
re-authentication upon receiving a DHCP renew message. To enable this feature, apply the following
configuration to the interface through which the user's DHCP requests are received, as shown in the
example above.
dhcp -> interface [interface name] -> reauth when-lease-renew
dhcp
dhcp enable
relay max-user 128000
relay option82 policy keep
relay option82 format dsl-forum
relay option82 user-configuration-policy interface
interface gei-1/1/2
mode server
user-quota 128000
pool localPool ! optionally bind a pool on this interface
dhcp-policy customized-route-policy
exit
policy customized-route-policy
option33-route [Link] [Link]
exit
exit
● You can apply a dhcp policy for all requests to the interface where the dhcp server is enabled
as shown in the above example.
● If you want the users to roam across vlans, you need to turn on ramble as explained earlier.
● You can optionally bind an ip pool as shown in the above example if you want to use vBNG as
a standalone dhcp server to serve dhcp requests on the enabled interfaces. However, if you
want to have user session management on the vBNG router and setup DHCP server as part of
the IPoE online process,, you should NOT bind any ip pool under the DHCP configuration.
Instead you should follow the IPoE configuration flow where the ip pools are bound under the
access domain for IPoE.
● If you want to statically bind IPs to certain MAC addresses, you can achieve this by creating a
MAC to IP binding table in the corresponding IP pool definition. See this section for more
details.
● When connected with a DHCP relay agent, the DHCP server will have to work in L3 relay
mode. Our DHCP server implementation does not work with L3 DHCP relay agents until
version 1.12.59.B4P18. See the notes below on how to set up the DHCP server to work with a
relay agent.
From version 1.12.59.B4P18, the route provides the option to reply with unicast even if the client sets
the broadcast flag bit by adding the switch “broadcast-bit-override” in DHCP server
configuration. When this configuration is enabled, the DHCP server will reply to the client with the
dhcp offer in unicast even if the broadcast flag is set to 1 in dhcp request. When enabled, you can
subsequently set a broadcast bit overwrite interval.
○ broadcast-bit-override disable: the dhcp server will always reply with broadcast if the
broadcast flag in the dhcp request message is set to 1.
○ broadcast-bit-override enable [interval]: the dhcp server will reply with unicast
per the programmed interval when the broadcast flag in the dhcp request message is set to 1.
The interval value can be programmed with any integer value between 0 and 63. The
interval value shall be interpreted by the following definition
■ 0 : When the interval is set to zero, all set broadcast flags from clients will be flipped. The
server will always reply with a unicast message regardless of the broadcast bit setting in
the request message.
■ M (1-63) : When the interval is set to M, the dhcp server will honor one broadcast flag
every M requests where the broadcast flag is set to 1, the other M-1 requests will be
replied with unicast. For example if the interval is set to 8, the dhcp server will reply with
1 broadcast message and 7 unicast messages for every 8 requests where the broadcast
flag is set to 1.
NOTES:
1. The pool binding under dhcp -> interface is optional. The pool binding is only necessary
when the router is configured as a DHCP relay agent.
2. When the router is set up as a standalone server for clients through a relay agent, it can serve
clients from multiple pools. To set this up, you will need to configure multiple IP pools on the
router with each pool having its own gateway AND make sure no pool is bound under dhcp ->
interface configuration. The router knows how to resolve IP allocation from the appropriate
pool based on the following logic:
a. When the relay agent forwards a client’s request to the DHCP server, it sets the giaddr
field to its own IP address (the IP of the interface that received the client’s request).
b. When the DHCP server receives the discovery packet from the relay agent, it checks the
giaddr value to determine which subnet the client belongs to. Based on this, the server
allocates an IP address from the corresponding IP pool.
c. In summary, the DHCP server assigns an address from the pool whose gateway matches
the giaddr value in the discovery packet from the relay agent.
When the vBNG router is configured as a relay agent on an interface, the DHCP requests from that
interface will be forwarded to external DHCP servers. vBNG will subsequently relay the DHCP
responses from the external DHCP servers back to the clients with the option to insert certain DHCP
options. Keep in mind that the BNG router will treat the IP addresses obtained from the external
DHCP server the same way as framed IP addresses from radius servers. Unless the key
frame-pool is set to enable in the ippool definition, the IP addresses from the external DHCP
servers need to be reserved in the ippool definition for the BNG router to assign those IPs to the
clients.
dhcp
dhcp enable
interface eth-trunk21.333
mode relay
relay-lease-proxy 180
relay-agent [Link]
relay-all-options enable
relay-server-group my-relay-dhcp-server
user-quota 32000
pool my_ipoe_pool
exit
relay-server-group my-relay-dhcp-server
algorithm first
max-retry 3
relay source-ip [Link]
server 1 [Link] standard master
server 2 [Link] standard
exit
exit
The above configuration example can be explained in the following logical configuration steps:
1. Define and reference an ip pool (my_ipoe_pool in the example). The pool needs to mirror the
external dhcp server in terms of ip spaces. But all ip spaces on the vBNG need to be reserved
in the ip pool defintion.
2. Define a relay-server-group (my-relay-dhcp-server in the example) and reference it under the
dhcp->interface [dhcp access interface]. In the relay server group, you need to
set:
a. relay source-ip ( [Link] as in the example), which is the NAS ip to your external
dhcp servers. This IP can be an interface IP or loopback IP from which you should be
able to ping your external dhcp servers. As configured in the example, you should be
able to run “ping [Link] source-address [Link]” from the router and the
ping should go through successfully. Keep in mind that although the connection between
the dhcp relay agent and the external dhcp server is between the relay source-ip
and the external dhcp server IP, the dhcp request source IP (which is the content of the
dhcp request to the external dhcp server) is the relay-agent IP explained below.
Therefore, the destination IP of the reply packets from the external dhcp server will be
relay-agent IP, not relay source-ip. So it is important to make sure that the
external dhcp server has a route to the relay-agent IP.
b. algorithm [first/forward-all/round-robin]. Here you specify the algorithm
by which the router forwards dhcp to external servers. There are three options:
i. first: The router will forward requests to the server labeled as master first and
will forward requests to other servers only if the first one fails to respond. Please
note if the algorithm is set to first, you have to set one server as master for
dhcp forwarding to happen.
ii. forward-all: The router will forward requests to all servers. Whoever
responses first will be relayed to dhcp clients. For this algorithm, you don’t have
to specify a master for the DHCP servers.
iii. round-robin: The router will forward requests to the DHCP servers in round
robin fashion. For this algorithm, you don’t have to specify a master for the
DHCP servers.
c. server: Here you list all external DHCP servers. You can configure up to 8 servers.
As shown in the above example, if the algorithm is set to first, you have to specify one
server as master.
3. Next you list all the interfaces from which you are expecting dhcp requests are coming in. In
the above example "interface eth-trunk21.333 " is the interface where incoming dhcp
packets come in. If you have more interfaces, add all of them under dhcp in similar fashion.
For each interface listed, you need to specify:
a. mode: set the mode to relay.
b. relay-agent [agent IP]: The relay agent IP is supposed to be the source IP by
which the router is replying to client devices. This IP needs to be within the subnet from
which you will be allocating IP to clients. Not only this IP needs to be reachable to the
external DHCP server IP, but it also does need to be reachable to the clients. For the
BNG use case, the agent IP should be the vgi IP of the connections associated with that
vgi interface. In the above example: [Link] is the vgi IP for connections from interface
eth-trunk21.333.
c. relay-all-options [enable/disable]: when set to enable, the router will relay all
DHCP options between the client and the server. This option is supported since version
1.12.59.B4P18.
d. pool: bind to the pool defined in step 1:
e. relay-server-group: bind to the relay server group defined in step 2
f. relay-lease-proxy: set the lease time (in seconds) that the router sent to the client.
If this is not configured, the lease time on the client will be the one set on the external
DHCP server. You can use this key to shorten the DHCP lease time between the router
and the client while maintaining a longer lease time between the router and the external
DHCP server. For example, if the lease time on the external DHCP server is 24 hours,
and relay-lease-proxy is set to 300, the client will renew lease from the router by
5-minute lease time while the router will renew lease from the external server by 24-hour
lease time.
When the router is configured as a relay agent, forwarding option messages from the client to the
server and vice versa is not automatic and transparent to the router unless explicitly configured to
pass all options (supported since version 1.12.59.B4P18).
For versions prior to 1.12.59.B4P18 or when relay-all-options is set to disable for version
1.12.59.B4P18 and later versions, each option is handled individually and thus provides the option to
overwrite some of the DHCP options. Future versions will add the option to pass all options between
the client and the server making the router transparent between the client and the server as far as
passing dhcp options is concerned.
Currently the following options are forwarded from the client to the server.
Currently the following options are forwarded from the server to the client.
If the DHCP function is not working property when configured as a relay agent, try the following
debug step:
1. Ping the external dhcp server with the configured relay source-ip as the ping source-address. For
example “ping [Link] source-address [Link]” to make sure ping goes through.
2. If the algorithm is set to first, make sure you have at least one server set to master.
3. Use the command “show dhcp detail info” to display dhcp status information.
4. Use the command “show vbras online-fail-record” to display the reasons for user
online failures.
There are other route related options such as option 3, 33, and 121 that we support. Please refer to the
dhcp policy in the command line prompts for command details.
NOTE: For this to work, the CPE needs to have option60 field configured with the same matching
string.
Here is a sample DHCP server configuration with these elements highlighted in color.
dhcp
dhcp enable
relay max-user 128000
relay option82 policy keep
relay option82 format dsl-forum
relay option82 user-configuration-policy interface
interface gei-1/1/2
mode server
user-quota 32000
dhcp-policy option43
exit
policy option43
client-option option60Pattern reply-option 43 string
[Link]
! optionally you can specify to return option 43 regardless of
! matching option6 pattern or not
reply-option 43 string [Link]
exit
exit
dhcp
dhcp enable
relay max-user 128000
relay option82 policy keep
relay option82 format dsl-forum
relay option82 user-configuration-policy interface
interface 10gei-1/1/0
mode server
user-quota 32000
dhcp-policy option121-policy
exit
policy option121-policy
option121-route [Link] 0 [Link]
option121-route [Link] 24 [Link]
option121-route [Link] 32 [Link]
exit
exit
dhcp
policy provSvr
reply-option 66 string [Link]
exit
interface 10gei-1/1/3.121
mode server
user-quota 32000
dhcp-policy provSvr
exit
exit
dhcp
policy dhcp-ntp
reply-option 42 ip [Link]
exit
interface 10gei-1/1/3.121
mode server
user-quota 32000
dhcp-policy dhcp-ntp
exit
exit
netelastic# show dhcp detail info interface | select ipv4-address | select option60 opt60-ascii | select option82
opt82-cid-ascii | select option82 opt82-rid-ascii | select state | select expiration | select option12 opt12-ascii
OPT82 OPT82
OPT60 OPT12 CID RID
VPN IPV4 ASCII ASCII ASCII ASCII
ID MAC ADDRESS ADDRESS STATE EXPIRATION INTERFACE STRING STRING STRING STRING
------------------------------------------------------------------------------------------------------------------
0 00:21:70:d7:d3:ca [Link] BOUND 2021-06-04 19:03:08 gei-1/1/5 MSFT 5.0 lab-PC
0 e4:b9:7a:88:f1:d5 [Link] BOUND 2021-06-04 19:02:53 gei-1/1/4 MSFT 5.0 Weixiao-PC
The vBNG router user authentication process can be summarized as in the following steps:
● Get or derive user name, password for authentication from the subscriber access request
information. How the subscriber authentication credentials are obtained depends on the access
method.
○ For PPPoE access, the subscriber’s username and password are carried in the PPPoE
discovery packet from the subscriber’s device to the vBNG router
○ For IPoE access, the subscriber’s username and password have to be derived from its
DHCP discovery packets such as MAC address or what is carrier in option 82 strings.
○ For any access methods, the vBNG router can also generate username and passwords
from the subscribers access circuit information such as VLANs, interfaces, MACs, [Link]
will discuss more on subscriber credentials later in this section.
● Get or derive domain name from the subscriber access request information (e.g. pppoe initiation
or dhcp discovery packets etc) or locally configured values.
● Use the username and password combo to compare against either locally created records or
records in a Radius database and decide if the subscribers should be authenticated or not. The
manner how this compassion should be performed is defined in the domain definition. See
section below for more information on access domain definition.
● If the subscriber is authenticated, the vBNG router will enter an authorization process during
which the router will allocate an IP and possibly other resources such as QoS plan etc to the
subscriber. If the authorization process is also successfully completed, the vBNG router will
create a user session on the vBNG router.
● If an online process fails either at the authentication or authorization stages, the vBNG router will
create an online fail record with perceived fail reason. You can access this failed record log with
the command “show vbras online-fail-record”
User credentials (user name, password) are what is needed for user authentication. With Radius
authentication, the vBNG will always send the user name and password to the Radius server for
authentication. What is sent as user name and password to Radius comes from subscriber’s access
initiation or discovery packets. How the user credentials are extracted and formatted to send to
Radius depends on the access method and how formatting is configured.
For PPPoE, the username and password always comes from the subscriber’s PPPoE initiation
packets. The vBNG router will extract the username and password from the PPPoE initiation packet
and use them as the credential to check against stored records either locally or from Radius to
determine if the subscriber should be authenticated or not.
NOTE: The user name field in the PPPoE discovery packet inherently can carry both username and
domain name in the general format of “[user name][domain delimiter][domain]” (e.g.
JohnSmith@[Link]). Which part of the string is actually used as the username for
authentication is configurable in the subscriber’s authentication template under the key value
“user-name-format”
For IPoE, the user name and password are not explicitly carried in DHCP discovery packets. The
vBNG will derive username, password, and access domain information from various rules that define
the mappings between username/password/domain to the various strings in the subscriber’s DHCP
discovery packets. These mapping rules are defined under the IPoE templates. Please refer to the
IPoE configuration application note for more details.
Understand Subscriber Access Domain
User access behavior is largely determined by access domain defined for the user or access
interface. Access domain will define properties such as
● Authentication template: this will define how the user is going to be authenticated such as none,
local, or radius, etc.
● Authorization template: this will define how the user is going to be authorized with properties such
as QoS, ACL, NAT etc.
● Accounting template: this will define how user’s online accounting records are going to be
generated and sent..
● vgi definition: this defines the user's access gateway.
● IP Pools: this will define IP V4 and V6 Pools for subscribers.
● Other user access behaviors such as user routes, authentication fail behaviors, etc .
User online process has two stages: authentication and authorization. A user has to be able to find its
associated domain during each of these two stages. These two stages can use the same domain or
they can use different domains. During the authentication stage, the user has to be able to find how it
is going to be authenticated. Therefore, the associated domain during the authentication stage must
have an authentication template defined. After successful authentication, the online process enters
the authorization stage, the same domain used during authentication can be used for authorization, or
another domain for authorization can be associated with the user via Radius authentication reply
message or local-subscriber domain specification. It is obvious that the only situations where
authorization domain could be different from the authentication domain are when Radius
authentication or local-subscriber management is used.
Although there is only one way that the authorization domain can be determined when different for
authentication domain (i.e. by Radius reply message), there are many ways an authentication domain
can be specified to accommodate the various ways a user’s online authentication process can be
handled by ISPs. How an authentication domain is specified depends on the access method such as
PPPoE, IPoE, and others.
For pppoe, subscriber’s authentication domain specification can come from two places:
1. From subscriber’s PPPoE PADI packets: pppoe initiation (PADI) packet coming to vBNG already
carries username and password. vBNG will use the user name and password for authentication.
For example, if the user name coming in is of the format “username@domain”, vBNG will treat
the string after the “@” sign as the access domain associated with the user assuming the
domain-name-delimiter is set to “@” under the config -> bras in the router
configuration. If the domain can not be extracted based on the domain-name-delimiter
configured, the vBNG router will treat the whole username string as the username and use the
default domain value set in the PPPoX template as the access domain. For example, if the user
name is ”johnSmith@[Link]” and the domain-name-delimiter is set to “#” under
the config -> bras in the router configuration, the subscriber’s username will then be set to
johnSmith@[Link] instead of johnSmith.
2. From the default-domain specification in the PPPoE template definition: See PPPoE
configuration application note for PPPoE template definition.
The diagram below shows these two methods by which a PPPoE subscriber can find its access
domain definition.
NOTE: Method 1 has higher precedence than method 2. If the domain name is carried as part of the
user name in the PADI packet,a domain matching that domain name must be configured on the
vBNG. Otherwise, the subscriber won’t be able to be authenticated. The domain specified as the
default-domain in PPPoE template takes effect only if the user name in PADI packet does not carry
domain name.
As mentioned above, unlike PPPoE, IPoE connection initiation (DHCP discovery packet) does not
explicitly come in with username and password. Instead, DHCP discovery packets come in with user
ID (MAC) and possibly other DHCP option strings. netElastic’s vBNG offers flexible ways to
determine which access domain the IPoE user belongs to from the information carried in the DHCP
discovery packets. This diagram shows how the access domain is determined for IPoE access
through the ipoe-template configuration. For more detailed information on IPoE template definition,
please refer to the IPoE configuration application note.
Domain specification summary
User online process has two stages, authentication and authorization. A domain has to be
associated with each stage. The same domain can be used for both authentication and authorization.
Domains have to be predefined in configuration and one can define as many domains as needed.
Domains can be specified dynamically or statically in the router’s running configuration .
● Statically configured:
○ PPPoE authentication/authorization domain: specified as default-domain in PPPoX
template.
○ IPoE authentication/authorization domain: specified as pre-domain in bras ->
vci-configuration.
● Dynamically specified:
○ PPPoE authentication domain: specified as part of the username (the string after the
domain delimiter)
○ IPoE authentication domain: various ways for IPoE as illustrated in the above diagram
○ PPPoE and IPoE authorization domain: specified by radius the authentication reply or
COA messages
1. Identify the access interfaces and configure them accordingly. For example, if the access is
with VLANs you need to create the VLAN interfaces first. If the access needs to be on an
LACP interface with VLAN, you need to create the access trunk interface and create VLAN sub
interfaces off it. Please refer to interface configuration for more details on how to configure
interfaces.
2. Configure IPv4 pool from which subscribers are going to get an IPs
3. Optionally Configure IPv6 pool if running dual stack.
4. Configure VGI interfaces based on the IP pool configurations. Please refer to interface
configuration on how to create/configure VGI Interfaces
5. Optionally create QoS profile for rate control, priority queues, routing policies etc. Please refer
to User QoS for more details on user QoS profile creation.
6. Optionally create radius server groups if using radius for authentication/authorization.
7. Create a user access authentication template where you can bind user’s applicable
authentication radius servers.
8. Create a user access authorization template where you can bind user’s applicable QoS
profiles.
9. Optionally create a user access accounting template.
10. Create a user access domain where you will bind at least the following.
a. User’s IP pools.
b. User’s VGI interfaces.
c. User’ authentication template
d. User’s authorization template.
11. For PPPoE access, create a PPPoX template where you set the default-domain to be the one
defined above. For IPoE access, create an IPoE template where you specify how the user
credentials and domain information is going to be extracted.
12. Add the access interfaces to the bras -> vci-configuration where you bind PPPoX and
IPoE templates defined above. This is where you also specify the pre-domain for IPoE
access.
For a complete configuration example, please refer to the configuration example for a typical BNG
use case.
The domain definition can include the following commonly used specifications.
● authentication-type [local/local-radius/none/radius/radius-local/radius-none]
authentication-type defines how subscribers are going to be authenticated. For example:
local means local authentication only. local-radius means local authentication first, if it
fails, try radius authentication. Radius authentication is the most commonly used authentication
method. Please refer to the radius authentication template section for a more detailed
explanation on radius authentication template definition.
● radius-authentication-group [radius authentication server group]
For radius authentication, this is where you bind the radius authentication server group
● user-name-format [include-domain/only-domain/strip-domain]
The user name received on the wire from the subscriber is in general will be interpreted in the
form of “[Name][domainNameDelimiter][Domain]” where domainNameDelimiter is the
domain name delimiter defined under bras->domain-name-delimiter. (e.g
JohnSmith@myISP, where @ is domain name delimiter). If no domain name delimiter is
detected the whole string will be considered as user name. The possible settings are:
○ include-domain - The whole string including domain will be treated as the user name.
○ only-domain - The domain portion of the string will be treated as the user name.
○ strip-domain - Only the name portion of the string will be treated as the user name.
● authen-fail [offline/online domainName]
This setting defines the behavior when subscriber online attempts fail. The possible settings are:
○ offline - subscriber will not be connected if authentication fails.
○ online domainName - subscriber will be allowed to get online and put into a designated
authorization domain domainName if authentication fails. In the authorization domain
domainName , you can associate rate limiting rules, http redirects, etc.
● nas-port-format, called-station-id-format, nas-port-id-format,
calling-station-id-format
These define the formats for those commonly used radius attributes that the vBNG router sends
to the radius server together with username and password for authentication. Please refer to the
radius accounting template section for the definition of these formats
● mac-format mac-delimiter [delimiter] mac-format-type [lower/upper]
This defines the mac address format both in delimiter and in the letter cases
Some of the most commonly used options in the authorization templates are:
● authorization-type [local/mix-radius/none/radius]
○ none - The router will not assign any authorization attributes to the subscriber.
○ local - The router will only accept locally configured authorization attributes such as
QoS plans, user ACL etc.
○ radius - The router will only accept authorization attributes from the radius server such
as framed ip, framed pool, QoS plans, user ACL etc.
○ mix-radius - The router will accept authorization attributes from both the radius server
and locally configured attributes. Priority will be given to attributes from the radius server
if both are present. This mode is the most commonly used authorization method. Please
refer to the radius authorization template section for a more detailed explanation on
radius authorization template definition.
● bind nat-domain-name [nat rule] - Set the nat rule for the subscribers under this
authorization template. This needs to be used together with the nat-type switch which needs to
be set to inside for the specified nat rule to take effect.
● nat-type [inside/none] - Set nat inside or none for subscribers under this authorization
template. To bind a nat rule to a subscriber, this key needs to be set to inside.
● radius-nat-switch [enable/disable] - Set to include nat information (public IP and ports)
in the subscriber session detail or not. If you want the smgr session detail to carry natted public
IP and port information, this switch needs to be set to enable. Keep in mind that this only applies
to SPR nat rules.
NOTE: If you set the radius-nat-switch switch to enable in the authorization template , the
switch “radius-origin” under the SPR nat rule associated with this authorization template also
needs to be set to enable. Otherwise, the user session will be blocked by the nat module and
won’t be able to be established.
● sub-car-input cir [CIR]- Set the subscriber upload rate limit by sub car method. For
example, sub-car-input cir 20000 will set the subscriber’s upload rate to
20Mbps. Optionally you can specified the full set of subcar parameters by sub-car-input cir
[CIR] pir [PIR] cbs [CBS] pbs [PBS] (e.g. sub-car-input cir 20000 pir 20000
cbs 2500000 pbs 2500000 ).
● sub-car-output cir [CIR]- Set the subscriber download rate limit by sub car method. For
example, sub-car-input cir 20000 will set the subscriber’s download rate
to 20Mbps. Optionally you can specified the full set of subcar parameters by sub-car-input
cir [CIR] pir [PIR] cbs [CBS] pbs [PBS] (e.g. sub-car-input cir 20000 pir
20000 cbs 2500000 pbs 2500000 ).
● user-acl-profile [user acl] - set the ACL profile that will be bound to the subscriber.
● user-qos-profile [user qos] - set the QoS profile that will be bound to the subscriber.
● idle interval [interval in seconds] traffic [traffic in kB] - set subscriber
idle detection criteria. If the amount of traffic of the user during the observation interval is less
than the set amount, the subscriber will be considered idle and will be cleared from the router.
● timeout-absolute [session timeout in seconds] - sets the subscriber session
timeout in seconds. When session times out, the subscriber will be either disconnected or
re-authenticated depending on the timeout-reauthenticate is set to disable or enable in
the user’s access domain.
● bind-pool - Set IPv4 address pool if you need to set an address pool in the authorization
template to overwrite the IPv4 pool defined in the users access domain.
● bind-addr-pool, bind-delegation-pool, bind-prefix -Set IPv6 addres pool,
delegation pool and prefix pool respectively if you need to set any of these pools in the
authorization template to overwrite the pools defined in the users access domain.
● framed-route [subnet prefix] gatewayAddr [Link] metric [metric] - sets
framed routes for the user.
○ you can set as many framed-routes as you need as shown in the example above
○ if the framed route is a subset of the subscriber’s vgi subnet, the framed routes need to
be listed as /32 individual routes as shown in the last two framed routes in the above
example.
Accounting Template Configuration
Currently the vBNG router only supports radius accounting. Please refer to the radius accounting
template section for radius accounting configuration.
The domain definition can include the following commonly used specifications.
● bind authentication-template: define authentication template
● bind authorization-template: define authorization template
● bind accounting-template: define accounting template
● vgi: defines the associated vgi interface.
● bind-pool [poolIndex]: define associated IPv6 pools. You can associate up to 16 pools
under one domain.
● user-routing-distribute enable/disable: enable or disable 32bit IPv4 user routes
● user-ipv6-routing-distribute enable/disable: enable or disable IPv6 user routes
● radius-attribute qos-profile no-exist-avp online/offline: allow user to be
online or offline if the user’s QoS profile is not sent from radius.
● radius-attribute qos-acl-profile no-exist-policy online: allow user to be
online or offline if the user’s ACL profile is not sent from radius.
● bind-addr-pool: define association of IPv6 address pool.
● bind-prefix: define association of IPv6 prefix address pool.
● bind-delegation-pool: define association of IPv6 delegation pool.
● radius-attribute subcar-unit [bps/kbps]: configures the unit of subcar QoS rates
when the QoS subcar rates are specified using the RADIUS attributes
NetElastic-Input-Average-Rate and NetElastic-Output-Average-Rate.
● user-max-session [max sessions]: Configures the maximum number of allowed
sessions under the same username. For example, for IPoE access, if you want to allow only
one IP address to be assigned to a subscriber regardless of how many devices they have, you
should set this value to 1
bras
vci-configuration
interface gei-1/1/2
ipoe template my_ipoe
max-ipox-session 32000
max-pppox-session 32000
encapsulation multi
pre-domain myDomain
ip-access-type ipv4
exit
interface gei-1/1/5
ipoe template my_ipoe
pppox template local_pppoe
max-ipox-session 32000
max-pppox-session 32000
encapsulation multi
pre-domain myDomain_Radius
v6pre-domain domain_pre_web
ip-access-type ipv4
exit
exit
exit
Local Authentication with IPv4/v6 static IP, Mac-binding
For the local authentication use cases, in the bras section, we need to create local subscribers with
corresponding information as shown below. In addition, make sure the authentication type in the
authentication template is local.
The example is for IPoE here, but it should be similar for PPPoE. Again, for better scalability, Radius
is always recommended for this kind of use cases.
authentication local
authentication-type local
user-name-format strip-domain
nas-port-format class1
nas-port-id-format class1
calling-station-id-format class1
invalid-vlan-tag 0
exit
authorization local_10M
authorization-type local
user-qos-profile user_10M
nat-type none
radius-nat-switch disable
exit
domain ipoe_dedicated_users
bind authentication-template local
vgi vgi1
domain-status unlock
user-routing-distribute disable
tunnel-domain disable
flow-statistic enable
radius-attribute qos-acl-profile no-exist-policy offline
quota-out offline
bind-pool 1 my_ippool
exit
local-subscriber 00-10-94-00-00-02 domain ipoe_dedicated_users
bind authorization-template local_10M
ipv4-address [Link]
mac-bind 00:10:94:00:00:02
password 00-10-94-00-00-02
exit
Within the realm of IPoE access, although allocating IP dynamically from the vBNG router by the
DHCP process is the prevailing IP allocation scheme, there are also situations where users wish to
have static IPs and assign them to their CPE devices statically by themselves. This mode of access
to the vBNG router is called IPhost. These static (IPhost) users will put static IPs assigned to them
on their devices which are connected to the vBNG router. At ARP resolution time, the vBNG will
acknowledge the presence of these users, collect user credentials, authenticate (if so configured),
authorize with appropriate resources, and create and maintain a live user session if all are
successfully done.
IPhost is a special case of IPoE. They share most of the same configuration in terms of AAA, ippool,
vgi, vgi-configuration, domain, and vci-configuration. IPhost access does, however, require some
special configuration provisions. The following IPhost specific configurations need to be added to
normal IPoE configurations.
The following sample shows an IP pool configuration with IPhost reserved IP highlighted in red.
The following sample shows a vgi-configuration with IPhost user entries highlighted in red.
bras
vgi-configuration
interface vgi5
ip-host [Link] [Link] eth-trunk3.203 user-name testUser
domain-name host password 123 dot1q 203
ip-host [Link] [Link] eth-trunk3.205 domain-name host qinq
external-vlan 45 internal-vlan 205
ip-host [Link] [Link] eth-trunk3.207 domain-name hostqinqinq
outmost-vlan 34 preoutmost-vlan 23 inmost-vlan 207
exit
exit
!define a password template where you specify to use mac as user password
bras
default-user-password template iphost-user-password
type [ mac ] format %s
exit
exit
● If no username and password are specified in the ip-host configuration under the
bras->vgi-configuration->interface vgi[x]AND no default-user-name and
default-user-password are configured under bras->vci-configuration->interface
[xxxx], then the IPhost users does not carry username or password.
Other related configurations such as authentication, authorization, domain, access template, and vci
remain the same as their corresponding IPoE configurations.
To display IPhost access status, use the show smgr-session detail user iphost command.
domain# show smgr-session detail user iphost
smgr-session detail user iphost
info
mac-address 00:20:03:00:00:01
ip-access-type ipv4
auth-type none
auth-status accept
user-name ~
domain-name host
author-domain host
create-time "2019-09-30 13:15:13"
online-times 17
access-interface eth-trunk3.203
vlan 203/0
vgi-interface vgi5
vrf-name host
ippool-name host
ipv4-address [Link]
gateway-address [Link]
accounting-info acct-type:none
nat-info "nat-type:none nat-domain: public-ip:[Link] start-port:0 end-port:0
nat-interval:0"
family-info "family-id:0 family-qos-profile:"
policy-name "acl: qos: user-group:"
timeout "session-timeout:0(second) prepay:-(second) -(kbyte) idle-timeout:
0(second) 0(KB)"
webforce-info "webforce-flag:0 adforce-flag:0 special-acl: http-url:
advertisement-url:"
subcar-input "cbs:0(B) cir:0(kbps) pbs:0(B) pir:0(kbps)"
subcar-output "cbs:0(B) cir:0(kbps) pbs:0(B) pir:0(kbps)"
unicast-traffic "update-time:2019-09-30 13:15:28.964 up-stream:0(byte) packets:0
down-stream:0(byte) packets:0"
mru 0
Finally, It is important to note the difference between IPhost and framed IP. In both cases, the user’s
IP is statically assigned. The differences are:
● The IPs for IPhost users are assigned by the subscribers themselves. The vBNG learns their
IP through ARP. Framed IPs are assigned by the vBNG either dynamically assigned through
Radius or statically configured on the vBNG for local subscribers as referenced in section 7.6
● IPhost is part of IPoE access scheme and does not apply to PPPoE. Framed IP assignment
applies to both PPPoE and IPoE
The leased line service is an access method where a subscriber can get a subnet from the vBNG
router. All the IPs within the subnet belong to the same user. The vBNG router will create one user
session for this leased subnet. All IPs within the subnet will be subject to the same user session
management such as user name, password, domain, qos, nat, etc. The leased line service is always
tied to a particular interface. The configuration of the leased line service consists of the following:
● Identify an interface from which the lease line service is going to be provided. Assign the
interface with a gateway IP which will be the gateway of the leased line IPs
● Under bras->leased-line-configuration, add the interface from which the leased line
service is provided. Under each interface, create the user name, password, and domain. These
are the credentials mapped to the subscriber’s leased line services. Committing the configuration
will immediately trigger authentication with these credentials either locally or through radius.
! This is the lease line access interface. configure leased line gateway
here.
interface 10gei-1/1/11
ipv4 address [Link] 24
exit
Use the command show smgr-session all to display user succession status. Leased line user
sessions will be displayed as shown in the following example.
Lease line user sessions are created as soon as the configuration is committed. To clear/reset a
lease line session you need to remove and add the user-name configuration by following these steps
1. remove the user-name configuration under “config -> bras ->
leased-line-configuration -> interface xxx -> no user-name “ and then
commit
2. add the user-name configuration line back in (e.g. config -> bras ->
leased-line-configuration -> interface xxx -> user-name userName
domain-name userDomain password myPassword) and then commit.
The access methods discussed above (IPoE, PPPoE, Iphost, etc) all require the client devices to
have direct L2 connections to the BNG router. However, there are situations where the incoming
traffic is already L3 traffic and the BNG router is expected to just perform services such as subscriber
rate control and CGNAT based on IP subnets. The BNG router supports this kind of use case with
the mhox access configuration. With mhox access, although the most common authentication
method is “none” as the subscriber authentication is likely already done prior to the BNG router, our
BNG router does optionally support circuit map and web authentication for mhox access. The mhox
access configuration generally involves the following steps.
● Create the access interface from which the mhox traffic comes in. The interface will be set
with the access subnet’s gateway address. The switch “nat inside” needs to be set on
the interface if the incoming traffic needs to go through NAT.
● Create QoS profiles that you would like to associate with mhox subscribers. For example, if
you want the subnet [Link]/24 to have 50Mbps package and subnet [Link]/24 to
have 100Mbps packages, you will need to create the corresponding QoS profiles first.
Optionally you can control subscriber’s rate by simply adding CIR to the user’s authorization
template as described here. In that case, you don’t need to configure any QoS profiles.
● Create CGNAT rules for the mbox subscribers if their traffic needs to be natted.
● Create authorization templates that bind the QoS profiles and NAT rules defined above.
Optionally you can also directly set subscriber’s CIR in the authorization template (follow this
link for setting CIR in authorization template). You will need to create different authorization
templates for different subnets if their expected behaviors(such as different QoS plans,
different NAT rules, etc.) are different.
● Optionally create an authentication domain if mhox access needs to be authenticated. Keep
in mind that mhox access only supports circuit map and web authentication.
● Create domains that bind the authorization and authentication templates defined above. You
will need to create different domains for different subnets if their expected behaviors are
different.
● Create mhox configuration (bras -> l3-access-configuration) for each access
interface from which mhox access comes in. For each interface, you will specify its
associated domain, authentication type, IP range, and vlan information.
● All other configurations such as routing will be the same as with other types of access
methods.
Next we will use an example to show all relevant configurations. In this example, we will assume
● We have two access interfaces 10gei-1/1/0.100 and 10ge-1/1/0.2000.
● Interface 10gei-1/1/0.100 serves subnet [Link]/24. It has dot1q tag 100 and gateway
IP [Link]/24
● Interface 10gei-1/1/0.2000 serves subnet [Link]/24. It has QinQ tag 100, 2000 and
gateway IP [Link]/24
● Subnet [Link]/24 is limited to symmetrical 50Mbps and Subnet [Link]/24 is limited
to symmetrical 100Mbps
● Access through these two interfaces does not need authentication and going through CGNAT.
bras
circuit-map 1
interface 10gei-1/1/0.2000 qinq external 2000 to 2000 internal 100 to 100
username VLAN2000 domain VLAN2000-Domain password VLAN2000
exit
exit
bras
l3-access-configuration
interface 10gei-1/1/0.2000
pre-domain VLAN2000-Domain
authentication-type cir-map
ipv4-multi-host start-ip [Link] end-ip [Link] qinq external-vlan
2000 internal-vlan 100
exit
exit
exit
To check mhox access status, use the command “show smgr-session all user mhox”
Keep in mind the mhox user sessions are created when the mhox configurations are committed. For
example, if you have 250 IPs defined under the mhox configuration, you will see 250 mhox user
sessions created as soon as the configuration is committed. If you delete the mhox user sessions,
you need to delete the mhox configuration and add it back in to trigger the mhox user session
creation again.
Similar to MHOX access described in the previous section, L3 flow access is designed to trigger user
sessions on the BNG based on Layer 3 IP flow activity. The difference between MHOX access and L3
flow access is that user sessions in L3 flow access are created dynamically—based on the source IP
of incoming traffic—whereas user sessions for MHOX are created statically.
For L3 flow access, the default username and password are set to the string representation of the
IPv4 source address. When the router receives the first packet of an L3 flow on an interface
configured for L3 flow access, it triggers a user online process using the source IP address of the flow
as both the username and password.
! define pool 1
ippool group l3flowaccess-pool1
gateway-ip [Link] gateway-mask [Link]
frame-pool disable
lease-time 3600
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
exit
exit
! define pool 2
ippool group l3flowaccess-pool2
gateway-ip [Link] gateway-mask [Link]
frame-pool disable
lease-time 3600
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
exit
exit
! create authentication template
bras
authentication myAuthentication
authentication-type none
user-name-format strip-domain
exit
exit
The netElastic router can be configured either as a vTAP access point to encapsulate L2 traffic into
VXLAN and send it over a VXLAN tunnel, or as a vTAP termination point to decapsulate VXLAN
traffic and map the encapsulated L2 frames to an L2 access bridge interface. The router can then
treat this bridge interface as a regular L2 VCI interface, from which vBNG access services such as
IPoE and PPPoE can be enabled.
The following example shows how to configure the router as a vTAP access point and termination
point for the following scenario.
● Two routers are connected via L3 interfaces. The feeding router (Router A) has IP
[Link]/24 on interface 10gei-1/1/1 with VLAN 1114. The termination router (Router B)
has IP [Link]/24 on interface 10gei-1/1/0 with VLAN 1114. We will set up a VXLAN tunnel
between Router A (interface 10gei-1/1/1.1114) and Router B (interface 10gei-1/1/0.1114).
● Router A has two L2 VLANs (VLAN 10 and VLAN 20) on which PPPoE and IPoE services will be
enabled. These services will be transported over the VXLAN tunnel to Router B, where the
PPPoE and IPoE sessions will be terminated and BNG subscriber services will be established.
● Router A will be configured as a vTAP access point to transport L2 services to Router B.
● Router B will be configured as a vTAP termination point and will provide BNG services for the
PPPoE and IPoE connections transported from Router A
Please refer to this application note for PPPoE access configuration by L2TP
Inter-subscriber Communications
By default, subscribers won’t be able to communicate with each other for security reasons. If you need to
enable communication among subscribers, you need to
● enable 32 bit user routes
● setup arp proxy on the access (VCI) interfaces
The following is an configuration example in which all user access will the blocked if the wan interface
10gei-1/1/1 is down OR ping can not reach the router’s next hop [Link] through the interface
10gei-1/1/1, or ping can not reach the radius server [Link] through the interface 10gei-1/1/0.200.
The The user session details by default lists the following fields for the users displayed
access-interface framed-route policy-name
access-mode gateway-address session-id
accounting-info igmp-profile subcar-input
auth-status ip-access-type subcar-output
auth-type ippool-name tcp-adjust-mss
author-domain ippoolv6-name timeout
classmap-input ipv4-address unicast-traffic
classmap-output ipv6-address unicast-traffic-web
create-time l2tp-info user-access-type
dns-v4 lawful-intercept user-index
dns-v6 mac-address user-name
domain-name mru vgi-interface
dropped-traffic multicast-traffic vlan
duid multicast-traffic-web vrf-name
family-info nat-info webforce-info
framed-ipv6-route online-time
You can pick and choose any one or more of the fields to display. To select more than one fields, use the |
operator with select. Here is an example
domain# show smgr-session detail user info user-name | select info auth-status |
select info mac-address
USER AUTH
TYPE MAC ADDRESS STATUS USER NAME
----------------------------------------------------
ipoe e4:b9:7a:88:f1:d5 accept e4-b9-7a-88-f1-d5
84:2b:2b:aa:86:4f accept 84-2b-2b-aa-86-4f
vBNG keeps track of user abnormal offline records with diagnosed abnormal offline reasons. Use the
command “show vbras abnormal-offline-record” to display the latest abnormal offline
record log. To clear the abnormal offline records, use the command
“clear-vbras-abnormal-offline-record”
NOTE: The maximum number of fail record history length can be set under bras ->
subscriber-manage -> session abnormal-offline-record. The maximum number of
records is 32K.
For more detailed vBNG router troubleshooting information, please refer to the vBNG Router
Troubleshooting Guide.
Radius Integration
The vBNG router uses inband connections to talk to external Radius servers. It supports configuring
multiple Radius servers for redundancy and reliability. Radius integration involves the following step:
● On the Radius server of your billing system
Load netElastic Radius dictionary. netElastic dictionary can be downloaded from this link.
● On the vBNG router.
Configure Radius authentication and accounting groups on the vBNG router. This will be
explained in separate sections below.
● radius vendor-id 54268 : set the radius vendor-id. 54268 is netElastic’s radius vendor ID
● max-send-speed [messageRate ]: set the rate at which radius authentication and accounting
requests are sent to radius servers. This is needed sometimes to control the radius access
requests rates to radius servers in order not to overwhelm the radius server. The messageRate
is the number of radius request messages sent to the radius servers per second and it can be
configured with any value between 1 and 10000000.
● radius accounting-on enable/disable: enable or disable radius accounting.
● radius ping-test group: configure additional radius authentication request attributes when
running radius-ping test . see more details in the radius ping test section
● radius framed-route-delimiter [delimiter]: set radius framed route delimiter when
multiple framed routes are sent from radius. The default delimit is “;”
Radius Authentication
In the case of radius authentication, vBNG will send the user's user name and password together with
other optional and configurable attributes to the radius server for authentication. The radius server will
reply with either “authentication accept” or “authentication deny” message. In the case of authentication
accept, radius can also send optional authorization attributes such as user IP, framed route, qos plans
etc. The following diagram shows this flow.
From the above diagram, we can see there are three possible interactions between the vBNG and the
radius
• vBNG sends authentication access requests with user credentials and other attributes.
• Radius sends vBNG access reject or access accept with certain attributes.
• Radius sends DMCOA messages to vBNG to change user online behaviors on the fly with certain
attributes.
NOTE: We only explained a few of the Radius attributes that are sent over to Radius with
authentication request packets. The complete list can be found from the following link.
NOTE: If the test user's username or password contains spaces or the character !, you must use
quotation marks ("") to explicitly define the boundaries of the username and password strings.
Below is an example of a ping test with a username that includes spaces and a password containing
the ! character.
radius-ping authentication group my-radius-auth-grp user-name “test user”
password “testUserPassword!!!” pap
By default, the radius-ping test does not carry any circuit level attributes such as
calling-station-id, nas-port, nas-port-id, etc. However, you can simulate sending this
type of information to a radius server with a radius-ping test by configuring the radius
ping-test group as shown in the following example.
radius ping-test group
authentication-include service-type 2345
authentication-include calling-station-id vlan-100
authentication-include nas-port-id 2345
exit
Radius Authorization
If authentication is not successful, radius will reply with an access reject message that carries no
attributes. If authentication is successful, radius will reply with an accept message that can carry relevant
attributes to direct the vBNG how to handle certain properties of the user. This process is called radius
authorization and its behavior is defined in the user authorization template.
Authorization Template
The authorization template serves two purposes:
1. Control how subscriber’s authorization attributes such as IP address, qos plan, acl rule etc.
should be obtained
2. Specify locally defined authorization attributes such as IP address, qos plan, acl rule etc.
These locally defined parameters such as sub car, user qos , acl, etc will be applied to the
subscribers if the radius does not reply with corresponding attributes AND the authorization
type is set to mixed-radius or local. Keep in mind that the locally defined attributes will not be
used if the authorization type is set to radius.
3. If you need to send any authorization attributes such as IP address, qos plan, acl rule etc from
radius, you will need to set authorization-type to mix-radius or radius (see below).
In the above example, radius-ping test showed that the Radius server sent back these attributes:
● public attribute 99 - Framed-IPv6-Route with value 2804:3ef0:e200::0/64 :: 1
● private attribute 31- QOS-Profile-Name with value profile_20m
● public attribute 8 - Framed-IP-Address with value [Link]
Here we list out a few very commonly used attributes from the list with more detailed explanations.
After the RADIUS server receives the user information from the vBNG, it has two options:
● Regardless of whether the radius authentication request contains attribute 8 or not, if the user
profile on the RADIUS server already includes attribute 8, the RADIUS server will fill or override
the IP address sent by the vBNG with the IP address defined as attribute 8 in the user profile.
The address defined in the user profile is returned to the vBNG. The vBNG will then assign this
IP to the user.
● If the user profile on the radius server does not include attribute 8, the RADIUS server can
accept attribute 8 from the NAS, and the same address is returned to the vBNG.
Please note that for vBNG to accept the Framed-IP-Address attribute from Radius, a valid IP address
pool that contains the assigned IP needs to be defined and associated with the user’s access domain.
At authorization time for the user, vBNG will try to assign the user an IP from the defined pool unless
“Framed-IP-Address” is found in the Radius accept reply message. To instruct vBNG to exclusively
use the IP from Radius to assign to the user, you need to reserve the IP section that you intend to
assign from the Radius in the IP pool definition to prevent vBNG from assigning them by default.
Here is an example of IP pool definition with IP reservation (highlighted in red).
ippool group private_radius_pool
gateway-ip [Link] gateway-mask [Link]
lease-time 3600
dns-primary [Link] secondary [Link]
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
reserved-section reserved-start-ip [Link] reserved-end-ip
[Link]
exit
exit
Framed-Route Attribute (public 22)
A typical use case for Framed routes is for subscribers to advertise IPs that they own internally to the
outside world through the BNG router. Upon receiving the framed routes for a subscriber, the BNG
router will install the routes on the router’s routing table as user routes for the subscriber. If user
routes are advertised on the BNG router, these routes associated with the user will be advertised so
the subscriber’s private IPs will be known to the outside world.
With this attribute, Radius can specify the routes to be installed for the user on the vBNG’s routing
table. vBNG supports multiple framed routes per user. When forming the attribute string on the
Radius, multiple routes have to be separated by an agreed-upon route delimiter. The delimiter is
configured on the vBNG under “radius” as shown below. The default delimiter is “;” as shown in the
following example
domain# show running-config radius
radius vendor-id 54268
radius accounting-on enable
radius attribute-usermac-as mac
radius framed-route-delimiter ";"
radius username-override disable
radius dmcoa group
server-type ipv4-server
exit
On the Radius, form the attribute string for the framed route with the delimiter defined on the vBNG.
Here is an example of Framed-Route attribute with three routes using the delimiter “;”
Framed-Route= [Link]/24 [Link] 100;[Link]/24 [Link] 110;[Link]/24 [Link] 1;
In the above example, we are assigning three routes associated with the user. They are
[Link]/24, [Link]/24, and [Link]/24. The Framed-Route string format is [route]
[next hop] [metric], where the next hop means the user itself when configured as [Link].
Please note that Framed-Route are simply routes that are installed/removed to the router when the
associated user goes online/offline. It does not necessarily have to be the routes that the user owns.
● If you use Framed-Route to specify the routes that the user actually owns, you will have to specify
the next hop to be [Link], which means the user itself. In this case, after the user is connected
and its Framed-Route is assigned, you will find that the next hop interface of the Framed-Route
will be the user’s vgi interface.
● If you use the Framed-Route to specify general routes that the user does not actually own, you
will then set the route’s next hop according to how you want the traffic to be routed to the routes
specified in the Framed-Route specification. For example, suppose you have internal hosting
services on the subnet of [Link]/24 and the next hop to that subnet is [Link]. If you
want a user to have access to the internal hosting service when the user is online, you can
achieve this by sending the framed route Framed-Route= [Link]/24 [Link] to
the user.
To check if the framed routes have been installed for a particular user on the vBNG or not, use the
show smgr-session detail user command. The assigned frame routes will be displayed under
the framed-route field in the list. If there are many subscribers on the router, you can filter the
smgr session detail list by user name, IP, MAC etc (e.g. show smgr-session detail
by-user-name e4-b9-7a-88-f1-d5).
To check if the framed IPv6 routes have been installed for a particular user on the vBNG or not, use
the show smgr-session detail user command. The assigned frame IPv6 routes will be
displayed under the framed-ipv6-route field in the list. If there are many subscribers on the
router, you can filter the smgr session detail list by user name, IP, MAC etc (e.g. show
smgr-session detail by-user-name e4-b9-7a-88-f1-d5).
User ACL
User ACL profile can be sent from radius to control subscriber’s access by defined ACL on the router.
With this operation, you can apply a subscriber's white list or black list on the fly.
The user ACL profile can be sent from radius either by the attribute Filter-Id (public 11) or the
private attribute NetElastic-Data-Filter Attribute (private 82). If both attributes are sent,
the public attribute Filter-Id (public 11) will take precedence and the netElastic private attribute
NetElastic-Data-Filter will be ignored.
Note 1: the user access list profile “my-user-acl-profile” needs to be pre configured on the vBNG
router. Please refer to the user acl profile definition section on how to define user ACL profile
Note 2: user acl profile sent from radius can be treated either as normal user acl or as special acl for
walled garden redirect. If the user acl profile is intended for normal user acl, set “filter-id-type
user-acl” in the subscriber’s radius authentication template. Otherwise, if the user acl profile is
intended for walled garden redirect, set “filter-id-type special-acl” in the subscriber’s
radius authentication template.
This is netElastic’s private attribute. If the user profile on the RADIUS server already includes this
attribute, Radius can send the qos profile name to the vBNG and the user_qos_profile with that name
will be applied to the user. With this attribute, you can change subscriber’s qos plan on the fly. The
format to assign qos profile on Radius is like the following:
NetElastic-Qos-Profile-Name =user_qos_profile
Note: The qos profile “user_qos_profile” needs to be pre configured on the vBNG router
This is netElastic’s private attribute. If the user profile on the RADIUS server already includes this
attribute, Radius will send the domain name to the vBNG and the domain with that name will be
applied to the user. With this attribute, you can change the subscriber's access domain on the fly.
The format to assign domain on Radius is like the following:
NetElastic-Domain-Name =user_domain
Radius DMCOA
netElastic’s vBNG supports dynamic change of user’s online behavior through Radius DMCOA. The
following table lists the DMCOA actionable attributes.
Please note that the table lists attributes shared between radius reply and DMCOA messages. Only the
attributes listed under “DMCOA only” or “Both” are DMCOA actionable.
To enable DMCOA on the vBNG, all you need to configure is to create the DMCOA group and add radius
servers to the group as shown in the following example. After the dmcoa group is configured, the vBNG
is ready to accept DMCOA requests. You can configure up to 16 radius servers in the DMCOA group.
Radius DMCOA always uses port 3799 for communication with the vBNG router.
radius dmcoa group
server-type ipv4-server
server 1 ipv4-address [Link] key radiusKey
server 2 ipv4-address [Link] key radiusKey
server 3 ipv4-address [Link] key radiusKey
exit
Disconnect Subscribers
Subscribers can be disconnected via radius DMCOA messages either by accounting ID or by user
name as shown in the following example
User Reauthentication
There are situations where you need to let the subscriber go through the authentication process again
without user initiation. For example, users can get online initially for signing up purposes and are put
on a special domain after radius rejection. The special domain will direct their traffic to a portal
server to signup for service. After they sign up for services, their records will be created in the radius
database. Now you would like them to go through the re authentication process again so they can
get online as a registered user. Since version 1.9.44.B17, you can do this without user initiation by
sending the user re-authentication COA message as shown in the following example.
# echo “User-Name = 84-2b-2b-aa-86-4f > coa_message.txt
# echo “Re-Authentication = 1” >> coa_message.txt
# cat coa_message.txt | radclient -x [Link]:3799 coa radius_secret
Radius Accounting
netElastic’s vBNG supports Radius accounting. After enabled and setup, the vBNG will periodically send
subscriber’s accounting records to the designated Radius accounting server. The following link is a table
that lists the radius accounting attributes sent from the vBNG to radius accounting servers.
! define user qos policy that combine all the flows/behaviors together
policy Policy-8M
class_map FB-traffic behavior FB-Usage priority 8
class_map GGC-traffic behavior GGC-Usage priority 7
class_map all-traffic behavior Internet-Usage priority 1
exit
! define the user qos profile that can be tied to user sessions
bras
user-qos-profile Rate-Plan-8M
input-qos-policy Policy-8M
output-qos-policy Policy-8M
exit
exit
! define a behavior that marks DAA accounting for all other traffic level 1
! and also set the traffic rate limit for 3M
behavior usage-excluding-iptv
item 1
traffic-level 1
car cir 30000 pir 30000 cbs 3750000 pbs 3750000
exit
exit
! define a policy that binds the above defined classmap and behavior
! together.
policy Policy-8M
class_map traffic-iptv behavior usage-iptv priority 8
class_map all-traffic-excluding-iptv behavior usage-excluding-iptv priority 1
exit
! define the user qos profile that can be tied to user sessions
bras
user-qos-profile Rate-Plan-8M
input-qos-policy Policy-8M
output-qos-policy Policy-8M
exit
exit
On the radius side, the usage octet counts will be sent by the following netElastic VSAs for each flow
level. The radius AV pairs value format is a string with content such as “level:2 value 234423”
NetElastic-Tariff-Input-Octets 247 string
NetElastic-Tariff-Output-Octets 248 string
NetElastic-Tariff-Input-Gigawords 249 string
NetElastic-Tariff-Output-Gigawords 250 string
The netElastic VSAs that can be translated to any other vendor’s attributes are:
Any one or all four attributes can be configured and applied to both radius authentication and accounting
templates. Here is an example in which the 4 netElastic attributes listed above will be translated to
another vendor’s (vendor code 838) attribute 6, 4, 5, and 3
Radius Troubleshooting
For radius authentication or other router and radius server interaction failures, here are some
recommended troubleshooting tips
1. Ping the radius server and make sure there is IP connectivity between the BNG router and the
radius server.
2. Do a radius ping as discussed above with a username and password combination that already
exists on the radius database. Check the response and returned attributes.
3. If subscribers can authenticate, but can not disconnect. Check DMCOA configuration to make
sure server IPs and radius secrets match what are configured under the radius server groups.
With radius authentication/accounting failures, the route will display certain error messages when queury
the failure message queues with the command “show vbras online-fail-record”. Here are some of the
radius related error codes and their meanings
Error Messages
(from What does this mean Next Step
online-fail-record)
fd not match,
This means the router receives a RADIUS Change the DM/CoA request port
radius check
DM/CoA message, but the port number does not number to 3799 on the RADIUS client
dmcoa request
match the expected port number (3799). side.
failed
For authentication:
The error message does not mean the
Our RADIUS request packets use source ports user will be unable to get online
64001 to 64010, for a total of 10 ports. Each port permanently. It only indicates that the
supports 256 sending resources (packet attempt failed at that moment. Typically,
identifiers), resulting in a total of 256 × 10 = 2560 the user will retry (redial), and the
available sending slots. connection will succeed once congestion
subsides.
When a request is sent, a sending resource is
marked as used and is not released until either a For accounting:
RADIUS response is received or the request Increase the accounting update interval.
times out. If the RADIUS server responds slowly
while a large number of requests are generated There are cases where the RADIUS
radius client has
in a short period, it is possible to exhaust all server can be overwhelmed by a high
no available id
available sending resources. In this case, you volume of requests from the BNG,
resource
will see the error message: causing it to become slow or
"radius client has no available id resource". unresponsive. Starting from version
1.12.59.B4P18R2, you can control the
RADIUS accounting works in the same way, rate of RADIUS messages using the
except it uses source ports 64011 to 64020 (also command “radius max-send-speed
10 ports). [messageRate]” where messageRate
is the number of RADIUS request
Therefore, the most likely cause of this error is a messages sent to the server per second.
combination of a high volume of concurrent It can be configured with a value between
requests and slow RADIUS response times. 1 and 10,000,000. For a slow RADIUS
server, a typical setting is between 50
and 100 requests per second.
receive packet
check the Radius configuration or restart
authenticator This means that the Radius is not using the
the Radius server
check failed correct key/passcode for the reply packets
Access Control with ACL
vBNG router offers various ways of flow access controls with ACLs. The defined ACLs can be applied
both to the applicable interfaces and individual subscribers for the vBNG use case . We will show a few
use cases with examples below.
User ACL to whitelist traffic from known IPs and apply to the interface.
Use ACL to blacklist traffic to/from known bad IPs and apply to an interface
There are situations when you have a list of known bad IP addresses from which rogue services such as
spam emails or DDoS attacks originated. To block them from accessing your network, you can create
access control lists (ACL) and apply them to the appropriate network interfaces as shown in the following
example.
NOTE: The above example shows how to use ACL to control access in both the outgoing and incoming
directions. In reality these rogue services are usually TCP based, blocking in one direction will be
sufficient to prevent the rogue services from being established. As a good practice you should just block
the incoming traffic to your WAN interface to avoid using unnecessary ACL lists. Excessive use of ACL
lists (i.e. extraordinarily long lists) will adversely affect throughput performance.
Use ACL to block traffic to/from certain IPs and apply to subscribers
There are situations when you need to limit the user’s access to certain IPs in your network. This can be
accomplished by creating user ACL profiles and applying the user ACL profiles to the subscribers. The
configuration process involves:
1. Create ACL rules by flow characteristics. You can independently create ACL both in the “in”
(meaning coming to the subscriber) and “out” (meaning leaving the subscribers) directions
2. Create user ACL profiles based on the ACL rules created in step1.
3. Apply the user ACL profile to the subscriber either by statically binding the user ACL profile to the
user in the subscriber’s authorization template, or by sending the ACL profile name from radius.
The following is a configuration example where we limit the user’s access to an internet network
[Link]/24 by statically binding the user ACL profile in the subscriber’s authorization template.
Domain-based ACL
You can configure ACL rules using domain names instead of IP addresses or prefixes. However, please
note the following prerequisites and limitations for domain-based ACLs:
● To use domain-based ACLs, you must configure local DNS first. Ensure that local DNS is
configured before committing the domain-based ACL. Following this configuration order is crucial
to avoid potential ACL matching issues.
● Currently, domain-based ACLs do not support the * wildcard for matching. Using the * wildcards
may result in unexpected ACL behavior. Do not use the * wildcard in domain-based ACLs.
For detailed instructions on how to configure local DNS to support domain-based ACLs, please refer to
this section.
The first option “Subcar Rate Limiting QoS” provides a quick and easy way to program the subscriber’s
connection rates either statically by configuration in the subscriber’s authorization template or dynamically
by sending radius attributes. This method offers one simple rate control to all flows. It does not have the
flexibility of controlling different rates with different flows as the other two options could. We will cover
more about this simple rate control method at the end of this session.
The second and third options offer the ultimate flexibility in controlling QoS both at the subscriber and
interface levels. They involve setting up QoS profiles on the vBNG router. Setting up QoS profiles on the
vBNG involves the following steps.
1. Create class_map to define the flows for which QoS behaviors are intended to be applied on.
class_map can be defined either directly by listing flow characteristics or by referencing defined
acl lists.
2. Create intended behaviors for the class_map rules defined. The behaviors supported by vBNG
are car, cbq, remark, etc.
3. Create policies to create class_map and behavior pairs and set the relative priority among them.
Each policy can have up to 8 class_map/behavior pairs.
4. QoS policies can be directly applied to interfaces.
5. If QoS policies need to be applied to subscribers, user qos profiles need to be created where both
the upstream and downstream policies can be specified. The defined user qos profile is then
referenced in the authorization template of the user’s access domain. All users accessing
through this domain are subject to the QoS policies defined in the user qos profile.
It is important to note the nomenclature in the QoS configuration. The temps “input” or “output” are used
instead the colloquial names “upload” or “download” to describe the QoS traffic direction. Althoug
“input/ouput” always mean traffic “entering/leaving” an interface, the meaning of “input” or “output” in
reference to “upload” or “download” changes depending on what interfaces the QoS policies are applied
to. To be clear, the relationship between input/output and upload/download is
● If QoS is applied to users as user QoS, the reference point is the access interfaces. In this case,
input means upload to the internet and output means download from the internet.
● If QoS is applied to the WAN interfaces, the reference point will be the network interfaces. In this
case, input means download from the internet and output means upload to the internet.
Next we will show some examples on how to create rate limiting QoS profiles. But before we do that,
please note that the QoS profile can be dynamically associated to subscribers either by Radius reply
attribute or Radius COA attribute, while domain can only be dynamically associated to subscribers by
radius reply attribute.
Keep in mind that the speedtest traffic in the example can be anything you would like to prioritize such
as VOIP, CDN, Google, Facebook, etc. The same following principle applies
1. define an access list to specify the flow for the traffic you would like to prioritize. This can be
based on destination IP, source IP, and ports, and any combination of them.
2. define a class map rule for the traffic based on the acl rule defined.
3. define a desired behavior for the traffic. This can be as separate rate or unlimited rate (i.e. set
to an arbitrarily large rate)
4. add to your existing QoS policy definition with a priority setting higher than that for your normal
internet traffic rates
Here is the complete configuration:
! user qos profile definition. This profile name can be called from Radius
bras
user-qos-profile user_qos_1MbpsUp_10MbpsDown
input-qos-policy user_policy_1Mbps
output-qos-policy user_policy_10Mbps
exit
exit
access-list speedtest_acl
rule 10 permit ip source any destination [Link]/32
rule 20 permit ip source any destination [Link]/32
rule 30 permit ip source [Link]/32 destination any
rule 40 permit ip source [Link]/32 destination any
rule 200 deny ip source any destination any
exit
class_map all_traffic match-way match-any
match all
exit
class_map speedtest_traffic match-way match-all
match ipv4-access-list speedtest_acl
exit
behavior CAR_unlimited
car cir 1000000 pir 1000000 cbs 125000000 pbs 125000000
exit
behavior CAR_20000kbps
car cir 20000 pir 20000 cbs 2500000 pbs 2500000
exit
behavior CAR_5000kbps
car cir 5000 pir 5000 cbs 625000 pbs 625000
exit
policy policy_20000kbps
class_map speedtest_traffic behavior CAR_unlimited priority 8
class_map all_traffic behavior CAR_20000kbps priority 1
exit
policy policy_5000kbps
class_map speedtest_traffic behavior CAR_unlimited priority 8
class_map all_traffic behavior CAR_5000kbps priority 1
exit
bras
user-qos-profile user_qos_5000kbpsUp_20000kbpsDown
input-qos-policy policy_5000kbps
output-qos-policy policy_20000kbps
exit
exit
! flow1 classification
access-list flow1_acl_v4
rule 10 permit tcp source any gt 0 destination [Link]/32 eq 8080
rule 20 permit tcp source [Link]/32 eq 8080 destination any
rule 30 deny ip source any destination any
exit
access-list-v6 flow1_acl_v6
rule 10 permit tcp source any gt 0 destination 2001:df6:e300:500::18/128
eq 8080
rule 20 permit tcp source 2001:df6:e300:500::18/128 eq 8080 destination
any
rule 30 deny ipv6 source any destination any
exit
class_map flow1 match-way match-any
match ipv4-access-list flow1_acl_v4
match ipv6-access-list flow1_acl_v6
exit
! flow2 classification
access-list flow2_acl_v4
rule 10 permit tcp source any gt 0 destination [Link]/32 eq 80
rule 20 permit tcp source [Link]/32 eq 80 destination any
rule 30 deny ip source any destination any
exit
access-list-v6 flow2_acl_v6
rule 10 permit tcp source any gt 0 destination
2a03:2880:f12f:183:face:b00c:0:25de/128 eq 80
rule 20 permit tcp source 2a03:2880:f12f:183:face:b00c:0:25de/128 eq 80
destination any
rule 30 deny ipv6 source any destination any
exit
class_map flow2 match-way match-any
match ipv4-access-list flow2_acl_v4
match ipv6-access-list flow2_acl_v6
exit
! flow3 classification
access-list flow3_acl_v4
rule 10 permit tcp source any gt 0 destination [Link]/32 eq 80
rule 20 permit tcp source [Link]/32 eq 80 destination any
rule 30 deny ip source any destination any
exit
class_map flow3 match-way match-any
match ipv4-access-list flow2_acl_v4
exit
! regular_flows classification
class_map all_traffic match-way match-any
match all
exit
behavior flow1_queue
cbq queue ef bandwidth 100000
exit
behavior flow2_queue
cbq queue af1 bandwidth 40000
exit
behavior flow3_queue
cbq queue af2 bandwidth 50000
exit
behavior regular_queue
cbq queue be
exit
policy interface_queue_policy
class_map flow1 behavior flow1_queue priority 8
class_map flow2 behavior flow2_queue priority 7
class_map flow3 behavior flow3_queue priority 6
class_map regular_flows behavior regular_queue priority 1
exit
interface gei-1/1/3
description "network inf"
bind qos in interface_queue_policy
bind qos out interface_queue_policy
nat outside
ipv4 address [Link] 24
exit
In the above example, we use the same policy for both input and output direction. In fact, we only
need to bind the queue policy in the outbound direction because the queue is only honored in the rx
direction of each interface. A normal practice would be to apply the queue policy in the outbound
direction for both the access and network interface as shown in the above example.
Here is another example using vlan to separate business traffic vs residential and give business traffic
higher priority over non-business traffic.
Sometimes the radius attributes such as the user QoS profile is lost during transmission
from the radius server to the BNG router due to various reasons such as radius server
overloading. If the user is allowed to be online without a QoS profile, the user’s bandwidth
won’t be controlled as intended. You can control the user’s online access behavior based
on if the user’s QoS profile is present or not
bras
authorization myAuthorization
authorization-type local
sub-car-input cir 2000 pir 2000 cbs 250000 pbs 250000
sub-car-output cir 20000 pir 20000 cbs 2500000 pbs 2500000
bind nat-domain-name myNatRule
nat-type inside
radius-nat-switch disable
exit
exit
In the above example, the upstream rate is set to 2Mbps and downstream rate is set to 20Mbps.
The parameters used are:
○ cir – committed information rate in kbps
○ pir – peak information rate in kbps
○ cbs – committed block size in bytes. This represents the number of bytes in a one second
interval with cir rate. So this value is usually set to 125×cir (kbps)
○ pbs – peak block size in bytes. This represents the number of bytes in a one second
interval with pir rate. So this value is usually set to 125×pir (kpbs)
NOTE: In the above example, the “authorization-type” is set to “local”. This means the subcar
rate defined here will be honored by the vBNG. If the “authorization-type” is set to “radius” the
subcar rate defined here won’t be used at all. If the “authorization-type” to or “mix-radius”, the
subcar rate defined here will only be used if there are no subcar attributes coming from radius.
NOTE: From version 1.12.55.B3P1 and onwards, you use only cir to configure subcar rate
control. Other subcar parameters (pbs, cbs, and pbs) will be calculated by the default rate control
algorithm. Here is an example of statically configured subcar rate for 20Mbps upload and 40Mbps
download. Note the unit of the cir value is in kbps.
bras
authorization myAuthorization
authorization-type mix-radius
sub-car-input cir 20000
sub-car-output cir 40000
nat-type none
radius-nat-switch disable
exit
exit
NOTE: Please note that unlike the rate units used in statically configured subcar parameters, the
rate units in subcar parameters sent from radius are in bps instead of kbps.
For example, if you need to set 50 Mbps download and 20 Mbps upload for a user, Radius should
reply with the following Radius attribute values to the user’s access request or via radius COA.
NOTE: From version 1.12.55.B3P1 and onwards, you use only cir to configure subcar rate
control. Other subcar parameters (pbs, cbs, and pbs) will be calculated by the default rate control
algorithm. Use these two VSA attributes to set the user’s upload and download rates.
NetElastic-Input-Average-Rate
NetElastic-Output-Average-Rate
Keep in mind that units for these two radius attributes are in bps by default. For example, if you
need to set 20Mbps upload and 40Mbps download you need to set
NetElastic-Input-Average-Rate := 20000000
NetElastic-Output-Average-Rate := 40000000
Since these attributes are 32-bit integers, the maximum Subcar rate you can program is 4Gbps
when the rate unit is bps. From version 1.12.62.B4P26, the units for these two radius attributes
can be configured to be either in bps or kbps so you can potentially program the Subcars to
values larger than 4Gbps. To configure, type config -> bras -> domain [user domain]
-> radius-attribute subcar-unit [bps/kbps]
To configure, you define the time frames first and then use it as one of the matching criteria in ACL rules.
The following is an example with the following time based rate control requirements:
● From 16:00-22:00 is prime peak with the bandwidth limited to 1M
● From 22:00-01:00 is secondary peak with bandwidth limited to 2M
● No limit on other time frames
! define classmap
class_map all_traffic match-way match-any
match all
exit
NOTE 1: Not all behavior CAR or CBQ definitions need to be accompanied by a tr-name configuration. If
you do not want a CAR or CBQ to be tied to any time frame limitation, simply don’t configure tr-name
under that item.
NOTE 2: item [id] determines match priority. If you have multiple CARs and CBQs under behavior
definition with some of them tied to time frames and some of them not, always put the ones with tr-name
specifications at the top. The smaller the item value, the higher is that item’s priority.
NOTE 3: If all CARs or CBQs under behavior definition have tr-name specified and yet the union of
tr-name does not cover the whole 24-hour period. The uncovered segment of the 24-hour period will not
be subject to any CAR or CBQ rules.
1. Configure DNS server IPs and DNS relay IP as highlighted in the following example.
dns
relay-ip [Link]
name-server 1 [Link]
name-server 2 [Link]
name-server 3 2001:4860:4860::8888
exit
a. The DNS relay-ip can be any IP that is local to the vBNG router, such as IPs on
lookback, vgi, physical, vlan, or trunk interfaces. The relay-ip can be either a v4 or v6
address. The router will use this IP as the source IP when formulating DNS query
packets to send to external DNS servers. If the relay-ip is IPv4 address, the DNS
query packets will be IPv4. Likewise, If the relay-ip is IPv4 address, the DNS query
packets will be IPv6. In either IPv4 or IPv6 DNS query packets formulated by the BNG
router, the query can be specified to lookup for IPv4, IPv6, or both addresses depending
on the query flag carried in the original DNS queries from the clients.
b. The name-server are the IP addresses of external DNS servers. It can be either IPv4
or IPv6 address. You can specify up to 5 external DNS servers. As in the above
example, there are three DNS servers configured. The router will always try to look up
from the first server. If the lookup fails from the first server, it will move on to the next
server, and so forth.
With a locally configured DNS relay agent on the vRouter, you do have the opportunity to
overwrite dns entries from the dns server with locally configured static entries under the key
static-item as shown in the following example.
dns
relay-ip [Link]
name-server 1 [Link]
name-server 2 [Link]
name-server 3 [Link]
static-item [Link]
ip-address 1 [Link]
ip-address 2 [Link]
exit
exit
2. Specify to use any IPs on the router as the subscriber’s DNS server IP in the subscriber’s IP pool
configuration as shown in the following example.
ippool group pool-906-Cambium
gateway-ip [Link] gateway-mask [Link]
lease-time 3600
dns-primary [Link]
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
exit
exit
DNS Relay Server Validation.
After the DNS relay server is configured, you can validate its functionality by trying to ping a domain from
the router. For example, you can try “ping [Link]”. This should go through if the DNS
relay server is functioning properly and you do have connection to the internet from the router.
You can use the command “show dns-cache global” to display the DNS entries cached by the DNS
relay server.
1. Configure DNS server IPs and DNS relay IP as highlighted in the following example. The DNS
relay IP can be any IP that is local to the vBNG router, such as IPs on lookback or other local
interfaces.
dns
relay-ip [Link]
name-server 1 [Link]
name-server 2 [Link]
name-server 3 [Link]
exit
2. Specify to use DNS relay IP as the subscriber’s DNS in the subscriber’s IP pool configuration as
shown in the following example.
ippool group pool-906-Cambium
gateway-ip [Link] gateway-mask [Link]
lease-time 3600
dns-primary [Link]
ippool-status unlock
warning-threshold 80
warning-exhaust disable
frame-ip lease manage disable
section start-ip [Link] end-ip [Link]
exit
exit
After creating DND relay configuration, you can create domain based ACL as shown in the following
example.
access-list whitelist
rule 10 permit ip source any destination-domain-name [Link]
rule 20 permit ip source-domain-name [Link] destination any
rule 30 permit ip source any destination-domain-name [Link]
rule 40 permit ip source-domain-name [Link] destination any
rule 4000 deny ip source any destination any
exit
Note: Please note that domain name-based Access Control Lists (ACLs) do not support wildcard
matches. For instance, entries like “*.[Link]” is not valid. Each domain name must be explicitly
specified in its entirety. For example, [Link] and [Link] are considered distinct domain
names. To match both, you would need to create two separate rules: one for [Link] and
another for [Link]. This approach ensures precise control over access permissions and avoids
unintended matches..
The BNG router supports the following modes of IPv6 address assignment for connected devices:
● Global Address only.
This includes either a DHCPv6 IANA address or a stateless SLAAC address. In this mode, the
BNG router assigns only a global IPv6 address to the client.
● Global Address + PD
The BNG router will assign a global address and PD. This includes the following combinations:
○ IANA + IAPD
○ SLAAC + IAPD
● PD only
In this mode, the router assigns only a PD prefix to the client, with no explicit global address
assigned to the client device. The client communicates with the BNG router using its link-local
address.
With all the IPv6 address assignment modes supported by the BNG router, the router follows these rules
when determining which IPv6 address type to assign.
There is no configuration option that forces the router to generate a link-local + PD combination. If this is
the behavior you require, you must ensure the client device requests PD only without requesting any
global address. For example:
● To prevent the client from requesting a stateless SLAAC address, disable the M flag under
the corresponding interface’s NDP configuration:
○ ra auto-config managed-address disable
● To prevent the client from requesting either a stateless SLAAC address or a stateful IANA
address, disable both the M flag and the O flag:
○ ra auto-config managed-address disable
○ ra auto-config other disable
Under any configuration, if the client requests a global address along with PD, the router will attempt to
assign a Global Address + PD [Link] no corresponding address pool exists, the router will fail the
assignment and display the error: “no available pool”. If your goal is to configure PD-only address
assignment and you wish to avoid this error, disable both the M and O flags as shown above in the NDP
configuration.
The username and password for IPv4 and IPv6 stacks can be configured independently under config
-> bras -> ipoe template [template name].
To configure the online dependency between IPv6 and IPv4, follow the steps below.
● To set IPv6 stack depend on IPv4 being online first, configure the following:
config -> bras -> ipoe template [template name] -> dhcp-v6 auth-on-up
mode on-IPv4
● To set IPv4 and IPv6 stack online independently,, configure the following:
config -> bras -> ipoe template [template name] -> dhcp-v6 auth-on-up
mode independent
1. Enable IPv6 on related access, network, and vgi interfaces and set IPv6 addresses where
applicable
interface 10gei-1/1/0.15
nat outside
ipv4 address [Link] 27
ipv6 enable
ipv6 address 2804:3ef0:c0ca:c0ca::15 64
dot1q 15
exit
interface 10gei-1/1/0.750
ipv6 enable
exit
interface vgi1
nat inside
ipv4 address [Link] 16
ipv6 enable
! Add applicable gateways for all the subnets that subscribers belong
! This includes iana, iapd, and slaac prefixes. For example, if
! subscribers are assigned iana and iapd, both subnets gateway needs
! to be configured.
ipv6 address 2804:3ef0:e100::1 112 ! gateway for address pool
ipv6 address 2a00:54e0:900::1 64 ! gateway for pd prefix pool
exit
In the above example, we:
● enabled IPv6 on the access interface 10gei-1/1/0.750
● enabled IPv6 on the network interface 10gei-1/1/0.15 and also set the IPv6 address on the
interface as 2804:3ef0:c0ca:c0ca::15/64
● enabled IPv6 on the subscriber’s access gateway interface vgi1 and also set the IPv6
gateway addresses on that interface. 2804:3ef0:e100::1 112/112 is gateway address for the
address pool and gateway address 2a00:54e0:900::1/64 is for the pd prefix
DHCPv6 can also be configured to work with external DHCPv6 servers when used as part of the
BNG function. In this case, it works with an external DHCPv6 server to manage IANA and/or IAPD
address assignments. The corresponding address or prefix delegation (PD) pools must be
configured and bound to the subscriber’s access domain.
DHCPv6 does NOT work with an external DHCP server when DHCPv6 is configured in standalone
mode.
To configure DHCPv6 to work with an external DHCP servers, you need to:
● Configure an address pool or PD (Prefix Delegation) pool that mirrors the address space
used by the external DHCPv6 server
● Reserve the address or prefix space that the external server will assign
● Bind the pool in the DHCPv6 configuration
Below is an example of a DHCPv6 configuration when operating as a relay agent:
dhcpv6
dhcp enable
! relay remote-id is used to set the value of Option 37 (Relay Agent
! Remote-ID Option). Refer to RFC 4649 for details.
! 0 is the enterprise number, and myRemoveID is the remote ID.
! This feature is used to prevent relay loops.
relay remote-id 0 myRemoveID
pool myDHCPv6Pool
life-time valid-lifetime 600 preferred-lifetime 300
! The server-unicast-address is used when the client requests
! Option 12 (Server Unicast Option) (see RFC 8415 section 21.12),
! and if server-unicast is enabled on our DHCPv6 interface. In this
! case, we include the address in Option 12 in the reply sent to
! the client. This is unrelated to the relay server side.
server-unicast-address 100:1:2::250
rapid-commit enable
dns-server 1 8::8
dns-server 2 10::10
! This sets DHCPv6 option 24, also known as the Domain Search
! List option, specifies a list of domain names that a DHCPv6
! client should use when resolving hostnames with DNS. The primary
! function of the Domain Search List is to help clients find
! resources on a network by automatically appending domain
! suffixes to unqualified hostnames
domain-name 1 [Link]
exit
interface 10gei-1/1/0.1
mode relay
! The relay-agent address is used by the router to communicate
! with the DHCPv6 server when acting as a relay agent. It is
! typically the interface address on the relay-server side.
relay-agent 4444::1
relay-server-group myRelaySvr
! bind the address pool or pd pool as defined above
dhcp-pool myDHCPv6Pool
enable server-unicast
exit
relay-server-group myRelaySvr
algorithm normal
max-retry 3
server 1 4444::2
exit
5. Define access domain and bind the ipv6 ip pools to the domain
domain my_domain
bind authentication-template radius_auth_tmpl
bind accounting-template radius_acct_tmpl
bind authorization-template radius_auth_tmpl
bind-delegation-pool ipoe_ipv6_del_pool
bind-addr-pool ipoe_ipv6_addr_poolvc
bind-prefix-pool ipoe_ipv6_prefix_pool
vgi vgi1
domain-status unlock
user-routing-distribute disable
tunnel-domain disable
flow-statistic enable
radius-attribute qos-acl-profile no-exist-policy offline
quota-out offline
bind-pool 1 ipoe_ipv4_pool
exit
NOTE: From version 1.7.33.B10P2 and onwards, the router supports domain binding to both
“regular” prefix pool and “prefix delegation style” prefix pool. The previous version only supports
domain binding for “regular” prefix pool as shown above.
● “regular” prefix pool: the regular prefix pool only has one prefix. All subscribers will get the
same prefix and subscribers generate their own IPv6 address based on the same prefix. To
bind a regular prefix pool, use the command
“bind-prefix prefix-pool-name ipoe_ipv6_prefix_pool”
● “prefix delegation style” prefix pool: the prefix delegation style prefix pool has many
prefixes. Each subscriber will get its unique prefix and generate its ownIPv6 address based
on its unique prefix. netElastic’s vBNG router uses the prefix delegation pool definition for
this type of prefix pool. To bind a prefix delegation stype prefix pool, use the following
command.
“bind-prefix delegation-pool-name ipoe_ipv6_del_pool”
Here, the pool “ipoe_ipv6_del_pool” is really used as a prefix pool although it is defined
as a delegation pool. If you are using a prefix pool in this manner and a pd pool at the same
time, you need to define two prefix delegation pools. One for prefix delegation and the other
for prefix address allocation for the CPE WAN interface.
6. Enable dual stack is on vci interfaces and bind ipoe domains for ipv4 and ipv6
bras
vci-configuration
interface 10gei-1/1/0.750
ipoe template my_ipoe_template ! specify ipoe template
pppox template my_pppoe_template ! specify pppoe template
max-ipox-session 32000
max-pppox-session 32000
encapsulation multi
pre-domain my_domain ! specify v4 domain for ipoe
v6pre-domain my_domain ! specify v6 domain for ipoe
ip-access-type dual
exit
exit
exit
7. Configure related routes so the IPv6 traffic can come in and out the router per routing policy.
The routing rules can be accomplished either by static route configuration or by running IPv6
dynamic routing protocols with peering routers. See the router configuration for more information
All other configurations such as AAA templates, etc. should be the same as the IPv4 access
configurations.
To debug and check IPv6 dual stack IPv6 assignment and routing, please follow these steps:
● It is important to note that dhcpv6 configuration on all relevant interfaces are essential for PD and
stateful WAN IP assignment. Even if you don’t care about stateful CPE WAN IP assignment, you
still need to configure dhcpv6 for PD assignment to work.
● From the router do a ping test to an external public IPv6 address such as Google’s public IPv6
DNS. e.g. “ping 2001:4860:4860::8888”. Make sure the ping can go through. If the ping
test does not go through, check the WAN interface IPv6 configuration and IPv6 routes on the
router.
● Use the command “show route ipv6 database” to display the IPv6 routing table if IPv6
routing issues are suspected.
● Use the command “show smgr-session detail by-user-name [user name]” to display
user smgr session details where the user's IPv6 address, DNS, and PD assignment will be
displayed if assignments were successful.
● Use the command “show smgr-session summary” to check how many users have the
“DUAL” access type and also pay attention to how many actually get IPv6 addresses. You can
use the command “show smgr-session detail user info ip-access-type | select
info user-name | include dual-stack” to display the users whose access type is
“DUAL”. Then you can pick a user and drill down the user by listing the user’s smgr-session
details or examine its access logs to debug further.
● Even if a user’s ip-access-type is DUAL, it does not necessarily mean it will get an IPv6 address
because there might be other factors preventing the user from successfully getting an IPv6
address. Use the command “show smgr-session summary detail full_in_dual” to
display the actual number of users who actually get IPv6 addresses. Use the command “show
dhcpv6 user-detail | include client-mac” to list the mac address of the users who
actually get IPv6 addresses. Then you can use the command “show smgr-session detail
by-mac-address xx:xx:xx:xx:xx:xx” to display the user access details to examine its
IPv6 related information.
● If subscriber can not connect successfully to get dhcpv6 addresses, please check the ndp log
(/var/log/certus/ndp) and dhcpv6 log (/var/log/certus/dhcpv6).The logs carry
important dhcpv6 online process protocol exchanges messages.
● If the subscriber can only get PD, but not WAN IP or the other way around, check the dhcpv6 log
and search for the keyword ‘address type” (e.g. use the command. grep ‘address type”
/var/log/certus/dhcpv6) to make sure the addresses requested by the cpe match your
expectation. The possible values for address type are
○ pd - CPE requested only PD
○ address - CPE requested only stateful WAN IP
○ address&pd - CPE requested both stateful WAN IP and PD
● If the subscriber can get an IPv6 WAN address and PD prefix, but the traffic does not flow end to
end, check the routing table on the router to ensure there are user routing entries for both the
CPE wan IP and PD prefix. For example, if the CPE gets WAN IP
2403:4840:2000:0:7ea9:6bff:fe07:c77b and PD 2403:4840:2001:93::/64. You can look up the
route to the PD on the route as shown below where it properly shows that to reach the PD prefix,
the router will go through the CPE WAN IP by subscribers’ access interface vgi1
dwan_vbng# show route ipv6 2403:4840:2001:93::/64
Routing entry for 2407:4840:2001:93::/64
Known via "unr", distance 10, metric 10, best
Last update 00:00:04 ago
* via 2403:4840:2000:0:7ea9:6bff:fe07:c77b, vgi1
● For an IPoE HA setup, if the IPv6 stack ends up on a different instance from the one where the
IPv4 stack is, you can configure the IPv6 stack to be dependent on the IPv4 stack. This means
that IPv6 will only come online if IPv4 is already online. If the IPv4 stack goes offline, the
corresponding IPv6 stack will be automatically cleared. This ensures that the IPv6 stack
consistently mirrors the state of the IPv4 stack. To enable this feature, use the following
configuration:
bras -> ipoe template [ipoe template] -> dhcp-v6 auth-on-up mode on-IPv4
● After the subscriber’s end device gets IPv6 addresses, you can do an ultimate IPv6 test by trying
to visit an IPv6 test site such as [Link]
IGMP/PIM Configurations
netElastic vBNG routers support IGMP protocol that allows subscribers to join multicast groups. The
supported feature include
● IGMP v1/v2/v3
● PIM-SM and PIM-SSM
● Multicast VLAN
IGMP Configuration
The following is a typical IGMP configuration and its application to subscribers.
IGMP Troubleshooting
The following commands are for showing IGMP status and troubleshooting
● show ip igmp groups
display igmp group member status
● show ip igmp interface
display igmp interface status
● show ip pim interface
display IP PIM enabled interface status
● show ip pim mrouter
display igmp multicast routing information
● show ip pim neighbor
display IP PIM enabled interface neighbour information
● show ip pim rp
display ip pim rp (rendezvous point) information
Router Configurations
Often vBNG routers are connected to upstream core routes so user traffic can be routed to the internet
and vice versa. vBNG needs to exchange routes with its upstream core routers. This can be achieved by
configuring Static, OSPF, or BGP routing functions on the vBNG router.
! use static route to specify default route by interface and next hop IP
router static
ip route [Link] [Link] ifname-nexthop 10gei-1/1/1.1902 [Link]
ipv6 route :: 0 ifname-nexthop 10gei-1/1/1.1902 2001:2304:1234::2
exit
! use static route to specify two default routes with different distance
! the route with a smaller distance metric will be the preferred route.
router static
ip route [Link] [Link] nexthop [Link] distance 20
ip route [Link] [Link] nexthop [Link] distance 30
exit
! use static route to specify the next hop IP for certain prefixes.
router static
ip route [Link] [Link] nexthop [Link]
exit
! use static route to specify the next hop IPs for certain prefixes.
! with different distance metrics (smaller distance route is preferred route)
router static
ip route [Link] [Link] nexthop [Link] distance 20
ip route [Link] [Link] nexthop [Link] distance 30
exit
OSPF
OSPF works on direct L2 connected routers. vBNG will negotiate with L2 connected neighboring routers,
discover each other, and exchange/distribute routes based on the OSPF router configuration. Eventually
all the routers in the same OSPF area will achieve the full state where all of participating routers share the
same routing database.
OSPF Example - V6
Here is an example of an OSPF V6 configuration example. In this example, you have two interfaces
through which the OSPF router will be establishing neighbors with. It is configured to advertise
network 2605:2540:2::/48 and network 2605:2540:3::/48, in addition to advertise connected, static,
and unr routes. Keep in mind that participating interfaces for ospf v6 need to have IPv6 address
assigned and ipv6 enabled. The relevant IPv6 interface configuration is also shown in the example.
! define ospf filter in the out direction to only allow certain prefix to go out
access-list ospf-out
rule 10 permit ip source [Link]/24 destination any
rule 20 deny ip source any destination any
exit
! if you want to deny all routes but only install default route
! the ospf route filter can be configured like the following.
access-list ospf-in-accept-default-only
rule 10 permit ip source [Link]/0 destination any
rule 20 deny ip source any destination any
exit
OSPF Troubleshooting
● Use the command “show ospf-state neighbor all” to check the OSFP status. If no OSPF
hello messages are received from the router, it indicates that that configuration is not valid.
Please check
○ Make sure that there is a corresponding network statement configured for each
participating interface. The CIDR network notation should represent the network in which
the participating interface is. For example, if the OSPF participating interface 10gei-1/1/0
has IP [Link]/30 on it, you need to add network [Link]/30 area [Link] in
the configuration.
○ Make sure the peering interfaces can ping each other to prove out connectivity.
● If OSPF neighbourship can not be established, check the following:
○ Check the area ID match between the router instance and its neighbor.
○ Check the MTU setting to make sure they match between neighbors.
○ Under each interface, make sure that the network type setting (broadcast/unicast) match
that of the peering router.
○ check the ospf logs for error and warning messages. The ospf logs are located
■ /var/log/certus/ospfd - ospf logs for ipv4
■ /var/log/certus/ospf6d - ospf logs for ipv6
● When using summary-address, you have to ensure
○ part of the summary-address is in the router’s routing table (e.g. connected, static, etc)
○ you must be advertising part of the summary-address such as through
“user-routing-distribute”
● Commonly used OSPF commands
○ To reset/clear OSPF
clear-ospf-process
○ To show ospf neighbor status
show ospf-state neighbor all
○ To show ospf route summary
show ospf-state database summary all
○ To show ospf routes processed by osfp engine
show ospf-state database all
○ To show ospf routes actually installed on the router
show route ospf
BGP
BGP works on L3 connected routers. vBNG will negotiate with BGP neighboring routers, discover each
other, and exchange/distribute routes based on the BGP router configuration. Unlike OSFP, BGP does
not require direct L2 connections and can establish routing neighbors across networks. Often you will see
BGP runs on top of OSPF. OSPF takes care of the L2 topology and establishes underlying routes so the
BGP can communicate with its peers via the routes established by OSPF. If vBNG has direct L2
connections with upstream core routers, running just OSPF is sufficient in terms of route exchange
between the vBNG and upstream routers. Running BGP on top of OSPF is optional in this case.
To show routes advertised to a particular neighbor, use this command as shown in this example:
show bgp neighbor-route all default [Link] advertise
NOTE: In most of the types listed above, you can use the optional “[route-map]” to select a subset
of routes that you want to be distributed.
Routes need to be made to the router’s BGP table before it can be advertised out. Along the way,
there are several ways by which you can control what routes to advertise. It is important to
understand how routes are advertised from the router. They go through the following steps:
● Raw routes on the router. They can be nat, connected, default, static, or received routes etc.
Regardless of route types, they first have to exist on the router in whole or partial (ref
aggregate address case) before they can be advertised out.
● Under each neighbor you have to configure “address-family ipv4-unicast” and/or
“address-family ipv6-unicast” sections for IPv4 and/or IPv6 routes to be advertised to
this neighbor. For example, if you want to prevent IPv6 routes from being advertised to a
particular neighbor, you can do so simply by not configuring the “address-family
ipv6-unicast” section under this neighbor.
● Pick what type of routes to be advertised with an optional [route-map] filter to selectively
choose what routes to advertise.
● Optionally you can aggregate routes with the aggregate-address/summary-only
statement. This is especially useful when dealing with a lot of smaller routes. For example, if
you choose to redistribute nat, the router could possibly create many smaller routes
including /32 routes to cover the whole IP section you defined under nat -> ippool
group. You can use aggregate-address/summary-only to aggregate them into one
bigger non-fragmented network.
● At the end of the above steps, the routes passing through the filters will be available to be
advertised to all neighbors. Next, at each individual neighbor level, you can use in and out
route map filters to selectively choose what routes to receive and what routes to go out to this
neighbor.
Depending on whether the advertised route existed on the vBNG router’s routing table or not, routes
are advertised differently.
● prefix-list - can be defined to permit or deny routes based on network prefix definitions.
● route-map - In addition to permit or deny routes based on network prefixes (when used with
prefix-list), it can also be configured to permit or deny routes based on as-path, community,
interface, metric, route-type, etc.
.
The route filters (prefix-list or router-map) can be applied
● either globally under the type of routes redistributed so the rules apply to all neighbors
● or apply under a neighbor so the rule is only applicable to that neighbor. When applied under a
neighbor, you can use the following states to control route advertise/receive filtering.
○ in distribute-list [access list] - filter incoming routes with access list
○ in prefix-list [prefix list] - filter incoming routes with prefix list
○ out distribute-list [access list] - filter outgoing routes with access list
○ out prefix-list [prefix list] - filter outgoing routes with prefix list
○ route-map [route map] in - filter incoming routes with route map
○ route-map [route map] out- filter outgoing routes with route map
Please note that route-map filters can contain multiple matching rules. For each route, the evaluation
begins with the rule that has the lowest rule number and continues sequentially until a permit or deny
action is encountered. As a result, not all rules in a route-map filter are necessarily evaluated.
Take the follow route-map filter for example
! this rule permit prefix define in prefix list netElastic-PUBLIC
! to pass, not matched prefix will be denied
route-map TO-RR-OUT 10
action permit
match ip address prefix-list netElastic-PUBLIC
exit
! this rule set all routes with the configured community string
route-map TO-RR-OUT 20
action permit
set community non-none comm-number [ 13836:15110 ]
exit
For routes that match rule 10, the action in rule 20 will not be applied, as a match in rule 10 results in
a definitive permit action. This causes the route-map evaluation to exit, and rule 20 will not be
processed for these routes. If you intend to apply the above-mentioned community string to matching
routes, you should combine the match statement and the set statement in a single route-map rule, as
shown below.
! this rule permit prefix define in prefix list netElastic-PUBLIC
! AND set matching routes with the configured community string
route-map TO-RR-OUT 10
action permit
match ip address prefix-list netElastic-PUBLIC
set community non-none comm-number [ 13836:15110 ]
exit
Route map filter can be used in conjunction with the redistribute statement to further filter routes
advertised by the router. You can also use route map filters to set community strings for outgoing
routes as shown in the following example.
! define route map to control what routes to go out and also can
! set community string for these routes
route-map TO-RR-OUT 10
action permit
match ip address prefix-list netElastic-PUBLIC-LOCAL
set community non-none comm-number [ 20205:9001 ]
exit
route-map FROM-RR-IN 5
action deny
match ip address prefix-list TEST-REJECT !reject this route
exit
route-map FROM-RR-IN 10
action permit
match ip address prefix-list DEFAULT !accept default route
exit
route-map FROM-RR-IN 20
action permit
match community exact-enable standard comm-number [ 20205:9000 ]
exit
route-map REDIS-NAT 10
action permit
match ip address prefix-list netElastic-PUBLIC-LOCAL
exit
neighbor [Link]
update-source loopback1
remote-as 65001
address-family ipv4-unicast
in distribute-list bgp_route_filter
exit
exit
access-list bgp_route_filter
rule 10 permit ip source [Link]/24 destination any
exit
Example 3: Use route map filter to only accept the default route
In this example, we will set up a router map filter to only accept the default route from a bgp neighbor.
! define a prefix list to only accept default router and deny others
prefix-list my-prefix-list 1 permit [Link] 0
prefix-list my-prefix-list 2 deny any
route-map rm-fabric-out 10
action permit
match ip address prefix-list pl-fabric-out
exit
Here is an example of configuring the router to be a router reflector, which redistributes learned
routes from other neighbors to the neighbor under which the router reflector is configured. To
configure the router to be a router reflector, you need to
1. set route-reflector-cluster-id (highlighted in red in the example). The value can be any
interface ip on the router as long as it does not conflict with other route reflect ID in the network.
2. set route-reflector-client (highlighted in yellow in the example) under the neighbor to
which you want the router to distribute the learned routes from other neighbors.
Here are some pointers when working with both V4 and V6 neighbors
● You first need to enable V4 or V6 or Both at the BGP instance level by specifying
“address-family ipv4-unicast” and “address-family ipv6-unicast” if you need
to exchange V4 or V6 routes with neighbors.
● You can exchange V4 or V6 or both routes with a V4 neighbor depending on the
“address-family” specification under each neighbor. If you only want to exchange V4
routes with a neighbor, just specify “address-family ipv4-unicast” under that
neighbor. If you want to exchange both V4 and V6 routes with a neighbor, you need to
specify “address-family ipv4-unicast” and “address-family ipv6-unicast”
under that neighbor. The same principle applies to V6 neighbors as well.
! create VRF
l3vpn vrf CarrierB
exit
! configure BGP and put neighbor and address families under VRF context
router bgp 329104
vrf CarrierB
neighbor [Link]
update-source 100gei-1/1/1.219
remote-as 323987
address-family ipv4-unicast
soft-reconfiguration-inbound
default-originate
exit
exit
address-family ipv6-unicast
redistribute nat
network-v6 2001:45f8:1000::/48
network-v6 2c0f:5940::/32
exit
address-family ipv4-unicast
redistribute nat
network [Link]/23
exit
exit
exit
In the following example, let’s assume your organization is AS 65000. You break it into:
● Sub-AS 65001
● Sub-AS 65002
● Sub-AS 65003
These sub-ASes form a confederation and share a common external AS number, 65000. To an
external peer, all routers in 65001–65003 still look like they’re in AS 65000. Below are configurations
snippets for this example
! On Router in Sub-AS 65001:
router bgp 65001
bgp confederation identifier 65000
bgp confederation member-as 65002 65003
You need to restart the router by “flexbng -s” for the changes to take effect.
BGP Troubleshooting
Here are some common pitfalls and useful debug commands for BGP related troubleshooting:
● Examine the configuration to make sure
○ the router AS number and neighbor AS numbers are configured correctly.
○ you can ping the neighbor IP
○ From the neighbor, make sure you can ping the router IP associated with the update
source interface for that neighbor.
○ Make sure you have at least one address-family ipv4-unicast/ipv6-unicast
configured for the bgp instance and for each neighbor.
● User command “show bgp summary default” to check bgp status. If the state is stuck at
IDLE, it usually indicates there is something wrong with the configuration. If the configuration is
ok for the BGP process to work on, the state will either be ACTIVE (bng is trying to negotiate
with neighbors) or ESTABLISHED. The minimal configurations for the BGP are
○ BGP AS number and this BGP router-id
○ Global address family (address-family ipv6-unicast or address-family
ipv4-unicast or both)
○ Neighbor AS and neighbor IP
○ Neighbor address family (address-family ipv6-unicast or address-family
ipv4-unicast or both)
● If the BGP state is stuck in IDLE, one common cause is that there is capability mismatch, you
can configure override-capability under that neighbor to override capability mismatches.
Keep in mind that this option is under each neighbor configuration.
● If you are running BGP with a full routing table or larger, it is recommended to set the BGP
update cache buffer to 500M. To set BPG update cache buffer size, follow these steps:
○ Create/modify the file “/usr/local/certus/etc/[Link]”. This file does not
exist by default. If you are setting the BGP cache buffer size for the first time, you will
have to create this file.
○ Create the key value pair “bgpd 500”, where 500 means 500 million.
○ Restart the router by “flexbng -s” for the change to take effect.
● When the router sends BGP exchange packets to its configured neighbor, the source IP of
these packets will be those associated with the interface configured under update-source for
that neighbor. The update-source can be a loopback interface or any interface on the
router. Also the configuration of update-source is optional. Given all these possibilities, you
want to make sure that the source IP of BGP packets matches the neighbor IP configured on
the BGP peer router. If the source IP of the BGP packets received does not match what is
configured for that neighbor on the peer router, the packets will be dropped by the peer router.
● For eBGP connections, make sure the key “ebgp-multihop” under each neighbor is set to a
value that reflects the number of hops for the router to reach the peering neighbor. Since direct
connections between ebgp neighbors are expected, by default the TLL value for BGP packets
is set to 1. If there are multiple hops on the eBGP links, you need to set "ebgp-multihop"
accordingly. A good debug trick is to set it to 255 to leave plenty room for TLL.
● Use “show bgp neighbor” to display neighbor status. This command will also display error
messages related to bgp neighbors if there are any..
● Use “show bgp neighbor-route all” to display route advertisements and receive
summary on all neighbors.
● If you have routes not being advertised as they should and you have route maps in place to
control route advertisement or receipt, make sure your changes to the route maps rules are
recognized by the router by removing and adding the rules back to trigger bgp to refresh route
map rules as explained earlier.
● If static configured routes are not being advertised, please make sure you have
“redistribute static” specified under “address-family ipv4-unicast”
● If routes are not being advertised, please check if you have the “update-source <update
interface>” specified for that neighbor.
● To display bgp status for a particular neighbor, use the command
“show bgp neighbor <neighbor-IP> default”
● To display what networks are advertised or received to neighbors, use the command
“show bgp neighbor-route all default <neighbor-IP> advertise”
“show bgp neighbor-route all default <neighbor-IP> receive”
For example, show bgp neighbor-route all default [Link] receive
displays all received routes from bgp neighbor [Link]
● To reset BGP with a neighbor type “clear-bgp neighbor <neighbor ip>”
● To reset BGP route exchange with all neighbors without bringing the neighbor state up/down,
use the command “clear-bgp all in/out”. This command resets the router exchange in
either the in or out direction. To reset routes to a particular neighbor, use the command “
clear-bgp neighbor <neighbor IP> in/out”. To reset routes in both directions, you
have to run the command twice with both the in and out as direction values.
● Examine BGP log if necessary. The BGP log is located at /var/log/certus/bgpd
ISIS
ISIS Configuration
A typical ISIS router configuration example is shown below.
router isis
instance CORE
isis-level level-2
dynamic-hostname normal
isis-level-2-cfg metric-type wide
nsap-address 49.0000.1852.2816.0010.00
redistribute connected
address-family-ipv6-cfg redistribute connected
interface eth-trunk1.8
enabled
ipv6-enabled
level level-2
interface-type point-to-point
level-2 metric 25
exit
interface loopback0
passive
level level-2
interface-type point-to-point
exit
exit
exit
NOTES:
● If the peer is using wide metric, you need to configure “isis-level-2-cfg metric-type
wide” as shown in the example in red
ISIS troubleshooting
● “show isis-state neighbors all”
display isis state neighbors
● “show isis-state database level-2 detail”
display isis route database
● “show route ipv4 isis”
display IPv4 isis route
● “show route ipv6 isis”
display IPv4 isis route
Use tracker to detect link state change and update routing table
You can enable ping detect or BFD to detect interface connectivity changes and trigger updates to the
routing table accordingly. This applies only to static routes and BGP. This feature is illustrated in the
following examples.
detect-group route1-detect
option and
test-type icmp-echo
retry-count 2
loop-time 15
timeout 2
sampling-period 30
detect-list 1 [Link] interface 10gei-1/1/0
exit
detect-group route2-detect
option and
test-type icmp-echo
retry-count 2
loop-time 15
timeout 2
sampling-period 30
detect-list 2 [Link] interface 10gei-1/1/1
exit
tracker
track route1-track ping-detect group route1-detect
track route2-track ping-detect group route2-detect
exit
router static
ip route [Link] [Link] ifname-nexthop 10gei-1/1/0 [Link] track
route2-track
ip route [Link] [Link] ifname-nexthop 10gei-1/1/1 [Link] track
route1-track
exit
In the above example, we have two static routes. When both routes are available, the traffic using
static routes will be evenly distributed between these two routes. If one is down and fails ping detect
tracker, the router will mark the corresponding static route unusable and avoid sending traffic to it
while it is down. Similarly, traffic will resume when the ping detect tracker detects the interface is
available again.
detect-group my-ping-detector
option and
test-type icmp-echo
retry-count 2
loop-time 15
timeout 2
sampling-period 30
detect-list 1 [Link] interface 10gei-1/1/3.471
exit
tracker
track-group my-ping-tracker
track test
exit
track test ping-detect group my-ping-detector
exit
router bgp 11
neighbor [Link]
remote-as 1111
track my-ping-tracker
synchronization
exit
address-family ipv4-unicast
soft-reconfiguration-inbound
exit
exit
exit
In the above example, we defined a ping tracker to track the presence of a BGP neighbor by ping.
The tracker is then bound to that neighbor. If the tracker declares this neighbor is down/up, the BGP
router will act accordingly in terms of route advertising and receiving operations with the neighbor.
You may wonder why this is needed since neighbor state detection is already built into the BGP
protocol. The reason is that ping detect can detect the presence of a neighbor faster than the state
machine built into BGP.
Additionally if you want to apply the policy as a user qos profile and apply to the user by its authorization
template, continue to configure the following.
VRF Configuration
netElastic’s vRouter supports total routing and access control separation through VRF (Virtual Routing
and Forwarding). Pretty much every component that we have covered so far can be put into a VRF
context to achieve the desired separation of separate router instances. In addition, radius access can
also be put into a separate VRF to isolate the radius control traffic from the forwarding traffic path. Next
we will provide a couple of examples to illustrate some of the practical VRF use cases.
A typical use case of using VRF is to create multiple “virtual routers” within one router instance to have
total access and routing separation between two or more routing applications. For example, you may
have a situation where you want a subset of router interfaces to serve one customer base and route their
traffic to carrier A while simultaneously using another subset of router interfaces to serve another
customer base and route their traffic to carrier B. This can be achieved by using a separate VRF to
separate all access and routing related to carrier B from those associated with Carrier A. The
configuration of the router involves the following steps:
1. Create a VRF instance for carrier B.
2. Bind the VRF instance for the IP pool definition associated with the carrier B
3. Bind the VRF instance for the WAN and VGI interfaces associated with the carrier B.
4. Bind the VRF instance for the access domain associated with the carrier B access network.
5. Bind the VRF instance for the NAT public IP pool associated with the carrier B. This won’t be
applicable if NAT is not being applied. For detailed information about nat configuration under the
context of VRF, please refer to the NAT rules under VRF note.
6. Bind the VRF instance for the router instances (static routes/BGP/OSPF/ISIS,etc) associated with
the carrier B
The redirect URL will take the form of [base url] ? [key=value] [delimiter]
[key=value] [delimiter] [..more key value pairs]. Here is an example of what the
redirect URL looks like with the following web url template configurations:
[Link]
300,nas=myNas,host=myBNG
bras
web-url 1
url [Link]
key-user-ip ipv4
key-user-mac mac
key-user-location inf
key-delimiter ,
key-mscg-name nas
key-host-name host
mscg-name myNas
exit
exit
NOTES about the redirect URL
● If you need to include a custom field with a fixed parameter, you can configure
key-mscg-name as the key name and mscg-name as the key value.
● The total assembled URL (base section + parameter section) must not exceed 255
characters.
4. Bind the above defined web url template to the user’s access domain.
Keep in mind that for statically configured http redirects, redirection happens immediately after the
web-url-index is added and committed in the user’s associated domain definition. To take users off
from redirection, you have to either manually remove web-url-index from the domain definition or
set NetElastic-Portal-Mode to “0” from radius via radius DMCOA message. See the next
session on dynamic http redirection for more details on how to use DMCOA message to remove user
from redirection.
access-list blocked-in
rule 10 permit ip source [Link]/32 destination [Link]/21
rule 20 permit ip source [Link]/32 destination [Link]/21
rule 200 deny ip source any destination any
exit
access-list blocked-out
rule 10 permit ip source [Link]/21 destination [Link]/32
rule 20 permit ip source [Link]/21 destination [Link]/32
rule 200 deny ip source any destination any
exit
bras
user-acl-profile blocked
input-acl-profile blocked-out
output-acl-profile blocked-in
exit
exit
2. Under the subscriber’s radius authentication group set the filter-id-type to special-acl
instead of user-acl. The switch filter-id-type controls where the received acl from radius
under the attribute Filter-Id will be applied to, i.e. user-acl or special-acl. With the
user-acl, once assigned, the acl will take effect until another acl is applied. With the
special-acl, the assignment from radius will be removed when NetElastic-Portal-Mode is set
to 0. This will free the subscriber from the special-acl limitations. Here is an example of the
radius authentication group configuration.
NOTE: Once you set the filter-id-type to special-acl in the authentication template, all
subsequent attributes Filter-Id received from radius (including those in COA messages) will
be treated as special-acl. If you want to control subscribers’s normal ACL, you can do so by
using the netElastic VSA attribute “NetElastic-Data-Filter”
3. To put user into walled garden, send the following from radius
Acct-Session-Id = 15856914162058990000c298d4e4e
# User-Name = JohnSmith # you can also use user name as handle instead of accounting id
NetElastic-Portal-Mode = 1
NetElastic-HTTP-Redirect-URL = [Link]
Filter-Id = blocked
4. To put the user out of the walled garden, send the following from radius. You can use either the
accounting ID or user name to identify the user.
Acct-Session-Id = 15856914162058990000c298d4e4e
# User-Name = JohnSmith
NetElastic-Portal-Mode = 0
To check if the user is put into a walled garden or not, you can examine the “webforce-info” section in
the user session details to make sure the relevant fields related to the walled garden are all set as
shown in the following user session detail snippet.
webforce-info "webforce-flag 1 adforce-flag:0 special-acl: restricted
http-url: [Link] advertisement-url:"
NOTE 1 : special ACL will only take effect when vBNG receives all three attributes (Filter-Id,
NetElastic-Portal-Mode, and NetElastic-HTTP-Redirect-URL). If any of them is missing, the
others will not take effect. For example, if the URL is missing, the ACL won’t take effect even if
Filter-Id is set and NetElastic-Portal-Mode is set to 1. You can check if all the attributes are sent
to the user by checking the user’s smgr session detail information. For example “show smgr-session
detail by-user-name JohnSmith”
NOTE 2 : In addition to using “Acct-Session-Id” as the subscriber handle as shown in the above
examples, you can also use “User-Name” to put subscribers in and out walled gardens.
NOTE 3 : To optionally modify the web redirect url parameters to carry user information, you can create
a web url template and bind it to the user’s access domain in exactly the same way as explained in the
static http redirect case explained above.
For portal access control web redirect related information on portal flow, please refer to the netElastic
Portal Authentication Configuration Guide
IPFIX Configuration
netElastic vRouter supports ipfix flow analytics exporting beginning in version 1.12.57.B4P12
Here is a typical ipfix configuration for exporting flow analytics to an external collection server.
ipfix
recorder flow-def
match protocol
match ipv4-src-address
match ipv4-dest-address
match ipv6-src-address
match ipv6-dest-address
match src-port
match dest-port
match intf-dir
collect input-intf
collect output-intf
collect bytes-counter [ total ]
collect packets-counter [ total ]
collect flowstartmilliseconds
collect flowendmilliseconds
collect flowendreason
collect user-name
exit
sampler sampler-def
sample randomized-packets 100
exit
exporter exporter-def
protocol netflow-v10
ipv4-src-address [Link] ipv4-dest-address [Link]
udp-port 4739
exit
! optionally you can add a second exporter to export flows
! to a backup collector
exporter exporter-def-backup
protocol netflow-v10
ipv4-src-address [Link] ipv4-dest-address [Link]
udp-port 8023
exit
monitor monitor1
sampler sampler-def recorder flow-def
exporter exporter-def
exporter exporter-def-backup
timeout active 60
timeout inactive 15
interface 10gei-1/1/0
interface 10gei-1/1/3.301
interface 10gei-1/1/3.3033
exit
exit
■ physical interfaces
support flow information exporting in both ingress and egress directions
■ eth-trunk interfaces
support flow information exporting in egress direction only
■ sub interfaces of physical or eth-turnk interfaces
support flow information exporting in egress direction only
■ inside logic interfaces (e.g. vgi, loopback etc)
does NOT support flow information exporting on these type of interfaces
NOTE: If the traffic is carried on the VLAN interface on the LAN side and you want to
monitor traffic flows in both directions, you need to add both the physical interfaces and
the VLAN sub-interfaces to the flow monitor.
○ timeout active [flow active timer]
set flow active timer in seconds. A flow has to be present for at least the active timer
period for it to be added to the flow analyzer. Within the active timer period, the flow’s
absence can not exceed the inactive timer period.
○ timeout inactive [flow inactive timer]
set flow inactive timer in seconds. If there is no new flow for an existing flow within the
inactive timer period, the flow will be deleted.
As soon as the monitor definition is created, the flow analytics and exporting engine begin to be triggered
and flow analytics should begin to be sent to the external collector.
IPFIX Troubleshooting
LI Server Configuration.
Here is an example of LI Server configuration.
lawful-intercept
ipv4-server li-svr-v4
src-ip [Link]
src-port 2332
x3-dst-ip [Link]
x3-dst-port 50010
x3-format udp
x2-dst-ip [Link]
x2-dst-port 50000
x2-format udp
exit
ipv6-server li-svr-v6
src-ip 2001:2345::1
src-port 2343
x3-dst-ip 2001:2345::5
x3-dst-port 50010
x3-format udp
x2-dst-ip 2001:2345::5
x2-dst-port 50000
x2-format udp
exit
exit
NOTES:
● You can independently configure an ipv4 server and an ipv6 server as shown in the example.
● src-ip for both ipv4 server and ipv6 server configurations has to be a valid IP already
configured on the router interfaces.
● x2-format can have raw, udp, and tcp options, while x3-format only supports udp.
LI Users Configuration.
Here is an example of LI user configuration. Create one instance for each user under LI and you can
have many users as needed. The traffic of all configured user instances will be sent to the LI servers
configured by the x2 and x3 interfaces. Note that the intercept-id field configured in the user
instance will be sent with the user traffic by the x3 interface as shown above in the x3 interface packet
structure.
lawful-intercept
instance johnSmith
intercept-id 1000
ipv6-server li-svr-v6
user-name e4-b9-7a-88-f1-d5
user-mac e4:b9:7a:88:f1:d5
user-ipv4 [Link]
exit
exit