Назад | Перейти на главную страницу

Как я могу обойти таймауты TCP на моей международной ссылке?

У меня есть клиентское / серверное приложение, которое обменивается данными по HTTP. Сервер находится на другом конце Земли от некоторых клиентов. Трафик, которым обмениваются сервер и клиент, имеет очень низкую пропускную способность.

Ночью связь работает достаточно хорошо, не очень хорошо, из любой точки планеты, но днем ​​зарубежная связь работает плохо. Только пользователи, живущие внутри страны, могут подключаться, а все остальные получают таймауты TCP, повторные передачи и т. Д. Я думаю, что это из-за увеличения сетевого трафика в часы пик, вызывающего задержки.

Перенести сервер - дорогой вариант. Я хотел бы предоставить удобное решение для моих пользователей, запускающих клиент, не требуя от них перенастраивать таймауты Windows и т. Д. Я подумал, что одним из решений может быть прокси-сервер рядом с пользователями, который может принимать TCP-соединение и быть более терпеливым, когда подключение к серверу. А может перейти на UDP. (Однако UDP был бы проблемой.)

Может у меня все не так? Что может привести к тому, что соединение HTTP будет хорошим с 0: 00UTC до 9-11 UTC, а затем будет нестабильным в остальную часть дня? В Wireshark я вижу много повторяющихся ACK, повторных передач TCP, потерянных сегментов и т. Д. Клиенты из той же страны, что и сервер, не жалуются. Я тестировал подключение к своему серверу локально и через некоторые онлайн-прокси (hidemyass.com), и первый всегда работает, а второй зависит от времени суток.

редактировать: Я переключился с порта 8080 на порт 80 для HTTP-трафика, и, похоже, это помогло! Возможно ли, что один из маршрутизаторов по пути обрабатывает трафик порта 80 иначе, чем порт 8080? Я также пробовал порт 81, у него тоже плохая связь. Кто-нибудь когда-нибудь слышал о таком?

Если использование полосы пропускания вашего сервера не достигает пика в самое худшее время подключения,
проблема может быть не на вашем сервере, а скорее всего в пути; как вы предлагаете.

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

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


Обновление: чтобы ответить на ваш вопрос в комментарии,

  1. Еще раз проверьте настрой своего провайдера - какова гарантированная пропускная способность для загрузки и скачивания?
  2. Поговорите со своим интернет-провайдером о проблеме (начните со службы поддержки и продвигайте дальше)
  3. Проверьте окружающих вас интернет-провайдеров и попытайтесь поговорить с их продавцами, чтобы описать эту проблему.
    Что они думают об этом?
    Что у них есть в качестве предложений?
    (во многих случаях у местных жителей есть более подробная информация и решения для таких случаев)
  4. Попробуйте обсудить сделку / соглашение с другим подходящим вам интернет-провайдером.
    Вам следует искать
    • загрузка и скачивание предложений с гарантией пропускной способности (по указанной цене)
    • Подтверждение доставки, которое вы можете проверить в любое время
      (например, данные MRTG для вашей части ссылки;
      Даже если у вас есть общая ссылка, минимальные значения пропускной способности будут указаны и должны быть измеримы)
  5. Предыдущий пункт также можно обсудить с вашим нынешним интернет-провайдером.
  6. Наконец, если вы можете получить хорошее предложение от другого интернет-провайдера,
    вы можете использовать это в качестве последнего рычага против существующего.
    Если что-то не удастся, вы можете попробовать перейти на нового интернет-провайдера.

Вам нужна дополнительная информация.

В качестве шага по устранению неполадок я предлагаю непрерывный сброс tracert в файл. Запустите его в несколько пунктов назначения (города, континенты), чтобы изолировать основные пути к Интернету. Если вам доступны удаленные сетевые ресурсы, вы можете запустить или запланировать тесты пропускной способности, чтобы увидеть, как выглядит производительность в разное время дня из разных точек мира. iPerf - хороший инструмент для такого рода тестов.

Затем на следующий день просмотрите / нанесите на график результаты, чтобы увидеть, есть ли закономерности, указывающие, где может возникнуть проблема. Конечно, поскольку маршрут трассировки является трафиком с низким приоритетом и блокируется многими брандмауэрами, следует ожидать некоторого количества потерь или потерь на определенных переходах. Если возможно, проведите тот же тест и в обратном направлении. Вы можете столкнуться с асимметричными путями или другими странными условиями маршрутизации. Обладая этой информацией, вы могли бы более конкретно общаться со своим интернет-провайдером.

Возможно, Интернет-провайдер, которого вы используете, не владеет международным соединением, и это могут быть другие Интернет-провайдеры, которые создают проблему. Возможно, будет целесообразно переключить интернет-провайдеров на одного, в котором им будет принадлежать весь путь к ключевым странам / континентам.

Нил