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 ==== - Hop-by-Hop option handling Priority: Medium Complexity: C1 Parse IPv6 Hop-by-Hop options and act accordingly. See RFC 2460 for details. - 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 - ICMPv6 "Parameter Problem" support Priority: Low Complexity: C1 Add support for sending "Parameter Problem" 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. - RPL (Ripple) support Priority: Med Complexity: C4 Add support for RPL (Ripple): IPv6 routing protocol for low power and lossy networks. See RFC 6550 for details. This entry is for the new IP stack. 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 ======= - Offset based Reassembly of 802.15.4 packets Priority: Medium Complexicity: C2 Offset based reassembly of 802.15.4 packets. Fragments can come in any order [e.g. mesh]. - 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). L2 == - Add a interface management API Priority: High Complexity: C4 Add a generic API to let upper layers configuring network interfaces as well as tweaking its L2 layer and raising dedicated process. (I.e.: Running a scan in 802.15.4) IEEE 802.15.4 ============= 2011 version ------------ - CSMA-CA Radio protocol support Priority: Low Complexity: C2 Add CSMA-CA radio protocol as a replacement of the current too simplistic ALOHA radio protocol. - Beacon frame support Priority: Medium Complexity: C1 Add the means to parse or create Beacon frames. - MAC command frame support Priority: High Complexity: C2 Add the means to parse or create MAC command frames. All commands as stated in table 5. - 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 ================= - Domain Name Service client Priority: Low Complexity: C4 Create DNS client functionality so that applications can use Domain Name Service to query IP addresses. - 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. - CoAP support Priority: High Complexity: C4 Create CoAP server and client support. - 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. - MQTT support Priority: High Complexity: C4 Create support for MQTT. This requires working TCP support. - 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 ============= - Architecture documentation Priority: Medium Complexity: C2 Create documentation of the new networking stack to doc/ - Developer API usage documentation Priority: Medium Complexity: C2 Create documentation for the developer how to create networking applications using the new IP stack. - 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.