[ell-i-developers] Initial plans for a truly minimal UDP/IP for CoAP

  • From: Pekka Nikander <pekka.nikander@xxxxxx>
  • To: "ell-i-developers@xxxxxxxxxxxxx" <ell-i-developers@xxxxxxxxxxxxx>
  • Date: Mon, 24 Feb 2014 22:11:26 +0200

I've now started the work on a minimal UDP/IP stack for CoAP.  Here are my 
current plans; please make questions and comments.

Basic principle: Be liberal in what you accept, conservative in what you send.  
However, due to space limitations the plan is to drop (almost) all optional 
features and support only the bare minimum.

IP
==
No ability to generate packets on its own, only able to reply incoming packets.

- IPv4 only, header length always the default 20 bytes
- Type of Service: ignored when received, copied to a reply
- ID: ignored when received, copied to a reply
- Framentation: not supported; dropped if received, never sent.
- Options: not supported; dropped if received, never sent.
- Local address: Only one unicast address supported, no multicast support.
- Remote address: Copied to a reply.

How about the following?
- TTL: ignored when received, copied to replies.
- checksum ignored when received, sent as such when replying
  - simply swapping src and dst does not change the checksum, right?
  - if we do anything more but copy to ID and/or TTL, we must implement 
checksum updates...
    - but updating the checksum is easier than verifying/computing it
- no gateway nor netmask, always send back to the sender ethernet address

ICMP
====
Only supports ping (ICMP echo) as a compile-time option.  ICMP errors never 
sent, received errors silently ignored.

ARP
===
- replies to ARP queries pertaining to its own IP address
- reply Ethernet destination address copied from the received packet
- does not cache ARP data, as only replies
- never sends ARP queries itself or keeps state

UDP
===
Again, no ability to generate packets on its own, only able to reply incoming 
packets.

- packets received on non-bound ports silently ignored
- checksum ignored when received, always zero when sent

Once this is up and running, we can consider adding more functionality, but 
AFAIK this should be enough to allow the host to answer to CoAP packets.

Comments?

--Pekka


Other related posts: