Vous êtes sur la page 1sur 82

6LoWPAN

IPv6 for Wireless Sensor Network SASE 2013


Ing. Ana Diedrichs
UTN - Mendoza - Argentina ana.diedrichs@gridtics.frm.utn.edu.ar

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA

Contenidos

Introduccin, Motivation Introduccin a 6LoWPAN Formato de 6LoWPAN Neighbor Discovery: descubriendo nodos vecinos Introduccin a Routing Capa de aplicacin Implementacin de 6loWPAN

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA

Internet of Things (IoT): el alcance del Internet de las Cosas

Internet of Things: aplicaciones

Internet (v4) Regional Registry Exhaustion


Addresses Challenge
IANA Unallocated Address Pool Exhaustion: 03-Feb-2011 "Exhaustion" when the pool of available addresses in each RIR reaches the last /8 threshold.

IP next generation
IPv6

Espacio de direcciones: 128 bits (2128) (ipv4 32 bis)


3.41038 = 340282366920938463463374607431768211456 addr.

Hay ~ 1025 granos de arena en la tierra Podramos conectar un trilln de objetos en internet!! Encabezado de tamao fijo (Fix size Header)
* No hay fragmentacin en el camino (routers) * Se pueden aadir cabeceras extras

Unicast, Multicast y Anycast (NO Broadcast) Configuracin de las direcciones Stateless y stateful

Internet of Things: el desafo de la interconexin


Conectar millones de objetos/cosas de forma cableada (no inalmbrica) sera muy costoso. A modo de ejemplo Electrical wall socket + installation = $50 Cat5 socket + installation = $150 1 Trillon nodes >> 1000 DGP Argentina Comparaciones entre distintas tecnologas wireless

Technology Wifi Bluetooth 802.15.4

Range 100 mts. 10-100 mts. 10-100 mts.

Speed 10-100 Mb/s 1-3 Mb/s 0,25-Mb/s

Power Use High Medium Low

Cost $$$ $$ $

Evolucin de las Wireless Sensor Networks


Price Cabling Proprietary radio + network ZigBee Scalability 6lowpan Internet

Any vendor

Z-Wave, prop. ISM etc.

ZigBee and WHART

6lowpan ISA100

Cables

Vendor lock-in

Complex middleware

Open development and portability

1980s

2000

2006

2008 ->

Increased Productivity

Beneficios de la tecnologa 6LoWPAN


IPv6 over Low-Power Wireless Personal Area Networks

Low-power RF + IPv6 = The Wireless Embedded Internet 6LoWPAN lo hace posible Los beneficios de 6-lowPAN incluyen:
El uso de un estndar abierto, confiable y standards Fcil curva de aprendizaje Integracin transparente con internet Mantenimiento de la red Escalabilidad global Flujo de datos End-to-end El uso de la infraestructura existente de internet

Introduccin a 6LoWPAN

Qu es 6LoWPAN?
IPv6 sobre Low-Power wireless Area Networks Definido en estndares IETF
RFC 4919, 4944 draft-ietf-6lowpan-hc and -nd draft-ietf-roll-rpl

Compresin de cabecera sin estado (Stateless header compression) Enables a standard socket API Uso mnimo de cdigo y memoria Integracin punto a punto con internet
Mltiples opciones de topologa (802.15.4, Bluetooth,etc)

Permite adaptar un protocolo como IPV6 a cualquier PAN compuesta con dispositivos de recursos limitados y bajo consumo energtico

Grandes desafos en las LoWPAN's


Dificultades en la implementacin en sistemas embebidos debido a: -Alimentacin y duty-cycle: dispositivos inalmbricos alimentados por bateras necesitan mantener ciclos cortos de actividad y permanecer en modo bajo consumo el tiempo restante. -Tamao de la trama (frame): Protocolos actuales de internet requieren enlaces que manejen tramas grandes -Multicast: usualmente los dispositivos inalmbricos embebidos no soportan multicast. -Confiabilidad: Los protocolos de internet no estn optimizados para LoWPANs (low-power wireless and lossy networks). -Web Services: Hoy en da los principales servicios de internet se apoyan en web services haciendo uso en su mayora de TCP. -Gestin de la red: gestionar la red va SNMP o web services

El formato de 6LoWPAN

