zephyr/net/TODO

400 lines
7.8 KiB
Plaintext

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