Вопрос:
Я тестирую раздел программного обеспечения для поиска неисправностей кабеля, и я хотел бы надежно и воспроизводимо генерировать неисправности кабеля на кабеле CAT5.
В данный момент я использую раскрученный кабель длиной до метра и вручную извиваю кабель рядом с источником питания, но не могу обнаружить какие-либо неисправности в приложении (я считываю счетчики неисправностей Ethernet, отключенныея не могу сказать.
Есть ли способ сделать это в программном обеспечении?
Я бы согласился написать что-то на языке более высокого уровня, например, Java или python, и в качестве последнего средства хотел бы собрать это в C, но я бы действительно не хотел переписыватьДрайвер Ethernet предназначен только для исправления возможной ошибки.
[EDIT]: Я хочу создать неисправности кабеля - не обнаруживать их.
[EDIT]: Я передал большие файлы через FTP и SCP без проблем с помощью кабеля с доктриной, и я не вижу никаких ошибок при проверке трафика с помощью wireshark
[EDIT]: См. Также аналогичный вопрос в python .
Решение:
Что ж, потратив целый день на борьбу с C, это решение Python.
Сначала отключите автоматическое контрольное суммирование карты Ethernet:
sudo ethtool -K eth1 tx off
Затем отправьте свой хитрый кадр из python:
#!/usr/bin/env python
from socket import *
#
# Ethernet Frame:
# [
# [ Destination address, 6 bytes ]
# [ Source address, 6 bytes ]
# [ Ethertype, 2 bytes ]
# [ Payload, 40 to 1500 bytes ]
# [ 32 bit CRC chcksum, 4 bytes ]
# ]
#
s = socket(AF_PACKET, SOCK_RAW)
s.bind(("eth1", 0))
src_addr = "\x01\x02\x03\x04\x05\x06"
dst_addr = "\x01\x02\x03\x04\x05\x06"
payload = ("["*30)+"PAYLOAD"+("]"*30)
checksum = "\x00\x00\x00\x00"
ethertype = "\x08\x01"
s.send(dst_addr+src_addr+ethertype+payload+checksum)
Кто сказал, что это должно быть сложно ...
PS: Я люблю Python.