AVR i pakiegy ARP

Witam. Próbuję stworzyć prosty serwerek www który ma też być jednocześnie klientem NTP i stanąłem na stosie w miejscu gdzie są przetwarzane pakiety ARP. Chodzi o to że mam mało pamięci ram i muszę wysyłać pakiety ARP request bez buforowania ramek. Naczytałem się że normalnie jest tak że chcąc wysłać pakiet udp do adresu

192.168.1.1 muszę znać jego adres MAC. Więc sprawdzam w tablicy arp i jak nie ma to wysyłam ARP request. Buforuję pakiet i czekam na odpowiedź ARP replay. I właśnie tu jest problem bo jeśli w trakcie tego czekania odbiorę jakiś pakiet HTTP to nie będę mógł na niego odpowiedzieć bo nadpiszę dane poprzedniego pakietu UDP. W komputerach z dużą ilością ramu jest to możliwe ale nie w AVRku.

Moje pytanie. Czy zgodne z zasadami jest abym pakiety UDP dla adresów IP dla których nie mam adresu MAC w tablicy wysyłał z adresem docelowym MAC=0xFFFFFFFFFFFF i adresem ip=192.168.1.1? Czy w takim przypadku komputer doceolowy powinien odebrać pakiet? Nie musiałbym buforować pakietów wychodzących.

Ewentualnie czy jest jakieś inne lepsze rozwiązanie?

Dzięki za pomoc grundolf

Reply to
grundolf
Loading thread data ...

W dniu 2010-02-18 12:02, grundolf pisze:

Powinien odebrać. Datagram przejdzie przez filtr MAC jako skierowany do wszystkich (broadcast), a potem na poziomie parsowania nagłówka IP całość zostanie rozpoznana poprawnie. Tyle że tak skonstruowane ramki nie wyjdą poza sieć lokalną (router nie łyka ramek broadcastowych zwykle). Ale i tak najpierw sprawdziłbym w praktyce, jak się zachowa przeciętny pecet.

Reply to
Adam Dybkowski

Właściwie znalazłem takie rozwiązanie w bibliotece Procyon AVRlib gdy nie znajduje wpisu w tablicy arp to wysyłany jest na adres broadcast. Adres MAC zdalnego hosta zapamiętywany jest tylko w przypadku gdy jest odpowiedz arp reply lub zapytania arp request.

Z buforowaniem natomiast jest już Ethernut ale tam do dyspozycji jest więcej ramu, czas oczekiwania ustawiony jest na 500ms.

Pozdrawiam grundolf

Reply to
grundolf

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.