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

x86 bonding l2mtu

Начиная с версии ROS 6.36 в конфиге микротика появилась такая сущность как l2mtu и эта сущность теперь учитывается микротиком, при создании интерфейсов.

Внезапно обнаружилась проблема с bonding на x86 микротике, начиная с версии ROS 6.37.

При создании vlan на интерфейсе bonding, получим ошибку - cold not set MTU (6). Интерфейс vlan на ROS 6.37 при этом создается.

Но ! Начиная с этой версии ROS, перестанет работать бондинг.

Если кто то подумал что на текущей актуальной версии ROS 6.43.8 проблема с bonding уже решена, это не так.

Эта проблема затрагивает разные сетевые карты, в нашем случае это были intel i350, x520-da.

На картах intel 82574L и 82571EB этой проблемы нет, но они нам не подходят, для решения наших задач.

 

Есть просьба, у кого есть возможность проверить данную проблему, указав вывод из терминала или скрин винбокса.

С информацией о сетевой карте(идентифицировал ее микротик или нет) и l2mtu, на интерфейсах ether, bonding, vlan.

 

Как узнать что на вашем x86 проблема существует ? Очень просто. Необходимо использовать версию ROS 6.37 и выше.

Необходимо посмотреть, вывод терминала или посредством утилиты winbox, параметр l2mtu интерфейса сетевой карты.

Как видно из примера, l2mtu для интерфейсов ether1-2 отсутствует.

Если l2mtu отсутствует, то вероятней всего что Вы воспроизведете эту проблему.

Создав бондинг на интефейсах ether1-2, мы получили не работающий бондинг.

К тому же если выключить-включить бондинг, интерфейсы vlan не получат флаг R.

Другой вопрос что создать этот бондинг не так просто.

Для этого необходимо создать вланы на ether интерфейсах, потом изменить интерфейс ether на bonding и со второй попытки, это удается сделать.

Первый раз получим ошибку - cold not set MTU (6).

 

Первый пример проблемного bonding, мак адрес изменен.

/interface bonding
add disabled=yes link-monitoring=none mode=802.3ad name=bonding1 slaves=ether1,ether2 transmit-hash-policy=layer-2-and-3
/interface vlan
add interface=bonding1 name=vlan1 vlan-id=1
add interface=bonding1 name=vlan2 vlan-id=2

int pr         
Flags: D - dynamic, X - disabled, R - running, S - slave 
 #     NAME                                TYPE       ACTUAL-MTU L2MTU  MAX-L2MTU MAC-ADDRESS      
 0  R  ether0                              ether            1500  4080            00:00:00:00:00:00
 1  R  ether1                              ether            1500                  00:00:00:00:00:00
 2  R  ether2                              ether            1500                  00:00:00:00:00:00
 5  R  bonding1                            bond             1500  1500            00:00:00:00:00:00
 6  R  vlan1                               vlan             1500  1496            00:00:00:00:00:00
 7  R  vlan2                               vlan             1500  1496            00:00:00:00:00:00

 

 Второй пример рабочего бондинга.

int print                        
Flags: D - dynamic, X - disabled, R - running, S - slave 
 #     NAME                                TYPE       ACTUAL-MTU L2MTU  MAX-L2MTU MAC-ADDRESS      
 0  R  ether1                              ether            1500                  00:00:00:00:00:00
 1  R  ether2                              ether            1500                  00:00:00:00:00:00
 2  R  ether3                              ether            1500                  00:00:00:00:00:00
 3  R  ether4                              ether            1500                  00:00:00:00:00:00
 4  RS ether5                              ether            1500  9014            00:00:00:00:00:00
 5  RS ether6                              ether            1500  9014            00:00:00:00:00:00
 6  R  bonding1                            bond             1500  9014            00:00:00:00:00:00
 7  R  vlan1                               vlan             1500  9010            00:00:00:00:00:00
 8  R  vlan2                               vlan             1500  9010            00:00:00:00:00:00

Можно предположить что l2mtu отсутствует только на неизвестном устройстве, но это не так.

10G адаптеры в другом сервере, определились как 82599, но l2mtu у них тоже пустой, позже покажу эту информацию из терминала.

