LINUX.ORG.RU

Сообщения Wladimir

 

Деление канала интернета пополам через tc class, qdisc, filter

Форум — Admin

Есть подключения ppp0, vlan1 на роутере ASUS WL-500g Premium ver.1, LAN IP = 192.168.1.1, через которое шурует входящий и исходящий трафик. Далее, трафик через NAT (Network Address Translation) раскидывается на 192.168.1.2 и 192.168.1.3. Городская локальная сеть 10.0.0.0/8, домашняя локальная сеть 192.168.1.0/24.
Задача: делить пополам между 192.168.1.2 и 192.168.1.3 входящий и исходящий трафик ppp0 и vlan1.

На роутере:
{
$ uname -a
Linux 2.4.37.6 #9 2009-10-30 20:22:17 MSK mips GNU/Linux

$ ifconfig
br0 Link encap:Ethernet
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:30832903 errors:0 dropped:0 overruns:0 frame:0
TX packets:33561890 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2121901097 (1.9 GiB) TX bytes:1923506029 (1.7 GiB)

eth0 Link encap:Ethernet
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:65877064 errors:4133 dropped:0 overruns:133 frame:133
TX packets:64436656 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:898759444 (857.1 MiB) TX bytes:414717055 (395.5 MiB)
Interrupt:4 Base address:0x1000

eth1 Link encap:Ethernet
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:152915
TX packets:0 errors:232 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:12 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:190082 errors:0 dropped:0 overruns:0 frame:0
TX packets:190082 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:26985441 (25.7 MiB) TX bytes:26985441 (25.7 MiB)

ppp0 Link encap:Point-to-Point Protocol
inet addr:94.138.13.114 P-t-P:172.16.0.6 Mask:255.255.255.255
UP POINTOPOINT RUNNING MULTICAST MTU:1400 Metric:1
RX packets:329914 errors:0 dropped:0 overruns:0 frame:0
TX packets:382028 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:193920950 (184.9 MiB) TX bytes:197216556 (188.0 MiB)

vlan0 Link encap:Ethernet
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:30832907 errors:0 dropped:0 overruns:0 frame:0
TX packets:33561890 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2245233103 (2.0 GiB) TX bytes:2057753589 (1.9 GiB)

vlan1 Link encap:Ethernet
inet addr:10.2.137.143 Bcast:10.2.143.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35044165 errors:0 dropped:0 overruns:0 frame:0
TX packets:30874782 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1762714155 (1.6 GiB) TX bytes:2651943370 (2.4 GiB)
}

Почитал документацию к tc. Понял так: трафик устройств ppp0 и vlan1 идёт через устройство br0. Поэтому деление канала в скрипте ниже привязывается к устройству br0.

У корня означающего весь трафик 5 потомков:

(1) входящий WAN со скоростью 256kbit
(2) исходящий WAN со скоростью 256kbit
(3) входящий LAN со скоростью 102400kbit
(4) исходящий LAN со скоростью 102400kbit
(5) входящий и исходящий трафик непринадлежащий первым 4-м пунктам

У каждого узла из первых 4-х пунктов, по 2 потомка. Первый для 192.168.1.2, второй для 192.168.1.3, чтобы делить между 192.168.1.2 и 192.168.1.3 по отдельности входящий WAN, исходящий WAN, входящий LAN, исходящий LAN.

На сколько понял, через устройство br0 идут пакеты входящие и исходящие. Условия фильтрации пакетов:

для входящих LAN к 192.168.1.2: prio 15 u32 match ip src 10.0.0.0/8 u32 match ip dst 192.168.1.2
для входящих LAN к 192.168.1.3: prio 15 u32 match ip src 10.0.0.0/8 u32 match ip dst 192.168.1.3
для исходящих LAN от 192.168.1.2: prio 15 u32 match ip src 192.168.1.2 u32 match ip dst 10.0.0.0/8
для исходящих LAN от 192.168.1.3: prio 15 u32 match ip src 192.168.1.3 u32 match ip dst 10.0.0.0/8

для входящих WAN к 192.168.1.2: prio 20 u32 match ip dst 192.168.1.2
для входящих WAN к 192.168.1.3: prio 20 u32 match ip dst 192.168.1.3
для исходящих WAN от 192.168.1.2: prio 20 u32 match ip src 192.168.1.2
для исходящих WAN от 192.168.1.3: prio 20 u32 match ip src 192.168.1.3

Скрипт:

Wladimir
()

RSS подписка на новые темы