Качество обслуживания

На данный момент управление качеством обслуживания возможно только через консольный интерфейс с помощью программы tc, позволяющей создавать классы, фильтры, а так же назначить дисциплину обслуживания.

Целью этой главы не является полное описание возможностей шейпинга траффика в ОС Linux (на которой базируется ПО маршрутиазтора), а лишь рассмотрение основных моментов его использования.

В первую очередь следует отметить, что управлять скоростью можно только исходящего трафика (что, в общем, вполне разумно), поэтому при написании правил шейпинга необходимо определить интерфейс, на котором этот трафик будет исходящим. Рассмотрим в качестве примера простую сеть, схема которой представленна ниже:

Рисунок 5.16. Пример сети

Пример сети

К примеру, если мы хотим ограничить пропускную способность канала для входящего трафика к хосту PC2, то нам необходимо работать с интерфейсом eth1 маршрутизатора, поскольку через него проходит иходящий трафик к хосту PC2. В качестве примера ограничим весь трафик, поступающию на PC2, для этого нам необходимо выполнить следующие команды:

		# tc qdisc add dev eth1 root handle 1: htb
		# tc class add dev eth1 parent 1: classid 1:1 htb rate 200kbps
		# tc filter add dev eth1 parent 1: prio 1 protocol ip u32 match ip dst 192.168.90.2 flowid 1:1
		

Первая команда указывает, что для интерфейса eth1 будет использоваться HTB - пакетный шедулер, непосредственно и занимающийся шейпингом трафика (к примеру, еще есть CBQ). Вторая команда создает класс, являющимся дочерним первого (параметр parent 1:), назначающий ему класс 1:1 (classid 1:1), и максимальную скорость в 200kbps - кбайт в секунду. Последняя команда создает фильтр с приоритетом 1 (prio 1), назначающийся корневому классу (parent 1:) и направляющий весь трафик, удовлетворяющий критерию, что IP-адрес получателя пакета равен 192.168.90.2 (protocol ip u32 match ip dst 192.168.90.2), в класс 1:1 (flowid 1:1).