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

FreeBSD, change MSS

Подскажите эффективный способ подстраивать TCP MSS в проходящем через gre-туннель трафике для FreeBSD,

для Linux и iptables это выглядит вот так -j TCPMSS --clamp-mss-to-pmtu.

Включил в pf, scrub on gre0 fragment reassemble max-mss 1436, но к сожалению, не помогло, возможно, потому что все правила ниже без keep state.

Пробовал ng_tcpmss, трафик через ноду проходит, эффекта нет.

16:32:13.275214 IP 193.106.144.36.4372 > 193.0.6.139.80: S 2105092612:2105092612(0) win 65535 <mss 1436,nop,nop,sackOK>
16:32:13.322461 IP 193.0.6.139.80 > 193.106.144.36.4372: S 2148163758:2148163758(0) ack 2105092613 win 5840 <mss 1460,nop,nop,sackOK>
16:32:13.322721 IP 193.106.144.36.4372 > 193.0.6.139.80: . ack 1 win 65535
16:32:13.323908 IP 193.106.144.36.4372 > 193.0.6.139.80: P 1:429(428) ack 1 win 65535

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


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

а как трафик на ng_tcpmss направляете?

 

Изменено пользователем marikoda

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


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

посмотри на программу tcpmssd

 

tcpmssd -p 8670 -m 1396
ipfw add 1 divert 8670 all from any to any via ng\*

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


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

marikoda, так, как советовалось в мане

kldload ng_ipfw
kldload ng_tcpmss

ngctl mkpeer ipfw: tcpmss 100 qqq
ngctl msg ipfw:100 config '{ inHook="qqq" outHook="qqq" maxMSS=1436 }'
ipfw add 300 netgraph 100 tcp from any to any tcpflags syn via gre0
sysctl net.inet.ip.fw.one_pass=0

 

wed, перенаправлять весь трафик в юзерспейс не считаю хорошей идеей, может пострадать производительность.

Изменено пользователем mr.Scamp

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


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

Включил в pf, scrub on gre0 fragment reassemble max-mss 1436, но к сожалению, не помогло, возможно, потому что все правила ниже без keep state.
Скруб - это отдельная категория правил, как и нат.

Выполняется только одно скруб правило, первое под которое попал трафик.

Те траффик не будет проходить через все нормализации, только через одну.

Убедитесь что у вас scrub только один трафик через него проходит.

Возможно нужно добавить proto tcp к правилу.

 

 

Ещё можно использовать ng_tcpmss, если умеете с нетграфом работать.

Через неё нужно пропускать весь траффик, предварительно сконфигурировав: связать два хука в оба направления и мсс задать.

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


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

Вспомнил. может понадобится.

 

Когда-то давно была задача забриджевать ethernet со стандартным mtu 1500 через линк с маленьким mtu.

Тогда пользовались vtund поверх tcp или udp, с одной стороны был linux, с другой - freebsd.

Работало, на удивление, неплохо.

Изменено пользователем marikoda

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


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

%sudo pfctl -vvsr | head
@0 scrub on gre0 proto tcp all no-df max-mss 1436 fragment reassemble
  [ Evaluations: 8443501   Packets: 657112    Bytes: 103976377   States: 0     ]

не помогает.

ng_tcpmss пробовал, см. выше.

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


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

Поставьте 576.

Может у вас где то дальше мту ещё падает и ицмп заблочен.

 

ПФ на работоспособность не проверял этот функционал, а вот нода 100% работает.

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


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

Спасибо за совет!

Поставил 576 - все заработало.

Опытным путем установил, что максимальный MSS для этого линка равен 1396.

Как pf scrub, так и ng-нода работают отлично.

 

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


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

Join the conversation

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

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

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

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

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

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

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