June 2008 WEI short course - L10 IPv6 1
Wireless Embedded InterNetworking
Foundations of Ubiquitous Sensor Networks
IPv6 Extensions for Low power embedded networks
David E. CullerUniversity of California, Berkeley
June 2008 WEI short course - L10 IPv6 2
Decade of Research w/o an ArchitectureWireless Sensor Networks
LinkLinkLinkLink
NetworkNetworkNetworkNetwork
TransportTransportTransportTransport
ApplicationApplicationApplicationApplication
2002 2003 2004 2005 2006 2007
SPIN
SPIN
SPIN
SPIN
1999 2000 2001 2008
Bro
ad
cast
Sto
rmB
road
cast
Sto
rmB
road
cast
Sto
rmB
road
cast
Sto
rm
Tin
yO
S 0
.6Tin
yO
S 0
.6Tin
yO
S 0
.6Tin
yO
S 0
.6
WooM
AC
WooM
AC
WooM
AC
WooM
AC
GA
FG
AF
GA
FG
AF
S-M
AC
S-M
AC
S-M
AC
S-M
AC
Alo
ha P
SA
loh
a P
SA
loh
a P
SA
loh
a P
S
PS
FQPS
FQPS
FQPS
FQ
GD
IG
DI
GD
IG
DI
CO
DA
CO
DA
CO
DA
CO
DA
Min
tRou
teM
intR
ou
teM
intR
ou
teM
intR
ou
te
T-M
AC
T-M
AC
T-M
AC
T-M
AC
RM
ST
RM
ST
RM
ST
RM
ST
B-M
AC
B-M
AC
B-M
AC
B-M
AC
Mu
ltih
op
LQI
Mu
ltih
op
LQI
Mu
ltih
op
LQI
Mu
ltih
op
LQI
Fusi
on
Fusi
on
Fusi
on
Fusi
on
Delu
ge
Delu
ge
Delu
ge
Delu
ge
FPS
FPS
FPS
FPS
Wis
eM
AC
Wis
eM
AC
Wis
eM
AC
Wis
eM
AC
SP
SPSP
SP
Dri
pD
rip
Dri
pD
rip
Dra
inD
rain
Dra
inD
rain
BV
RB
VR
BV
RB
VR
Red
wood
sR
ed
wood
sR
ed
wood
sR
ed
wood
s
Nort
h S
ea
Nort
h S
ea
Nort
h S
ea
Nort
h S
ea
SC
P-M
AC
SC
P-M
AC
SC
P-M
AC
SC
P-M
AC
PED
AM
AC
SPED
AM
AC
SPED
AM
AC
SPED
AM
AC
S
X-M
AC
X-M
AC
X-M
AC
X-M
AC
Volc
an
oV
olc
an
oV
olc
an
oV
olc
an
o
CTP
CTP
CTP
CTP
Flu
shFl
ush
Flu
shFl
ush
Gold
en
Gate
Bri
dg
eG
old
en
Gate
Bri
dg
eG
old
en
Gate
Bri
dg
eG
old
en
Gate
Bri
dg
e
S4
S4S4
S4
Dip
DipDip
Dip
June 2008 WEI short course - L10 IPv6 3
Sensornet Concepts
• Cross-layer compression
• Cross-layer visibility
• Piggybacking
• Optimization for bidirectional links
• Trickle
• ...
All within an IP frameworkAll within an IP frameworkAll within an IP frameworkAll within an IP framework
June 2008 WEI short course - L10 IPv6 4
PrefixPrefix IIDIID
ICMPv6ICMPv6ICMPv6ICMPv6
IPv6 IPv6 BaseBase
IPv6 IPv6 BaseBase
HbH HbH OptOpt
HbH HbH OptOpt RoutingRoutingRoutingRouting FragmeFragme
ntnt
FragmeFragmentnt Dst OptDst OptDst OptDst Opt
128 bits
And a decade of progress
• Large uninterpreted addresses
• Autoconfiguration and management
• Layer 2 bootstrapping and discovery
• Protocol options framework
June 2008 WEI short course - L10 IPv6 5
IP Link ⇒ Broadcast DomainIP Link ⇒ Broadcast DomainIP Link ⇒ Broadcast DomainIP Link ⇒ Broadcast Domain
Structured DecompositionStructured DecompositionStructured DecompositionStructured Decomposition
Embedded IPv6 in Concept
IP Link ⇒ Always OnIP Link ⇒ Always OnIP Link ⇒ Always OnIP Link ⇒ Always OnRetain illusion even when always off
Retain strict modularitySome key cross-layer visibility
IPv6 can support a semi-broadcast link with few changes
IP Link ⇒ “Reliable”IP Link ⇒ “Reliable”IP Link ⇒ “Reliable”IP Link ⇒ “Reliable”Retain best-effort reliability over unreliable links
June 2008 WEI short course - L10 IPv6 6
Solution by Layers
LinkLinkLinkLink•Sending frames between neighboring nodes
NetworkNetworkNetworkNetwork•Configuring large numbers of interfaces
•Efficient transmission of IPv6 datagrams
•Delivering datagrams over multiple hops
•Selecting bi-directional links and forming routes
TransportTransportTransportTransport•Delivering messages between app endpoints
June 2008 WEI short course - L10 IPv6 7
LinkEnabling Communication Between Neighboring Nodes
Minimize idle listeningMinimize idle listeningMinimize idle listeningMinimize 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
NetworkNetworkNetworkNetwork
AbstractionAbstractionAbstractionAbstraction
LinkLinkLinkLink
June 2008 WEI short course - L10 IPv6 8
NetNetNetNet
Link Media MgmtEnabling Communication Between Neighboring Nodes
PhyPhyPhyPhy
LinkLinkLinkLink
Media Management ControlMedia Management ControlMedia Management ControlMedia Management Control
Remote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink StatsNeighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
DatDataa
DatDataa AckAckAckAck
AbstractionAbstractionAbstractionAbstractionProvide the mechanisms
Upper layers define the policy
June 2008 WEI short course - L10 IPv6 9
Link - reviewEnabling Communication Between Neighboring Nodes
OptimizationsOptimizationsPower – Channel Utilization – Average Latency – ThroughputPower – Channel Utilization – Average Latency – Throughput
OptimizationsOptimizationsPower – Channel Utilization – Average Latency – ThroughputPower – Channel Utilization – Average Latency – Throughput
StreamingStreaming SchedulingScheduling
Repairing 15.4 AcksRepairing 15.4 AcksFalse Positives – Security – PayloadFalse Positives – Security – Payload
Repairing 15.4 AcksRepairing 15.4 AcksFalse Positives – Security – PayloadFalse Positives – Security – Payload
15.4 HDR15.4 HDR15.4 HDR15.4 HDR PANPANPANPAN DSTDSTDSTDST SRCSRCSRCSRC SECSECSECSEC TimingTimingTimingTiming PayloadPayloadPayloadPayload 15.4 FTR15.4 FTR15.4 FTR15.4 FTR
Sampled ListeningSampled ListeningStateless – Low Latency – Always On Abstraction – RobustStateless – Low Latency – Always On Abstraction – Robust
Sampled ListeningSampled ListeningStateless – Low Latency – Always On Abstraction – RobustStateless – Low Latency – Always On Abstraction – Robust
June 2008 WEI short course - L10 IPv6 10
AdaptationEfficient Transmission of IPv6 Datagrams
Problem: Small Link MTU, Large IPv6 Problem: Small Link MTU, Large IPv6 DatagramsDatagrams
Problem: Small Link MTU, Large IPv6 Problem: Small Link MTU, Large IPv6 DatagramsDatagrams
•Adaptation Layers•ATM, FireWire, BNEP•Datagram Segmentation, Subnetwork Forwarding
•Header Compression•Flow-based (IPHC, ROHC)•Stateless, shared context (STHD, HHC)
802.15.4 Link802.15.4 Link802.15.4 Link802.15.4 LinkIPv6 DatagramIPv6 Datagram(up to 1280 bytes)(up to 1280 bytes)
IPv6 DatagramIPv6 Datagram(up to 1280 bytes)(up to 1280 bytes) 127 Byte MTU
250 kbps
June 2008 WEI short course - L10 IPv6 11
AutoconfigurationConfiguring Large Numbers of Interfaces
Cur Hop Limit
Managed Addr Config
Other Config
Router Lifetime
Reachable Time
Prefix Length
Autonomous Config
Valid Lifetime
Preferred Lifetime
Prefix
ICMPv6 HdrICMPv6 HdrICMPv6 HdrICMPv6 Hdr Router AdvRouter AdvRouter AdvRouter Adv Prefix InfoPrefix InfoPrefix InfoPrefix Info
RFC 4861 – Neighbor DiscoveryRFC 4861 – Neighbor DiscoveryRFC 4862 – Stateless Addr RFC 4862 – Stateless Addr AutoconfAutoconfRFC 3315 – DHCPv6RFC 3315 – DHCPv6
Existing Options New Options
Network ID
Sequence Number
Router Hops
Flags
MHop MHop InfoInfo
MHop MHop InfoInfo
June 2008 WEI short course - L10 IPv6 12
AutoconfigurationConfiguring Large Numbers of Interfaces
StatelessStatelessRFC 4861 + 4862RFC 4861 + 4862
StatelessStatelessRFC 4861 + 4862RFC 4861 + 4862
DHCPv6DHCPv6RFC 3315RFC 3315DHCPv6DHCPv6RFC 3315RFC 3315
L2e 00-17-3B-00-39-12-58-28
L2s 0x0001
L3 2001:abcd::1
L2e 00-17-3B-00-57-17-58-39
L2s 0x0023
L3
L2e 00-17-3B-00-79-49-66-23
L2s 0x0092
L3
L2e 00-17-3B-00-57-17-58-39
L2s
L3
L2e 00-17-3B-00-79-49-66-23
L2s
L3
2001:abcd::230x0023
L2e 00-17-3B-00-39-12-58-28
L2s 0x0001
L3 2001:abcd::1
RequestRequestRequestRequest
ResponsResponsee
ResponsResponsee
RequestRequestRequestRequest
ResponsResponsee
ResponsResponsee
2001:abcd::920x0092
2001:abcd::92
2001:abcd::23
June 2008 WEI short course - L10 IPv6 13
AutoconfigurationConfiguring Large Numbers of Interfaces
Cur Hop Limit
Managed Addr Config
Other Config
Router Lifetime
Reachable Time
Prefix Length
Autonomous Config
Valid Lifetime
Preferred Lifetime
Prefix
ICMPv6 HdrICMPv6 HdrICMPv6 HdrICMPv6 Hdr Router AdvRouter AdvRouter AdvRouter Adv Prefix InfoPrefix InfoPrefix InfoPrefix Info
RFC 4861 – Neighbor DiscoveryRFC 4861 – Neighbor DiscoveryRFC 4862 – Stateless Addr RFC 4862 – Stateless Addr AutoconfAutoconfRFC 3315 – DHCPv6RFC 3315 – DHCPv6
Existing Options New Options
Network ID
Sequence Number
Router Hops
Flags
MHop MHop InfoInfo
MHop MHop InfoInfo
Trickle
June 2008 WEI short course - L10 IPv6 14
AutoconfigurationConfiguring Large Numbers of Interfaces
LinkLinkLinkLink
NetNetNetNet
TranTranTranTran
AppAppAppApp
Media Management ControlMedia Management ControlMedia Management ControlMedia Management Control
Remote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink StatsNeighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
StatelesStatelesss
AutoconAutoconff
StatelesStatelesss
AutoconAutoconff
AutoconAutoconff
AutoconAutoconff
DHCPv6DHCPv6DHCPv6DHCPv6
ICMPvICMPv66
ICMPvICMPv66
DatDataa
DatDataa AckAckAckAck
June 2008 WEI short course - L10 IPv6 15
Routing & Forwarding
NetNetNetNet
RouterRouterRouterRouterRouting Routing ProtocolProtocol
Routing Routing ProtocolProtocol
Routing Routing TableTable
Routing Routing TableTablePrefix Next
ICMPvICMPv66
ICMPvICMPv66
LinkLinkLinkLink
Media Management ControlMedia Management ControlMedia Management ControlMedia Management ControlRemote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink Stats
Neighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
DatDataa
DatDataa AckAckAckAck
ForwarderForwarderForwarderForwarderMulticastMulticastMulticastMulticast
Send Send ManageManage
rr
Send Send ManageManage
rr
BufferBufferBufferBufferUnicastUnicastUnicastUnicast
QueueQueueQueueQueue Forwarding Forwarding TableTable
Forwarding Forwarding TableTablePrefix Next
Default
Send Send ManageManage
rr
Send Send ManageManage
rr
Delivering datagrams over multiple hopsDelivering datagrams over multiple hopsDelivering datagrams over multiple hopsDelivering datagrams over multiple hops
June 2008 WEI short course - L10 IPv6 16
ForwardingDelivering Datagrams Over Multiple Hops
Minimize energy of reliable delivery to Minimize energy of reliable delivery to next hopnext hop
Minimize energy of reliable delivery to Minimize energy of reliable delivery to next hopnext hop
•Reliability & Rate Control•PSFQ, RMST, Fusion, IFRC, Flush•Hop-by-hop for reliability and control•None with goal of minimizing energy•All assume snooping or broadcast
June 2008 WEI short course - L10 IPv6 17
ForwardingDelivering Datagrams Over Multiple Hops
Hop-by-Hop RecoveryHop-by-Hop RecoveryHop-by-Hop RecoveryHop-by-Hop Recovery
Piggyback L3 Information on L2 AcksPiggyback L3 Information on L2 AcksPiggyback L3 Information on L2 AcksPiggyback L3 Information on L2 Acks
15.4 HDR15.4 HDR15.4 HDR15.4 HDR PANPANPANPAN DSTDSTDSTDST SRCSRCSRCSRC SECSECSECSEC TimingTimingTimingTiming Network InfoNetwork InfoNetwork InfoNetwork Info 15.4 FTR15.4 FTR15.4 FTR15.4 FTR
L3 custody transfer ⇒ fewer msg dropsL3 custody transfer ⇒ fewer msg dropsLower power, lower latency, spatial diversityLower power, lower latency, spatial diversity
1) lookup next hop2) transmit message3) if ack, dequeue, goto 54) backoff5) goto 1
June 2008 WEI short course - L10 IPv6 18
ForwardingDelivering Datagrams Over Multiple Hops
Hop-by-Hop Congestion ControlHop-by-Hop Congestion ControlHop-by-Hop Congestion ControlHop-by-Hop Congestion Control
Less contention ⇒ lower powerLess contention ⇒ lower powerNo snooping or added control overheadNo snooping or added control overhead
1) lookup next hop2) transmit message3) if ack3.1) if not queue full, dequeue, goto 63.2) AIMD backoff, goto 65) backoff6) goto 1
1) lookup next hop2) transmit message3) if ack3.1) if not queue full, dequeue, goto 63.2) AIMD backoff, goto 65) backoff6) goto 1
June 2008 WEI short course - L10 IPv6 19
ForwardingDelivering Datagrams Over Multiple Hops
StreamingStreamingStreamingStreaming Quality of ServiceQuality of ServiceQuality of ServiceQuality of Service
Queue ReservationsQueue Reservations
Latency Tolerant vs. UrgentLatency Tolerant vs. Urgent
IPv6IPv6IPv6IPv6 UrgentUrgentUrgentUrgent PayloaPayloadd
PayloaPayloaddIPv6IPv6IPv6IPv6 PayloaPayloa
dd
PayloaPayloadd
•Disable streaming delays•Reduce backoffs•Disable streaming delays•Reduce backoffs
•Guaranteed service for different classes
•Guaranteed service for different classes
•Reduce power•Increase
throughput
•Reduce power•Increase
throughput
June 2008 WEI short course - L10 IPv6 20
RoutingSelecting Bi-Directional Links and Forming Routes
Problem: Inferring a connectivity graphProblem: Inferring a connectivity graphProblem: Inferring a connectivity graphProblem: 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
June 2008 WEI short course - L10 IPv6 21
RoutingSelecting Bi-Directional Links and Forming Routes
ForwarderForwarderForwarderForwarderMulticastMulticastMulticastMulticast
Send Send ManagerManager
Send Send ManagerManager
BufferBufferBufferBuffer
UnicastUnicastUnicastUnicast
QueueQueueQueueQueue Forwarding TableForwarding TableForwarding TableForwarding Table
Prefix Next
Default
Send Send ManagerManager
Send Send ManagerManager
RouterRouterRouterRouterRouting Routing ProtocolProtocol
Routing Routing ProtocolProtocol
Routing TableRouting TableRouting TableRouting Table
Prefix Next
June 2008 WEI short course - L10 IPv6 22
RoutingSelecting Bi-Directional Links and Forming Routes
Default RoutesDefault RoutesDefault RoutesDefault Routes
Discovering LinksDiscovering LinksDiscovering LinksDiscovering LinksICMPv6 HdrICMPv6 HdrICMPv6 HdrICMPv6 Hdr Router AdvRouter AdvRouter AdvRouter Adv MHop InfoMHop InfoMHop InfoMHop Info
Inferring a Connectivity GraphInferring a Connectivity GraphInferring a Connectivity GraphInferring a Connectivity GraphRouting Routing TableTable
Routing Routing TableTablePrefix Next
Low Routing CostLow Routing Cost
High Routing CostHigh Routing Cost
High ConfidenceHigh Confidence
Low ConfidenceLow Confidence
Selecting a Default RouteSelecting a Default RouteSelecting a Default RouteSelecting a Default RouteRouting Routing TableTable
Routing Routing TableTablePrefix Next
Forwarding Forwarding TableTable
Forwarding Forwarding TableTablePrefix Next
Default
•Top candidateTop candidate•Dynamic re-Dynamic re-routingrouting•Increasing Increasing confidenceconfidence
June 2008 WEI short course - L10 IPv6 23
RoutingSelecting Bi-Directional Links and Forming Routes
IPv6IPv6IPv6IPv6PayloadPayloadPayloadPayload
IPv6IPv6IPv6IPv6PayloadPayloadPayloadPayload
IPv6IPv6IPv6IPv6PayloadPayloadPayloadPayload
Supported Supported CommunicationCommunication
Supported Supported CommunicationCommunication
•Sensornet → External IP•External IP → Sensornet•Sensornet → Sensornet•Direct single hop
Most commonMost commonpatterns in sensornetspatterns in sensornets
Most commonMost commonpatterns in sensornetspatterns in sensornets
June 2008 WEI short course - L10 IPv6 24
Routing & ForwardingSelecting Links and Forming Routes
LinkLinkLinkLink
NetNetNetNet
TranTranTranTran
AppAppAppApp
Media Management ControlMedia Management ControlMedia Management ControlMedia Management Control
Remote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink StatsNeighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
StatelesStatelesss
AutoconAutoconff
StatelesStatelesss
AutoconAutoconff
AutoconAutoconff
AutoconAutoconff
DHCPv6DHCPv6DHCPv6DHCPv6
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
ICMPvICMPv66
ICMPvICMPv66
DatDataa
DatDataa AckAckAckAck
ForwarderForwarderForwarderForwarder
MulticastMulticastMulticastMulticast
Send Send ManageManage
rr
Send Send ManageManage
rr
BufferBufferBufferBufferUnicastUnicastUnicastUnicast
QueueQueueQueueQueue Forwarding Forwarding TableTable
Forwarding Forwarding TableTable
Prefix Next
Default
Send Send ManageManage
rr
Send Send ManageManage
rr
RouterRouterRouterRouter
Routing Routing ProtocolProtocol
Routing Routing ProtocolProtocol
Routing Routing TableTable
Routing Routing TableTablePrefix Next
June 2008 WEI short course - L10 IPv6 25
TransportCommunication Between Application Endpoints
LinkLinkLinkLink
NetNetNetNet
TranTranTranTran
AppAppAppApp
Media Management ControlMedia Management ControlMedia Management ControlMedia Management Control
Remote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink StatsNeighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
RouterRouterRouterRouter
Routing Routing ProtocolProtocol
Routing Routing ProtocolProtocol
Routing Routing TableTable
Routing Routing TableTablePrefix Next
StatelesStatelesss
AutoconAutoconff
StatelesStatelesss
AutoconAutoconff
AutoconAutoconff
AutoconAutoconff
DHCPv6DHCPv6DHCPv6DHCPv6
UDPUDPUDPUDP TCPTCPTCPTCP
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
ICMPvICMPv66
ICMPvICMPv66
DatDataa
DatDataa AckAckAckAck
ForwarderForwarderForwarderForwarder
MulticastMulticastMulticastMulticast
Send Send ManageManage
rr
Send Send ManageManage
rr
BufferBufferBufferBufferUnicastUnicastUnicastUnicast
QueueQueueQueueQueue Forwarding Forwarding TableTable
Forwarding Forwarding TableTable
Prefix Next
Default
Send Send ManageManage
rr
Send Send ManageManage
rr
June 2008 WEI short course - L10 IPv6 26
Programming Interface
BSD Sockets ⇒ Event based UDPBSD Sockets ⇒ Event based UDPBSD Sockets ⇒ Event based UDPBSD Sockets ⇒ Event based UDP
event void Boot.booted() {call Udp.bind( 7 ); }event void Boot.booted() {call Udp.bind( 7 ); } event void Udp.recvfrom( void *buf, uint16_t len, event void Udp.recvfrom( void *buf, uint16_t len, sockaddr_in6_t *from, sockaddr_in6_t *from, link_metadata_t link_metadata_t *linkmsg ) { *linkmsg ) { call Udp.sendto( buf, len, from ); }call Udp.sendto( buf, len, from ); }
event void Boot.booted() {call Udp.bind( 7 ); }event void Boot.booted() {call Udp.bind( 7 ); } event void Udp.recvfrom( void *buf, uint16_t len, event void Udp.recvfrom( void *buf, uint16_t len, sockaddr_in6_t *from, sockaddr_in6_t *from, link_metadata_t link_metadata_t *linkmsg ) { *linkmsg ) { call Udp.sendto( buf, len, from ); }call Udp.sendto( buf, len, from ); }
June 2008 WEI short course - L10 IPv6 27
Programming Interface
BSD Sockets ⇒ Event based TCPBSD Sockets ⇒ Event based TCPBSD Sockets ⇒ Event based TCPBSD Sockets ⇒ Event based TCP
uint8_t m_buf[ BUF_SIZE ]; uint8_t m_buf[ BUF_SIZE ]; event void Boot.booted() { event void Boot.booted() {
call Tcp.bind( 7 );call Tcp.bind( 7 ); call Tcp.listen(); } call Tcp.listen(); } event bool Tcp.accept( sockaddr_in6_t *to, void **sendbuf, event bool Tcp.accept( sockaddr_in6_t *to, void **sendbuf,
uint16_t *sendbuf_size ) { uint16_t *sendbuf_size ) { *sendbuf = m_buf;*sendbuf = m_buf;
*sendbuf_size = sizeof(m_buf);*sendbuf_size = sizeof(m_buf); return TRUE; } return TRUE; } event void Tcp.connected() {} event void Tcp.connected() {} event uint16_t Tcp.recv( void *buf, uint16_t len ) { event uint16_t Tcp.recv( void *buf, uint16_t len ) {
return call Tcp.send( buf, len ) == SUCCESS ? len : 0; } return call Tcp.send( buf, len ) == SUCCESS ? len : 0; } event void Tcp.acked() {} event void Tcp.acked() {} event void Tcp.closed() { signal Boot.booted(); }event void Tcp.closed() { signal Boot.booted(); }
uint8_t m_buf[ BUF_SIZE ]; uint8_t m_buf[ BUF_SIZE ]; event void Boot.booted() { event void Boot.booted() {
call Tcp.bind( 7 );call Tcp.bind( 7 ); call Tcp.listen(); } call Tcp.listen(); } event bool Tcp.accept( sockaddr_in6_t *to, void **sendbuf, event bool Tcp.accept( sockaddr_in6_t *to, void **sendbuf,
uint16_t *sendbuf_size ) { uint16_t *sendbuf_size ) { *sendbuf = m_buf;*sendbuf = m_buf;
*sendbuf_size = sizeof(m_buf);*sendbuf_size = sizeof(m_buf); return TRUE; } return TRUE; } event void Tcp.connected() {} event void Tcp.connected() {} event uint16_t Tcp.recv( void *buf, uint16_t len ) { event uint16_t Tcp.recv( void *buf, uint16_t len ) {
return call Tcp.send( buf, len ) == SUCCESS ? len : 0; } return call Tcp.send( buf, len ) == SUCCESS ? len : 0; } event void Tcp.acked() {} event void Tcp.acked() {} event void Tcp.closed() { signal Boot.booted(); }event void Tcp.closed() { signal Boot.booted(); }
June 2008 WEI short course - L10 IPv6 28
Stack Architecture
LinkLinkLinkLink
NetNetNetNet
TranTranTranTran
AppAppAppApp
Media Management ControlMedia Management ControlMedia Management ControlMedia Management Control
Remote MediaRemote MediaRemote MediaRemote Media Link StatsLink StatsLink StatsLink StatsNeighbor Table
Addr Period Phase Pending RSSI PRR
Local MediaLocal MediaLocal MediaLocal Media
Sample Period
Sample Phase
RouterRouterRouterRouter
Routing Routing ProtocolProtocol
Routing Routing ProtocolProtocol
Routing Routing TableTable
Routing Routing TableTablePrefix Next
StatelesStatelesss
AutoconAutoconff
StatelesStatelesss
AutoconAutoconff
AutoconAutoconff
AutoconAutoconff
DHCPv6DHCPv6DHCPv6DHCPv6
UDPUDPUDPUDP TCPTCPTCPTCP
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
6Lo
WPA
N A
dap
tati
on
ICMPvICMPv66
ICMPvICMPv66
DatDataa
DatDataa AckAckAckAck
????????????
HTTPHTTPHTTPHTTP TelnetTelnetTelnetTelnet SNMPSNMPSNMPSNMP DNSDNSDNSDNS ????????????
ForwarderForwarderForwarderForwarder
MulticastMulticastMulticastMulticast
Send Send ManageManage
rr
Send Send ManageManage
rr
BufferBufferBufferBufferUnicastUnicastUnicastUnicast
QueueQueueQueueQueue Forwarding Forwarding TableTable
Forwarding Forwarding TableTable
Prefix Next
Default
Send Send ManageManage
rr
Send Send ManageManage
rr