15

Arquitectura
Las LoWPANs son stub networks: no tienen conocimiento de otras redes, no transportan trfico de otras redes a travs de ellas y para comunicarse con otras redes tienen ciertos puntos de salida (edge routers) definidos. Una analoga es comparar la lowPAN con una isla de la que pueden salir uno o varios puentes. Tipos de configuraciones posibles con 6lowPAN Simple LoWPAN
Un Edge Router (router de borde)

Extended LoWPAN
Varios Edge Routers compartiendo un enlace en comn (backbone)

Ad-hoc LoWPAN
No hay routers en la LowPAN

Problemas de integracin con internet


Unidad mxima de transmisin (MTU) Protocolos de aplicacin Interconectividad con IPv4 (transicin) Firewalls y NATs Seguridad

IPv6-LoWPAN Router Edge Stack

16

Arquitectura

17

El formato de 6LoWPAN
6LoWPAN es una adaptacin del formato de cabecera de IPV6
Permite el uso de IPV6 en redes inalmbricas de bajo consumo Compresin de cabecera IPv6 Compresin de cabecera UDP

Formato inicialmente definido en RFC4944 Actualizado en draft-ietf-6lowpan-hc

18

Caractersticas de 6loWPAN
Trabaja bien en conjunto a capas de enlace de bajo consumo como IEEE 802.15.4, narrowband ISM y bluetooth Soporte para direccionamiento de 64-bit y 16-bit usado en 802.15.4 Compresin de cabecera eficiente
Cabeceras base y de extensin de IPv6, cabecera de UDP

Autoconfiguracin de la red usando neighbor discovery Unicast, multicast and broadcast support
Multicast is compressed and mapped to broadcast

Fragmentacin
1280 byte IPv6 MTU -> 127 byte 802.15.4 frames

Soporte para IP routing (e.g. IETF RPL) Soporte para el uso de link-layer mesh (e.g. 802.15.5)
19

The 6LoWPAN Format


6LoWPAN makes use of IPv6 address compression RFC4944 Features:
Basic LoWPAN header format HC1 (IPv6 header) and HC2 (UDP header) compression formats Stateless compression mechanism Fragmentation & reassembly Mesh header feature (depreciation planned) Multicast mapping to 16-bit address space

draft-ietf-6lowpan-hc Features:
New HC (IPv6 header) and NHC (Next-header) compression Support for global address compression (with contexts) Support for IPv6 option header compression Support for compact multicast address compression
20

IPv4 and IPv6 Format

21

Direcciones IPv6

Unicast Address Scope Local-link : Local-Site : Global : fe80::/64 fec0::/64 2000::/3

Global Site-Local Link-Local

22

Direccionamiento en IPv6
Stateless Address Autoconfiguration (SAA) Prefix (64 bits) + Subfix (64bits) Prefix: (indica el alcance de una direccin)
Local link (prefijo fe80::) Global Link (prefix: Router Advertisement Router Solicitation)

Subfix: EUI64 64-bit (Global Identifier - IEEE) Ejemplo de una interfaz wlan0 de una notebook conectada a una red ipv6 (direccin local y direccin global)
wlan0 Link encap:Ethernet HWaddr 00:25:d3:67:79:ad inet6 addr: 2001:1291:200:829e:225:d3ff:fe67:79ad/64 Scope:Global inet6 addr: fe80::225:d3ff:fe67:79ad/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10732 errors:0 dropped:0 overruns:0 frame:0 TX packets:9573 errors:0 dropped:0 overruns:0 carrier:0 RX bytes:7807052 (7.8 MB) TX bytes:1175527 (1.1 MB)

