W5500 на регистрах DHCP клиент

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017
Доброго времени суток!
 
Изобретаю "велосипед", работаю с W5500 через регистры на МК STM32F303CCT6. Обмен по SPI реализовал через DMA, прикрутил прерывание для отслеживания статусов. TCP работает отлично, пытаюсь реализовать DHCP клиента и никак:
SHAR - MAC адрес железки
GWR - 255.255.255.255
SUBR - 0.0.0.0
SIPR - 0.0.0.0
Прописываю прерывания и маскирование
Sn_PORT - 68
Sn_DPORT - 67
Sn_DHAR - 255.255.255.255.255.255
Sn_DIPR - 255.255.255.255
Sn_MR - 0x80 | 0x02
даю команду OPEN
проверяю статус = SOCK_UDP
Далее формирую пакет DHCPDISCOVER
Отправляю его в полной аналогии как шлю и в режиме TCP
Прилетает прерывание по нулевому (отправляемому) сокету SEND OK
и тишина........то ли как то надо запустить прием UDP или пакет до роутера доходит но он не шлет ответ...
Вопросы:
1. что я делаю не так с W5500 или как запустить прием данных?
2. могу ли я посмотреть отправляемый пакет в локальной сети? Поставил на компе Wireshark но он не видит совсем UDP Multicast отправляемый DHCP пакет.
 
Подцепил модуль напрямую к компу, каким то чудом что то прилетело один раз модулю, сработало прерывание RECV, отсюда делаю предположение что если сокет открыт то прием не отключается. Но в любом случае Wireshark не видит вообще никаких пакетов :(
Взял готовый пакет отправляемый компом на Windows, сделал полностью аналогичное - не помогло.
 
BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Пакеты посмотреть можно, но есть огромное НО для этого. Нужен свич (роутер) или что-то другое сетевое, которое поддерживает технологию «зеркалирования» пакетов. По крайней мере лично мне другие способы не известны. Такая технология обычно есть в свечах 2 класса. Есть в некоторых 3 класса.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Хм, спасибо, где то лежал древний Cisco роутер, буду думать стОит ли геморрой по его настройке решению данной хотелки. Но почему напрямую подключенный комп не видит UDP пакетов тоже не понятно.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А кто их «смотрит» (какая программа)?

С Cisco не работал, но в основном был web интерфейс и подобная настройка там делается очень даже быстро и интуитивно понятно. Не сложнее vlan ))

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Wireshark их (пакеты) смотрит на компе, первую попавшуюся по отзывам нашел бесплатную.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Не понимаю, то есть Вы 1. подключаете устройство и ПК напрямую и снифаете трафик или 2. есть «роутер», устройство и ПК в одной сети?

Если первый вариант, то dhcp сервер должен быть на ПК, если второй вариант, то я уже выше описал как можно пакеты «увидеть», иначе никак. 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Да, я пробовал оба варианта
1 комп и w5500 воткнуты в роутер asus wl520 древний - роутер или не видит dhcp запроса и соответственно не отвечает или запрос ему приходит кривой, на компе пакеты udp отсылаемые с w5500 не видны

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

2 комп напрямую соединён с w5500, я понимаю что на компе нет dhcp сервера и отвечать он не может, но пакеты то он должен видеть, а их нет (

sadman41
Offline
Зарегистрирован: 19.10.2016

Бытовые роутеры вообще непредсказуемую логику фильтрации имеют. Забота о тупом клиенте, ети ее.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Значит бороться придется без роутера,поставить программку типа. DHCP сервера на комп (

sadman41
Offline
Зарегистрирован: 19.10.2016

Это самое надёжное.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Нужно нарыть тупой хаб, а на комп прогу снифер пакетов. 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

В пн плотно займусь

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

частично победил, подключил W5500 крос кабелем к компу, стал наблюдать что что отправляю, немного другая инициализация нужна модулю не как обычно я делал при известных сетевых (ip,mask,gw) настройках:
Sn_Port = 68 порт источника
Sn_MR = Mode_UDP
Sn_CR даем команду OPEN
Sn_DPORT = 67 порт назначения
Sn_DIPR = 255.255.255.255 адрес назначения
Далее отправляем обычным методом пакет DHCP

Снифер прекрасно увидел пакет, корректно все поля, все красиво, модуль W5500 увидел все отправляемые от компа пакеты.

НО, когда я воткнул все обратно в роутер ASUS WL520 древний - не хочет он отвечать на мой запрос DHCPDISCOVER, хотя пакет абсолютно идентичен пакету с компьютера, разница только в MAC адресе.

Update: поставил паузу 2 секунды после включения модуля W5500 и о чудо....Роутер что то ответил, буду парсить - расскажу о результатах.

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

andycat пишет:
расскажу о результатах

прошло 4 года... :о)