Назад | Перейти на главную страницу

Туннель через UDP или TCP

Есть ли способ создать что-то похожее на туннель IPIP или GRE только через UDP или TCP?

У меня есть туннель GRE между двумя серверами, и я заметил, что иногда он начинает сбрасывать пакеты. В то же время, если я пингую между серверами через Интернет, у меня нет проблем.

Я считаю, что это проблема с формированием трафика у моего провайдера (он не принимает во внимание протокол GRE). Я также пробовал туннель IPIP с тем же результатом.

Попробуйте openvpn. Вы можете создавать туннели через UDP или TCP.

Я не уверен, что является причиной вашей конкретной проблемы, но вы должны отметить, что в целом для туннелей лучше использовать ненадежный транспортный поток (например, UDP), чем надежный.

Причина в том, что если вы все-таки потеряете пакет, туннельный Уровень TCP должен управлять повторной передачей, а не реальный транспортный уровень.

Если оба уровня имеют встроенную ретрансляцию, они могут начать войну ретрансляции, которая в конечном итоге убивает пропускную способность.

Также не забывайте, что любой протокол туннелирования снижает эффективный MTU (и, следовательно, TCP MSS). Если MTU и MSS не настроены должным образом, вы увидите чрезмерную фрагментацию и / или потерянные пакеты.

Вы знаете, отбрасываете ли вы пакеты GRE или пакеты, туннелируемые через туннель GRE? С любым типом туннеля нередко возникают проблемы с MTU практически при любом типе туннелирования. Проблемы с MTU может быть трудно диагностировать, потому что пакеты меньшего размера (например, эхо-запросы по умолчанию) отлично проходят через туннель. Вы увидите проблемы только с большими пакетами и, как правило, только если приложение или система устанавливает бит DF (Не фрагментировать). Что, к сожалению, довольно распространено.

Вы можете выполнить сквозное тестирование на предмет наименьшего MTU на сетевом пути, используя эхо-запросы с большим размером пакета и установленным битом DF.

В Windows вы можете установить бит DF с помощью опции -f и установить размер пакета с помощью опции -l следующим образом:

ping -f -l 1450

В Linux вы устанавливаете бит DF с помощью опции «-M do» и устанавливаете размер пакета с помощью опции -s, например:

ping -M do -s 1450

Вы не сказали, что используете для конечных точек GRE. Если это маршрутизаторы Cisco, эта ссылка довольно хорошо. Если нет, поищите в Google проблемы с GRE MTU, и вы найдете массу информации.

PPP через SSH возможно?

Этот маленький руководство по проходке туннелей может помочь вам выбрать правильный.

  • Как сказал Альнитак, все, что поддерживается TCP, плохо сказывается на задержке (IP не нуждается в надежности, которую предлагает TCP, и за это приходится платить). Обычно PPP через SSH или PPP через HTTP наиболее полезны для прохождения межсетевых экранов.
  • Пинги обычно выполняются через протокол ICMP, и поэтому обычно отбрасываются последними перегруженными маршрутизаторами, реализующими раннее отбрасывание. Было бы интересно посмотреть, наблюдаются ли у вас падения с UDP или TCP "ping". Отбрасывание пакетов довольно распространено в Интернете.