Dispatch
el primer byte del Payload
(http://www.iana.org/assignments/6lowpan-parameters/)

Bit Pattern
00 xxxxxx 01 000000 01 000001 01 000010 01 000011 to 01001111 01 010000 01 010001 to 01011111 01 1xxxxx 10 xxxxxx 11 000xxx 11 001000 to 11011111 11 100xxx 11 101000 to 11111111

Header Type
NALP - Not a LoWPAN frame

Reference
[RFC4944] [RFC6282] [RFC4944] [RFC4944] [RFC4944] [RFC6282] [RFC4944] [RFC4944] [RFC4944]
24

Reserved as a replacement value for ESC IPv6 - uncompressed IPv6 Addresses LOWPAN_HC1 - compressed IPv6 reserved for future use LOWPAN_BC0 - broadcast reserved for future use LOWPAN_IPHC MESH - Mesh header FRAG1 -- Fragmentation Header (first) reserved for future use FRAGN -- Fragmentation Header (subseq) reserved for future use

IPv6/UDP Headers
Cabeceras sin comprimir
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 0 0 0 0 0 0 1|Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Flow Label cont| Payload Length | Next Header | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hop Limit | | +-+-+-+-+-+-+-+-+ + | | + + | Source Address | + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+ + | | + + | Destination Address | + + | | + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Source Port | Destination P.| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Dest. P. cont| Length | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum cont | UDP Payload ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 25

IPv6

UDP

Payload

IP Header Compression (HC1 and HC2)


No se utilizan tcnicas del tipo gzip (compresin de archivos) No es una tcnica punto a punto ya que la direccin IP es requerida por los routers Stateless compression

0 1 2 3 012 34 5678 901 2345 6789 012 345 678 90 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0 1 0 0 0 0 1 0|SAE|DAE|C|NH |0 | Non-Compressed fields... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \__dispatch __/ \_ HC1 header_/ 0 1 2 3 0123 4567 89 0123 45 678 9012 34 567 8901 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0 1 0 0 0 0 1 0|SAE|DAE|C|NH |1 |S|D|L|__________| N.-C. fields... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ \__ dispatch__/ \_ HC1 header_/ \_ HC2 header_/
C = Class and Flow Label SAE/DAE = Source/Destination Address Encoding NH = Next Header S/D = Source/Destination Port Compression (61616 + 16) L= whenever the length es compressed Never Compressed Hop Limit and UDP Checksum

26

LoWPAN UDP/IPv6 Headers


6 Bytes!
LoWPAN IPv6 UDP

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Dispatch with LOWPAN_IPHC | LOWPAN_NHC | Src | Dst | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDP Checksum | UDP Payload ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Payload

draft-ietf-6lowpan-hc

27

IP Header Compression (IPHC)


Most of the time is used Global Routeable Ipv6 Addresses. Base Header +-------------------------------------+-----------------------| Dispatch + LOWPAN_IPHC (2-3 octets) | Compressed IPv6 Header +-------------------------------------+-----------------------LOWPAN_IPHC Encoding 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | 0 | 1 | 1 | TF |NH | HLIM |CID|SAC| SAM | M |DAC| DAM | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ TF = Traffic Class, Flow Label NH = Next Header Flag HLIM = Hop Limit CID = Context Identifier Extension SAC = Source Address Compression SAM = Source Address Mode M = Multicast Compression DAC = Destination Address Compression DAM = Destination Address Mode

draft-ietf-6lowpan-hc
28

Cabeceras de 6LoWPAN

29

Fragmentacin
IPv6 requiere que las capas inferiores toleren un MTU (Minimum Transmission Units) mnimo de 1280 bytes. IEEE 802.15.4 deja aproximadamente 80-100 bytes de payload RFC4944 define la forma de fragmentar y reensamblar IPv6 La performance de paquetes IPV6 fragmentados sobre lowPANs es muy pobre.
Fragmentos perdidos causan la retransmisin de todo el paquete Bajo ancho de banda y gran delay, propio de los canales inalmbricos Protocolos de aplicacin de 6LoWPAN deberan evitar la fragmentacin Compression should be used on existing IP application protocols when used over 6LoWPAN if possible

Fragment recovery is currently under IETF consideration


30

Fragmentacin
Initial Fragment 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 1 0 0 0| datagram_size | datagram_tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Following Fragments 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 1 1 0 0| datagram_size | datagram_tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |datagram_offset| +-+-+-+-+-+-+-+-+

31

IPv6 Neighbor Discovery


IPv6 es el formato - ND es el cerebro
One-hop routing protocol definido en RFC4861

Encontrar vecinos
Neighbor Solicitation / Neighbor Advertisement

Encontrando routers
Router Solicitation / Router Advertisement

Stateless Address Autoconfiguration using NS/NA Detecting Addresses Duplication (DAD) using NS/NA Neighbor Unreachability Detection (NUD) using NS/NA DHCPv6 puede ser usado en conjunto con ND Requisitos: Link-layer Multicast Relacin transitiva entre vecinos
34

IPv6 Neighbor Discovery

Multicast Address: All nodes : ff02::1/128 All routers : ff02::2/128

35

Diseminacin del prefijo (prefix)


En las redes IPV6 normales, RAs (router advertisement) son enviados basados en la informacin del prefijo configurada en la interfaz del router En ND para 6LoWPAN RAs son tambin utilizados para diseminar automticamente informacin del router a travs de mltiples hops.

37

Un ejemplo de direccionamiento

38

Detectando direcciones duplicadas en 6loWPAN


El Router Edge (router de borde) mantiene una tabla (whiteboard) Los nodos deben registrarse en la whiteboard New ICMP type: Node Registration (NR) New ICMP type: Node Confirmation (NC) Node registration permite
Deteccin de Host/routers inalcanzables Resolucin de direcciones (a priori) Deteccin de direcciones duplicadas

Los registros son


Refrescados perodicamente con un nuevo mensaje NR

39

Typical 6LoWPAN-ND Exchange

40

NR/NC Format
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type (NR)/(NC)| Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TID | Status |P|_____________________________| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Binding Lifetime | Advertising Interval | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Owner Interface Identifier + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Owner Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Registration option(s)... +-+-+-+-+-+-+-+-+-+-+-+-+-+

41

El Whiteboard
El whiteboard es usado en la LoWPAN para:
Deteccin de direcciones duplicadas en la LoWPAN (= prefijo) Lidiar con mobilidad (caso de las Extended LoWPANs) Localizar nodos

42

Routing

43

6LoWPAN Routing Multihop Mesh Topology


Link Layer Forwarding (Mesh Under) : Link Layer mesh (e.g. 802.15.5 ) LoWPAN mesh (RFC but not forward algorithm) IP Layer Routing (Route Over): Routing in a LoWPAN
Single-interface routing Flat address space (exact-match) Stub network (no transit routing)

44

Tipos de protocolos de ruteo


Clases de algoritmos
Basados en vectores de distancia (ej: AODV) Cada enlace es asociado con un costo que es usado para encontrar la ruta ms corta hacia el destino. Cada router guarda en su tabla de ruteo informacin del costo de los enlaces hacia cada uno de sus vecinos a un salto. Basados en el estado del enlace Cada nodo tiene informacin completa sobre la red, usualmente gracias al broadcast/difusin. El nodo calcula un rbol con los caminos ms cortos hacia cada destino.

Respecto al descubrimiento de nuevas rutas un algoritmo de ruteo puede ser:


Proactivo La informacin de ruteo es adquirida antes de ser necesitada. Reactivo La informacin de ruteo es descubierta dinmicamente cada vez que es necesitada.
45

Protocolos para 6LoWPAN


IP es independiente del protocolo de ruteo utilizado
Reenva basandose en tablas de ruteo

As tambin 6LoWPAN es independiente del protocolo de ruteo Consideraciones especiales para rutear sobre LoWPANs
Una sola interfaz de enrutamiento, topologas planas Tecnologas inalmbricas de bajo consumo y con prdidas (LowPANs) Flujos de datos especficos de aplicaciones embebidas

Los protocolos MANET son tiles en algunos casos de redes adhoc, e.g. AODV, DYMO Nuevo WG (working group) de IETF
Routing over low-power and lossy networks (ROLL) Desarrollado especficamente para aplicaciones embebidas Protocolo en progreso: RPL (pronunciado como Ripple), es un enfoque de ruteo proactivo por vector de distancia. Ver el draft de la IETF (draft-ietf-roll-rpl)
46

Application Formats and Protocols

48

Introduccin
Los procesos de las aplicaciones se comunican sobre IP usando la perspectiva de internet socket 6LoWPAN tambin utiliza el paradigma de los socket Los protocolos de aplicacin usados con 6LoWPAN tienen requerimientos de diseo especiales

49

Socket API
La Socket API provee un acceso para comunicaciones de datos entre aplicaciones Interfaz bien conocida para la manipulacin de flujos de datos y gestin de buffers via socket Soporte para mensajes de control Los comandos incluyen:
socket, bind, send, read, close etc.

Ejemplos de APIs de sockets


Berkeley sockets in *nix systems Mac OSX (Darwin) Contiki uIP (Pseudo socket approach)

50

Paradigma punto a punto (End-to-end)

51

Protocolos y formatos de aplicacin

52

Protocolos personalizados
Es la solucin ms comn hoy en da Los datos de la aplicacin son codificados en binario y especficos para la aplicacin El protocolo de la aplicacin utiliza un puerto UDP especfico Como 6LoWPAN permite comunicaciones IPv6 punto a punto, no es un problema Ventaja:
Compacto, eficiente, puede tener seguridad integrada, punto a punto Custom Protocol UDP IPv6 / 6lowpan L2/DLL L1/PHY

Desventaja:
Se requiere una aplicacin especfica del lado del servidor, poco reusable, curva de aprendizaje costosa, baja interoperabilidad

53

XML/HTTP
Es la combinacin per se para comunicaciones entre servidores El formato XML es muy conocido Todos los servers hablan HTTP/XML til para RPC, eventos publicar/suscribir Paradigma SOAP o REST Advantages:
Conocido formato XML Secuencia de mensajes formales Amplio soporte en internet XML Messages SOAP HTTP TCP IP L2/DLL L1/PHY

Disadvantages:
Ineficiente, complejo

Solucin: Embedded web-service: servicios web embebidos (por ej. CoAP)


54

Implementaciones posibles de 6lowPAN

55

Cmo integramos 6lowPAN en dispositivos embebidos?


Desafos:
Carencia de interfaces estndares (no USB or PCMCIA) No existen sistemas operativos estndares Limitaciones en el consumo energtico Limitaciones de precio de mercado

System-on-a-chip model
Todo en un slo chip
+ Mxima integracin + Menor precio y menor tamao - Dificultades en el desarrollo - Poca o escasa portabilidad Ejemplos:

TI CC2530, ATMEGA 128RF Jennic JN5139.

Chip Models
Solucin en 2 chips
La radio separada del micro
+ Libre eleccin del uC + Mayor portabilidad - Ms caro - Integracin de la aplicacin en el stack Ejemplos: TI CC2520, Atmel AT86RF231.

Solucin del procesador de red


El stack de la red en la radio
+ Libre eleccin del uC + Aplicacin independiente del stack + Fcil integracin - Solucin cara Ejemplo: TI CC1180.

Protocols Stacks
Contiki Low-Power uIPv6/RPL Network Tiny OS BLIP, the Berkeley Low-power IP stack IPv6 Ready Nano Stack (Sensinode) Nano Stack, Nano Router, Nano Service Nano Sensor Jennic 6LoWPAN (Jennic) JN5139 Wireless Microcontroller Jenie API, SNAP, JenNet
58

SIPIA Net
Wireless Sensor Network for Agronomical Research

SIPIA Net
Propietary STACK (gridTiCS)

SIPIA6 Net
6loWPAN STACK
59

Referencias
N. Kushalnagar, G. Montenegro, C. Schumacher IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs):Overview, Assumptions, Problem Statement, and Goals, RFC 4919, August 2007, IETF G. Montenegro,N. Kushalnagar,J. Hui, D. Culler Transmission of IPv6 Packets over IEEE 802.15.4 Networks, RFC 4944, September 2007, IETF Shelby & Bormann, The Wireless Embedded Internet ISBN: 978-0-47074799-5, (c) 2009 John Wiley & Sons Ltd. Book's slides available here David E. Culler & Jonathan Hui 6LoWPAN Tutorial: IP on IEEE 802.15.4 Low-Power Wireless Networks, Arch Rock Corporation Compression Format for IPv6 Datagrams in 6LoWPAN Networks draft-ietf-6lowpan-hc-13. RFC 6282. Neighbor Discovery Optimization for Low-power and Lossy Networks draft-ietf-6lowpan-nd-15 Design and Application Spaces for 6LoWPANs, draft-ietf-6lowpan-usecases-09. IPV4 Address Report http://www.potaroo.net/tools/ipv4/index.html
This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA 60