system resource pci print detail 
 0 device="03:00.1" name="82571EB Gigabit Ethernet Controller (rev: 6)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" 
   device-id="0x105e" irq=10 memory=0xF7E20000-0xF7E3FFFF,0xF7E00000-0xF7EFFFFF io=0xE000-0xEFFF 

 1 device="03:00.0" name="82571EB Gigabit Ethernet Controller (rev: 6)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" 
   device-id="0x105e" irq=11 memory=0xF7E60000-0xF7E7FFFF,0xF7E40000-0xF7E5FFFF io=0xE020-0xE03F 

 2 device="01:00.3" name="unknown device (rev: 1)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" device-id="0x1521" irq=11 
   memory=0xF7900000-0xF7DFFFFF,0xF7D80000-0xF7D83FFF 

 3 device="01:00.2" name="unknown device (rev: 1)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" device-id="0x1521" irq=11 
   memory=0xF7A00000-0xF7AFFFFF,0xF7D84000-0xF7D87FFF 

 4 device="01:00.1" name="unknown device (rev: 1)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" device-id="0x1521" irq=10 
   memory=0xF7B00000-0xF7BFFFFF,0xF7D88000-0xF7D8BFFF 

 5 device="01:00.0" name="unknown device (rev: 1)" vendor="Intel Corporation" category="Ethernet controller" vendor-id="0x8086" device-id="0x1521" irq=11 
   memory=0xF7C00000-0xF7CFFFFF,0xF7D8C000-0xF7D8FFFF 

 

Share this post


Link to post
Share on other sites

И чего нового? Да, если ROS не знает l2mtu от сетевухи, она дропнет все пакеты >1500 независимо от ее фактических возможностей - это так еще с начала 6 ветки идет. Да, у бондинг-интерфейсов l2mtu пустой, соответственно, есть проблемы с накидыванием к ним VLAN, MPLS, etc - и в обновлениях идет перманентная битва бобра с козлом в этом вопросе. Поэтому на голое железо никто больше не ставит, а ставят CHR, в VMware еще и тип эмулируемого адаптера вручную правят, тоже не новость.

Share this post


Link to post
Share on other sites

13 минут назад, jffulcrum сказал:

Да, если ROS не знает l2mtu от сетевухи, она дропнет все пакеты >1500 независимо от ее фактических возможностей - это так еще с начала 6 ветки идет.

Проблема актуальна начиная с версии ROS 6.36. Не подскажите где она описана ?

Вы случайно не писали в саппорт микротика по этому поводу ? Они что то внятное отвечают ?

Share this post


Link to post
Share on other sites

6 часов назад, kosmich7 сказал:

Не подскажите где она описана ?

Мне о ней сказали прямо на официальных курсах, еще три года назад. Поиском легко находятся материалы еще 2013 года...

 

2 часа назад, kosmich7 сказал:

Так ?

У бондинг интерфейса l2mtu всегда 0, независимо от железа. CHR я имел ввиду в контексте ухода от проблем с l2mtu у железных карт.

Share this post


Link to post
Share on other sites

13 часов назад, jffulcrum сказал:

Мне о ней сказали прямо на официальных курсах, еще три года назад. Поиском легко находятся материалы еще 2013 года...

 

Искали поиском, не нашли. Ничего кроме нескольких схожих ситуаций, на офф. форуме микротика. В основном все кто пишут про проблемы mtu, связано с туннелями.

Это очень по микротиковски, не афишировать о наличии проблемы. И не сообщить что решать проблему, они не собираются. Такой вывод за 5 лет напрашивается. 

 

13 часов назад, jffulcrum сказал:

У бондинг интерфейса l2mtu всегда 0, независимо от железа. CHR я имел ввиду в контексте ухода от проблем с l2mtu у железных карт.

Актуальная версия CHR 6.43.8, влан не создается на интерфейсе бондинг ! 

Share this post


Link to post
Share on other sites

39 минут назад, Saab95 сказал:

Просто пора уйти от бондинга к другим технологиям. Зачем вообще он нужен и какие проблемы решает?

Например к каким ? Агрегирование каналов, какие еще вопросы может решать bonding ? 

Сегодня необходимо агрегировать несколько серверов 1Г*4 в одном месте, завтра 10Г*2 в другом.

 

PS: Пора перейти с микротика на freebsd. :)

Share this post


Link to post
Share on other sites

@jffulcrum  Благодарю !

 

MTU issues on ROS
• Even on RouterOS, there are MTU issues.
• Currently, a bonding interface does NOT report Max L2MTU.
• You can not use MTU >1500 if you use bonding. (no MPLS)
• Bug is reported, hopefully will be fixed. (2 months in waiting)

 

