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: <unknown>

   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.


CAN
===

CAN (Controller Area Network) is a networking technology
which is used in automation, embedded devices, and
automotive fields.

- Implement CAN support

  Priority: Medium
  Complexity: C8

  This is a placeholder for CAN support and should be
  split into smaller pieces.
