Имею вашинку с тремя интерфейсами (третий неважен так как смотрит в локалку).
Внешние интерфейсы (оба D-Link DFE-520TX):
vr0
ifconfig_vr0="inet 222.222.33.146 netmask 255.255.255.252"
(шлюз для этого интерфейса 222.222.33.145)
vr1
ifconfig_vr1="inet 111.111.15.40 netmask 255.255.255.240"
(шлюз для этого интерфейса 111.111.15.33)defaultrouter="111.111.15.33"
На мащине включен gateway_enable="YES"
Форвардингом в ipfw делаю так, чтобы пакет, пришедший на адрес интерфейса
vr0 (который не является шлюзом по умолчанию) уходили через него наружу:# ipfw -a list
00010 1322 110992 fwd 222.222.33.145 ip from 222.222.33.146 to any out not via vr0
65535 36586 3307927 allow ip from any to anyвсе замичательно работает и уходит через нужный интерфес.
пинги прекрасно ходят:# ping 111.111.15.19
PING 111.111.15.19 (111.111.15.19): 56 data bytes
64 bytes from 111.111.15.19: icmp_seq=0 ttl=63 time=0.875 ms
64 bytes from 111.111.15.19: icmp_seq=1 ttl=63 time=0.871 ms
64 bytes from 111.111.15.19: icmp_seq=2 ttl=63 time=0.769 msчерез интерфейс не являющийся шлюзом по умолчанию:
# ping -S 222.222.33.146 111.111.15.19
PING 111.111.15.19 (111.111.15.19) from 222.222.33.146: 56 data bytes
64 bytes from 111.111.15.19: icmp_seq=0 ttl=58 time=105.057 ms
64 bytes from 111.111.15.19: icmp_seq=1 ttl=58 time=58.239 ms
64 bytes from 111.111.15.19: icmp_seq=2 ttl=58 time=61.192 msтакже я вижу tcpdump'ом что все идет через нужный интерфейс.
НО!
Если выдернуть шнурок из сетевухи которая является шлюзом по умолчанию (vr1)
и дать команду:# ping 111.111.15.19
то через некоторое врямя получаем:
ping: sendto: No buffer space available
ping: sendto: No buffer space available
ping: sendto: No buffer space available
...те как я понимаю забивается буфер отправки интерфейса
команда пинга через интерфейс не являющийся шлюзом по умолчанию
дает тот же результат:
# ping -S 222.222.33.146 111.111.15.19
ping: sendto: No buffer space available
ping: sendto: No buffer space available
ping: sendto: No buffer space available
при этом шлюз данного интерфеса пингуется:
# ping 222.222.33.145
PING 222.222.33.145 (222.222.33.145): 56 data bytes
64 bytes from 222.222.33.145: icmp_seq=0 ttl=255 time=0.760 ms
64 bytes from 222.222.33.145: icmp_seq=1 ttl=255 time=0.621 ms
64 bytes from 222.222.33.145: icmp_seq=2 ttl=255 time=0.588 ms
те его буфер не забитЕсли положить дефолтный интерфейс в down:
# ifconfig vr1 down
по все начинает ходить (через vr0 с его scr адресом)
- как я понимаю пакеты уже не копятся в буфере vr1, а дропаются.
Если обратно поднять интерфейс:
# ifconfig vr1 up
то через некоторое врямя ситуация повторяется, снова забивает буфер vr1.Если воткнуть сетевой шнурок в любой хабик/свитч ни с чем не соединенный
(те чисто чтобы получить линк на сетевухе) то проблема исчезает - те пакеты
также дропаютсяЧто это может быть? Почему пакеты интерфейса в состоянии link down
копятся в буфере? Или как скажем настроить интерфейс чтобы он сам уходил в down
при потери линка?
Не могу понять куда копать ... туплю сафсем )
Могу предположить, что пакеты копятся пока линка нет из-за того, что сетевуха пытается после обрыва провести с удаленной стороной согласование скоростей. Процесс это небыстрый и неоднозначный. Вкупе с какими-ньть ошибкаи или недоработками в фирмваре может и не закончиться - вертеться в цикле, не давая ядру команду обрыва линка.Короче. Это все догадки. Чтобы проверить задай
ifconfig vr0 и vr1 media 100baseTX mediaopt full-duplex
ну или какой там должен быть на твоем линке. Если поможет, значит моя теория верна.Дааа! И карточки сетевые я бы сменил, не жмотился бы :) По моим наблюдениям самые стабильные это все-таки реалтеки, трикомы и интелы. А все остальное рано или поздно напоминает о себе...
>Могу предположить, что пакеты копятся пока линка нет из-за того, что сетевуха
>пытается после обрыва провести с удаленной стороной согласование скоростей. Процесс это
>небыстрый и неоднозначный. Вкупе с какими-ньть ошибкаи или недоработками в фирмваре
>может и не закончиться - вертеться в цикле, не давая ядру
>команду обрыва линка.
>
>Короче. Это все догадки. Чтобы проверить задай
>ifconfig vr0 и vr1 media 100baseTX mediaopt full-duplex
>ну или какой там должен быть на твоем линке. Если поможет, значит
>моя теория верна.это уже пробовал
>Дааа! И карточки сетевые я бы сменил, не жмотился бы :) По
>моим наблюдениям самые стабильные это все-таки реалтеки, трикомы и интелы. А
>все остальное рано или поздно напоминает о себе...ммм есть пара карточег zyxel - попробуй поменять ...
думаете трабла в фирваре?
попробовал картояки zyxel (на realtek)
таже фегня - не в сетевухе дело ...
>ммм есть пара карточег zyxel - попробуй поменять ...
>думаете трабла в фирваре?Не знаю, это поиск, причем вслепую.
Но врядли у карточек другого производителя будет точно такой же глюк. Смена карточки внесет ясность в принадлежность глюка. Ведь хочется знать в железке проблема, в драйверах или в настройке софта.
>>ммм есть пара карточег zyxel - попробуй поменять ...
>>думаете трабла в фирваре?
>
>Не знаю, это поиск, причем вслепую.
>Но врядли у карточек другого производителя будет точно такой же глюк. Смена
>карточки внесет ясность в принадлежность глюка. Ведь хочется знать в железке
>проблема, в драйверах или в настройке софта.видимо дело во фре которая продолжает слать пакеты на link down интерфес и переполняет буфер
пытаюсь найти как бы тогда класть саму карточку в down при потере линка
можно конечно написать мониторчик - но думаю при резком скачке трафика он не будет просто успевать реагировать на это событие