nuttx/net/sixlowpan
2017-04-16 10:28:31 -06:00
..
Kconfig pthread.h: Fix rwlock initializer 2017-04-08 12:34:08 -06:00
Make.defs 6loWPAN: Add HC06 decompression logic; Remove outboard compressor hooks. 2017-04-02 08:08:35 -06:00
README.txt 6loWPAN: Fix breakage in IPv6 dispatch caused by fixes to HC1 dispatch; Move some standard definitions from internal header file to include/nuttx/net/sixlowpan.h. Update a README. 2017-04-08 10:18:44 -06:00
sixlowpan_framelist.c 6loWPAN: Fix more frame offsets. Reorder some logic that was appropriate only for IPv6 dispatch. 2017-04-08 09:34:30 -06:00
sixlowpan_framer.c pthread.h: Fix rwlock initializer 2017-04-08 12:34:08 -06:00
sixlowpan_globals.c 6loWPAN: Correct some fragmentation handling 2017-04-07 09:49:10 -06:00
sixlowpan_hc1.c 6loWPAN: Fix more frame offsets. Reorder some logic that was appropriate only for IPv6 dispatch. 2017-04-08 09:34:30 -06:00
sixlowpan_hc06.c Fix typos in comments and debug statement. 2017-04-16 10:28:31 -06:00
sixlowpan_initialize.c 6loWPAN: Repartition some logic 2017-03-29 18:07:52 -06:00
sixlowpan_input.c 6loWPAN: Fix breakage in IPv6 dispatch caused by fixes to HC1 dispatch; Move some standard definitions from internal header file to include/nuttx/net/sixlowpan.h. Update a README. 2017-04-08 10:18:44 -06:00
sixlowpan_internal.h Buttons: Change return value of board_buttons() and the type of btn_buttonset_t to uint32_t so that more than 8 buttons can be supported. 2017-04-09 07:22:49 -06:00
sixlowpan_send.c 6loWPAN: Add some checks for the case where there are multiple network devices and multiple link layer protocols. 2017-04-15 08:53:42 -06:00
sixlowpan_tcpsend.c 6loWPAN: Add calculation of TCP header size. It is not a constant. 2017-04-07 17:04:57 -06:00
sixlowpan_udpsend.c 6loWPAN: Fixes for UDP packet transfers. 2017-04-06 11:57:43 -06:00
sixlowpan_utils.c pthread.h: Fix rwlock initializer 2017-04-08 12:34:08 -06:00
sixlowpan.h 6loWPAN: Updates/fixes from early testing with the IEEE802.15.4 loopback driver. 2017-04-03 12:01:04 -06:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Optimal 6loWPAN Configuration
-----------------------------

1. Link local IP addresses:

   128  112  96   80    64   48   32   16
   fe80 0000 0000 0000  xxxx xxxx xxxx xxxx

2. MAC-based IP addresses:

   128  112  96   80    64   48   32   16
   ---- ---- ---- ----  ---- ---- ---- ----
   xxxx xxxx xxxx xxxx  xxxx 00ff fe00 MMMM 2-byte Rime address IEEE 48-bit MAC
   fe80 0000 0000 0000  NNNN NNNN NNNN NNNN 8-byte Rime address IEEE EUI-64

   Where MMM is the 2-byte rime address XOR 0x0200.  For example, the MAC
   address of 0xabcd would be 0xa9cd.  And NNNN NNNN NNNN NNNN is the 8-byte
   rime address address XOR 02000 0000 0000 0000

3. MAC based link-local addresses

   128  112  96   80    64   48   32   16
   ---- ---- ---- ----  ---- ---- ---- ----
   fe80 0000 0000 0000  0000 00ff fe00 MMMM 2-byte Rime address IEEE 48-bit MAC
   fe80 0000 0000 0000  NNNN NNNN NNNN NNNN 8-byte Rime address IEEE EUI-64

4. Compressable port numbers in the rangs 0xf0b0-0xf0bf

5. IOBs: Must be big enough to hold one IEEE802.15.4 frame (CONFIG_NET_6LOWPAN_FRAMELEN,
   typically 127).  There must be enough IOBs to decompose the largest IPv6
   packet (CONFIG_NET_6LOWPAN_MTU, default 1294, plus per frame overhead).

Fragmentation Headers
---------------------
A fragment header is placed at the beginning of the outgoing packet when the
payload is too large to fit in a single IEEE 802.15.4 frame. The fragment
header contains three fields: Datagram size, datagram tag and datagram
offset.

1. Datagram size describes the total (un-fragmented) payload.
2. Datagram tag identifies the set of fragments and is used to match
   fragments of the same payload.
3. Datagram offset identifies the fragments offset within the un-
   fragmented payload (in units of 8 bytes).

The length of the fragment header length is four bytes for the first header
(FRAG1) and five bytes for all subsequent headers (FRAGN).  For example,
this is a HC1 compressed first frame of a packet

  c50e 000b                                                            ### 4-byte FRAG1 header
  01 08 01 0000 3412                                                   ### 7-byte FCF header
  42                                                                   ### SIXLOWPAN_DISPATCH_HC1
    fb                                                                 ### RIME_HC1_HC_UDP_HC1_ENCODING
    e0                                                                 ### RIME_HC1_HC_UDP_UDP_ENCODING
    00                                                                 ### RIME_HC1_HC_UDP_TTL
    10                                                                 ### RIME_HC1_HC_UDP_PORTS
    0000                                                               ### RIME_HC1_HC_UDP_CHKSUM
  4f4e452064617920 48656e6e792d7065 6e6e792077617320 7069636b696e6720  ### 80 byte payload
  757020636f726e20 696e207468652063 6f726e7961726420 7768656e2d2d7768
  61636b212d2d736f 6d657468696e6720                                                              g

This is the second frame of the same transfer:

  e50e 000b 0a                                                         ### 5 byte FRAGN header
  01 08 01 0000 3412                                                   ### 7-byte FCF header
  6869742068657220 75706f6e20746865 20686561642e2027 476f6f646e657373  ### 88 byte payload
  2067726163696f75 73206d6521272073 6169642048656e6e 792d70656e6e793b
  202774686520736b 79277320612d676f 696e6720746f2066

The payload length is encoded in the LS 11-bits of the first 16-bit value:
In this example the payload size is 0x050e or 1,294.  The tag is 0x000b.  In
the second frame, the fifth byte contains the offset 0x0a which is 10 << 3 =
80 bytes, the size of the payload on the first packet.