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

Полка в софт роутере

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

Собрал linux soft router на процессоре AMD. Выполняет функции NAT + шейпер, столкнулся с проблемой - полка по трафику 100 МБит/с в сторону пользователей. При этом если полностью загрузить download, upload резко снижается. Шейпер на время тестов отключен.

 

Имеем два интерфейса

# lspci | grep Ethernet
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
03:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)
04:00.0 Ethernet controller: Qualcomm Atheros AR8161 Gigabit Ethernet (rev 10)

 

# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
         inet addr: xxx.xxx.xxx.xxx  Bcast:xxx.xxx.xxx.xxx  Mask:xxx.xxx.xxx.xxx
         inet6 addr: fe80::96de:80ff:fe36:8040/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:180793214 errors:0 dropped:0 overruns:0 frame:0
         TX packets:166373269 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:10000
         RX bytes:173474056492 (173.4 GB)  TX bytes:109910034467 (109.9 GB)
         Interrupt:18

eth2.1000 Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
         inet addr:172.16.0.1  Bcast:172.16.0.255  Mask:255.255.255.0
         inet6 addr: fe80::6a05:caff:fe1f:880e/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:172972645 errors:0 dropped:0 overruns:0 frame:0
         TX packets:162051906 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:116948904210 (116.9 GB)  TX bytes:172161985340 (172.1 GB)

lo        Link encap:Локальная петля (Loopback)
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:25453 errors:0 dropped:0 overruns:0 frame:0
         TX packets:25453 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:4253665 (4.2 MB)  TX bytes:4253665 (4.2 MB)

 

# cat /proc/interrupts | grep eth
43:     100642  101150690   36673482      45871   PCI-MSI-edge      eth2-rx-0
44:          0   38945210          1   89018034   PCI-MSI-edge      eth2-tx-0
45:          0          0          0         10   PCI-MSI-edge      eth2
46:          0          0          1      47023   PCI-MSI-edge      eth1
47:         94          0          1      62867   PCI-MSI-edge      eth0
48:        305      19118   18086501    8601684   PCI-MSI-edge      eth0-TR-0
49:   91715854          0      82221      34102   PCI-MSI-edge      eth0-TR-1
50:      27761      19928          3   27759835   PCI-MSI-edge      eth0-TR-2
51:      69948    8480944     807610   25949874   PCI-MSI-edge      eth0-TR-3

 

