IP-login binding (bind, bind_multi) [Документация VAS Experts]

IP-login binding (bind, bind_multi)

Service and bandwidth management for subscribers with dynamically assigned IP addresses is performed using a logical name (login), which is specified in the management commands using the corresponding –login parameter. To support login binding functionality in DPI, it is necessary to enable UDR.

The advantage is that service and policing profiles are assigned to the login and can remain unchanged for a long time, while the subscriber's IP address changes dynamically. As long as bindings are updated promptly, DPI always has up-to-date rules and statistics for the subscriber's IP address.

DPI supports two types of IP-login binding:

  • bind — Single binding. One login corresponds to exactly one IP address.
  • bind_multi — Multiple binding. A subscriber with multiple IP addresses is treated by DPI as a single subscriber: services and bandwidth management are shared across all IP addresses assigned to that subscriber. This is commonly used for corporate subscribers who are allocated a channel and a pool of IP addresses that share the same resources. It is also used when a subscriber is assigned a Dual Stack IPv4/IPv6 configuration. When service or policing profiles are changed for such a login, the changes are immediately applied to all IP addresses associated with that login.

The main semantic differences between bind and bind_multi are:

  1. load –bind replaces the IP address previously assigned to the subscriber, while load –bind_multi adds a new address
  2. load –bind automatically reassigns an IP address if it is already assigned to another subscriber
  3. load –bind uses less database space

If IP addresses are dynamically assigned by a RADIUS server, it is recommended to use FastRadius (RADIUS Event Monitor. RADIUS Mapping), which automatically transfers information about assigned and released IP addresses to DPI. In this case, the RADIUS User-Name attribute is used as the login. For integration with other platforms, support for executing custom scripts on IP address assignment and release events is required (for example, this capability is available in the standard Linux DHCP server).

Single binding management commands

Bind an IP address to a login:

fdpi_ctrl load --bind --user subscriber_name:ip_address

Create two different single bindings:

fdpi_ctrl load --bind --user test_ipv4:191.168.1.1
fdpi_ctrl load --bind --user test_ipv6:2001:470:e5bf:dead::0/64

Replace the IP address associated with login test_ipv4:

fdpi_ctrl load --bind --user test_ipv4:191.168.1.2

Remove an IP ↔ login binding:

fdpi_ctrl del --bind --login test_ipv6

Display the IP address associated with a subscriber:

fdpi_ctrl list --bind --login test_ipv4

Display all subscribers with bound IP addresses:

fdpi_ctrl list all --bind

Multiple binding management commands

IP addresses can be assigned to a subscriber individually or in blocks:

192.168.0.1                      single IPv4 address
192.168.0.1-192.168.0.5          range (inclusive)
192.168.0.0/30                   CIDR
192.168.0.1,192.168.0.3          list
2001:db8:2000:1200::/64          IPv6 subnet

Bind multiple IP addresses to a single login (each command only adds IP addresses to the login; if an IP address is already present in bind_multi, assigning it again is not considered an error):

fdpi_ctrl load --bind_multi --user test:192.168.0.1
fdpi_ctrl load --bind_multi --user test:192.168.0.1-192.168.0.5
fdpi_ctrl load --bind_multi --user test:192.168.0.0/30
fdpi_ctrl load --bind_multi --user test:192.168.0.1,192.168.0.3
fdpi_ctrl load --bind_multi --user test:2001:db8:2000:1200::/64

Remove all IP addresses associated with a login:

fdpi_ctrl del --bind_multi --login test

Remove one of the IP addresses associated with a login:

fdpi_ctrl del --bind_multi --ip 192.168.0.1

Display all IP addresses associated with a subscriber that has multiple IP addresses:

fdpi_ctrl list --bind_multi --login test

Display all subscribers with multiple IP addresses:

fdpi_ctrl list all --bind_multi

Was this information helpful?