SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Practical Guide to Run an IEEE
802.15.4 Network with 6LoWPAN
under Linux
Netdev 2016, Tokyo, Japan
Stefan Schmidt
stefan@osg.samsung.com
Samsung Open Source Group
Agenda
● Motivation
● Linux-wpan Project
● Wpan-tools
● Hardware and Basic Setup
● Communication with RIOT and Contiki
● Link Layer Security
● Routing: Route-over and Mesh-under
Motivation
IEEE 802.15.4
● IEEE specifications for Low-Rate Wireless
Personal Area Networks (LR-WPANs)
● Not only low-rate, but also low-power
● Designed for small sensors to run years
on battery with the right duty cycle
● 127 bytes MTU and 250 kbit/s
● PHY and MAC layers used in ZigBee
6LoWPAN
● Physical and MAC layer defined by IEEE 802.15.4
from 2003 onwards
● Series of IETF specifications from 2007 onwards
(RFCs 4944, 6282, etc)
L3 Network Layer
L4 Transport Layer
L1 Physical Layer
L5 Application Layer
L2 Data Link Layer
IP
TCP | UDP | ICMP
Ethernet PHY
Application
Ethernet MAC
IPv6
UDP | ICMPv6
6LoWPAN
IEEE 802.15.4 PHY
Application
IEEE 802.15.4 MAC
The Header Size Problem
● Worst-case scenario calculations
● Maximum frame size in IEEE 802.15.4: 127 bytes
● Reduced by the max. frame header (25 bytes): 102 bytes
● Reduced by highest link-layer security (21 bytes): 81 bytes
● Reduced by standard IPv6 header (40 bytes): 41 bytes
● Reduced by standard UDP header (8 bytes): 33 bytes
● This leaves only 33 bytes for actual payload
● The rest of the space is used by headers (~ 3:1 ratio)
Frame Header (25) LLSEC (21) IPv6 Header (40) UDP Payload (33)
Header Size Compressed
● IPv6 with link-local and UDP on top
● IPHC with NHC for UDP
● The 48 bytes IPv6 + UDP header could in
the best cases be reduced to 6 bytes
Frame Header (25) LLSEC (21) 6 Payload (75)
Dispatch (1) LOWPAN_IPHC (1) LOWPAN_NHC (1) UDP Ports (1) UDP Checksum (2)
Linux-wpan
● Platforms already running Linux would benefit from
native 802.15.4 and 6LoWPAN subsystems
● 802.15.4 transceivers can easily be added to
existing hardware designs
● Battery powered sensors on the other hand are
more likely to run an OS like RIOT or Contiki
● Example 1: Google OnHub AP which already comes
with, de-activated, 802.15.4 hardware
● Example 2: Ci40 Creator board as home IoT hub
Linux-wpan Project
Linux-wpan Project
● IEEE 802.15.4 and 6LoWPAN support in mainline Linux
● Started in 2008 as linux-zigbee project on SourceForge
● First steps of mainlining in 2012
● New project name to avoid confusion: linux-wpan
● New maintainer: Alexander Aring, Pengutronix
● Normal kernel development model
● Patches are posted and reviewed on the mailing list
● Accepted patches find their way through bluetooth-next,
wireless and netdev towards Linus tree
Linux-wpan Community
● Small community: 2 core devs and ~4
additional people for specific drivers
● Linux-wpan mailing list (~94 people)
● #linux-wpan on Freenode (~25 people)
● https://github.com/linux-wpan (no PR model)
● http://wpan.cakelab.org used for wpan-tools
releases
Current Status
● ieee802154 layer with softMAC driver for various
transceivers
●
6LoWPAN with fragmentation and reassembly
(RFC 4944)
● Header compression with IPHC and NHC for UDP
(RFC 6282), shared with BT subsystem
●
Link Layer Security
●
Testing between Linux, RIOT and Contiki
●
Mainline 4.1 onwards recommended
Development Boards
● Ci40 Creator (CA-8210)
● Raspberry Pi with Openlabs shield (AT86RF233)
● ARTIK 5/10 (802.15.4 network soc)
● Various transceivers can be hooked up via SPI
(all drivers have devicetree bindings)
● ATUSB USB dongle
6LoWPAN Fragmentation
● IPv6 requires the link to allow for a MTU of at least 1280
bytes
● This is impossible to handle in the 127 bytes MTU of IEEE
802.15.4
● 6LoWPAN 11 bit fragmentation header allows for 2048
bytes packet size with fragmentation
● But fragmentation can still lead to bad performance in
lossy networks, best to avoid it in the first place
IPv6 Header Compression (IPHC)
●
Defining some default values in IPv6 header
– Version == 6, traffic class & flow-label == 0, hop-limit only well-known values (1, 64, 255)
– Remove the payload length (available in 6LoWPAN fragment header or data-link header)
●
IPv6 stateless address auto configuration based on L2 address
– Omit the IPv6 prefix (global known by network, link-local defined by compression
(FE80::/64)
– Extended: EUI-64 L2 address use as is
– Short: pseudo 48 bit address based short address: PAN_ID:16 bit zero:SHORT_ADDRESS
Version
Source Address
(128 bit)
Destination Address
(128 bit)
Traffic Class Flow Label (20 bit)
Payload Length (16 bit) Next Header Hop Limit (8 bit)
Source Address
Dispatch
6LoWPAN Header IPHC multi-hop (7 bytes)
Hop LimitLoWPAN_IPHC
Destination Address
Dispatch
6LoWPAN Header IPHC link-local (2 bytes)
LoWPAN_IPHC
Next Header Compression
● NHC IPv6 Extension Header compression (RFC6282)
– Hop-by-Hop, Routing Header, Fragment Header, Destination
Options Header, Mobility Header
● NHC UDP Header compression (RFC6282)
– Compressing ports range to 4 bits
– Allows to omit the UDP checksum for cases where upper layers
handle message integrity checks
● GHC: LZ-77 style compression with byte codes (RFC7400)
– Appending zeroes, back referencing to a static dictionary and copy
– Useful for DTLS or RPL (addresses elided from dictionary)
Wpan-tools
● Netlink interface ideas as well as code borrowed from the
iw utility
● Used to configure PHY and MAC layer parameters
● Including channel, PAN ID, power setting, short address,
frame retries, etc
● Version 0.7 with network namespace support released two
weeks ago
● Packaged by some distributions (Fedora and Debian up to
date, Ubuntu on 0.5, OpenSUSE, Gentoo, Arch, etc missing)
Hardware and Basic Setup
Hardware Support
● Mainline drivers for at86rf2xx, mrf24j40, cc2520,
atusb and adf7242
● Pending driver for ca-8210
● Old out of tree driver for Xbee
● Most transceiver easy to hook up to SPI and some GPIOs
● ATUSB available as USB dongle to be used on your
normal workstation (sold out but a new batch is
being produced)
Virtual Driver
● Fake loopback driver (similar to hwsim of wireless)
● Great for testing
● Support for RIOT and OpenThread to use this when
running as native Linux process
● Will help interop testing between the different
network stacks in an virtual environment
$ modprobe fakelb numlbs=4
$ Configure for Linux, RIOT, OpenThread and monitor
Interface Bringup
● The wpan0 interface shows up automatically
● Setting up the basic parameters:
$ ip link set lowpan0 down
$ ip link set wpan0 down
$ iwpan dev wpan0 set pan_id 0xabcd
$ iwpan phy phy0 set channel 0 26
$ ip link add link wpan0 name lowpan0 type lowpan
$ ip link set wpan0 up
$ ip link set lowpan0 up
Monitoring
● Setting up the interface in promiscuous mode:
$ iwpan dev wpan0 del
$ iwpan phy phy0 interface add monitor%d type monitor
$ iwpan phy phy0 set channel 0 26
$ ip link set monitor0 up
$ wireshark -i monitor0
● No automatic channel hopping (you can change the
channel manually in the background)
Communication with RIOT &
Contiki
RIOT
● “The friendly Operating System for the
Internet of Things” (LGPL)
● Testing against Linux-wpan part of the
release testing process for RIOT
● Active developer discussions and bug
fixing between projects
Contiki
● “The Open Source OS for the Internet of Things”
(BSD)
● Very fragmented project
● Sadly many forks for academic or commercial
purpose which have a hard time to get merged
● Still an important role as IoT OS for tiny devices
Comparison
Feature Linux RIOT Contiki
IEEE 802.15.4: data and ACK frames ✔ ✔ ✔
IEEE 802.15.4: beacon and MAC command frames ✘ ✘ ✘
IEEE 802.15.4: scanning, joining, PAN coordinator ✘ ✘ ✘
IEEE 802.15.4: link layer security ✔ ✘ ✔
6LoWPAN: frame encapsulation, fragmentation, addressing (RFC 4944) ✔ ✔ ✔
6LoWPAN: IP header compression (RFC 6282) ✔ ✔ ✔
6LoWPAN: next header compression, UDP only (RFC 6282) ✔ ✔ ✔
6LoWPAN: generic header compression (RFC 7400) ✘ ✘ ✘
6LoWPAN: neighbour discovery optimizations (RFC 6775) Partial ✔ ✘
RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks ✔ ✔ ✔
Mesh link establishment draft ✘ ✘ ✘
Others
● Mbed OS from ARM: network stack is
closed source so nothing to test against
● Zephyr: network stack from Contiki used
right now but a new one is planned
Link Layer Security
Link Layer Security
● Specified by IEEE 802.15.4
● It defines confidentiality (AES-CTR), integrity (AES
CBC-MAC) and encryption and authentication (AES
CCM) security suites
● Key handling, key exchange, roll over, etc is not defined
● Tested Linux against Linux and Contiki 3.0
● No way to test against RIOT as they have no LLSEC
support right now
LLSEC Linux-wpan
● Needs the llsec branch in wpan-tools for
configuration
● CONFIG_IEEE802154_NL802154_EXPERIMENTAL
$ iwpan dev wpan0 set security 1
$ iwpan dev wpan0 key add 2 $KEY 0 $PANID 3 $EXTADDR
$ iwpan dev wpan0 seclevel add 0xff 2 0
$ iwpan dev wpan0 device add 0 $PANID $SHORTADDR $EXTADDR 0
0
LLSEC Contiki 3.0
● You need the following Contiki build options
configured in your project-conf.h to make use of
LLSEC with network wide key:
#define NETSTACK_CONF_LLSEC noncoresec_driver
#define LLSEC802154_CONF_SECURITY_LEVEL FRAME802154_SECURITY_LEVEL_ENC_MIC_32
#define NONCORESEC_CONF_KEY { 
0x00, 0x01, 0x02, 0x03, 
0x04, 0x05, 0x06, 0x07, 
0x08, 0x09, 0x0A, 0x0B, 
0x0C, 0x0D, 0x0E, 0x0F, 
}
Routing: Mesh-under and
Route-over
Mesh-under
● Allows fast forwarding of packets in a mesh without travelling
the IP stack
● IEEE 802.15.4 does not include mesh routing in the MAC specification
● Thus the mesh implementations sit above the MAC but below the
network layer
● Various (proprietary) implementations
● 6LoWPAN specification has a field for mesh headers
● No support in Linux-wpan for mesh header as of now
● Lost fragments of bigger packets will cause troubles
● Mesh Link Establishment draft at IETF
RPL
● IPv6 Routing Protocol for Low-Power and
Lossy Networks (RFC6550)
● Route over protocol
● Implementations in RIOT and Contiki
● Unstrung as Linux userspace reference
● Bit rotted in-kernel RPL demo patches on
the internet
Future
Linux-wpan Future
●
Implement missing parts of the IEEE 802.15.4 specification
● Beacon and MAC command frame support
● Coordinator support in MAC layer and wpan-tools
● Scanning for available networks
● Improve existing drivers and add support for new hardware
● Neighbour Discovery Optimizations (RFC 6775), started
●
Evaluate running OpenThread on top of linux-wpan
●
Configuration interface for various header compression
modules
●
Expose information for route-over and mesh-under protocols
Summary
Take away
● Running an IEEE 802.15.4 wireless
network under Linux is not hard
● Tooling and kernel support is already
there
● Border router scenario most likely use
case but nodes or routers also possible
Thank you!
http://www.slideshare.net/SamsungOSG

