Категорії
FreeBSD Linux OpenBSD Routers, GW, Internet Solaris

ToS / DSCP

Нагадаю, що таке ToS (Type of Service) – це можливість пріоритезувати певний трафік за рахунок виставлення спеціального байта у заголовку IP пакету. DSCP – деяке розширення (або в деякому сенсі новіша версія ToS), бо має більше різних пріоритетів (64 проти 7 у ToS).

Нюанс перший у пріоритезації – виставлення цього байту не означає, що трафік всюди буде слідувати цьому пріоритету. Треба щоб на шляху все мережеве обладнання підтримувало ці пріоритети. Зазвичай, зараз багато провайдерів просто ігнорують це на своєму обладнанні. Тому, враховуючи це, ToS/DSCP буде ефективним лише в межах вашої мережі.

Нюанс другий – ви можете як виставляти пріоритети, так і на основі вже виставлених пріоритетів керувати трафіком (наприклад, drop)

Нижче будуть показані налаштування для різних типів файерволів

iptables

TOS target options:

  –set-tos value[/mask]  Set Type of Service/Priority field to value (Zero out bits in mask and XOR value into TOS)

  –set-tos symbol        Set TOS field (IPv4 only) by symbol

                          (this zeroes the 4-bit Precedence part!)

                          Accepted symbolic names for value are:

                            (0x10) 16 Minimize-Delay

                            (0x08)  8 Maximize-Throughput

                            (0x04)  4 Maximize-Reliability

                            (0x02)  2 Minimize-Cost

                            (0x00)  0 Normal-Service

DSCP target options:

  –set-dscp value              Set DSCP field in packet header to value. This value can be in decimal (ex: 32) or in hex (ex: 0x20)

  –set-dscp-class class        Set the DSCP field in packet header to the value represented by the DiffServ class value.

This class may be EF,BE or any of the CSxx or AFxx classes.

These two options are mutually exclusive !

Ці опції можна також дізнатися і через команди:

iptables -m tos -h (або iptables -j TOS -h)
iptables -m dscp -h (або iptables -j DSCP -h)

Приклади:

  • маркування

iptables -t mangle -A PREROUTING -p tcp--dport 22 -j TOS --set-tos 0x10

iptables -A OUTPUT -t mangle -p udp -m udp --dport 5060 -j DSCP --set-dscp 0×28

  • керування:

iptables -A INPUT -p tcp -m tos --tos 0x10 -j ACCEPT

ipfw

Опції

RULE ACTIONS

setdscp DSCP | number | tablearg

      Set specified DiffServ codepoint for an IPv4/IPv6 packet.  Processing continues at the next rule.

RULE OPTIONS

iptos spec

      Matches IPv4 packets whose tos field contains the  comma separated  list  of service types specified in spec. The supported

      IP types of service are:

      lowdelay   (IPTOS_LOWDELAY),   throughput   (IPTOS_THROUGHPUT),

      reliability   (IPTOS_RELIABILITY),   mincost   (IPTOS_MINCOST),

      congestion (IPTOS_ECN_CE).  The absence of  a particula  type may be denoted with a `!’.

dscp spec[,spec]

      Matches IPv4/IPv6 packets whose DS field value is contained in spec mask.  Multiple values can be specified via the comma separated list.  Value can be one of keywords used in setdscp  action or exact number.

Параметри ToS/DSCP такі самі, тому переходимо до прикладів:

  • маркування

ipfw add setdscp be ip from any to any dscp af11,af21

  • керування

ipfw add block ip from 1.1.1.1 to any iptos lowdelay

pf

set tos string | number

Enforces a TOS for matching packets. string may be one of critical, inetcontrol, lowdelay, netcontrol, throughput, reliability, or one of the DiffServ Code Points: ef, af11af43, cs0cs7; number may be either a hex or decimal number.

У версії FreeBSD замість set tos пишемо set-tos

tos string | number

This rule applies to packets with the specified TOS bits set. string may be one of critical, inetcontrol, lowdelay, netcontrol, throughput, reliability, or one of the DiffServ Code Points: ef, af11af43, cs0cs7; number may be either a hex or decimal number.

For example, the following rules are identical:

pass all tos lowdelay

pass all tos 0x10

pass all tos 16

Приклади:

  • маркування

pass in proto tcp to port 22 set tos lowdelay

  • керування

pass in quick inet proto udp from $vlan77 tos 0xB8 

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff