OpenCores

1G eth UDP / IP Stack

Issue List
ICMP, DHCP support and stability on Artix 7 #16
Closed alxb opened this issue almost 7 years ago
alxb commented almost 7 years ago

Good Day! I have a question on supporting ICMP and DHCP protocols. Does UDP/IP Stack support such protocols? If Core have no support for those protocols does UDP/IP Stack filters or passes through ICMP and DHCP frames? Also I'm interesting in that what's about compatibility with Artix 7 FPGA's? And I've checked in bug tracking some notes on ARP issues. Does ARP communications are stable and bug fixed now?

pjf was assigned almost 7 years ago
pjf commented almost 7 years ago

The stack does not implement ICMP or DHCP, but these can be implemented yourself by tapping off the IP layer. For example, you could modify the UDP_Complete_nomac module to access the two signals:

signal ip_rx_int : ipv4_rx_type; signal ip_rx_start_int : std_logic := '0';

(These signals should really have been brought out onto the interface instead of ip_rx_hdr. I might make this change at sometime in the future).

Regarding Artix-7 architecture, I've not heard from anyone who has tested with this FPGA architecture, but I might try it myself sometime in the next few months.

Are you happy for me to close this issue now, or do wish to ask further questions on this topic?

Cheers, Peter

alxb commented almost 7 years ago

Peter, thank you for good answers! You have good docs also. I'm already answered some questions by myself.

Do you mean that tapping off IP layer will bypass IP part of core?

And I have two more questions. Does Stack supports up to 64k size of packets? Or what's max length of received packet should be? And does Stack supports both L2 and L3 broadcast packets? And if answer is not both then shall unsupported broadcast packets be bypassed or rejected by Stack? And does CRC count present in Core?

Best Regards.

pjf commented almost 7 years ago

Do you mean that tapping off IP layer will bypass IP part of core?

No, tapping off the IP layer at iprx_int will give you access to the decoded IP header, and to the IP data payload as a byte stream. If you want to bypass the IP layer you can access the Ethernet Frame directly using the signals: mac_rx***

And I have two more questions. Does Stack supports up to 64k size of packets? Or what's max length of received packet should be?

The IP layer does not support segmentation, so any pkts which indicate segmentation are discarded. This limits the msg to the size which can fit into one ethernet frame. To get larger than the std frame, you can use Jumbo Frames at the Ethernet MAC layer. I don't think that any change is needed at the IP or UDP layers to support this.

And does Stack supports both L2 and L3 broadcast packets? And if answer is not both then shall unsupported broadcast packets be bypassed or rejected by Stack?

Yes.

And does CRC count present in Core?

Not sure what you mean by this. In UDP the checksum is optional. The stack transmits zeros for the checksum in UDP_TX and UDP RX does not check that the incoming checksum is correct. For the IP layer, IPv4_TX computes and transmits the IP header checksum. IPv4_RX ignores the incoming header checksum.

alxb commented almost 7 years ago

Ok, thank you Peter for answers! I'm done with questions

pjf closed this almost 7 years ago

Assignee
pjf
Labels
Request