2013-04-19 2 views
1

Я пытаюсь создать тест, чтобы проверить, что петля PHY работает правильно. Разработка на linux в c. Это, по существу, что тест в настоящее время делает:Тест петли Ethernet

  1. Поднимает интерфейс и убедитесь, что он имеет действительный IP-адрес
  2. Создать два разъема в режиме UDP (SOCK_DGRAM)
  3. Bind оба гнезда к конкретному интерфейс испытывается
  4. Bind входящий сокет к определенному порту
  5. Записи к исходящему разъему с SendTo, указав порт и IP-адрес
  6. чтения из входящего сокета

Проблема, с которой я столкнулась, связана с включенным или включенным loopback, я всегда читаю данные обратно. Интерфейс не подключен к коммутатору, поэтому я не ожидал, что данные вернутся через физический кабель. Я подозреваю, что стек перенаправляет данные до того, как он дойдет до PHY. Есть ли способ гарантировать, что пакеты физически отправляются через интерфейс?

+0

Я подозреваю, что мне может понадобиться, отправляет пакет с адресом, отличным от адреса интерфейса. Тогда мне пришлось бы смотреть интерфейс для любого входящего пакета, даже пакетов, не предназначенных для него. Сортировка сырого режима «обнюхивания». – jdepth

ответ

1

Как вы, возможно, догадались, это не ошибка, а особенность (и существенная). Однако я сомневаюсь, что вы когда-нибудь сможете протестировать PHY без второго приемника.

Корпус №1: Сетевой адаптер отправляет данные в концентратор (все еще существуют?). Концентратор просто усиливает сигнал. Никто не будет разговаривать с сетевым адаптером о сигнале. Сетевой адаптер не заинтересован в чтении собственного сигнала при его отправке.

Корпус № 2: сетевой адаптер передает данные коммутатору. Коммутатор в своей маршрутизации автоматически никогда не посылает сигнал обратно источнику. Это не имеет смысла делать это и в некоторых случаях (например, широковещательные пакеты) может привести к серьезным проблемам в сети.

Корпус №3: У вас сложная настройка сети, где возможны петли. Либо ваша сеть f * cked, либо вы используете такие методы, как Spanning Tree, чтобы явным образом препятствовал тому, чтобы ваш сигнал всегда направлялся обратно к вам.

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