PREGUNTAS?

Ing. Ana Diedrichs UTN - Mendoza - Argentina ana.diedrichs@gridtics.frm.utn.edu.ar

61

SPARE SLIDES

62

Power Consumption
Radio power consumption critical to consider Power output level
Limited savings effect Optimal power difficult Must be considered globally
Output Power (mW) 0.003 0.032 0.100 0.200 0.316 0.501 0.794 1.000 Power Used (mW) 15.30 17.82 20.16 22.50 25.02 27.36 29.70 31.32

Transition times
Each transition costs Power equal to RX mode Should be accounted for

Power Consumption
A simple approximation for power consumption:
Pavg = 1 {PRxTwk - up + PRx ( N Tx TTx - up + N RxTRx - up ) + PTx TTx + PRxTRx + Pidle Tidle + PsleepTsleep } TF

Twk - up = Time that takes to go from sleep state to awake state TTx - up = Transmitter setup time, i.e. time it takes for the transmitter to be ready
T Tx

= Time in the Tx state = = = = = = = = = = = Time in the Rx state Time in the idle state Time in the sleep state Average number of times per frame that the transmitter is used Average number of times per frame that the receiver is used Duration of the time frame Power used in the Tx state Power used in the Rx state Power used in the idle state Power used in the sleep state Average power used by the transceiver