# ethtool eth0
Settings for eth0:
       Supported ports: [ TP ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Supported pause frame use: Symmetric
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Advertised pause frame use: Symmetric
       Advertised auto-negotiation: Yes
       Speed: 1000Mb/s
       Duplex: Full
       Port: Twisted Pair
       PHYAD: 0
       Transceiver: internal
       Auto-negotiation: on
       MDI-X: Unknown
       Supports Wake-on: pg
       Wake-on: pg
       Current message level: 0x000060e4 (24804)
                              link ifup rx_err tx_err hw wol
       Link detected: yes

# ethtool eth2
Settings for eth2:
       Supported ports: [ TP ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Supported pause frame use: No
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Advertised pause frame use: No
       Advertised auto-negotiation: Yes
       Speed: 1000Mb/s
       Duplex: Full
       Port: Twisted Pair
       PHYAD: 1
       Transceiver: internal
       Auto-negotiation: on
       MDI-X: on (auto)
       Supports Wake-on: pumbg
       Wake-on: g
       Current message level: 0x00000007 (7)
                              drv probe link
       Link detected: yes

 

 

eth0 - встроенная сетевая карта, аплинк в сторону провайдера.

eth2 - смотрит на пользователей, пользователи все в одном влане 1000. Эта сетевая карта имеет интерфейс PCIe x1, я думаю не в этом дело?

 

Все сетевые карты воткнуты в один L2 коммутатор - TP-Link TL-SG5412F, все порты гигабитные. Патчкорды менял, да не в них дело, светодиод на коммутаторе горит зеленым цветом.

В сторону провайдера, скорость заявленная, если скачать что то через wget, провайдер отдает полную скорость на этом роутере.

Знаю что сетевые карты плохие, но у меня расчетный трафик - 300 МБит/с, без роста, т.е на этом роутере роста трафика не будет. Нужно просто отроутить на чем есть 300 МБит трафика и все. Вот такая вот специфическая задача.

В чем может быть дело?

Edited by engdev

Share this post


Link to post
Share on other sites

top - 18:11:30 up  7:35,  2 users,  load average: 0,05, 0,08, 0,12
Tasks: 129 total,   1 running, 128 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,2 us,  0,1 sy,  0,0 ni, 96,7 id,  1,7 wa,  0,0 hi,  1,4 si,  0,0 st
КиБ Mem:   7652192 total,   822676 used,  6829516 free,   139248 buffers
КиБ Swap:  7852028 total,        0 used,  7852028 free,   379128 cached

 

Загрузка CPU 3-4%. eth2 без влана не пробовал, но разве может быть в этом дело?

 

iptables только правило на FORWARD, и два списка ipset

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             match-set FREAL dst
ACCEPT     all  --  anywhere             anywhere             match-set FREAL src
ACCEPT     all  --  anywhere             anywhere             match-set FFIN dst
ACCEPT     all  --  anywhere             anywhere             match-set FFIN src

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere

 

eth0 - Qualcomm Atheros AR8161 Gigabit Ethernet (rev 10) - смотрит в сторону провайдера, тут все ок

eth2 - Intel Corporation 82574L Gigabit Network Connection - смотрит на пользователей, полка 100 МБит/с

Edited by engdev

Share this post


Link to post
Share on other sites

Пока грешу на влан, завтра попробую без без него, если в этом есть смысл.

Share this post


Link to post
Share on other sites

По симптомам похоже на загрузку по шине. Но шина pci-e 1x дает 250 мбайт в секунду.

 

Покажите график если есть.

Share this post


Link to post
Share on other sites

Используйте

02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
03:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)

, а атерос или забыть или использовать для всякой мелочи.

Edited by passer

Share this post


Link to post
Share on other sites

, а атерос или забыть или использовать для всякой мелочи.

Ок, но в данном случае почему то полка на сетевой карте от Intel.

Share this post


Link to post
Share on other sites

А что было в 10 часов?

Может быть просто счетчики для графиков переполняются? :)

Share this post


Link to post
Share on other sites

Не знаю. Зато на личном опыте знаю, что Intel + vlan проблем не вызывает.

 

Возможно сетевка неисправна, возможно железка "тупит" с которой сетевка работает. Да много чего бывает.

 

 

Share this post


Link to post
Share on other sites

Интел рулит это точно, но у ТС явно проблема с графиком. У него там трафика больше сотни, 32 битные счетчики переполнились - на графике херня, он думает, что проблема в сетевыми.

Тот момент где исходящий вырос, а входящий упал точно так же можно объяснить.

 

2engdev, почините графики сначала, может быть проблемы и нет.

 

p.s. Если это кактус, то надо выбрать 64-bit counters. Если был выбран изначально, то пересоздать график.

p.p.s. И вообще-то "полка" выглядит примерно так:

plate.png

Share this post


Link to post
Share on other sites

Интел рулит это точно, но у ТС явно проблема с графиком. У него там трафика больше сотни, 32 битные счетчики переполнились - на графике херня, он думает, что проблема в сетевыми.

Тот момент где исходящий вырос, а входящий упал точно так же можно объяснить.

 

2engdev, почините графики сначала, может быть проблемы и нет.

 

p.s. Если это кактус, то надо выбрать 64-bit counters. Если был выбран изначально, то пересоздать график.

 

По графикам +1, но пересоздавать ничего не надо, можно просто исправить в настройка кактуса

 

ну и автору почитать http://forum.nag.ru/forum/index.php?showtopic=92786&view=findpost&p=941882

