Jump to content
Калькуляторы

NAT+HTB не срабатывает u32 классификатор

Доброго времени суток!

Имеется сервер под управлением CentOS 5.1 поднят NAT и тестовый шейпер на основе HTB

Правила шейпера:
#!/bin/bash
DEV="eth1"

tc qdisc del dev $DEV root    2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

#Добавляю дисциплину оброботки очереди на устр-во eth1
tc qdisc add dev $DEV root handle 1: htb default 100
tc qdisc add dev $DEV handle ffff: ingress

#Корневой класс и класс куда будет попадать не классифицированный трафик
tc class add dev $DEV parent 1: classid 1:1 htb rate 1024kbit
tc class add dev $DEV parent 1: classid 1:100 htb rate 512kbit

#Краевые классы
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 512kbit ceil 1024kbit
tc class add dev $DEV parent 1:1 classid 1:11 htb rate 512kbit ceil 1024kbit

#Дисциплины обработки очереди для краевых классов
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 10

#Фильтры классифицирующие трафик и направляющие его в классы
tc filter add dev $DEV protocol ip parent 1: prio 1 u32 match ip src 192.168.2.240 flowid 1:10
tc filter add dev $DEV protocol ip parent 1: prio 1 u32 match ip src 192.168.2.245 flowid 1:11

 

Проблема в том что эти фильтры не србатывают и весь трафик попадает в очередь для неклассифицированного трафика

 

tc -s qdisc show dev eth1
qdisc htb 1: r2q 10 default 100 direct_packets_stat 0
Sent 95179 bytes 144 pkt (dropped 0, overlimits 76 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc ingress ffff: ----------------
Sent 18544 bytes 140 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:10 limit 128p quantum 1514b perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 11: parent 1:11 limit 128p quantum 1514b perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

 

Подскажите плиз в чём может быть причина.

Share this post


Link to post
Share on other sites

А Вы по каким адресам фильтруете? Которые до NAT или после?

Share this post


Link to post
Share on other sites

До NAT. Это адреса в моей LAN.

Поясню немного детальнее:На сервере два интерфейса eth0 и eth1. eth1 смотрит в LAN а eth0 в WAN.

[root@hydra ~]# ifconfig | less
eth0      Link encap:Ethernet  HWaddr 00:18:F3:BF:72:77
          inet addr:213.227.241.95 Bcast:213.227.241.95  Mask:255.255.255.255
          inet6 addr: fe80::218:f3ff:febf:7277/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5785225 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4666546 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2305068286 (2.1 GiB)  TX bytes:816029540 (778.2 MiB)
          Interrupt:201

eth1      Link encap:Ethernet  HWaddr 00:E0:4C:6B:00:3F
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:4cff:fe6b:3f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4542821 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5570090 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:767849205 (732.2 MiB)  TX bytes:2212890265 (2.0 GiB)
          Interrupt:209 Base address:0xec00

eth1:1    Link encap:Ethernet  HWaddr 00:E0:4C:6B:00:3F
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:209 Base address:0xec00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:28582 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28582 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2992862 (2.8 MiB)  TX bytes:2992862 (2.8 MiB)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:213.227.241.95  P-t-P:195.248.176.170  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:1848971 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1398436 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2044047058 (1.9 GiB)  TX bytes:147527518 (140.6 MiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.10.10.1  P-t-P:10.10.10.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:41284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40116 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:25232463 (24.0 MiB)  TX bytes:8749354 (8.3 MiB)

Edited by keferoff

Share this post


Link to post
Share on other sites

вот результат с dst

Похоже что заработало :) Теперь хоть траф начал классифицироваться!

Спасибо вам большое!

 

[root@hydra ~]# tc -s qdisc show dev eth1
qdisc htb 1: r2q 10 default 100 direct_packets_stat 3
Sent 1856724 bytes 1884 pkt (dropped 0, overlimits 2533 requeues 0)
rate 0bit 0pps backlog 0b 1p requeues 0
qdisc ingress ffff: ----------------
Sent 163816 bytes 1427 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:10 limit 128p quantum 1514b perturb 10sec
Sent 1425 bytes 18 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 11: parent 1:11 limit 128p quantum 1514b perturb 10sec
Sent 1372740 bytes 989 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 122b 1p requeues 0

Edited by keferoff

Share this post


Link to post
Share on other sites

Хм, если так, то тогда интересно почему в обоих очередях

(dropped 0, overlimits 0 requeues 0) 
rate 0bit 0pps backlog 122b 1p requeues 0

Если судить по этим данным то скорость не ограничивается, иначе были бы overlimits. Или сдесь какойто нюанс?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this