TRx - up = Receiver setup time, i.e. time it takes for the receiver to be ready
TRx Tidle

Tsleep
N Tx N Rx TF PTx PRx Pidle

Psleep Pavg

Contiki uIPv6
Popular embedded OS for small microcontrollers
MSP430, AVR, PIC, 8051 etc.

http://www.sics.se/contiki Standard C-based Portable applications Lightweight protothreads uIPv6 Stack


Full IPv6 support RFC4944 + 6lowpan-hc UDP, TCP, ICMPv6

Great for research

What is Contiki?
Contiki is an open-source operating system/protocol stack for embedded systems Highly portable and reasonably compact Protocol stack configuration customizable Originally created by Adam Dunkels, developer of the uIP stack http://www.sics.se/contiki

Contiki processes
Contiki core is event-driven
Interrupts and HW drivers generate events Events are dispatched to event handlers by the Contiki core Event handlers must return control to core as soon as possible Co-operative multitasking

Basic processes are implemented using protothreads


Easier to create sequential operations An abstraction to avoid complex state-machine programming
In more complex applications, the amount of states may be huge

Contiki execution models


Contiki offers multiple execution models Protothreads: thread-like event handlers
Allow thread-like structures without the requirement of additional stacks Limits process structure: no switch/case structures allowed May not use local variables

