2010-02-19 3 views
1

Я пишу службу на python, что async ping domains. Таким образом, он должен уметь пинговать много ip одновременно. Я написал это на epoll ioloop, но у меня проблема с потерей пакетов. Когда есть много одновременных запросов ICMP, большая часть ответов на них не дошла до моего сервиса. Что может вызвать эту ситуацию и как я могу сделать мой сервис ping на многих хостах одновременно без потери пакетов?Проблема с asyn icmp ping

Спасибо)

ответ

0

Проблема вы можете быть с это связано с тем, что ICMP является уровень 3 модели OSI и не использует порт для связи. Короче говоря, ICMP на самом деле не предназначен для этого. Желаемое поведение по-прежнему возможно, но, возможно, IP-стек, который вы используете, мешает, и если это в системе Windows, 100% уверен, что это ваша проблема. Я бы запустил Wireshark, чтобы убедиться, что вы действительно получаете входящие пакеты, если это так, то я бы использовал libpcap для отслеживания в ответах ICMP. Если проблема связана с отправкой, вам придется использовать сырые сокеты и создавать собственные ICMP-пакеты.

+0

Я пишу это в python на CentOs. И я использую сырые сокеты для работы с протоколом ICMP. Я понюхал пакет .. и теперь могу сказать, что они действительно потерялись где-то в сети. Могу ли я решить это без установки тайм-аутов .. или у меня нет другого пути? спасибо за быстрый ответ)) –

+0

Проблема была на уровне системы уровня, которая имеет ICMP четче для всего сервера с 100 КБайт. Когда мы перешли на сервер с проблемой персонального канала, исчезните –

Смежные вопросы