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

- 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.


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_BT.

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.