Multi-threading model available


For more powerful systems Allows structured application design

Contiki processes
Contiki core is event-driven
Interrupts and HW drivers generate events Events are dispatched to event handlers by the Contiki core Event handlers must return control to core as soon as possible Co-operative multitasking

Basic processes are implemented using protothreads


Easier to create sequential operations An abstraction to avoid complex state-machine programming
In more complex applications, the amount of states may be huge

Contiki processes: An example


/* Declare the process */ PROCESS(hello_world_process, Hello world); /* Make the process start when the module is loaded */ AUTOSTART_PROCESSES(&hello_world_process); /* Define the process code */ PROCESS_THREAD(hello_world_process, ev, data) { PROCESS_BEGIN(); printf(Hello, world!\n); while(1) { PROCESS_WAIT_EVENT(); } PROCESS_END(); } /* Must always come last */ /* Must always come first */ /* Initialization code goes here */ /* Loop for ever */ /* Wait for something to happen */

Contiki processes: Notes


A process may not use switch-case constructs
A limitation of the protothread model Complex state structures and switches should be subroutines

A process may not declare local variables


Variables will lose their values at any event waiting call All variables required by the main process must be static

Effects on application design


The main process thread should only contain sequences between event waits All operations should be done in subroutines

Contiki events
process_post(&process, eventno, evdata);

Process will be invoked later


process_post_synch(&process, evno, evdata);

Process will be invoked now Must not be called from an interrupt (device driver)
process_poll(&process);

Sends a PROCESS_EVENT_POLL event to the process Can be called from an interrupt

Using events

PROCESS_THREAD(rf_test_process, ev, data) { while(1) { PROCESS_WAIT_EVENT(); if (ev == EVENT_PRINT) printf(%s, data); } }

