LINUX.ORG.RU

Обход проблемы фрагментации для gre или ipip туннеля для linux-роутера

 , ,


0

1

Допустим, у нас есть linux-роутер, на которые терминируются туннели.

Обычно mtu внутри туннеля mtu = 1500 - 20 = 1480 байт. В linux есть несколько способов обхода данного ограничения на размер пакета.

1. Субтуннелирование

В этом случае туннель создаётся поверх другого туннеля. Примерно так:

ip link add dev ge-node1 up mtu 960 type gre local 90.189.77.100 remote 199.7.255.41 ttl 255 key 255
ip addr add 0.254.1.1/32 peer 0.254.1.255 dev ge-node1
ip link add dev ge-p1-node1 up mtu 16384 type gre[tap] local 0.254.1.1 remote 0.254.1.255 ttl 1 key 255 nopmtudisc ignore-df 

Это работать будет даже через поверх интернета. Задержка составит примерно 0.5ms.

2. Туннелирование с применением специальными параметрами

Ну, в этом случае туннель необходимо создать с параметрами nopmtudisc ignore-df. Примерно так:

ip link add dev ge-uplink0 up type gre local 10.77.85.10 remote 10.76.225.1 key 255 nopmtudisc ignore-df ttl 255

Но, фрагментированные пакеты могут блокироваться фаерволом, поэтому такой способ может не работать например поверх интернета.

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

Прикольно. Спасибо за исследование.

Мне обычно хватает уменьшения mss (–clamp-mss-to-pmtu или ручное указание mss = 1380).

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 1)

А нельзя ли подробнее описать проблему, которая решается в статье? В общем случае маленький mtu не приговор, тут явно имеется ввиду какая-то специфика работы.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

С маленьким mtu может не работать ipv6 (особенно 6in4).

ne-vlezay ★★★★★
() автор топика

шо за странные проблемы у вас на ровном месте? я даже разбирать ваши надписи не буду. Обход проблемы фрагментации тоже самое что пытаться впихнуть невпихуемое. Обойти это нельзя, чтобы вы не делали все равно получится фрагментация, обзывать это можно по разному. Но суть одна. Проблему можно решить. либо уменьшив мту тунеля либо увеличив мту линка. Это очевидно как дважды два.

ignore-df

его туда не просто так прикрутили. Разработчики протоколов они вовсе не тупые, просто ты не разобрался.

antech
()
Ответ на: комментарий от antech

либо уменьшив мту тунеля

и получив неработоспособность вложенных туннелей (например, 6in4) или же, если нужно пробросить паринг на виртуальную машину, например.

либо увеличив мту линка.

это тоже пожет быть невозможно. Например на некоторых дешёвых сетевых картах, это может не прокатить.

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay

это тоже пожет быть пожет быть все что пожет, но фрагментации в приведенных примерах нет.

antech
()
Ответ на: комментарий от ne-vlezay

неработоспособность вложенных туннелей (например, 6in4)

Опираясь на твои ответы, задумался, что я по всей видимости тут что-то делал не правильно. Не подскажешь…?

Shprot
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.