Weitere ähnliche Inhalte

Was ist angesagt?

6lowpan 110828234426-phpapp01
6lowpan 110828234426-phpapp016lowpan 110828234426-phpapp01
6lowpan 110828234426-phpapp01mrmr2010i
 
001 introduction Fortigate Administration Introduction
001 introduction Fortigate Administration  Introduction001 introduction Fortigate Administration  Introduction
001 introduction Fortigate Administration IntroductionMohamed Sana
 
Routing fundamentals with mikrotik
Routing fundamentals with mikrotikRouting fundamentals with mikrotik
Routing fundamentals with mikrotikAchmad Mardiansyah
 
Block Cipher and its Design Principles
Block Cipher and its Design PrinciplesBlock Cipher and its Design Principles
Block Cipher and its Design PrinciplesSHUBHA CHATURVEDI
 
OSPF On Router OS7
OSPF On Router OS7OSPF On Router OS7
OSPF On Router OS7GLC Networks
 
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemTutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemDheryta Jaisinghani
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linaro
 
DES (Data Encryption Standard) pressentation
DES (Data Encryption Standard) pressentationDES (Data Encryption Standard) pressentation
DES (Data Encryption Standard) pressentationsarhadisoftengg
 
Ganglia Monitoring Tool
Ganglia Monitoring ToolGanglia Monitoring Tool
Ganglia Monitoring Toolsudhirpg
 