Contiki timers
Contiki has two main timer types; etimer and rtimer Etimer: generates timed events

Declarations: static struct etimer et; In main process: while(1) { etimer_set(&et, CLOCK_SECOND); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); etimer_reset(&et); }

Rtimer: uses callback function Callback executed after specified time

rtimer_set(&rt, time, 0 , &callback_function, void *argument);

Contiki Protocol Stacks


Contiki has 2 different protocol stacks: uIP and Rime uIP provides a full TCP/IP stack
For interfaces that allow protocol overhead Ethernet devices Serial line IP Includes IPv4 and IPv6/6LoWPAN support

Rime provides compressed header support


Application may use MAC layer only

Protocol stacks may be interconnected


uIP data can be transmitted over Rime and vice versa

The Rime protocol stack


Separate modules for protocol parsing and state machines
Rime contains the protocol operation modules Chameleon contains protocol parsing modules

Rime startup: an example


Configure Rime to use sicslowmac over cc2430 rf Startup is done in platform main function: platform/sensinode/contiki-sensinode-main.c

rime_init(sicslowmac_init(&cc2430_rf_driver)); set_rime_addr(); //this function reads MAC from flash and places //it to Rime address

Rime: Receiving
Setting up Rime receiving: broadcast
Set up a callback function
Declarations: static struct broadcast_conn bc; static const struct broadcast_callbacks broadcast_callbacks = {recv_bc}; The callback definition: static void recv_bc(struct broadcast_conn *c, rimeaddr_t *from); In main process: broadcast_open(&bc, 128, &broadcast_callbacks);

Unicast receive in a similar manner

Rime: Sending
Sending broadcast data using Rime
Declarations: static struct broadcast_conn bc; In main process: packetbuf_copyfrom("Hello everyone", 14); broadcast_send(&bc);

Sending unicast data using Rime

Declarations: static struct unicast_conn uc; In your function: rimeaddr_t *addr; addr.u8[0] = first_address_byte; addr.u8[1] = second_address_byte; packetbuf_copyfrom("Hello you", 9); unicast_send(&uc, &addr);

Creating Contiki Ports


First step: see if your cpu already has code
If yes, configure your platform to use it If not, see other cpu directories for implementation models

Second step: see if your hardware is close to other platforms


If yes, copy code from example platform and modify If not, see other platforms for minimal model

Create a test application


Start with LEDs in platform/myplatform/contiki-myplatform-main.c Use for loops to make sure that your compiler works Continue by adding printf's to see if your UART works

First real application


Create an etimer for your test process: flash LEDs, print info Try different timeouts to see if your clocks are correct

Add more drivers and try them out

Router Integration
Edge Routers interconnect the IPv6 world and 6LoWPAN An ER needs to implement:
6LoWPAN interface(s) 6LoWPAN adaptation Simple 6LoWPAN-ND A full IPv6 protocol stack IPv4 support and tunneling Application proxy techniques Extended LoWPAN support A firewall Management

Other typical features include:

Mobility & Routing

80

Types of Mobility
Mobility involves two processes
Roaming - moving from one network to another Handover - changing point of attachment (and data flows)

Mobility can be categorized as


Micro-mobility - within a network domain Macro-mobility - between network domains (IP address change)

Consider also Node vs. Network mobility What causes mobility?


Physical movement Radio channel Network performance Sleep schedules Node failure
81

Node Mobility

82

Network Mobility

83

Dealing with Mobility


Micro-mobility
Do nothing (restart) Link-layer techniques (e.g. GPRS, WiFi) 6LoWPAN-ND extended LoWPANs Routing also plays a role Do nothing (restart) Application layer (SIP, UUID, DNS) Mobile IPv6 [RFC3775] Proxy Home Agent

Macro-mobility

Network mobility
Do nothing (restart all nodes) NEMO [RFC3963]
84

IPv4 Interconnectivity

85

IPv4 IPv6 Transition


Redes separadas Protocolos no compatibles entre si .Disruptivo
Working group at the IETF

Transition Mechanisms [RFC 4213] Dual Stack Tunnel


Manual Automatic 6to4 Tunnel Broker

Traslation
Application Layer Gateway NAT64/DNS64
86

IP Protocol Stack

87

Internet Architecture

Image source: (Wikipeida) GFDL

88