Share this post


Link to post
Share on other sites

Как-то на полку-то, конечно, ни разу не похоже...

 

Интелы 82574L конечно не высший свет, но уж и не откровенное дерьмо. Имхо ваша проблема совершенно не в этом.

Есть ли какие признаки "полки" кроме странных графиков? Увеличение задержек, дропы?

Вам апстрим больше 100Мбит хоть дает?

Share this post


Link to post
Share on other sites

Как-то на полку-то, конечно, ни разу не похоже...

 

Интелы 82574L конечно не высший свет, но уж и не откровенное дерьмо. Имхо ваша проблема совершенно не в этом.

Есть ли какие признаки "полки" кроме странных графиков? Увеличение задержек, дропы?

Вам апстрим больше 100Мбит хоть дает?

Апстрим дает 500 Мбит/с, через wget эту скорость я получаю.

 

По поводу графиков действительно ошибся, поставил 64 битные счетчики, посмотрим что будет.

nload не показывает мне скорость выше 100 Мбит/с, бывает конечно резкий скачок на 110, и сразу резко вниз на 95.

Дропов, увеличение пингов не наблюдается.

Edited by engdev

Share this post


Link to post
Share on other sites

Если это кактус, то надо выбрать 64-bit counters. Если был выбран изначально, то пересоздать график.

 

Откройте для себя плагин fix64bit ;)

Share this post


Link to post
Share on other sites

Если это кактус, то надо выбрать 64-bit counters. Если был выбран изначально, то пересоздать график.

 

Откройте для себя плагин fix64bit ;)

 

Ок. Спасибо. У меня бывает на 3750 такая херня, график 64, но рисует с переполнением. Решал пересозданием. Ну если плагин фиксит одной кнопкой, то гут ;)

Share this post


Link to post
Share on other sites

график 64, но рисует с переполнением. Решал пересозданием.

 

Здесь:

 

"Data Queries" -> "SNMP - Interface Statistics" -> "In/Out Bits (64-bit Counters)"

 

Посмотрите что представляет из себя rrd_maximum - если оно равно "query_ifSpeed", то возможно, что в момент создания графика SNMP сказало что скорость интерфейса, например, 100Мбит и RRD файл создался с максимумом не позволяющим в него впихнуть 1Гбит. Когда график пересоздавали, то SNMP мог отдать нормальную скорость, после чего данные влазили.

Чтобы данные всегда "помещались" я сделал у себя так:

 

1b338d6d1091.jpg

 

Т.е. тупо-в-лоб ставим 10 или даже 100 Гбит даже для интерфейсов в 1Мбит :)

 

 

В настройках плагина можно указать RRD max, чтобы при пересборке RRD файла (там вроде дамп -> создание нового -> заливка) было нужное значение:

 

b38a553179f0.jpg

Share this post


Link to post
Share on other sites

А так и было. Графики были созданы пока интерфейс был в down, я еще сразу подумал, что он тупо не влезает из-за максимума.

Share this post


Link to post
Share on other sites

Графики были созданы пока интерфейс был в down

 

Вот для этого и сделано так, как на 1-й пикче ;) После такого финта можно сразу строить графики даже с отключенных портов. Плагин же позволяет исправлять косяки, когда по-запарке создали график не 64-х битный, а 32-х битный.

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

Share this post


Link to post
Share on other sites

Вообщем оказалось что глючит Qualcomm Atheros AR8161 Gigabit Ethernet которая смотрит в мир. Через wget она выдает полную скорость, а через iperf -c <соседу в сервер> упираемся опять в 20-70 Мбит/с в зависимости от нагрузки канала. Не знаю почему так. Завтра заменю на Intel, смотрю что будет.

Share this post


Link to post
Share on other sites

У вас на борту 3 сетевки. Используйте 2 Intel'а. Для ваших нужд Intel 571, 572, 574, 579 за глаза хватит.

Edited by passer

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