Build enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANBuild enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANGLC Networks
 
Border Gateway Protocol
Border Gateway ProtocolBorder Gateway Protocol
Border Gateway ProtocolKashif Latif
 
Mikrotik Load Balancing with PCC
Mikrotik Load Balancing with PCCMikrotik Load Balancing with PCC
Mikrotik Load Balancing with PCCGLC Networks
 
Using Mikrotik Switch Features to Improve Your Network
Using Mikrotik Switch Features to Improve Your Network Using Mikrotik Switch Features to Improve Your Network
Using Mikrotik Switch Features to Improve Your Network GLC Networks
 

Was ist angesagt? (20)

6lowpan 110828234426-phpapp01
6lowpan 110828234426-phpapp016lowpan 110828234426-phpapp01
6lowpan 110828234426-phpapp01
 
001 introduction Fortigate Administration Introduction
001 introduction Fortigate Administration  Introduction001 introduction Fortigate Administration  Introduction
001 introduction Fortigate Administration Introduction
 
Secure Hash Algorithm
Secure Hash AlgorithmSecure Hash Algorithm
Secure Hash Algorithm
 
Routing fundamentals with mikrotik
Routing fundamentals with mikrotikRouting fundamentals with mikrotik
Routing fundamentals with mikrotik
 
