Задача такова: нужно сделать устройство, которое будет подключено к свичу (RJ45) и которое будет отвечать на ping- запросы. Нужно это для того, чтобы расставить на свичах такие устройства с целью определения места поломки сети. Сеть TCP/IP, 100Mbit/s. Думаю сделать это с поиощью микроконтроллера MCS51 или PIC. Мне нужна исчерпывающая информация по сл. вопросу: какие сигналы приходят на коннектор, как на них надо отвечать на уровне железа. Тот минимум, который нужен решения данной задачи. Может, кто кинет ссылочку. Мои мысли: как минимум нужно правильно отвечать на ARP- запросы и на эхо- запросы ICMP. В инете пока ничего путного не нашел. Заранее спасибо.
http://www.ethermanage.com/ethernet/standard.html Твой минимум - это уже многовато, учитывая коллизии. Пожалуй, дешевле и проще будет прицепить к контроллеру какой-нибудь rtl8139. Даташиты тут: http://www.realtek.com.tw/downloads/downloads1-3.aspx?series=16&Spec=True
Заценю. Но всеже очень интересно реализовать. Думаю так: сначала спаять схему с контроллером, чтобы принимать байты из сети. Они будут идти на входные порты контроллера. Контроллером научиться читать эти байты. Структура не очень сложная. Потом научиться создавать пакеты и отправлять их в сеть. Потом довести до все ума. Ничего не пропустил? Или, как вариант, иожно научить это устройство только отправлять UDP пакеты на какой- то сервер. Так легче.
И все же, я против создания такого устройства на голом микроконтроллере. Сеть - это не системная шина, ни возможности захвата, ни стробов. По ней не ползают байты. Наводки, коллизии, шумы, отраженные сигналы - все это не отловить программно, imho. [added] Плюс, если я не ошибаюсь, PICи не работают на частотах свыше 40Мгц ==> Ethernet 100Mbps просто не успеешь раскодировать
Но если сделать устройство, которое только _отсылает_ датаграммы каждые 5 секунд? По идее от него только требуется создать пакет, перевестиего в сигнал и отправить в сеть.. кстати, свич позволит это сделать, если устройство не имеет IP адреса?
... нужно еще отловить коллизии с широковещательными пакетами, которых на самом деле довольно много, и переотправить пакет в случае коллизии. Свичу (если он не маршрутизирующий) глубоко наплевать на твой IP-адрес, так как его функции ограничиваются вторым уровнем: - запомнить минут на пять-десять, что с порта номер 14 пришел пакет с sourceMAC-адресом 00:11:22:33:44:55; - поискать, нет ли среди запомненных destinationMAC-адреса (например, 00:66:77:88:99:AA), если есть, то отправить его на запомненный порт (например, на 21-ый), иначе отправить его по всем портам, кроме того, с которого он поступил (то есть кроме 14-го). Как следствие: - нежелательно изменять свой MAC - крайне нежелательно попасть на уже существующий в сети MAC или IP адрес
А если сделать максимум примитивно: не проверять ошибки, а только отсылать датаграммы через определенные промежутки времени и все. Я не плохо понимаю, как все это работает на уровне железа, только начал изучать. Так что за глупые вопросы прошу прощения.
Ну а вдруг ты 7 раз подряд попадешь на коллизии и твоя мониторящая система подумает, что сеть упала ? Может лучше чуть чуть постараться и ... - либо отслеживать коллизии по всем правилам IEEE 802.3 (с переотправкой через промежуток времени, определенный в стандарте), - либо пытаться услышать ответ на твой пинг и перепосылать чаще в случае неответа (хотя сам по себе данный вариант и неправилен с точки зрения идеологии сетевого стека).
perez Вот эти ребята специализируются на embedded-TCP/IP. У них можно за примерно 20$ заказать z80-совместимый микроконтроллер с полным стеком TCP/IP.
OLS Ты прав. Надо все-таки отслеживать коллизии. Надеюсь, это не так сложно. Quantum Задача была создать устройство с наименьшими затратами денег. За $20 я могу купить принт- сервер, который отвечает на пинг =)
А что понимать под ? Если речь идёт о кабелях, и лампочек link не достаточно, то устройство для проверки "почему работает 10BaseT, но не работает 100BaseTX" будет стОить намного больше 20$. А если определять неисправность свитча, то почему не подходит дедовский способ - замена на заведомо рабочий?
Можно на MICROCHIP.com посмотреть там была исчерпывающая информация по контроллерам и устройствам на их основе так-же приводились хорошие материалы по их програмированию