реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> FPGA - Ethernet - PC, Как лучше организовать?
gosu-art
сообщение Aug 11 2011, 09:06
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Цитата(XVR @ Aug 11 2011, 12:39) *
Нет, за ping отвечает ICMP


Я имел в виду что если ARP ответа не будет, то компутер (если уже нет этого адреса в ARP таблице) не пошлет ICMP пакет!
Смотрю... ARP запросы не доходят до меня, какие то левые идут не с моим IP. ставлю брейк пойнт в ф-ции send_arp_reply. ничего... crying.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 09:19
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(gosu-art @ Aug 11 2011, 13:06) *
Я имел в виду что если ARP ответа не будет, то компутер (если уже нет этого адреса в ARP таблице) не пошлет ICMP пакет!
Угу
Цитата
Смотрю... ARP запросы не доходят до меня, какие то левые идут не с моим IP. ставлю брейк пойнт в ф-ции send_arp_reply. ничего... crying.gif
Возможно MAC адрес вашей платы уже лежит в кэше ARP. Очистите его (arp -d *) и сделайте ping.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 11 2011, 09:27
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Один пинг прошел biggrin.gif

Прикрепленное изображение

UPD:


смотрю ARP -a и вот

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 09:42
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Мдя, с ARP явный косяк. MAC адрес из всех нулей явно через свич не пройдет sm.gif
Go to the top of the page
 
+Quote Post
artix
сообщение Aug 11 2011, 10:41
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(bark @ Aug 11 2011, 13:01) *
ещё учтите что если свич какой-нить умный, то после включения железяки или изменения её параметров (как правило МАС) некоторое время (обновление ARP таблиц от 2 до 10 минут) свитч может не пропускать нормально пакеты.


если свитч сильно умный, то у него может быть своя таблица маршрутизации и пакеты с устройства МАС которого не в его базе разрешенных адресов, вообще никуда лететь не будут.
У меня МАС от Igor Mochor + самописный стек с UDP уровнем+самый простой свитч D-Link пол года полет нормальный.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 11 2011, 10:46
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



При пинге компьютер не получает ARP ответа...
А железяка не получает ARP запроса biggrin.gif

Хотя получает, но от других адресов. И в функцию он благополучно заходит! Но ответ не посылает т.к. IPшники da и ta не те вообще...

Собственно ф-ция обработки ARP запроса
Код
unsigned char process_arp_packet(unsigned char *buf)
{
    arp_pkt_xp arp_pkt = (arp_pkt_xp )(buf + sizeof(ether_hdr_t));
    if (arp_pkt->opcode[1] != ARP_OPCODE_REQ_1) {
    if (arp_pkt->opcode[1] == ARP_OPCODE_REPLY_1)
    {        
         if (!memcmp(my_ip, arp_pkt->ip_sa, IP_ADDR_LEN))
         {         
             //printf("IP conflict with MAC");
             //printf("%02x:%02x:%02x:%02x:%02x:%02x",arp_pkt->mac_sa[0],arp_pkt->mac_sa[1],arp_pkt->mac_sa[2],arp_pkt->mac_sa[3],arp_pkt->mac_sa[4],arp_pkt->mac_sa[5]);
         }             
    }
    return ERR;
    }  

    if (memcmp(my_ip, arp_pkt->ip_ta, IP_ADDR_LEN)) {
    return ERR;
    }  
    return send_arp_reply(buf);
}


UPD: у меня этот стоит!
Go to the top of the page
 
+Quote Post
artix
сообщение Aug 11 2011, 11:02
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



А каким образом у вас кабели обжаты от ПК->Switch->Ваш девайс? Потому что не смотря на то что должны опознавать тип кабеля на практике не у всех свитчей это получаеться laughing.gif

Сообщение отредактировал artix - Aug 11 2011, 11:03
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 11 2011, 11:09
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Кабель рабочий!остальные девайсы работают нормально + на компьютере проверял.
Go to the top of the page
 
+Quote Post
bark
сообщение Aug 11 2011, 11:21
Сообщение #39


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659



gosu-art
MAC сделайте какой-то адекватный.. не нулевой.
лучше всего с железякой уйдите в какую-то свою подсеть. поставьте сниффер и смотрите что у вас там происходит на самом деле.

artix и? не понял суть поста.


--------------------
Работаю 20ns в сутки.
Go to the top of the page
 
+Quote Post
artix
сообщение Aug 11 2011, 11:41
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(bark @ Aug 11 2011, 15:21) *
artix и? не понял суть поста.

вот с этим свичем http://www.dlink.ru/ru/products/2/26_b.html пару часов пропарился, когда мне врулили кабель обжатый Машина-Машина, а не Машина-Свитч : пинг как и все остальное не пролезало к остальным устройствам laughing.gif

Цитата(gosu-art @ Aug 11 2011, 14:46) *
При пинге компьютер не получает ARP ответа...
А железяка не получает ARP запроса biggrin.gif

Хотя получает, но от других адресов. И в функцию он благополучно заходит! Но ответ не посылает т.к. IPшники da и ta не те вообще...