Watch our for cheap NICs
• Some NICs will not report their Max L2MTU toRouterOS.
• In this case, since RouterOS doesn’t know the NICs Max L2MTU, it ignores any frames that are >1500 (even if NIC actually supports jumbo).
• Only a problem on x86 or if ROS is a VM.

 

Перевод.

Если Вы не хотите иметь проблем с l2mtu, на отличных сетевых картах на базе intel - переходите на другие операционные системы и больше не используйте ROS x86.

 

 

Share this post


Link to post
Share on other sites

@jffulcrum спасибо Вам конечно за ликбез, но чем эта информация может помочь в проблеме c l2mtu 0 ? В "проблемных" адаптерах, l2mtu не изменяется.

Микротик не мог сделать костыль ? Править l2mtu руками, сделать возможность.

Share this post


Link to post
Share on other sites

До 2016-03-11 всем, в том числе и микротику, не было дела, какой там отображается(считывается) или нет l2mtu.

Тут еще бабка на двое сказала, карта не отдает l2mtu или микротик так выкрутился, имхо.

 

Share this post


Link to post
Share on other sites

23 часа назад, kosmich7 сказал:

Например к каким ? Агрегирование каналов, какие еще вопросы может решать bonding ? 

Сегодня необходимо агрегировать несколько серверов 1Г*4 в одном месте, завтра 10Г*2 в другом.

Бондинг вроде как порты агрегирует, а не сервера?

Вместо бондинга, если это не L2, можно L3 OSPF или роутинг использовать - все само собой распределиться и сагрегируется.

Если это L2 - то MPLS в помощь.

 

Вообще не понятны техноголии вида - прокинуть весь L2 в центр и там рулить. Так никто из крупных операторов уже не делает - все еще на периметре собирают все L2 в MPLS и подают уже поверх L3 на BRAS. А голый L2 на BRAS подают лишь в маленьких сетях.

Share this post


Link to post
Share on other sites

47 минут назад, Saab95 сказал:

Бондинг вроде как порты агрегирует, а не сервера?

Агрегировать 1Г*4, 10Г*2, на нескольких серверах. Порты, на нескольких серверах.

В Linux и FreeBSD, агрегация каналов, работает из коробки. И только в ROS х86 сломали агрегацию, на некоторых современных адаптерах.

 

 

52 минуты назад, Saab95 сказал:

Вместо бондинга, если это не L2, можно L3 OSPF или роутинг использовать - все само собой распределиться и сагрегируется.

Приведите пожалуйста пример конфигурации L2+L3, в котором емкость интерфейса vlan, не будет ограничена емкостью одного из ether интерфейсов ?

 

 

Share this post


Link to post
Share on other sites

Ларчик просто открывался.

 

На интел i350t4 и подобных где не подхватывается l2mtu.

Надо на всех езернет интерфейсах, которые планируем включать в bonding, указать mtu 1504.

Создать bonding и vlan_ы = профит.

Share this post


Link to post
Share on other sites

В 30.01.2019 в 23:46, kosmich7 сказал:

Ларчик просто открывался.

 

На интел i350t4 и подобных где не подхватывается l2mtu.

Надо на всех езернет интерфейсах, которые планируем включать в bonding, указать mtu 1504.

Создать bonding и vlan_ы = профит.

Сидел, читал, думал вот сейчас помогу кому-то... а тут бац и сам разобрался.

Проблема актуальна не только для бонда, но и для простых ВЛАНов на интерфейсах. Если не ether не установить МТУ больше 1500, то mtu на vlan будет максимум 1496 с очень интересными последствиями. Так что ставим MTU 1600 для i350 и аналогов и получаем нормально работающую систему с блондином и вланами.

Share this post


Link to post
Share on other sites

On 2/5/2019 at 11:09 PM, AciDSAS said:

Сидел, читал, думал вот сейчас помогу кому-то... а тут бац и сам разобрался.

Проблема актуальна не только для бонда, но и для простых ВЛАНов на интерфейсах. Если не ether не установить МТУ больше 1500, то mtu на vlan будет максимум 1496 с очень интересными последствиями. Так что ставим MTU 1600 для i350 и аналогов и получаем нормально работающую систему с блондином и вланами.

Вроде как достаточно на физ интерфейсе поставить 1504, чтоб пакет не был фрагментирован. Но это не точно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.