400 lines
7.8 KiB
Plaintext
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.
|