Как заставить определенный MTU только для определенных портов TCP?
Фон
У меня есть набор встроенного оборудования, развернутого в полевых условиях. Эти удаленные машины подключаются обратно к моим серверам в AWS под управлением Ubuntu, и я использую iptables
mangle
цепь, чтобы снизить MTU до 500, чтобы эти устройства были довольны. Для справки, это iptables
Правило, которое я использую:
-A POSTROUTING -p tcp --sport 12345 --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss 500
Текущая проблема
Я пытаюсь раскрутить некоторые серверы в Joyent Cloud, используя SmartOS
, но я не могу найти какую-либо информацию о выборочном изменении MTU, как я могу в Linux (например, вся информация, которую я нашел, касается его глобального изменения, а это не то, что мне нужно).
Как бы я сделал это, чтобы все соединения на TCP-порту 12345 получили MTU, который я хочу?
1 ответ
Судя по отзывам службы поддержки Joyent, это невозможно. MTU можно установить только на уровне интерфейса, а не через брандмауэр, как в Linux.
Обратите внимание, что теоретически можно изменить MTU для сокета через setsockopt
вызов (через TCP_MAXSEG
опция), но в настоящее время нет никакого расширения, доступного для node.js для этого. Другие платформы приложений должны использовать setsockopt
вызов.