Background ========== This is a TODO list for networking related work. - Priority scale: High, Medium and Low - Complexity scale: C1, C2, C4 and C8. The complexity scale is exponential, with complexity 1 being the lowest complexity. Complexity is a function of both task 'complexity' and task 'scope'. IPv6 ==== - Anycast address support Priority: Low Complexity: C1 Add support for Anycast addresses, RFC 3513 - ICMPv6 "Packet Too Big" support Priority: Low Complexity: C1 Add support for sending "Packet Too Big" error when needed. RFC 4443 - Multicast join/leave support Priority: Low Complexity: C2 Add support for sending joining and leaving multicast group. See RFC 3810 and 4604 for details. - IP-to-IP tunneling support Priority: Low Complexity: C4 Add support for tunneling IPv6 traffic. This requires IPv6 L2 driver that can encapsulate and decapsulate IPv6 traffic. See RFC 2473 for details. - DHCPv6 client support Priority: Low Complexity: C4 Add support for acting as a DHCPv6 in client role. See RFC 3315 and 3646 for details. IPv4 ==== - Multicast join/leave support Priority: Low Complexity: C2 Add support for sending joining and leaving multicast group. See RFC 3376 and 4604 for details. TCP === - Core TCP support Priority: High Complexity: C4 Add core / basic support for receiving and sending TCP packets. This means that we should be able to initiate the connection (client role) or receive a connection request (server role). After the connection establishment, the TCP data should be processed so that applications can receive it. Application can use the net_context API for connection establishment and shutdown, and for sending and receiving data. 6LoWPAN ======= - Mesh Header compression and uncompression Priority: Medium Complexicity: C4 Add support for Mesh header compression and uncompression. - Unicast-Prefix based IPv6 Multicast (dst) address compression Priority: Medium Complexicity: C2 See RFC 6282, Chapter 3.1.1, if M = 1 and DAC = 1. - Multicast Address Mapping Priority: Medium Complexicity: C2 An IPv6 packet with a multicast destination address (DST), consisting of sixteen octets DST[1] through DST[16], is transmitted to the following 802.15.4 16-bit multicast address (See RFC 4944, Chapter 9). - Frame Delivery in a Link-Layer Mesh Priority: Medium Complexicity: C2 Defines how to effect delivery of layer 2 frames in a mesh, given a target "Final Destination" link-layer address. (See RFC 4944, Chapter 11). - IPv6 Next Header Compression Priority: Medium Complexicity: C4 LOWPAN_IPHC elides the IPv6 Next Header field when the NH bit is set to 1. This also indicates the use of 6LoWPAN next header compression, LOWPAN_NHC (See RFC 6282, Chapter 4). IEEE 802.15.4 ============= 2011 version ------------ - CSMA-CA Radio protocol, time-slotted, support Priority: Low Complexity: C2 Current CSMA-CA radio protocol implementation does not support time-slots. - Management service: RFD level support Priority: High Complexity: C4 Support Management service to align with RFD requirements. See Chapter 6.2 - Security support Priority: Medium Complexity: C4 Support security, as detailed in Chapter 7. - Management service: FFD level support Priority: Low Complexity: C4 Support Management service to align with FFD requirements. See Chapter 6.2 2012-2015 versions ------------------ - IE list support Priority: Medium Complexity: C2 Support newly added IE list which can be embedded into frames. - Update existing Management commands Priority: Medium Complexity: C4 Behavioral changes as well as improvements need to be applied to existing Management commands. - TSCH Radio protocol support Priority: Medium Complexity: C2 Add TSCH radio protocol as the latest radio protocol improvement. - Multipurpose frame support Priority: Low Complexity: C2 Add the means to parse or create Multipurpose frames. - LLDN frame support Priority: Low Complexity: C2 Add the means to parse or create LLDN frames. Is this needed however, since it requires true RT capabilities? Bluetooth ========= - Enable sample support Priority: High Complexity: C1 Enable samples to use CONFIG_NET_L2_BLUETOOTH. IP-based services ================= - Simple Network Time Protocol Priority: Low Complexity: C4 Create SNTP client functionality so that applications can use SNTP to query current time. - Basic HTTP server support Priority: Low Complexity: C4 Create a simple HTTP server for demo / diagnostic purposes. - IPSO (IP Smart Object) support Priority: Low Complexity: C8 Create support for IPSO. - LWM2M support Priority: Low Complexity: C4 Create support for OMA LWM2M protocol. - Simple Network Management Protocol support Priority: Low Complexity: C8 Create support for SNMP for managing the node. See RFC 1902 and 2863 for details. Documentation ============= - Network device driver documentation Priority: Medium Complexity: C2 Create documentation for the developer how to create networking device drivers using the new IP stack. Testing ======= Here are some generic guidelines for network testing. - Unit tests Priority: High Complexity: Each new networking feature should have proper unit test created. These tests should be located under the tests/net directory. The tests should be integrated to the Continuous Integration (CI) infrastructure so that they are run automatically. - End-to-end networking tests Priority: High Complexity: C8 Create / port testing infrastructure for conformance testing. For example TAHI framework for IPv6 could be used to test IPv6 functionality, see www.ipv6ready.org for details. This entry should be split more to include various network testing frameworks.