blob: 22519f47fa63c5df890b226a80c940c8f23ce006 [file] [log] [blame]
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.