Show Table of Contents
4.2. Prioritizing Network Traffic
When running multiple network-related services on a single server system, it is important to define network priorities between these services. Defining these priorities ensures that packets originating from certain services have a higher priority than packets originating from other services. For example, such priorities are useful when a server system simultaneously functions as an NFS and Samba server. The NFS traffic must be of high priority as users expect high throughput. The Samba traffic can be deprioritized to allow better performance of the NFS server.
The
net_prio subsystem can be used to set network priorities for processes in cgroups. These priorities are then translated into Type Of Service (TOS) 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
- The
net_priosubsystem is not compiled in the kernel, it is a module that must be loaded manually. To do so, type:~]#
modprobenet_prio - Attach the
net_priosubsystem to the/cgroup/net_priocgroup:~]#
mkdir /cgroup/net_prio~]#mount -t cgroup -o net_prio net_prio /cgroup/net_prio - Create two cgroups, one for each service:
~]#
mkdir /cgroup/net_prio/nfs_high~]#mkdir /cgroup/net_prio/samba_low - To automatically move the
nfsservices to thenfs_highcgroup, add the following line to the/etc/sysconfig/nfsfile:CGROUP_DAEMON="net_prio:nfs_high"
This configuration ensures thatnfsservice processes are moved to thenfs_highcgroup when thenfsservice is started or restarted. For more information about moving service processes to cgroups, refer to Section 2.9.1, “Starting a Service in a Control Group”. - The
smbddaemon does not have a configuration file in the/etc/sysconfigdirectory. To automatically move thesmbddaemon to thesamba_lowcgroup, add the following line to the/etc/cgrules.conffile:*:smbd net_prio samba_low
Note that this rule moves everysmbddaemon, not only/usr/sbin/smbd, into thesamba_lowcgroup.You can define rules for thenmbdandwinbindddaemons to be moved to thesamba_lowcgroup in a similar way. - Start the
cgredservice to load the configuration from the previous step:~]#
service cgred startStarting 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, where1denotes low priority and10denotes high priority:~]#
echo "eth1 1" > /cgroup/net_prio/samba_low~]#echo "eth1 10" > /cgroup/net_prio/nfs_high - Start the
nfsandsmbservices and check whether their processes have been moved into the correct cgroups:~]#
service smb startStarting SMB services: [ OK ] ~]#cat /cgroup/net_prio/samba_low16122 16124 ~]#service nfs startStarting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] ~]#cat /cgroup/net_prio/nfs_high16321 16325 16376Network traffic originating from NFS now has higher priority than traffic originating from Samba.
Similar to Procedure 4.2, “Setting Network Priorities for File Sharing Services”, the
net_prio subsystem can be used to set network priorities for client applications, for example, Firefox.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.