[freebsd] В releng-12 опять поломали lagg?

Eugene Grosbein eugen at grosbein.net
Tue Sep 24 07:55:29 EEST 2019


On 24.09.2019 11:26, Eugene Grosbein wrote:

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

> On 24.09.2019 06:50, Yaroslav Shvets wrote:
>> Hello Eugene.
>>
>> On Mon, 23 Sep 2019, 08:51, you wrote:
>>
>>> 23.09.2019 8:46, Yaroslav Shvets пишет:
>>>
>>>> Сервер, к сожалению, рабочий, и экспериментировать часто не получается.
>>>> Но обязательно попробую, как будет возможность.
>>>>
>>>> Пока выяснилось, что сам lagg работает с нетегированными пакетами.
>>>> Проблема только - с тегированными. Т.е. не работает ни один
>>>> из vlan'ов построенных на lagg, но сам lagg - рабочий.
>>>
>>> Очень может быть, что дело как раз в сломанном аппаратном offload для vlanhwtag/vlanhwfilter.
>>> Более того, такое уже бывало в старых версиях, но с другими драйверами.
>>>
>>> Крайне желательно это выяснить побыстрей, пока ещё есть немного времени успеть починить к 12.1-RELEASE.
>>> Но времени совсем немного.
>>
>> Сразу скажу: результаты экспериментов у меня странные.
>>
>> Последовательность 1:
>> ---------------------
>> Если делать все руками, то все работает.
>> Примерно так:
>> ifconfig em0 up
>> ifconfig em1 up
>> ifconfig lagg0 create
>> ifconfig lagg0 laggproto lacp laggport em0 laggport em1 up
>> ifconfig lagg0.11 create
>> ifconfig lagg0.11 inet <ip/prefix>
>> --> интерфейс lagg0.11 оказывается рабочим
>> и это не зависит от -rxcsum -txcsum -tso4 -vlanmtu -vlanhwtag -vlanhwfilter 
>> -vlanhwcsum -vlanhwtso
>> т.е. все работает в разных сочетаниях
>>
>> Последовательность 2:
>> ---------------------
>> Если разрешить часть работы проделать rc.conf'у, примерно так:
>> -- rc.conf --
>> ifconfig_em0="up"
>> ifconfig_em1="up"
>> cloned_interfaces="lagg0 lagg0.11"
>> ifconfig_lagg0="laggproto lacp laggport em0 laggport em1 up"
>> ----------------
>> А потом вручную доделать:
>> ifconfig lagg0.11 inet <ip/prefix>
>> --> интерфейс lagg0.11 оказывается нерабочим
>> хотя выглядит абсолютно нормальным
>>
>> Последовательность 3:
>> ---------------------
>> Аналогично последовательности 2, но убираем из cloned_interfaces
>> создание lagg0.11, предполагая сделать его руками:
>> -- rc.conf --
>> ifconfig_em0="up"
>> ifconfig_em1="up"
>> cloned_interfaces="lagg0"
>> ifconfig_lagg0="laggproto lacp laggport em0 laggport em1 up"
>> ----------------
>> А потом вручную доделать:
>> ifconfig lagg0.11 create
>> ifconfig lagg0.11 inet <ip/prefix>
>> --> интерфейс lagg0.11 оказывается рабочим
>> и выглядит абсолютно нормально
>>
>> Итого: руками все создаем - все работает,
>> имеем cloned_interfaces="lagg0 lagg0.11" - не работает,
>> имеем cloned_interfaces="lagg0", а потом руками досоздаем lagg0.11 -
>> опять все работает.
>>
>> Создается впечатление, что в cloned_interfaces lagg0.11 как-то неправильно
>> создается (или раньше чего-то), или как-то не так, как руками.
>>
>> Причем интересно, что если взять последовательность 2, при которой получился
>> нерабочий интерфейс lagg0.11, удалить интерфейс, снова его создать:
>> ifconfig lagg0.11 destroy
>> ifconfig lagg0.11 create
>> ifconfig lagg0.11 inet <ip/prefix>
>> --> то все равно интерфейс получается нерабочий
>>
>> Последовательность 1 отличается от последовательности 2
>> очередностью создания 11-го vlan'а и "собиранием" lagg'а
>> 'ifconfig lagg0.11 create' и
>> 'ifconfig lagg0 laggproto lacp laggport em0 laggport em1 up'.
>> Но при ручном варианте (последовательность 1) очередность
>> собирания lagg0 и создания lagg0.11 не имеет значения.
>> Интерфейс lagg0.11 в любом случае оказывается рабочим.
>>
>> Вобщем, странные вещи происходят.
> 
> Во-первых, чудес не бывает и нерабочий интерфейс наверняка можно отличить по его состоянию.
> Покажи вывод ifconfig -v lagg0.11 в "нерабочем" виде и в "рабочем" для сравнения.
> 
> Во-вторых: что будет, если во втором варианте удалить интерфейс и снова его создать,
> но вместо новомодного синтаксиса lagg0.11 использовать старый синтаксис создания?
> 
> ifconfig vlan11 create vlan 11 vlandev lagg0 up
> # проверить работу интерфейса, а затем:
> ifconfig vlan11 name lagg0.11
> # и снова проверить работу интерфейса

Только, конечно, не вручную, а через rc.conf:

cloned_interfaces="lagg0 vlan11"
ifconfig_vlan11="vlan 11 vlandev lagg0"
#ifconfig_vlan11_name="lagg0.11"

Сначала без смены имени.



More information about the freebsd mailing list