Выбор MTU для работы облачной инфраструктуры Openstack
MTU сети Neutron для любого типа инкапсуляции L3, как правило не равно 1500 байт. Это и приводит к проблемам, связанным с принудительным усеканием длины пакета до нужного значения. На клиентских инстансах типичное рекомендуемое значение - 1450 байт. Это настроено на уровне образов ОС. Однако, встречаются некоторые образы ОС, где преднастроен другой базовый MTU.
Это может быть один из следующих вариантов:
- больше 1500 байт, если облако развернуто на инфраструктуре с использованием больших кадров.
- 1500 байт, где механизм инкапсуляции используется как VLAN, или сеть является плоской сетью.
- 1492 байта, где механизм инкапсуляции - GRE туннели.
- 1450 (или меньше), если инкапсуляция L3, например, VXLAN.
Это как раз типовое рекомендованное значение для настройки сетевых адаптеров внутри ВМ, работающих под управлением openstack. Если использовать такое значение - то подобных проблем не будет возникать.
В некоторых случаях получается следующее: если максимальный размер блока передачи превышен, пакеты отбрасываются либо в сети (если сеть не может передать трафик такого размера, какой ожидает отправить отправитель), либо в пункте назначения - то есть на коммутаторе, если настроенный MTU пункта назначения меньше, чем у отправителя или сети). На практике это означает, что и отправитель, и получатель — будь то инстансы, маршрутизаторы или другие службы, должны согласовать размер MTU, а сетевой сегмент должен пропускать пакеты согласованного размера.
Механизмы L3 для обнаружения значения MTU применяются только для пакетов, проходящих через элемент L3, такой как маршрутизатор. Они не применяются для трафика, проходящего через сегмент L2. Это означает, что пакеты, которые больше заявленного по размеру - отбрасываются без ведома отправителя. Это приводит к различному поведению при разных типах передачи. Как правило, массовая передача данных не работает, но некоторые соединения, такие как короткие HTTP-запросы, работают.
Помимо размера максимальной передачи, которую проходит сегмент, обычно существует также предпочтительный размер MTU для использования. Некоторые туннельные протоколы допускают фрагментацию пакетов после инкапсуляции. В таком случае, если определенный размер пакета передачи превышен, инкапсулированный пакет подвергается фрагментации, что может привести к существенному падению производительности сети.
На практике, MTU часто несовместим между различными конечными точками в сегменте. Между двумя виртуальными машинами на одном хосте можно общаться с помощью MTU, который больше, чем между двумя инстансами на разных хостах. MTU для сегмента должен быть всегда минимальным, чтобы это обеспечивало устойчивое взаимодействие между любой парой хостов.
Поэтому, рекомендуемым и широко распространенным вариантом является настройка функционального MTU равного 1450 всем виртуальным машинам, которые работают в облаке через DHCP, при этом:
соблюдаются объявления DHCP MTU внешняя сеть на соседних узлах имеет также MTU 1450 любые служебные MTU равны 1450.
Опубликовано 26.12.2024