2

Я уже давно пользуюсь Linux-боксом в качестве роутера. Ничего особенного, просто включите пересылку в ядре, включите маскарадинг и настройте iptables, чтобы пробить несколько дыр в брандмауэре.

Недавно мой друг указал на проблему с производительностью. Кажется, что одиночные соединения TCP имеют очень низкую производительность. Вы должны открыть несколько параллельных TCP-соединений, чтобы получить приличную скорость.

Например, у меня есть интернет-соединение 10 Мбит. Когда я загружаю файл из известного быстрого источника, используя что-то вроде DownThemAll! Расширение для Firefox (которое открывает несколько параллельных TCP-соединений). Я могу получить его, чтобы максимально увеличить пропускную способность моего нисходящего потока на уровне около 1 МБ / с. Однако, когда я загружаю тот же файл с помощью встроенного в Firefox менеджера загрузок (использует только одно TCP-соединение), он запускается быстро, а скорость увеличивается до тех пор, пока не достигнет отметки от 100 КБ / с до 350 КБ / с.

Я проверил внутреннюю сеть, и у нее, похоже, нет проблем. Все проходит через переключатель 100 Мбит. Я также запускал iperf как изнутри (от маршрутизатора до моего рабочего стола), так и извне (от моего рабочего стола до Linux-бокса, которым я владею в сети) и не видел никаких проблем. Он достигает около 1 МБ / с, как и должно быть. Speedtest.net также сообщает о скорости 10 Мбит.

Загрузка на машине с Linux все время составляет около 0,00, 0,00, 0,00, и у нее много свободной оперативной памяти. Это старый ноутбук с процессором Pentium M 1,6 ГГц и 1 ГБ оперативной памяти. Внутренняя сеть подключена к встроенному сетевому адаптеру Intel, а кабельный модем подключен к 32-разрядной сетевой карте Netgear FA511 PCMCIA.

Я думаю, что проблема с пересылкой пакетов в маршрутизаторе, но я, честно говоря, не уверен, где проблема может быть. Есть ли что-нибудь, что могло бы существенно замедлить один поток TCP?

2 ответа2

1

Проблема была исправлена. Была какая-то аппаратная проблема (все еще не знаю, что) на машине. После установки того же дистрибутива Linux и перенастройки брандмауэра и переадресации пакетов одинаково на другой машине проблема больше не возникает.

Странный.

0

Скорее всего, это проблема производительности для каждого потока на удаленном конце или у вашего интернет-провайдера - каждый отдельный поток регулируется намеренно (вашим интернет-провайдером) или просто из-за перегрузки (на удаленном сайте, у вашего интернет-провайдера или где-либо еще). между).

Это вряд ли будет ошибкой с вашей стороны.

В качестве примера того, как это работает, когда проблема заключается в перегрузке, представьте веб-сервер с соединением 10000 Кбайт / с и без других ограничений / узких мест. Если имеется 100 активных подключений, загружающих большие объекты, каждое из них (игнорируя различия, вызванные различиями в задержке и загруженности между каждым клиентом и сервером), в среднем получает около 100 Кбайт / с. Если вы откроете пять подключений вместо одного, вы получите что-то более похожее на 480 Кбайт / с (10000/104 * 5), в то время как каждый отдельный поток получает что-то вроде 95 Кбайт / с (10000/104 * 1). Конечно, в этом примере вы единственный, кто использует несколько соединений, что вряд ли имеет место в реальной жизни. А также эта математика работает только в том случае, если управление трафиком в условиях перегруженности приводит к справедливой средней скорости передачи данных каждому потоку, опять же в реальной жизни существует множество факторов, которые могут привести к изменению этого, и управление трафиком может накладывать некоторые ограничения для каждого хоста сверху любых явных или подразумеваемых для каждого потока.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .