Мы запускаем OpenVPN VPN по спутниковой линии BGAN, где время пинга составляет около 3 секунд. Мы используем его в конфигурации tun и работаем в Linux (CentOS). Это прежде всего электронная почта, которая будет отправлена по ссылке, но как только почта содержит большие вложения, VPN, кажется, останавливается.
«Я могу свистеть через туннель, но любая реальная работа заставляет его запереть. Является ли это проблемой MTU?» Вопрос в FAQ OpenVPN, кажется, описывает мою проблему точно, но использование mssfix
и fragment
все еще, кажется, не делает много, чтобы улучшить ситуацию.
Мой основной тест - скопировать файл размером 2 МБ по VPN с помощью scp . Он скопирует около 192 Кбайт, а затем сообщит о остановленном состоянии. Если я подожду пару секунд, он снова начнет копироваться, а затем снова остановится через пару килобайт.
Это зависание происходит независимо от того, установил я fragment
или нет mssfix
параметры или в моей конфигурации OpenVPN (хотя настройка fragment 1000
, казалось, уменьшала задержку, но не устраняла ее). OpenVPN mtu-test
сообщил 1542 как размер MTU.
Я искал в Интернете для получения дополнительной консультации о том , как и когда использовать mssfix
и fragment
, но я только найти страницы говорят то же самое , как часто задаваемые вопросы, и не вдаваясь в подробности о том , как и когда использовать , какие параметры.
Мои вопросы тогда:
- Когда я использую
mssfix
иfragment
? - Я использую
mssfix
иfragment
в комбинации? - Если
mssfix
иfragment
это решение, каковыtun-mtu
,link-mtu
иmtu-disc
параметры?
Кроме того, я использовал инструмент iperf для измерения пропускной способности. Без VPN он постоянно измеряет порядка 210 Кбит / с.
При использовании iperf через VPN ( $ iperf -c remoteserver -t60 -i5
) он будет начинаться со скоростью 10 Кбит / с, затем постоянно повышаться до 1,2 Мбит / с, а затем будет зависать, где он сообщает 0 Кбит / с для ряда итераций (I думаю, что 1,2 Мбит / с может быть из-за некоторой буферизации OpenVPN или так далее)
Является ли iperf лучшим способом измерения пропускной способности?
Любая помощь в этой ситуации будет принята с благодарностью.
Ответы:
1542 как MTU? Никогда не слышал об этом для глобальной сети. Обычно MTU - это максимальная полезная нагрузка, размер пакета ip минус заголовок для IP (20 байтов) и ICMP (8 байтов). Это означает, что MTU = 1500 для традиционной локальной сети Ethernet. Кроме того, большинство VPN вводят издержки на инкапсуляцию пакетов. Типичный VPN MTU - 1400.
В современных сетях трудно определить, каким будет MTU в любой момент, поскольку входные и выходные пути могут различаться, и они также могут изменяться из-за автоматической перенаправления пути. Для такой сети может быть более эффективным установить низкий уровень MTU на ваших хостах, которые находятся по обе стороны от канала VPN, например 576.
MSS (максимальный размер сегмента) - это MTU минус заголовки IP + TCP (40 байт). Обычно это согласовывается сетевым стеком и обычно не имеет тех же проблем согласования, что и MTU, если только MTU не является неправильным. (Согласование MTU обычно нарушается заблокированными ICMP или маршрутизаторами черной дыры).
Первое, что я хотел бы сделать, это сделать захват сетевых пакетов на отправляющей стороне и отсортировать отображение по размеру кадра (вам может понадобиться добавить этот столбец в Wireshark). Вы должны убедиться, что вы не отправляете какие-либо кадры, размер которых превышает допустимый размер. Современные сетевые карты часто отправляют кадры большего размера, если включены такие опции, как Large Send Offload или Jumbo Frames. Я видел более 30000 байт, когда эти опции включены.
источник
Просто из любопытства, вы пытались снизить MTU сетевого интерфейса? Возможно, спутниковая связь плохо испортит фрагментацию. В качестве нелогичного замечания вы можете попробовать openvpn через TCP для изменения. Я знаю, что это должно снизить производительность, но если у вас нет контроля над фрагментацией, это может вам помочь.
источник
Когда вы используете TCP, увеличьте размер окна TCP; это поможет с «количеством пакетов в эфире».
Прошло много времени с тех пор, как мне пришлось поиграть с этим, но вот одна ссылка, которую Google нашел для меня.
После того, как я перечитал ваш вопрос, я вижу, что вы используете BGAN - я бы хорошо посмотрел на это (или просто Google: "BGAN spoofing").
Что касается измерения пропускной способности, я обнаружил, что iperf довольно приличный, если вы используете разумные размеры пакетов.
источник
Я думаю, ты можешь лаять не на то дерево. Каждый раз, когда у меня возникали проблемы с MTU, трафик прекращался раньше, чем 192 КБ. Я думаю, что это больше относится к некоторым окнам «в пакетах», либо к окну TCP, либо к некоторым буферам в самой спутниковой восходящей линии связи.
Определенно сделать некоторые длинный Packet захватов (как «внутри» и «снаружи» в VPN) и посмотреть , если вы получаете все
ACK
«Sисточник