Как надежно генерировать ошибки кадра Ethernet в программном обеспечении?

StackOverflow https://stackoverflow.com/questions/6329583

Вопрос

Вопрос:

Я тестирую часть программного обеспечения для поиска неисправностей кабеля и хочу надежно и воспроизводимо генерировать неисправности кабеля на кабеле категории 5.

На данный момент я использую не скрученный кабель метровой длины и вручную проворачиваю кабель рядом с источником питания, но я не могу обнаружить никаких сбоев в приложении (я считываю счетчики сбоев Ethernet с Ethernet ASIC .) Я не могу сказать, связано ли это с тем, что ошибок не возникает, или потому, что обнаружение программного / аппаратного обеспечения неисправно.

Есть ли способ сделать это в программном обеспечении?

Я бы согласился написать что-то на языке более высокого уровня, например Java или python, и в крайнем случае был бы готов собрать это вместе на C, но я бы действительно не стал переписывать драйвер Ethernet просто чтобы исправить возможную ошибку.

[РЕДАКТИРОВАТЬ]: я хочу создать повреждения кабеля, а не обнаруживать их.

[РЕДАКТИРОВАТЬ]: Я без проблем передавал большие файлы через FTP и SCP с поддельным кабелем и не вижу ошибок при проверке трафика с помощью wirehark

[EDIT]: См. также аналогичный вопрос в python .

Решение:

Итак, потратив больше дня на борьбу с C, это решение на Python.

Сначала отключите автоматическое вычисление контрольной суммы карты Ethernet:

родовое слово

Затем отправьте свой хитрый фрейм из python:

родовое слово

Кто сказал, что это должно быть сложно ...

PS: Я люблю Python.

Это было полезно?

Решение

Если вы работаете на C, вы можете отправить необработанный фрейм Ethernet с помощью socket(AF_PACKET, SOCK_RAW, ...) и передать ему указатель на необработанный буфер, который вы создали сами (например, следуя макету фрейма в wikipedia ).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top