Ethereum
EthereumEthereum
Ethereum
 
Block Cipher and its Design Principles
Block Cipher and its Design PrinciplesBlock Cipher and its Design Principles
Block Cipher and its Design Principles
 
OSPF On Router OS7
OSPF On Router OS7OSPF On Router OS7
OSPF On Router OS7
 
Ch07
Ch07Ch07
Ch07
 
NAT Traversal
NAT TraversalNAT Traversal
NAT Traversal
 
Mikro tik advanced training
Mikro tik advanced trainingMikro tik advanced training
Mikro tik advanced training
 
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemTutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
 
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
 
DES (Data Encryption Standard) pressentation
DES (Data Encryption Standard) pressentationDES (Data Encryption Standard) pressentation
DES (Data Encryption Standard) pressentation
 
MD-5 : Algorithm
MD-5 : AlgorithmMD-5 : Algorithm
MD-5 : Algorithm
 
Chapter 2 point-to-point protocol (ppp)
Chapter 2   point-to-point protocol (ppp)Chapter 2   point-to-point protocol (ppp)
Chapter 2 point-to-point protocol (ppp)
 
Ganglia Monitoring Tool
Ganglia Monitoring ToolGanglia Monitoring Tool
Ganglia Monitoring Tool
 
Build enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMANBuild enterprise wireless with CAPsMAN
Build enterprise wireless with CAPsMAN
 
Border Gateway Protocol
Border Gateway ProtocolBorder Gateway Protocol
Border Gateway Protocol
 
Mikrotik Load Balancing with PCC
Mikrotik Load Balancing with PCCMikrotik Load Balancing with PCC
Mikrotik Load Balancing with PCC
 
Using Mikrotik Switch Features to Improve Your Network
Using Mikrotik Switch Features to Improve Your Network Using Mikrotik Switch Features to Improve Your Network
Using Mikrotik Switch Features to Improve Your Network
 

Ähnlich wie Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux

Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceSamsung Open Source Group
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationSamsung Open Source Group
 
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...OpenStack Korea Community
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)Kirill Tsym
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingKernel TLV
 
