Я использую 3G в качестве основного интернет-соединения, и TCP из-за этой вещи с каждым днем становится все более загадочным. Например:
Загрузка с сайта kernel.org - это безумно быстро:
$wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.8.tar.bz2
увеличивается до ~ 500 кБ / с через несколько секунд!
Некоторые серверы работают невероятно медленно, например, www.graphic-pc.com:
То же самое, загрузка большого файла с помощью wget начинается с ~ 30 КБ / с в течение доли секунды, а затем падает до 5-10 КБ или даже хуже.Просмотр веб-страниц приличный, но несколько ненадежный. Случайно, страница загружается очень долго или даже не загружается, но перезагрузка может быть выполнена почти сразу.
Теперь, случайно, я начал играть с OpenVPN через UDP поверх 3G-соединения, и OMG вдруг все стало очень быстро!
Тот же www.graphic-pc.com теперь стреляет со скоростью 100-200кБ / с!
- Что тут происходит ???
- Как получилось, что с VPN гораздо лучше, чем без ??
- И почему graphic-pc.com сканирует, когда kernel.org вылетает?
Что-то делать с моим стеком tcp (или сервером) или каким-то глючным маршрутизатором между ними?
Заметки:
Настройка - это ноутбук с Ubuntu Lucid и ключом Huawei 3G (прямое соединение с pppd).
Я могу воспроизвести это практически в любое время в течение дня, и я не двигаюсь, так что это явно не клеточная среда или перегруженность интернета. (хотя kernel.org без VPN иногда работает хуже вечером, 60 КБ или около того - но все же 500 КБ с VPN!)
Для 2) wireshark показывает повторно переданные пакеты, dup ack's, иногда даже не в порядке.
Я пытался играть с другими параметрами /proc /sys /net /ipv4 (tcp_rmem, window_scaling, tcp_congestion ...), похоже, не имеет значения.
Обновить:
Пробовал под Windows 7 (без VPN) с некоторыми интересными результатами:
tcp settings : default tcp_optimizer
kernel.org : 10 kB/s 20 kB/s
graphic-pc.com: 8 kB/s 70 kB/s !
tcp_optimizer включил ctcp среди прочего. Нужно проверить, что работает os graphic-pc.com, моя ставка на tcp_westwood в Linux и ms ctcp здесь не очень хорошо сочетаются ...