Перейти к содержимому
Калькуляторы

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 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 часа назад, jffulcrum сказал:

а ставят CHR

Так ?

 

mtu 6.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Так ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Искали поиском, не нашли.

Прям с сайта обители зла - https://mum.mikrotik.com/presentations/US13/kirnak.pdf , слайд 46

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@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.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если это CHR проще бонд на уровне гипервизора сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

 

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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

MPLS нет? Трафик L3 уже можно раскидать по любому количеству портов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.