Собственно ф-ция обработки ARP запроса
Код
unsigned char process_arp_packet(unsigned char *buf)
{
    arp_pkt_xp arp_pkt = (arp_pkt_xp )(buf + sizeof(ether_hdr_t));
    if (arp_pkt->opcode[1] != ARP_OPCODE_REQ_1) {
    if (arp_pkt->opcode[1] == ARP_OPCODE_REPLY_1)
    {        
         if (!memcmp(my_ip, arp_pkt->ip_sa, IP_ADDR_LEN))
         {         
             //printf("IP conflict with MAC");
             //printf("%02x:%02x:%02x:%02x:%02x:%02x",arp_pkt->mac_sa[0],arp_pkt->mac_sa[1],arp_pkt->mac_sa[2],arp_pkt->mac_sa[3],arp_pkt->mac_sa[4],arp_pkt->mac_sa[5]);
         }             
    }
    return ERR;
    }  

    if (memcmp(my_ip, arp_pkt->ip_ta, IP_ADDR_LEN)) {
    return ERR;
    }  
    return send_arp_reply(buf);
}


UPD: у меня этот стоит!



не силен в С но я чего то не наблюдаю где вы тут указываете свой МАС в пакете который возвращаете в качестве ответа smile3046.gif


там есть пример формирования ARP http://ru.wikipedia.org/wiki/ARP

Сообщение отредактировал artix - Aug 11 2011, 11:42
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 11 2011, 11:48
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



2 bark

сниффером я и смотрю! ARP от компа идут, к компу ответы - нет=>нет ping'а.
МАС не нулевой стоит! А он увидел нуль по пингуемому адресу=> по этому аресу никого нет (физически).

Вопрос: А как перевести железяку на другую подсеть?

2 artix
Цитата
unsigned char send_arp_reply(unsigned char *buf)
{
/* Modify the packet in place */

arp_pkt_xp arp_pkt = (arp_pkt_xp )(buf + sizeof(ether_hdr_t));
eth_hdr_xp eth_hdr = (eth_hdr_xp ) buf;

memcpy(eth_hdr->da, eth_hdr->sa, ETH_ADDR_LEN);
memcpy(eth_hdr->sa, my_mac, ETH_ADDR_LEN);
arp_pkt->opcode[1] = ARP_OPCODE_REPLY_1;
memcpy(arp_pkt->mac_ta, arp_pkt->mac_sa, ETH_ADDR_LEN);
memcpy(arp_pkt->ip_ta, arp_pkt->ip_sa, IP_ADDR_LEN);
memcpy(arp_pkt->mac_sa, my_mac, ETH_ADDR_LEN);
memcpy(arp_pkt->ip_sa, my_ip, IP_ADDR_LEN);
num_pkt_tx++;
// MSS_MAC_tx_packet(buf,42, MSS_MAC_BLOCKING);
MSS_MAC_tx_packet(buf,42,1);

return OK;
}


Вот ф-ция ответа!
Go to the top of the page
 
+Quote Post
bark
сообщение Aug 11 2011, 12:40
Сообщение #42


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659



gosu-art
вот как у нас обычно в таких случаях работают:
1. В машине 2 сетевые карты. (одна для общей сети, а вторая специально для работы с отлаживаемыми устройствами).
2. Допустим если общая сеть 192.168.1.x , то для работы с железякой использует каждый какую-нить свою подсеть типа 192.168.21.x
эти два пункта позволяют с минимум настроек и фильтров наглядно мониторить в сниффере всё происходящее в сети. (например битые пакеты, если что-то где-то нарушено)

3. Сначала естессно всё проверяется и отлаживается точка-точка, потом комп - отдельный хаб/свитч - железяка, а потому уже общий свитч если вообще предполагается такой режим работы.

допустим свитч может быть не пропустит UDP пакет с плохой чексуммой или превышеным лайфтайм, но ARP пропускать как бы должен. если только не хранит у себя в таблице какое-то старое значение IP для какого-то MAC. не поленитесь подождать 10 минут после подключения через свитч. это стандартное время очистки записи в ARP-таблице.

и ещё конечно вопрос- правильно ли формирует ARP ответ железяка? может что-то не соблюдено и поэтому свитч не пропускает ответ.
заодно достоверно ли вы видете что железяка получила запрос? лампочкой например подмигнуть можно.


--------------------
Работаю 20ns в сутки.
Go to the top of the page
 
+Quote Post
XVR
сообщение Aug 11 2011, 16:54
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



У вас в my_ip IP в правильном порядке байтов лежит?

Go to the top of the page
 
+Quote Post
akorud
сообщение Aug 11 2011, 20:01
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Обратите внимание что младший бит старшего байта МАС не может быть 1 (тогда мультикаст получается). Я как-то 3 дня бился с МАС 01:02:03:04:05:06 - не работало, поменяли на 00:... - все сразу заработало.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 12 2011, 04:40
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Утром пришел сегодня на работу, включил и вот....

Прикрепленное изображение


Поменял только IP на 192,168,1,110 (маска 255,255,240,0) все работает!
Почему вчера не получалось!? может потому, что пока машин в сети мало?

UPD: поработало и хватит! опять все заткнулось biggrin.gif Че то видать в сети нехорошее включается...
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 23:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01494 секунд с 7
ELECTRONIX ©2004-2016