Как определить недостающие кадры UDP в пользовательском анализаторе Wireshark?
Я написал специальный диссектор для CQS-фида ( справочная страница ). Один из наших серверов пропускает при получении этого канала. Согласно Wireshark, некоторые кадры UDP никогда не принимаются. Я знаю, что кадры были отправлены, потому что все остальные наши серверы свободны от пробелов.
Кадр CQS состоит из нескольких сообщений, каждое из которых имеет свой порядковый номер. Мой пользовательский анализатор предоставляет в Wireshark следующие данные:
cqs.frame_gaps - the number of gaps within a UDP frame (always zero)
cqs.frame_first_seq - the first sequence number in a UDP frame
cqs.frame_expected_seq - the first sequence number expected in the next UDP frame
cqs.frame_msg_count - the number of messages in this UDP frame
И я отображаю каждое из этих значений в пользовательских столбцах, как показано на этом снимке экрана: снимок экрана wireshark http://img692.imageshack.us/img692/9484/wiresharkcqs.jpg
Я попытался добавить в диссектор код, который просто сохраняет последний обработанный порядковый номер (как локальный статический элемент) и помечает пробелы, когда диссектор обрабатывает кадр, где current_sequence != (previous_sequence + 1)
. Это не сработало, потому что диссектор можно вызывать в порядке произвольного доступа, в зависимости от того, где вы щелкнули в графическом интерфейсе. Таким образом, вы можете обработать кадр 10, затем кадр 15, затем кадр 11 и т. Д.
Есть ли какой-нибудь способ для моего диссектора узнать, отсутствует ли предшествующий ему кадр (или следующий кадр)?
В диссекторе написано на C.
(см. Также сопутствующее сообщение на serverfault.com )