FreeBSD Pipe
Добавлено: 11 окт 2011, 12:54
Есть сервер Intel SR2600urlx. Пытаюсь сделать из него шэйпер с помощью Dummynet.
sr2600# uname -a
FreeBSD sr2600 8.2-STABLE FreeBSD 8.2-STABLE
Набор правил ipfw:
Клиентов пока порядка ~400, на клиента выделяется сеть/30, в таблицу сеткой и добавляются.
Проблема в том, что когда включаю ipfw перестает ходить интернет, при пинге клиентских ипов пишет "ping: sendto: No buffer space available". При попытке пинга клиентом "мир" по tcpdump'у вижу эхо-регуест и эхо-ансвер, но клиент утверждает что у него пинг отвечает "превышен интервал.."
В час пик на роутере статистика:
sr2600# netstat -dhw1
sr2600# top -SIP
Поллинг не включен.
На сколько я понимаю это происходит потому, что забиваются очереди пайпов, но при такой же конфигурации должно выделяться на каждый ип своя очередь/пайп или же все таки получается, что на каждую таблицу именно один пайп выделяется с одной очередью пакетов на всех? Ведь если бы на каждого клиента выделялся бы свой пайп, не могут же все разом свои очереди забить...
ЗЫ сумбурно, но смысл уловить можно, а так ниид хелп
sr2600# uname -a
FreeBSD sr2600 8.2-STABLE FreeBSD 8.2-STABLE
Набор правил ipfw:
- Код: Выделить всё
${FwCMD} add pipe 1 ip from table\(1\) to any in
${FwCMD} add pipe 2 ip from table\(2\) to any in
${FwCMD} add pipe 3 ip from table\(3\) to any in
${FwCMD} add pipe 4 ip from table\(4\) to any in
${FwCMD} add pipe 5 ip from table\(5\) to any in
${FwCMD} add pipe 6 ip from table\(6\) to any in
${FwCMD} add pipe 7 ip from table\(7\) to any in
${FwCMD} add pipe 8 ip from table\(8\) to any in
${FwCMD} add pipe 9 ip from table\(9\) to any in
${FwCMD} add pipe 10 ip from table\(10\) to any in
${FwCMD} add pipe 100 ip from table\(100\) to any in
${FwCMD} add pipe 11 ip from any to table\(1\) out
${FwCMD} add pipe 12 ip from any to table\(2\) out
${FwCMD} add pipe 13 ip from any to table\(3\) out
${FwCMD} add pipe 14 ip from any to table\(4\) out
${FwCMD} add pipe 15 ip from any to table\(5\) out
${FwCMD} add pipe 16 ip from any to table\(6\) out
${FwCMD} add pipe 17 ip from any to table\(7\) out
${FwCMD} add pipe 18 ip from any to table\(8\) out
${FwCMD} add pipe 19 ip from any to table\(9\) out
${FwCMD} add pipe 20 ip from any to table\(10\) out
${FwCMD} add pipe 101 ip from any to table\(100\) out
${FwCMD} pipe 1 config mask src-ip 0xffffffff bw 64kbit/s
${FwCMD} pipe 11 config mask dst-ip 0xffffffff bw 64kbit/s
${FwCMD} pipe 2 config mask src-ip 0xffffffff bw 128kbit/s
${FwCMD} pipe 12 config mask dst-ip 0xffffffff bw 128kbit/s
${FwCMD} pipe 3 config mask src-ip 0xffffffff bw 256kbit/s
${FwCMD} pipe 13 config mask dst-ip 0xffffffff bw 256kbit/s
${FwCMD} pipe 4 config mask src-ip 0xffffffff bw 512kbit/s
${FwCMD} pipe 14 config mask dst-ip 0xffffffff bw 512kbit/s
${FwCMD} pipe 5 config mask src-ip 0xffffffff bw 1024kbit/s
${FwCMD} pipe 15 config mask dst-ip 0xffffffff bw 1024kbit/s
${FwCMD} pipe 6 config mask src-ip 0xffffffff bw 2048bit/s
${FwCMD} pipe 16 config mask dst-ip 0xffffffff bw 2048bit/s
${FwCMD} pipe 7 config mask src-ip 0xffffffff bw 3072kbit/s queue 50KBytes
${FwCMD} pipe 17 config mask dst-ip 0xffffffff bw 3072kbit/s queue 50KBytes
${FwCMD} pipe 8 config mask src-ip 0xffffffff bw 4096bit/s
${FwCMD} pipe 18 config mask dst-ip 0xffffffff bw 4096bit/s
${FwCMD} pipe 9 config mask src-ip 0xffffffff bw 5120kbit/s
${FwCMD} pipe 19 config mask dst-ip 0xffffffff bw 5120kbit/s
${FwCMD} pipe 10 config mask src-ip 0xffffffff bw 10240kbit/s
${FwCMD} pipe 20 config mask dst-ip 0xffffffff bw 10240kbit/s
${FwCMD} pipe 100 config mask src-ip 0xffffffff bw 64kbit/s
${FwCMD} pipe 101 config mask dst-ip 0xffffffff bw 64kbit/s
Клиентов пока порядка ~400, на клиента выделяется сеть/30, в таблицу сеткой и добавляются.
Проблема в том, что когда включаю ipfw перестает ходить интернет, при пинге клиентских ипов пишет "ping: sendto: No buffer space available". При попытке пинга клиентом "мир" по tcpdump'у вижу эхо-регуест и эхо-ансвер, но клиент утверждает что у него пинг отвечает "превышен интервал.."
В час пик на роутере статистика:
sr2600# netstat -dhw1
- Код: Выделить всё
input (Total) output
packets errs idrops bytes packets errs bytes colls drops
129k 0 0 89M 134k 0 92M 0 0
140k 0 0 101M 145k 0 105M 0 0
149k 0 0 105M 154k 0 108M 0 0
143k 0 0 104M 147k 0 108M 0 0
134k 0 0 95M 138k 0 98M 0 0
142k 0 0 103M 146k 0 106M 0 0
126k 0 0 87M 130k 0 90M 0 0
147k 0 0 102M 152k 0 106M 0 0
143k 0 0 100M 149k 0 104M 0 0
142k 0 0 103M 146k 0 107M 0 0
137k 0 0 97M 142k 0 100M 0 0
128k 0 0 88M 133k 0 92M 0 0
sr2600# top -SIP
- Код: Выделить всё
last pid: 42195; load averages: 1.28, 1.15, 1.08 up 32+14:10:25 13:40:15
230 processes: 19 running, 154 sleeping, 57 waiting
CPU 0: 0.0% user, 0.0% nice, 0.6% system, 8.4% interrupt, 91.0% idle
CPU 1: 0.0% user, 0.0% nice, 0.6% system, 11.2% interrupt, 88.2% idle
CPU 2: 0.0% user, 0.0% nice, 0.0% system, 11.8% interrupt, 88.2% idle
CPU 3: 0.0% user, 0.0% nice, 0.0% system, 13.5% interrupt, 86.5% idle
CPU 4: 0.0% user, 0.0% nice, 2.2% system, 0.0% interrupt, 97.8% idle
CPU 5: 2.3% user, 0.0% nice, 1.1% system, 0.0% interrupt, 96.6% idle
CPU 6: 0.0% user, 0.0% nice, 4.5% system, 0.0% interrupt, 95.5% idle
CPU 7: 0.0% user, 0.0% nice, 6.2% system, 0.0% interrupt, 93.8% idle
CPU 8: 0.0% user, 0.0% nice, 7.9% system, 0.0% interrupt, 92.1% idle
CPU 9: 0.0% user, 0.0% nice, 1.1% system, 0.0% interrupt, 98.9% idle
CPU 10: 0.0% user, 0.0% nice, 6.7% system, 0.0% interrupt, 93.3% idle
CPU 11: 0.6% user, 0.0% nice, 4.5% system, 0.0% interrupt, 94.9% idle
CPU 12: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 13: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 14: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 15: 0.0% user, 0.0% nice, 0.0% system, 5.6% interrupt, 94.4% idle
Mem: 282M Active, 664M Inact, 767M Wired, 164K Cache, 821M Buf, 6109M Free
Swap: 4096M Total, 4096M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 16 171 ki31 0K 256K CPU0 0 ??? 1548.05% idle
12 root 57 -68 - 0K 912K WAIT 3 240.9H 56.25% intr
0 root 35 -68 0 0K 544K - 12 143.3H 37.55% kernel
59894 bind 1 45 0 106M 104M kqread 11 527:36 3.96% named
17045 root 1 45 0 300M 294M select 9 293:44 2.20% bgpd
Поллинг не включен.
На сколько я понимаю это происходит потому, что забиваются очереди пайпов, но при такой же конфигурации должно выделяться на каждый ип своя очередь/пайп или же все таки получается, что на каждую таблицу именно один пайп выделяется с одной очередью пакетов на всех? Ведь если бы на каждого клиента выделялся бы свой пайп, не могут же все разом свои очереди забить...
ЗЫ сумбурно, но смысл уловить можно, а так ниид хелп