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)
Ответ на: комментарий от antech

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

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

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

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

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

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

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

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

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

Shprot ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.