Title: Wireless Embedded InterNetworking Foundations of Ubiquitous Sensor Networks IPv6 Extensions for Low power embedded networks
1Wireless Embedded InterNetworkingFoundations of
Ubiquitous Sensor Networks IPv6 Extensions for
Low power embedded networks
- David E. Culler
- University of California, Berkeley
2Decade of Research w/o an ArchitectureWireless
Sensor Networks
Application
Transport
Network
Link
3Sensornet Concepts
- Cross-layer compression
- Cross-layer visibility
- Piggybacking
- Optimization for bidirectional links
- Trickle
- ...
All within an IP framework
4And a decade of progress
- Large uninterpreted addresses
- Autoconfiguration and management
- Layer 2 bootstrapping and discovery
- Protocol options framework
5Embedded IPv6 in Concept
IP Link ? Always On
IP Link ? Reliable
6Solution by Layers
Transport
- Delivering messages between app endpoints
Network
- Configuring large numbers of interfaces
- Efficient transmission of IPv6 datagrams
- Delivering datagrams over multiple hops
- Selecting bi-directional links and forming routes
Link
- Sending frames between neighboring nodes
7LinkEnabling Communication Between Neighboring
Nodes
Minimize idle listening
- Sampled Listening
- DARPA, Aloha-PS, B-MAC, X-MAC
- Always-on illusion, transmission overhead
- Scheduled
- S-MAC, T-MAC, PEDAMACS, TSMP, FPS
- Low power when in sync, node join problem
- Hybrid
- WiseMAC, SCP-MAC
- Always-on and low power
- Abstractions
- SP
- Implement mechanisms, not policies
Network
Abstraction
Link
8Link Media MgmtEnabling Communication Between
Neighboring Nodes
Net
Link
Media Management Control
Data
Ack
Remote Media
Link Stats
Local Media
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase
Phy
9Link - reviewEnabling Communication Between
Neighboring Nodes
10AdaptationEfficient Transmission of IPv6
Datagrams
Problem Small Link MTU, Large IPv6 Datagrams
IPv6 Datagram (up to 1280 bytes)
802.15.4 Link
127 Byte MTU 250 kbps
11AutoconfigurationConfiguring Large Numbers of
Interfaces
New Options
Existing Options
MHop Info
Cur Hop Limit
Managed Addr Config
Other Config
Router Lifetime
Reachable Time
Prefix Length
Autonomous Config
Valid Lifetime
Preferred Lifetime
Prefix
Network ID
Sequence Number
Router Hops
Flags
12AutoconfigurationConfiguring Large Numbers of
Interfaces
Stateless RFC 4861 4862
DHCPv6 RFC 3315
Response
Response
L2e 00-17-3B-00-39-12-58-28
L2s 0x0001
L3 2001abcd1
L2e 00-17-3B-00-39-12-58-28
L2s 0x0001
L3 2001abcd1
Request
L2e 00-17-3B-00-57-17-58-39
L2s 0x0023
L3
L2e 00-17-3B-00-57-17-58-39
L2s
L3
2001abcd23
Request
L2e 00-17-3B-00-79-49-66-23
L2s 0x0092
L3
L2e 00-17-3B-00-79-49-66-23
L2s
L3
2001abcd92
13AutoconfigurationConfiguring Large Numbers of
Interfaces
New Options
Existing Options
MHop Info
Cur Hop Limit
Managed Addr Config
Other Config
Router Lifetime
Reachable Time
Prefix Length
Autonomous Config
Valid Lifetime
Preferred Lifetime
Prefix
Network ID
Sequence Number
Router Hops
Flags
14AutoconfigurationConfiguring Large Numbers of
Interfaces
App
Tran
Net
6LoWPAN Adaptation
Link
Media Management Control
Data
Ack
Remote Media
Link Stats
Local Media
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase
15Routing Forwarding
Delivering datagrams over multiple hops
Net
Router
ICMPv6
Forwarder
Routing Protocol
Multicast
Unicast
Buffer
Queue
Forwarding Table
Send Manager
Routing Table
Prefix Next
Default
Prefix Next
Send Manager
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase
16ForwardingDelivering Datagrams Over Multiple Hops
Minimize energy of reliable delivery to next hop
17ForwardingDelivering Datagrams Over Multiple Hops
Hop-by-Hop Recovery
1) lookup next hop 2) transmit message 3) if ack,
dequeue, goto 5 4) backoff 5) goto 1
18ForwardingDelivering Datagrams Over Multiple Hops
Hop-by-Hop Congestion Control
1) lookup next hop 2) transmit message 3) if
ack 3.1) if not queue full, dequeue, goto 6 3.2)
AIMD backoff, goto 6 5) backoff 6) goto 1
19ForwardingDelivering Datagrams Over Multiple Hops
Streaming
- Reduce power
- Increase throughput
20RoutingSelecting Bi-Directional Links and
Forming Routes
Problem Inferring a connectivity graph
- MANET
- DSDV, AODV, DYMO, OLSR, TBRPF
- Any-to-any, shortest path
- Distance vector and link state
- Sensornets
- Any-to-any (GPSR, NoGeo, GEM, BVR, S4)
- Collection (MintRoute, CTP, MultihopLQI)
- Link Discovery vs. Link Estimation
- MANET assume high mobility
- Sensornet assume a more static network
21RoutingSelecting Bi-Directional Links and
Forming Routes
Prefix Next
Default
Prefix Next
22RoutingSelecting Bi-Directional Links and
Forming Routes
Prefix Next
Prefix Next
Default
Prefix Next
23RoutingSelecting Bi-Directional Links and
Forming Routes
Supported Communication
- Sensornet ? External IP
- External IP ? Sensornet
- Sensornet ? Sensornet
- Direct single hop
Most common patterns in sensornets
24Routing ForwardingSelecting Links and Forming
Routes
App
DHCPv6
Tran
Net
ICMPv6
Router
Autoconf
Routing Protocol
Routing Table
Prefix Next
Default
Stateless Autoconf
Prefix Next
6LoWPAN Adaptation
Link
Media Management Control
Data
Ack
Remote Media
Link Stats
Local Media
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase
25TransportCommunication Between Application
Endpoints
App
DHCPv6
Tran
Net
Router
ICMPv6
Autoconf
Routing Protocol
Routing Table
Prefix Next
Default
Stateless Autoconf
Prefix Next
6LoWPAN Adaptation
Link
Media Management Control
Data
Ack
Remote Media
Link Stats
Local Media
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase
26Programming Interface
BSD Sockets ? Event based UDP
event void Boot.booted() call Udp.bind( 7 )
event void Udp.recvfrom( void buf, uint16_t
len, sockaddr_in6_t from,
link_metadata_t linkmsg )
call Udp.sendto( buf, len, from )
27Programming Interface
BSD Sockets ? Event based TCP
uint8_t m_buf BUF_SIZE event void
Boot.booted() call Tcp.bind( 7 )
call Tcp.listen() event bool Tcp.accept(
sockaddr_in6_t to, void sendbuf, uint16_t
sendbuf_size ) sendbuf m_buf
sendbuf_size sizeof(m_buf) return TRUE
event void Tcp.connected() event
uint16_t Tcp.recv( void buf, uint16_t len )
return call Tcp.send( buf, len ) SUCCESS ?
len 0 event void Tcp.acked() event
void Tcp.closed() signal Boot.booted()
28Stack Architecture
App
DHCPv6
HTTP
Telnet
SNMP
DNS
???
Tran
???
Net
Router
ICMPv6
Autoconf
Routing Protocol
Routing Table
Prefix Next
Default
Stateless Autoconf
Prefix Next
6LoWPAN Adaptation
Link
Media Management Control
Data
Ack
Remote Media
Link Stats
Local Media
Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table Neighbor Table
Addr Period Phase Pending RSSI PRR
Sample Period
Sample Phase