Summit 16: How to Compose a New OPNFV Solution Stack?
Summit 16: How to Compose a New OPNFV Solution Stack?Summit 16: How to Compose a New OPNFV Solution Stack?
Summit 16: How to Compose a New OPNFV Solution Stack?OPNFV
 
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPAN
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPANLinux Kernel Status Report for IEEE 802.15.4 & 6LoWPAN
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPANSamsung Open Source Group
 
PLNOG16: Obsługa 100M pps na platformie PC , Przemysław Frasunek, Paweł Mała...
PLNOG16: Obsługa 100M pps na platformie PC, Przemysław Frasunek, Paweł Mała...PLNOG16: Obsługa 100M pps na platformie PC, Przemysław Frasunek, Paweł Mała...
PLNOG16: Obsługa 100M pps na platformie PC , Przemysław Frasunek, Paweł Mała...PROIDEA
 
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
DPDK summit 2015: It's kind of fun  to do the impossible with DPDKDPDK summit 2015: It's kind of fun  to do the impossible with DPDK
DPDK summit 2015: It's kind of fun to do the impossible with DPDKLagopus SDN/OpenFlow switch
 
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaDPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaJim St. Leger
 
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...Jim St. Leger
 
Stacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackStacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackOpen-NFP
 
Lagopus presentation on 14th Annual ON*VECTOR International Photonics Workshop
Lagopus presentation on 14th Annual ON*VECTOR International Photonics WorkshopLagopus presentation on 14th Annual ON*VECTOR International Photonics Workshop
Lagopus presentation on 14th Annual ON*VECTOR International Photonics WorkshopLagopus SDN/OpenFlow switch
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchJim St. Leger
 
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...Shawn Wells
 

Ähnlich wie Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux (20)

Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
6LoWPAN: An Open IoT Networking Protocol
6LoWPAN: An Open IoT Networking Protocol6LoWPAN: An Open IoT Networking Protocol
6LoWPAN: An Open IoT Networking Protocol
 
6LoWPAN: An open IoT Networking Protocol
6LoWPAN: An open IoT Networking Protocol6LoWPAN: An open IoT Networking Protocol
6LoWPAN: An open IoT Networking Protocol
 
Introduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential CollaborationIntroduction to Linux-wpan and Potential Collaboration
Introduction to Linux-wpan and Potential Collaboration
 
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
[OpenStack Day in Korea 2015] Track 1-6 - 갈라파고스의 이구아나, 인프라에 오픈소스를 올리다. 그래서 보이...
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
Summit 16: How to Compose a New OPNFV Solution Stack?
Summit 16: How to Compose a New OPNFV Solution Stack?Summit 16: How to Compose a New OPNFV Solution Stack?
Summit 16: How to Compose a New OPNFV Solution Stack?
 
SFScon 21 - Stefan Schmidt - The Rise of IPv6 in IoT Protocols
SFScon 21 - Stefan Schmidt - The Rise of IPv6 in IoT ProtocolsSFScon 21 - Stefan Schmidt - The Rise of IPv6 in IoT Protocols
SFScon 21 - Stefan Schmidt - The Rise of IPv6 in IoT Protocols
 
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPAN
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPANLinux Kernel Status Report for IEEE 802.15.4 & 6LoWPAN
Linux Kernel Status Report for IEEE 802.15.4 & 6LoWPAN
 
PLNOG16: Obsługa 100M pps na platformie PC , Przemysław Frasunek, Paweł Mała...
PLNOG16: Obsługa 100M pps na platformie PC, Przemysław Frasunek, Paweł Mała...PLNOG16: Obsługa 100M pps na platformie PC, Przemysław Frasunek, Paweł Mała...
PLNOG16: Obsługa 100M pps na platformie PC , Przemysław Frasunek, Paweł Mała...
 
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
DPDK summit 2015: It's kind of fun  to do the impossible with DPDKDPDK summit 2015: It's kind of fun  to do the impossible with DPDK
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
 
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaDPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
 
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
 
L6 6 lowpan
L6 6 lowpanL6 6 lowpan
L6 6 lowpan
 
Stacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackStacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStack
 
Lagopus presentation on 14th Annual ON*VECTOR International Photonics Workshop
Lagopus presentation on 14th Annual ON*VECTOR International Photonics WorkshopLagopus presentation on 14th Annual ON*VECTOR International Photonics Workshop
Lagopus presentation on 14th Annual ON*VECTOR International Photonics Workshop
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
 
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...
2010-01-28 NSA Open Source User Group Meeting, Current & Future Linux on Syst...
 

