4.2. Prioritizing Network Traffic
net_priocontroller can be used to set network priorities for processes in cgroups. These priorities are then translated into Type of Service (ToS) field bits and embedded into every packet. Follow the steps in Procedure 4.2, “Setting Network Priorities for File Sharing Services” to configure prioritization of two file sharing services (NFS and Samba).
Procedure 4.2. Setting Network Priorities for File Sharing Services
net_priocontroller is not compiled in the kernel, it is a module that has to be loaded manually. To do so, type:
- Attach the
net_priosubsystem to the
mount -t cgroup -o net_prio none sys/fs/cgroup/net_prio
- Create two cgroups, one for each service:
- To automatically move the
nfsservices to the
nfs_highcgroup, add the following line to the
CGROUP_DAEMON="net_prio:nfs_high"This configuration ensures that
nfsservice processes are moved to the
nfs_highcgroup when the
nfsservice is started or restarted.
smbdservice does not have a configuration file in the
/etc/sysconfigdirectory. To automatically move the
smbdservice to the
samba_lowcgroup, add the following line to the
*:smbd net_prio samba_lowNote that this rule moves every
smbdservice, not only
/usr/sbin/smbd, into the
samba_lowcgroup.You can define rules for the
winbinddservices to be moved to the
samba_lowcgroup in a similar way.
- Start the
cgredservice to load the configuration from the previous step:
systemctl start cgredStarting CGroup Rules Engine Daemon: [ OK ]
- For the purposes of this example, let us assume both services use the
eth1network interface. Define network priorities for each cgroup, where
1denotes low priority and
10denotes high priority:
echo "eth1 1" > /sys/fs/cgroup/net_prio/samba_low/net_prio.ifpriomap~]#
echo "eth1 10" > /sys/fs/cgroup/net_prio/nfs_high/net_prio.ifpriomap
- Start the
smbservices and check whether their processes have been moved into the correct cgroups:
systemctl start smbStarting SMB services: [ OK ] ~]#
cat /sys/fs/cgroup/net_prio/samba_low/tasks16122 16124 ~]#
systemctl start nfsStarting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] ~]#
cat sys/fs/cgroup/net_prio/nfs_high/tasks16321 16325 16376Network traffic originating from NFS now has higher priority than traffic originating from Samba.
net_priosubsystem can be used to set network priorities for client applications, for example, Firefox.