====== Configuration ======
{{indexmenu_n>2}}
Policing has two connection options:
- Individual profile: connects without specifying a profile, an individual profile is created for each subscriber.
- Named profile: connects with the profile name.
For BRAS, named profiles must be used **name specified in the Radius-Accept attributes.**
===== Individual Profile =====
An individual configuration file is used to define each bandwidth control policy. This file specifies bandwidth limits for protocol classes (groups). The method is similar to [[en:dpi:dpi_options:opt_shaping:shaping_settings|overall bandwidth control]]).
[[en:dpi:dpi_components:platform:subscriber_management|fdpi_ctrl]] utility applies the configured policies to subscribers.
The format of the instruction:
fdpi_ctrl command --policing policing_description_file [IP_list]
Instructions' syntax and IP addresses specification methods are described in details here: [[en:dpi:dpi_components:platform:subscriber_management:subsman_cmd|Control instructions]].
Note the use of [[en:dpi:dpi_components:platform:subscriber_management:subsman_profiles|named policing profiles]]\\
The tariff plan can be set in [[en:dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_json|JSON format]] as well.
==== Example 1: torrent limiting ====
For advanced users: We recommend that you read [[dpi:dpi_options:opt_bandwidth_mgmt:bandwidth_conf|"Outgoing traffic management via feedback"]].
We intend to offer our subscribers the plan for 10 Mb/s with torrent bandwidth limit of 3 Mb/s.
To accomplish the goal we create a class for torrents as described in [[en:dpi:dpi_options:opt_priority:priority_config|Configuring priorities]].
bittorrent cs1
default cs0
We're splitting the traffic into 2 classes for this example:
* cs0 - corresponds to DSCP=0 QOS(IPP)=0 Best Effort
* cs1 - corresponds to DSCP=8 QOS(IPP)=1 Priority
We're creating the configuration file rateplan_1.cfg. It specifies bandwidth limits for each of 8 protocol classes (groups). We use HTB (the method of borrowing available bandwidth) and specify the bandwidth limit for torrents 3 Mb, but not smaller than 1 Mb. Unlike torrents, other traffic may take the whole available bandwidth.
htb_inbound_root=rate 10mbit
htb_inbound_class0=rate 8bit ceil 10mbit
htb_inbound_class1=rate 1mbit ceil 3mbit
htb_inbound_class2=rate 8bit ceil 10mbit
htb_inbound_class3=rate 8bit ceil 10mbit
htb_inbound_class4=rate 8bit ceil 10mbit
htb_inbound_class5=rate 8bit ceil 10mbit
htb_inbound_class6=rate 8bit ceil 10mbit
htb_inbound_class7=rate 8bit ceil 10mbit
htb_root=rate 10mbit
htb_class0=rate 8bit ceil 10mbit
htb_class1=rate 1mbit ceil 3mbit
htb_class2=rate 8bit ceil 10mbit
htb_class3=rate 8bit ceil 10mbit
htb_class4=rate 8bit ceil 10mbit
htb_class5=rate 8bit ceil 10mbit
htb_class6=rate 8bit ceil 10mbit
htb_class7=rate 8bit ceil 10mbit
* htp_inbound_root, htb_root are the root classes that define the overall bandwidth for inbound and outbound traffic. The bandwidth is distributed within these classes.
* rate - is the minimal bandwidth
* ceil - is the maximum bandwidth that can be borrowed from the root class if available
* class2-7 would not be used as we configure two classes only: 0 and 1.
Here we assign the configured policy to subscribers that use this plan:
fdpi_ctrl load --policing rateplan_1.cfg --file subscribers_with_rateplan_1.txt
==== Example 2: maximum speed for peering====
Bandwidth allocation for several classes (for example containing peer-to-peer traffic) can be deduced from the HTB (Hierarchical Token Bucket) hierarchy. It can be done by specifying the keyword **static** in the description. In this case, the restriction for this class will be applied independently regardless to htb_root.
For example under the conditions noted above, we separately limit the class 6 to 100 Mbps.
htb_inbound_root=rate 10mbit
htb_inbound_class0=rate 8bit ceil 10mbit
htb_inbound_class1=rate 1mbit ceil 3mbit
htb_inbound_class2=rate 8bit ceil 10mbit
htb_inbound_class3=rate 8bit ceil 10mbit
htb_inbound_class4=rate 8bit ceil 10mbit
htb_inbound_class5=rate 8bit ceil 10mbit
htb_inbound_class6=rate 100mbit static
htb_inbound_class7=rate 8bit ceil 10mbit
htb_root=rate 10mbit
htb_class0=rate 8bit ceil 10mbit
htb_class1=rate 1mbit ceil 3mbit
htb_class2=rate 8bit ceil 10mbit
htb_class3=rate 8bit ceil 10mbit
htb_class4=rate 8bit ceil 10mbit
htb_class5=rate 8bit ceil 10mbit
htb_class6=rate 100mbit static
htb_class7=rate 8bit ceil 10mbit
==== Example 3: assigning policing for multisubscribers ====
Let's assign the plan from the previous example to a subscriber with several IPs.
Check that database support is enabled in DPI **///etc/dpi/fastdpi.conf//**:
udr=1
If it is not enabled: we enable it and restart DPI: service fastdpi restart
Reserve for corporative subscriber all his IPs:
fdpi_ctrl load --bind_multi --user OOO_PizzaJohnes:192.168.0.1-192.168.0.5,192.168.1.10-192.168.1.25
The subscriber's IP list can be modified [[en:dpi:dpi_components:platform:subscriber_management:dpi_ipmulti|dynamically]] (i.e. add new IPs and delete it).
Let's assign the bandwidth limits according to the plan:
fdpi_ctrl load --policing rateplan_1.cfg --login PizzaJohnes_LLC
Setting the schedule for tariff plans: {{youtube>IQa_3T0jJ38?}}