Mehr von Samsung Open Source Group

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBSamsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesSamsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondSamsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialSamsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategySamsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilitySamsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxSamsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsSamsung Open Source Group
 

Mehr von Samsung Open Source Group (20)

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 
Clang: More than just a C/C++ Compiler
Clang: More than just a C/C++ CompilerClang: More than just a C/C++ Compiler
Clang: More than just a C/C++ Compiler
 
JerryScript on RIOT
JerryScript on RIOTJerryScript on RIOT
JerryScript on RIOT
 
Development Boards for Tizen IoT
Development Boards for Tizen IoTDevelopment Boards for Tizen IoT
Development Boards for Tizen IoT
 

Kürzlich hochgeladen

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 

Kürzlich hochgeladen (20)

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 

Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux

  • 1. Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN under Linux Netdev 2016, Tokyo, Japan Stefan Schmidt stefan@osg.samsung.com Samsung Open Source Group
  • 2. Agenda ● Motivation ● Linux-wpan Project ● Wpan-tools ● Hardware and Basic Setup ● Communication with RIOT and Contiki ● Link Layer Security ● Routing: Route-over and Mesh-under
  • 4. IEEE 802.15.4 ● IEEE specifications for Low-Rate Wireless Personal Area Networks (LR-WPANs) ● Not only low-rate, but also low-power ● Designed for small sensors to run years on battery with the right duty cycle ● 127 bytes MTU and 250 kbit/s ● PHY and MAC layers used in ZigBee
  • 5. 6LoWPAN ● Physical and MAC layer defined by IEEE 802.15.4 from 2003 onwards ● Series of IETF specifications from 2007 onwards (RFCs 4944, 6282, etc) L3 Network Layer L4 Transport Layer L1 Physical Layer L5 Application Layer L2 Data Link Layer IP TCP | UDP | ICMP Ethernet PHY Application Ethernet MAC IPv6 UDP | ICMPv6 6LoWPAN IEEE 802.15.4 PHY Application IEEE 802.15.4 MAC
  • 6. The Header Size Problem ● Worst-case scenario calculations ● Maximum frame size in IEEE 802.15.4: 127 bytes ● Reduced by the max. frame header (25 bytes): 102 bytes ● Reduced by highest link-layer security (21 bytes): 81 bytes ● Reduced by standard IPv6 header (40 bytes): 41 bytes ● Reduced by standard UDP header (8 bytes): 33 bytes ● This leaves only 33 bytes for actual payload ● The rest of the space is used by headers (~ 3:1 ratio) Frame Header (25) LLSEC (21) IPv6 Header (40) UDP Payload (33)
  • 7. Header Size Compressed ● IPv6 with link-local and UDP on top ● IPHC with NHC for UDP ● The 48 bytes IPv6 + UDP header could in the best cases be reduced to 6 bytes Frame Header (25) LLSEC (21) 6 Payload (75) Dispatch (1) LOWPAN_IPHC (1) LOWPAN_NHC (1) UDP Ports (1) UDP Checksum (2)
  • 8. Linux-wpan ● Platforms already running Linux would benefit from native 802.15.4 and 6LoWPAN subsystems ● 802.15.4 transceivers can easily be added to existing hardware designs ● Battery powered sensors on the other hand are more likely to run an OS like RIOT or Contiki ● Example 1: Google OnHub AP which already comes with, de-activated, 802.15.4 hardware ● Example 2: Ci40 Creator board as home IoT hub
  • 10. Linux-wpan Project ● IEEE 802.15.4 and 6LoWPAN support in mainline Linux ● Started in 2008 as linux-zigbee project on SourceForge ● First steps of mainlining in 2012 ● New project name to avoid confusion: linux-wpan ● New maintainer: Alexander Aring, Pengutronix ● Normal kernel development model ● Patches are posted and reviewed on the mailing list ● Accepted patches find their way through bluetooth-next, wireless and netdev towards Linus tree
  • 11. Linux-wpan Community ● Small community: 2 core devs and ~4 additional people for specific drivers ● Linux-wpan mailing list (~94 people) ● #linux-wpan on Freenode (~25 people) ● https://github.com/linux-wpan (no PR model) ● http://wpan.cakelab.org used for wpan-tools releases
  • 12. Current Status ● ieee802154 layer with softMAC driver for various transceivers ● 6LoWPAN with fragmentation and reassembly (RFC 4944) ● Header compression with IPHC and NHC for UDP (RFC 6282), shared with BT subsystem ● Link Layer Security ● Testing between Linux, RIOT and Contiki ● Mainline 4.1 onwards recommended
  • 13. Development Boards ● Ci40 Creator (CA-8210) ● Raspberry Pi with Openlabs shield (AT86RF233) ● ARTIK 5/10 (802.15.4 network soc) ● Various transceivers can be hooked up via SPI (all drivers have devicetree bindings) ● ATUSB USB dongle
  • 14. 6LoWPAN Fragmentation ● IPv6 requires the link to allow for a MTU of at least 1280 bytes ● This is impossible to handle in the 127 bytes MTU of IEEE 802.15.4 ● 6LoWPAN 11 bit fragmentation header allows for 2048 bytes packet size with fragmentation ● But fragmentation can still lead to bad performance in lossy networks, best to avoid it in the first place
  • 15. IPv6 Header Compression (IPHC) ● Defining some default values in IPv6 header – Version == 6, traffic class & flow-label == 0, hop-limit only well-known values (1, 64, 255) – Remove the payload length (available in 6LoWPAN fragment header or data-link header) ● IPv6 stateless address auto configuration based on L2 address – Omit the IPv6 prefix (global known by network, link-local defined by compression (FE80::/64) – Extended: EUI-64 L2 address use as is – Short: pseudo 48 bit address based short address: PAN_ID:16 bit zero:SHORT_ADDRESS Version Source Address (128 bit) Destination Address (128 bit) Traffic Class Flow Label (20 bit) Payload Length (16 bit) Next Header Hop Limit (8 bit) Source Address Dispatch 6LoWPAN Header IPHC multi-hop (7 bytes) Hop LimitLoWPAN_IPHC Destination Address Dispatch 6LoWPAN Header IPHC link-local (2 bytes) LoWPAN_IPHC
  • 16. Next Header Compression ● NHC IPv6 Extension Header compression (RFC6282) – Hop-by-Hop, Routing Header, Fragment Header, Destination Options Header, Mobility Header ● NHC UDP Header compression (RFC6282) – Compressing ports range to 4 bits – Allows to omit the UDP checksum for cases where upper layers handle message integrity checks ● GHC: LZ-77 style compression with byte codes (RFC7400) – Appending zeroes, back referencing to a static dictionary and copy – Useful for DTLS or RPL (addresses elided from dictionary)
  • 17. Wpan-tools ● Netlink interface ideas as well as code borrowed from the iw utility ● Used to configure PHY and MAC layer parameters ● Including channel, PAN ID, power setting, short address, frame retries, etc ● Version 0.7 with network namespace support released two weeks ago ● Packaged by some distributions (Fedora and Debian up to date, Ubuntu on 0.5, OpenSUSE, Gentoo, Arch, etc missing)
  • 19. Hardware Support ● Mainline drivers for at86rf2xx, mrf24j40, cc2520, atusb and adf7242 ● Pending driver for ca-8210 ● Old out of tree driver for Xbee ● Most transceiver easy to hook up to SPI and some GPIOs ● ATUSB available as USB dongle to be used on your normal workstation (sold out but a new batch is being produced)
  • 20. Virtual Driver ● Fake loopback driver (similar to hwsim of wireless) ● Great for testing ● Support for RIOT and OpenThread to use this when running as native Linux process ● Will help interop testing between the different network stacks in an virtual environment $ modprobe fakelb numlbs=4 $ Configure for Linux, RIOT, OpenThread and monitor
  • 21. Interface Bringup ● The wpan0 interface shows up automatically ● Setting up the basic parameters: $ ip link set lowpan0 down $ ip link set wpan0 down $ iwpan dev wpan0 set pan_id 0xabcd $ iwpan phy phy0 set channel 0 26 $ ip link add link wpan0 name lowpan0 type lowpan $ ip link set wpan0 up $ ip link set lowpan0 up
  • 22. Monitoring ● Setting up the interface in promiscuous mode: $ iwpan dev wpan0 del $ iwpan phy phy0 interface add monitor%d type monitor $ iwpan phy phy0 set channel 0 26 $ ip link set monitor0 up $ wireshark -i monitor0 ● No automatic channel hopping (you can change the channel manually in the background)
  • 24. RIOT ● “The friendly Operating System for the Internet of Things” (LGPL) ● Testing against Linux-wpan part of the release testing process for RIOT ● Active developer discussions and bug fixing between projects
  • 25. Contiki ● “The Open Source OS for the Internet of Things” (BSD) ● Very fragmented project ● Sadly many forks for academic or commercial purpose which have a hard time to get merged ● Still an important role as IoT OS for tiny devices
  • 26. Comparison Feature Linux RIOT Contiki IEEE 802.15.4: data and ACK frames ✔ ✔ ✔ IEEE 802.15.4: beacon and MAC command frames ✘ ✘ ✘ IEEE 802.15.4: scanning, joining, PAN coordinator ✘ ✘ ✘ IEEE 802.15.4: link layer security ✔ ✘ ✔ 6LoWPAN: frame encapsulation, fragmentation, addressing (RFC 4944) ✔ ✔ ✔ 6LoWPAN: IP header compression (RFC 6282) ✔ ✔ ✔ 6LoWPAN: next header compression, UDP only (RFC 6282) ✔ ✔ ✔ 6LoWPAN: generic header compression (RFC 7400) ✘ ✘ ✘ 6LoWPAN: neighbour discovery optimizations (RFC 6775) Partial ✔ ✘ RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks ✔ ✔ ✔ Mesh link establishment draft ✘ ✘ ✘
  • 27. Others ● Mbed OS from ARM: network stack is closed source so nothing to test against ● Zephyr: network stack from Contiki used right now but a new one is planned
  • 29. Link Layer Security ● Specified by IEEE 802.15.4 ● It defines confidentiality (AES-CTR), integrity (AES CBC-MAC) and encryption and authentication (AES CCM) security suites ● Key handling, key exchange, roll over, etc is not defined ● Tested Linux against Linux and Contiki 3.0 ● No way to test against RIOT as they have no LLSEC support right now
  • 30. LLSEC Linux-wpan ● Needs the llsec branch in wpan-tools for configuration ● CONFIG_IEEE802154_NL802154_EXPERIMENTAL $ iwpan dev wpan0 set security 1 $ iwpan dev wpan0 key add 2 $KEY 0 $PANID 3 $EXTADDR $ iwpan dev wpan0 seclevel add 0xff 2 0 $ iwpan dev wpan0 device add 0 $PANID $SHORTADDR $EXTADDR 0 0
  • 31. LLSEC Contiki 3.0 ● You need the following Contiki build options configured in your project-conf.h to make use of LLSEC with network wide key: #define NETSTACK_CONF_LLSEC noncoresec_driver #define LLSEC802154_CONF_SECURITY_LEVEL FRAME802154_SECURITY_LEVEL_ENC_MIC_32 #define NONCORESEC_CONF_KEY { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, }
  • 33. Mesh-under ● Allows fast forwarding of packets in a mesh without travelling the IP stack ● IEEE 802.15.4 does not include mesh routing in the MAC specification ● Thus the mesh implementations sit above the MAC but below the network layer ● Various (proprietary) implementations ● 6LoWPAN specification has a field for mesh headers ● No support in Linux-wpan for mesh header as of now ● Lost fragments of bigger packets will cause troubles ● Mesh Link Establishment draft at IETF
  • 34. RPL ● IPv6 Routing Protocol for Low-Power and Lossy Networks (RFC6550) ● Route over protocol ● Implementations in RIOT and Contiki ● Unstrung as Linux userspace reference ● Bit rotted in-kernel RPL demo patches on the internet
  • 36. Linux-wpan Future ● Implement missing parts of the IEEE 802.15.4 specification ● Beacon and MAC command frame support ● Coordinator support in MAC layer and wpan-tools ● Scanning for available networks ● Improve existing drivers and add support for new hardware ● Neighbour Discovery Optimizations (RFC 6775), started ● Evaluate running OpenThread on top of linux-wpan ● Configuration interface for various header compression modules ● Expose information for route-over and mesh-under protocols
  • 38. Take away ● Running an IEEE 802.15.4 wireless network under Linux is not hard ● Tooling and kernel support is already there ● Border router scenario most likely use case but nodes or routers also possible