Быстрая переадресация IP в WAN, но отваливается между подсетями LAN
419
Huckle
Я заменил свой потребительский беспроводной маршрутизатор на коробку linux с четырех гигабитной сетевой картой PCIe и одной гигабитной сетевой платой на материнской плате (для глобальной сети). После включения переадресации IP-адресов, маскирования (через iptables) и настройки подсетей на каждом из четырех интерфейсов локальной сети я провел несколько тестов скорости.
$ ip route default dev ppp0 scope link 10.0.0.0/16 dev enp3s0f0 proto kernel scope link src 10.0.0.1 10.64.0.0/16 dev enp3s0f1 proto kernel scope link src 10.64.0.1 10.192.0.0/16 dev enp4s0f1 proto kernel scope link src 10.192.0.1 aaa.bbb.ccc.ddd dev ppp0 proto kernel scope link src www.xxx.yyy.zzz
От беспроводного устройства в одной из подсетей ЛВС до самого скоростного сервера в глобальной сети я получаю полные 40 Мбит / с / 5 Мбит / с, за которые я плачу своему провайдеру.
От хоста маршрутизатора до хоста проводной локальной сети, iperf3я могу последовательно поддерживать скорость 930+ Мбит / с в течение нескольких минут.
От проводного устройства в одной из подсетей ЛВС до проводного устройства в другой подсети ЛВС, использующего iperf3я, сначала получаю 80-95 Мбит / с в течение первых нескольких секунд, но оно быстро падает до нуля.
От проводного устройства в одной из подсетей ЛВС до проводного устройства в другой подсети ЛВС iperf3с целевым битрейтом 20 Мбит / с я вижу аналогичные результаты (см. Обновление в конце), но может поддерживать около 10 Мбит / с
Это наводит меня на мысль, что есть проблемы с пересылкой пакетов между подсетями. Сначала я убедился, что мои iptablesправила минимальны:
-t nat -A POSTROUTING -o ppp0 -j MASQUERADE # WAN connection is PPPoE and VLAN tagged -t filter -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Сбрасывая iptablesсостояние, я вижу низкие количества пакетов для обоих правил.
Затем я проверил на потерю пакета. Кажется, что существует небольшое, но постоянное количество потерь / повторных передач пакетов.
Затем я подумал, что, возможно, там был буфер или очередь, которая заполнялась, и пакеты отбрасывались. Я рассчитал среднее значение пропускной способности и сравнил его с зарезервированной памятью.
Кажется, этого достаточно. Так что теперь я немного застрял. Я побежал tcpdumpк iperf3клиенту и вижу, что дела идут хорошо. Затем я вижу длительный (почти 250 мс) период молчания перед множеством повторных передач и повторных подтверждений.
Так как я могу получить достаточную скорость загрузки из глобальной сети, я не подозреваю, что встроенная сетевая карта виновата. Я ищу помощь в диагностике этого четырехядерного сетевого адаптера (подробности ниже) и, возможно, гигабитного коммутатора 2-го уровня (Netgear GS-108) и любой другой конфигурации ядра, которая может возникнуть. Я сомневаюсь, что это коммутатор, поскольку это никогда не было проблемой раньше, и я могу поддерживать скорость от обратной петли маршрутизатора до этой подсети. Похоже, это влияет только на производительность между подсетями.
Что вы подразумеваете под «настройкой подсетей на каждом из четырех интерфейсов локальной сети»? Вы создали четыре локальных сети или одну? И если один, то с четырьмя интерфейсами в одной локальной сети, вы должны настроить только один IP-адрес и одну подсеть.
David Schwartz 6 лет назад
0
@DavidSchwartz Четыре подсети с интерфейсами, настроенными как 10.0.0.1, 10.64.0.1, 10.128.0.1 и 10.192.0.1.
Huckle 6 лет назад
0
Пожалуйста, дайте `ifconfig -a` или` ip addr`. Ищем mac адреса на четырехядерном адаптере.
Pedro 6 лет назад
0
@ Huckle: есть ли какая-то причина, по которой вы создали четыре отдельных ЛВС? Вам нужна изоляция по какой-то причине? Это будет означать, что материал, который работает в локальной сети (например, обнаружение службы вещания и разрешение имен), не будет работать для устройств в разных локальных сетях.
David Schwartz 6 лет назад
0
Кроме того, откуда берется беспроводной? Не могли бы вы сделать `iperf3` между проводными хостами, подключенными к разным интерфейсам?
Pedro 6 лет назад
0
@Pedro - повторное тестирование с двух проводных устройств, подключенных напрямую к разным подсетям (на этот раз ни один уровень 2 не переключался на одну подсеть). По существу идентичные результаты
Huckle 6 лет назад
1
@DavidSchwartz Да, идея будет заключаться в том, чтобы в конечном итоге сделать брандмауэр одной из подсетей просто для доступа к глобальной сети, а затем брандмауэр одной из других, чтобы просто разрешить доступ к определенным портам, - но эта точка iptables настолько проста, насколько это возможно, для уменьшения переменных, и я уверен, что я перезагрузил его конфигурацию.
Huckle 6 лет назад
0
Не могли бы вы запустить `iperf3` с --bandwidth в паре точек, таких как 20 м, 40 м и 80 м, и посмотреть, замедлят ли они в конечном итоге? Это покажет, если вы переполняете буфер на маршрутизаторе.
Pedro 6 лет назад
0
@Pedro OUI одного из четырех сетевых адаптеров находится в выводе `lshw`. Карта является HP NC364T
Huckle 6 лет назад
0
@Pedro отправлены тесты со скоростью 20 Мбит / с и 10 Мбит / с. 20 не ходи. Кажется, чтобы выдержать 10. Разрушается около 12.
Huckle 6 лет назад
1
Можете ли вы сделать iperf с полной пропускной способностью от хоста на enp3s0f0 к одному на enp3s0f1, enp3s0f1 / enp4s0f1 и enp3s0f0 / enp4s0f1, чтобы проверить, является ли один из портов плохим?
Pedro 6 лет назад
0
На NC364T, вы можете просто проверить, что MAC-адреса разные для каждого порта? Похоже, вы используете только два из портов enp3s0f0 и enp3s0f1, правильно?
Pedro 6 лет назад
0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/73650/discussion-between-pedro-and-huckle).
Pedro 6 лет назад
0
1 ответ на вопрос
0
Huckle
Спасибо @Pedro за помощь в поиске. Первоначально я думал, что это плохой аппаратный компонент, но после замены его другим я уверен, что это проблема с драйверами. Я все еще копаюсь, чтобы выяснить, была ли это ошибка, о которой уже сообщалось, или нет (и есть ли исправление). В то же время я нашел вопрос о сбое сервера, связанный с отчетом об ошибке, в котором предлагалось отключить несколько функций разгрузки. Это, по крайней мере, позволило мне стабильно увеличить скорость от 0 до 270 Мбит / с. Это намного меньше, чем ~ 940 Мбит / с, на которые он способен, но лучше, чем ничего, пока я продолжаю исследования.