LINUX.ORG.RU

Помогите.Через роутер 4 байта ( 13-16 ) теряются всегда, а через hub - в 0.5 % случаях.


0

1

Добрый день.

Помогите, пожалуйста.

Моя програмка ( «сниффер», «сырой сокет» на C, C++ Linux Ubuntu ) считывает пакеты из LAN.

Другой комп. в сети посылает пакеты по протоколу IEC61850 Sampled Values.

Пакеты посылаются или через такой же сокет ( «содрал» с Pcap'а ) или с помощью libPcap с частотой 4000 пакетов в секунду.

Байты ( 0х81, 0х00, 0х80, 0х00 - 802.1Q Virtual Lan ) изначально содержаться в пакете ( пакет посылается «как есть» ) и идут сразу после 2-го MAC-адреса.

Так вот, если комп. с программой «сниффера» подключен к сети через Hub, то в 99% пакетов читаются с 4-мя указанными байтами, и имеют длинну 146 байт, а менее 1% пакетов приходят без этих 4-х байт и имеют длинну 142.

Если же я вместо Hub'а ставлю свой домашний роутер ( ASUS WL-520GU ), то ВСЕ пакеты приходят БЕЗ этих 4-х байт и имеют длинну 142.

Я вставил в пакеты сквозную нумерацию, и у меня есть уверенность, что по крайней мере через роутер приходят ВСЕ пакеты по порядку.

Помогите, пожалуйста, разобраться - куда могут деваться эти 4 байта, когда я принимаю пакеты через Hub ?

Какое устройство в ОФИСНОЙ сети ( сетевые платы, Hub'ы или еще что-то ) может «укорачивать» 1% пакетов на 4 байта ?

Или же «виновата» моя программа приема ? Или дело еще и в драйверах ?

Спасибо.

Прохоров Юрий.

Скорее всего свитч внутри роутера сам умеет VLAN'ы и использует их для разделения на WAN и LAN. И этот свитч видимо не умеет Q-in-Q.

Deleted
()

Ещё могут быть проблемы, связанными с оффлоадингом обработки VLAN'ов на сетевую карту (если она аппаратно это умеет), но похоже это не твой случай.

Deleted
()

Во-первых, терминология - хабов для ethernet уже лет 10-15 как не выпускают, есть коммутаторы.

Во-вторых, роутер, как заметили выше, имеет внутри коммутатор и часто бывает, что коммутатор там на 5 портов + mii/gmii интерфейс, которым он подключён к cpu убер-железки. А вот разделение на WAN/LAN делается именно с помощью 802.1q (это очень хорошо видно в openwrt, всякие swconfig как раз для этого и применяют).

nickleiten ★★★
()

Любое устройство (сетевая карта, коммутатор), поддерживающее 802.1Q, может вырезать/добавить метку виртуальной сети. Это как настроишь, так и будет.

Ты тут 802.1Q втыкаешь в маршрутизатор... это как медведь на велосипеде - только в цирке показывать.

Просмотрел брошюрки по IEC61850, круто. Но втыкать IEC61850 в маршрутизатор!? Я, конечно, просто прохожий в этом вопросе, но это деньги на ветер, а потом удивляться, что это у нас перебои в энергоснабжении!

fopen ★★
()

к вышесказанному:

а что происходит без промежуточных железок? соедените генератор и снифер просто кабелем и проверьте

Или же «виновата» моя программа приема ?

а кто-ж её знает - может и она, её кроме вас никто не видел..

MKuznetsov ★★★★★
()

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

PS: кури маны на свой роутер, каким образом делать «транковый» порт. в линухе, соответственно, нужно будет поднять vlan интерфейс, в которое ядро само будет вкладывать пришедший пакетик со снятым тегом (т.е. без этих 4 байт).

PPS: почитать бы тебе про вланы чуток поболее

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Спасибо и вопрос поконкретнее

...порт на свиче должен быть настроен на соответствующий режим работы...

Спасибо за ответ.

С другим вопросом пока непонятно...

99% пакетов приходят с признаком WLAN'а ( Байты 0х81, 0х00, 0х80, 0х00 ), а 1 % - без него. Речь идет об ОДНОМ СЕАНСЕ работы. Пускаю, допустим, 40 тысяч пакетов с одного компа на другой в течении 10 секунд. Пакетов 200 приходят БЕЗ признака WLAN'A, остальные - с ним. Хотя эти байты присутствуют в исходном пакете. Вот почему так может быть ?

Пардон, если надоел.

Юрий.

yuprohorov
() автор топика
Ответ на: Спасибо и вопрос поконкретнее от yuprohorov

Такое поведение телепатически я не осилю, да и вряд ли кто-то сможет. Здесь уже нужно дамп смотреть. Сними оный tcpdump'ом и выложи на http://www.cloudshark.org, там можно будет всем колхозом поразбирать все пакетики побайтно.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.