summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4944.txt
blob: 57a551355743f9b34e203ef7186c5c082356e248 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
Network Working Group                                      G. Montenegro
Request for Comments: 4944                         Microsoft Corporation
Category: Standards Track                                 N. Kushalnagar
                                                              Intel Corp
                                                                  J. Hui
                                                               D. Culler
                                                          Arch Rock Corp
                                                          September 2007


        Transmission of IPv6 Packets over IEEE 802.15.4 Networks

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Abstract

   This document describes the frame format for transmission of IPv6
   packets and the method of forming IPv6 link-local addresses and
   statelessly autoconfigured addresses on IEEE 802.15.4 networks.
   Additional specifications include a simple header compression scheme
   using shared context and provisions for packet delivery in IEEE
   802.15.4 meshes.























Montenegro, et al.          Standards Track                     [Page 1]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
     1.1.  Requirements Notation  . . . . . . . . . . . . . . . . . .  3
     1.2.  Terms Used . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  IEEE 802.15.4 Mode for IP  . . . . . . . . . . . . . . . . . .  3
   3.  Addressing Modes . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Maximum Transmission Unit  . . . . . . . . . . . . . . . . . .  5
   5.  LoWPAN Adaptation Layer and Frame Format . . . . . . . . . . .  6
     5.1.  Dispatch Type and Header . . . . . . . . . . . . . . . . .  8
     5.2.  Mesh Addressing Type and Header  . . . . . . . . . . . . . 10
     5.3.  Fragmentation Type and Header  . . . . . . . . . . . . . . 11
   6.  Stateless Address Autoconfiguration  . . . . . . . . . . . . . 13
   7.  IPv6 Link Local Address  . . . . . . . . . . . . . . . . . . . 14
   8.  Unicast Address Mapping  . . . . . . . . . . . . . . . . . . . 14
   9.  Multicast Address Mapping  . . . . . . . . . . . . . . . . . . 16
   10. Header Compression . . . . . . . . . . . . . . . . . . . . . . 16
     10.1. Encoding of IPv6 Header Fields . . . . . . . . . . . . . . 17
     10.2. Encoding of UDP Header Fields  . . . . . . . . . . . . . . 19
     10.3. Non-Compressed Fields  . . . . . . . . . . . . . . . . . . 21
       10.3.1.  Non-Compressed IPv6 Fields  . . . . . . . . . . . . . 21
       10.3.2.  Non-Compressed and Partially Compressed UDP Fields  . 21
   11. Frame Delivery in a Link-Layer Mesh  . . . . . . . . . . . . . 21
     11.1. LoWPAN Broadcast . . . . . . . . . . . . . . . . . . . . . 23
   12. IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 23
   13. Security Considerations  . . . . . . . . . . . . . . . . . . . 25
   14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25
   15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 26
     15.1. Normative References . . . . . . . . . . . . . . . . . . . 26
     15.2. Informative References . . . . . . . . . . . . . . . . . . 26
   Appendix A.  Alternatives for Delivery of Frames in a Mesh . . . . 28

1.  Introduction

   The IEEE 802.15.4 standard [ieee802.15.4] targets low-power personal
   area networks.  This document defines the frame format for
   transmission of IPv6 [RFC2460] packets as well as the formation of
   IPv6 link-local addresses and statelessly autoconfigured addresses on
   top of IEEE 802.15.4 networks.  Since IPv6 requires support of packet
   sizes much larger than the largest IEEE 802.15.4 frame size, an
   adaptation layer is defined.  This document also defines mechanisms
   for header compression required to make IPv6 practical on IEEE
   802.15.4 networks, and the provisions required for packet delivery in
   IEEE 802.15.4 meshes.  However, a full specification of mesh routing
   (the specific protocol used, the interactions with neighbor
   discovery, etc) is out of the scope of this document.





Montenegro, et al.          Standards Track                     [Page 2]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


1.1.  Requirements Notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

1.2.  Terms Used

   AES:  Advanced Encryption Scheme

   CSMA/CA:  Carrier Sense Multiple Access / Collision Avoidance

   FFD:  Full Function Device

   GTS:  Guaranteed Time Service

   MTU:  Maximum Transmission Unit

   MAC:  Media Access Control

   PAN:  Personal Area Network

   RFD:  Reduced Function Device

2.  IEEE 802.15.4 Mode for IP

   IEEE 802.15.4 defines four types of frames: beacon frames, MAC
   command frames, acknowledgement frames, and data frames.  IPv6
   packets MUST be carried on data frames.  Data frames may optionally
   request that they be acknowledged.  In keeping with [RFC3819], it is
   recommended that IPv6 packets be carried in frames for which
   acknowledgements are requested so as to aid link-layer recovery.

   IEEE 802.15.4 networks can either be nonbeacon-enabled or beacon-
   enabled [ieee802.15.4].  The latter is an optional mode in which
   devices are synchronized by a so-called coordinator's beacons.  This
   allows the use of superframes within which a contention-free
   Guaranteed Time Service (GTS) is possible.  This document does not
   require that IEEE networks run in beacon-enabled mode.  In nonbeacon-
   enabled networks, data frames (including those carrying IPv6 packets)
   are sent via the contention-based channel access method of unslotted
   CSMA/CA.

   In nonbeacon-enabled networks, beacons are not used for
   synchronization.  However, they are still useful for link-layer
   device discovery to aid in association and disassociation events.
   This document recommends that beacons be configured so as to aid
   these functions.  A further recommendation is for these events to be



Montenegro, et al.          Standards Track                     [Page 3]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   available at the IPv6 layer to aid in detecting network attachment, a
   problem being worked on at the IETF at the time of this writing.

   The specification allows for frames in which either the source or
   destination addresses (or both) are elided.  The mechanisms defined
   in this document require that both source and destination addresses
   be included in the IEEE 802.15.4 frame header.  The source or
   destination PAN ID fields may also be included.

3.  Addressing Modes

   IEEE 802.15.4 defines several addressing modes: it allows the use of
   either IEEE 64-bit extended addresses or (after an association event)
   16-bit addresses unique within the PAN [ieee802.15.4].  This document
   supports both 64-bit extended addresses, and 16-bit short addresses.
   For use within 6LoWPANs, this document imposes additional constraints
   (beyond those imposed by IEEE 802.15.4) on the format of the 16-bit
   short addresses, as specified in Section 12.  Short addresses being
   transient in nature, a word of caution is in order: since they are
   doled out by the PAN coordinator function during an association
   event, their validity and uniqueness is limited by the lifetime of
   that association.  This can be cut short by the expiration of the
   association or simply by any mishap occurring to the PAN coordinator.
   Because of the scalability issues posed by such a centralized
   allocation and single point of failure at the PAN coordinator,
   deployers should carefully weigh the tradeoffs (and implement the
   necessary mechanisms) of growing such networks based on short
   addresses.  Of course, IEEE 64-bit extended addresses may not suffer
   from these drawbacks, but still share the remaining scalability
   issues concerning routing, discovery, configuration, etc.

   This document assumes that a PAN maps to a specific IPv6 link.  This
   complies with the recommendation that shared networks support link-
   layer subnet [RFC3819] broadcast.  Strictly speaking, it is multicast
   not broadcast that exists in IPv6.  However, multicast is not
   supported natively in IEEE 802.15.4.  Hence, IPv6 level multicast
   packets MUST be carried as link-layer broadcast frames in IEEE
   802.15.4 networks.  This MUST be done such that the broadcast frames
   are only heeded by devices within the specific PAN of the link in
   question.  As per Section 7.5.6.2 in [ieee802.15.4], this is
   accomplished as follows:

   1.  A destination PAN identifier is included in the frame, and it
       MUST match the PAN ID of the link in question.

   2.  A short destination address is included in the frame, and it MUST
       match the broadcast address (0xffff).




Montenegro, et al.          Standards Track                     [Page 4]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   Additionally, support for mapping of IPv6 multicast addresses per
   Section 9 MUST only be used in a mesh configuration.  A full
   specification of such functionality is out of the scope of this
   document.

   As usual, hosts learn IPv6 prefixes via router advertisements as per
   [RFC4861].

4.  Maximum Transmission Unit

   The MTU size for IPv6 packets over IEEE 802.15.4 is 1280 octets.
   However, a full IPv6 packet does not fit in an IEEE 802.15.4 frame.
   802.15.4 protocol data units have different sizes depending on how
   much overhead is present [ieee802.15.4].  Starting from a maximum
   physical layer packet size of 127 octets (aMaxPHYPacketSize) and a
   maximum frame overhead of 25 (aMaxFrameOverhead), the resultant
   maximum frame size at the media access control layer is 102 octets.
   Link-layer security imposes further overhead, which in the maximum
   case (21 octets of overhead in the AES-CCM-128 case, versus 9 and 13
   for AES-CCM-32 and AES-CCM-64, respectively) leaves only 81 octets
   available.  This is obviously far below the minimum IPv6 packet size
   of 1280 octets, and in keeping with Section 5 of the IPv6
   specification [RFC2460], a fragmention and reassembly adaptation
   layer must be provided at the layer below IP.  Such a layer is
   defined below in Section 5.

   Furthermore, since the IPv6 header is 40 octets long, this leaves
   only 41 octets for upper-layer protocols, like UDP.  The latter uses
   8 octets in the header which leaves only 33 octets for application
   data.  Additionally, as pointed out above, there is a need for a
   fragmentation and reassembly layer, which will use even more octets.

   The above considerations lead to the following two observations:

   1.  The adaptation layer must be provided to comply with the IPv6
       requirements of a minimum MTU.  However, it is expected that (a)
       most applications of IEEE 802.15.4 will not use such large
       packets, and (b) small application payloads in conjunction with
       the proper header compression will produce packets that fit
       within a single IEEE 802.15.4 frame.  The justification for this
       adaptation layer is not just for IPv6 compliance, as it is quite
       likely that the packet sizes produced by certain application
       exchanges (e.g., configuration or provisioning) may require a
       small number of fragments.

   2.  Even though the above space calculation shows the worst-case
       scenario, it does point out the fact that header compression is
       compelling to the point of almost being unavoidable.  Since we



Montenegro, et al.          Standards Track                     [Page 5]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


       expect that most (if not all) applications of IP over IEEE
       802.15.4 will make use of header compression, it is defined below
       in Section 10.

5.  LoWPAN Adaptation Layer and Frame Format

   The encapsulation formats defined in this section (subsequently
   referred to as the "LoWPAN encapsulation") are the payload in the
   IEEE 802.15.4 MAC protocol data unit (PDU).  The LoWPAN payload
   (e.g., an IPv6 packet) follows this encapsulation header.

   All LoWPAN encapsulated datagrams transported over IEEE 802.15.4 are
   prefixed by an encapsulation header stack.  Each header in the header
   stack contains a header type followed by zero or more header fields.
   Whereas in an IPv6 header the stack would contain, in the following
   order, addressing, hop-by-hop options, routing, fragmentation,
   destination options, and finally payload [RFC2460]; in a LoWPAN
   header, the analogous header sequence is mesh (L2) addressing, hop-
   by-hop options (including L2 broadcast/multicast), fragmentation, and
   finally payload.  These examples show typical header stacks that may
   be used in a LoWPAN network.

   A LoWPAN encapsulated IPv6 datagram:

      +---------------+-------------+---------+
      | IPv6 Dispatch | IPv6 Header | Payload |
      +---------------+-------------+---------+

   A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram:

      +--------------+------------+---------+
      | HC1 Dispatch | HC1 Header | Payload |
      +--------------+------------+---------+

   A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram that
   requires mesh addressing:

      +-----------+-------------+--------------+------------+---------+
      | Mesh Type | Mesh Header | HC1 Dispatch | HC1 Header | Payload |
      +-----------+-------------+--------------+------------+---------+

   A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram that
   requires fragmentation:

      +-----------+-------------+--------------+------------+---------+
      | Frag Type | Frag Header | HC1 Dispatch | HC1 Header | Payload |
      +-----------+-------------+--------------+------------+---------+




Montenegro, et al.          Standards Track                     [Page 6]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram that
   requires both mesh addressing and fragmentation:

      +-------+-------+-------+-------+---------+---------+---------+
      | M Typ | M Hdr | F Typ | F Hdr | HC1 Dsp | HC1 Hdr | Payload |
      +-------+-------+-------+-------+---------+---------+---------+

   A LoWPAN encapsulated LOWPAN_HC1 compressed IPv6 datagram that
   requires both mesh addressing and a broadcast header to support mesh
   broadcast/multicast:

      +-------+-------+-------+-------+---------+---------+---------+
      | M Typ | M Hdr | B Dsp | B Hdr | HC1 Dsp | HC1 Hdr | Payload |
      +-------+-------+-------+-------+---------+---------+---------+

   When more than one LoWPAN header is used in the same packet, they
   MUST appear in the following order:

      Mesh Addressing Header

      Broadcast Header

      Fragmentation Header

   All protocol datagrams (e.g., IPv6, compressed IPv6 headers, etc.)
   SHALL be preceded by one of the valid LoWPAN encapsulation headers,
   examples of which are given above.  This permits uniform software
   treatment of datagrams without regard to the mode of their
   transmission.

   The definition of LoWPAN headers, other than mesh addressing and
   fragmentation, consists of the dispatch value, the definition of the
   header fields that follow, and their ordering constraints relative to
   all other headers.  Although the header stack structure provides a
   mechanism to address future demands on the LoWPAN adaptation layer,
   it is not intended to provided general purpose extensibility.  This
   format document specifies a small set of header types using the
   header stack for clarity, compactness, and orthogonality.













Montenegro, et al.          Standards Track                     [Page 7]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


5.1.  Dispatch Type and Header

   The dispatch type is defined by a zero bit as the first bit and a one
   bit as the second bit.  The dispatch type and header are shown here:

                        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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |0 1| Dispatch  |  type-specific header
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Dispatch               6-bit selector.  Identifies the type of header
                          immediately following the Dispatch Header.

   type-specific header   A header determined by the Dispatch Header.

                    Figure 1: Dispatch Type and Header

   The dispatch value may be treated as an unstructured namespace.  Only
   a few symbols are required to represent current LoWPAN functionality.
   Although some additional savings could be achieved by encoding
   additional functionality into the dispatch byte, these measures would
   tend to constrain the ability to address future alternatives.




























Montenegro, et al.          Standards Track                     [Page 8]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


           Pattern    Header Type
         +------------+-----------------------------------------------+
         | 00  xxxxxx | NALP       - Not a LoWPAN frame               |
         | 01  000001 | IPv6       - Uncompressed IPv6 Addresses      |
         | 01  000010 | LOWPAN_HC1 - LOWPAN_HC1 compressed IPv6       |
         | 01  000011 | reserved   - Reserved for future use          |
         |   ...      | reserved   - Reserved for future use          |
         | 01  001111 | reserved   - Reserved for future use          |
         | 01  010000 | LOWPAN_BC0 - LOWPAN_BC0 broadcast             |
         | 01  010001 | reserved   - Reserved for future use          |
         |   ...      | reserved   - Reserved for future use          |
         | 01  111110 | reserved   - Reserved for future use          |
         | 01  111111 | ESC        - Additional Dispatch byte follows |
         | 10  xxxxxx | MESH       - Mesh Header                      |
         | 11  000xxx | FRAG1      - Fragmentation Header (first)     |
         | 11  001000 | reserved   - Reserved for future use          |
         |   ...      | reserved   - Reserved for future use          |
         | 11  011111 | reserved   - Reserved for future use          |
         | 11  100xxx | FRAGN      - Fragmentation Header (subsequent)|
         | 11  101000 | reserved   - Reserved for future use          |
         |   ...      | reserved   - Reserved for future use          |
         | 11  111111 | reserved   - Reserved for future use          |
         +------------+-----------------------------------------------+

                   Figure 2: Dispatch Value Bit Pattern

   NALP:  Specifies that the following bits are not a part of the LoWPAN
      encapsulation, and any LoWPAN node that encounters a dispatch
      value of 00xxxxxx shall discard the packet.  Other non-LoWPAN
      protocols that wish to coexist with LoWPAN nodes should include a
      byte matching this pattern immediately following the 802.15.4.
      header.

   IPv6:  Specifies that the following header is an uncompressed IPv6
      header [RFC2460].

   LOWPAN_HC1:  Specifies that the following header is a LOWPAN_HC1
      compressed IPv6 header.  This header format is defined in
      Figure 9.

   LOWPAN_BC0:  Specifies that the following header is a LOWPAN_BC0
      header for mesh broadcast/multicast support and is described in
      Section 11.1.

   ESC:  Specifies that the following header is a single 8-bit field for
      the Dispatch value.  It allows support for Dispatch values larger
      than 127.




Montenegro, et al.          Standards Track                     [Page 9]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


5.2.  Mesh Addressing Type and Header

   The mesh type is defined by a one bit and zero bit as the first two
   bits.  The mesh type and header are shown here:

                           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|V|F|HopsLft| originator address, final address
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Figure 3: Mesh Addressing Type and Header

   Field definitions are as follows:

   V: This 1-bit field SHALL be zero if the Originator (or "Very first")
      Address is an IEEE extended 64-bit address (EUI-64), or 1 if it is
      a short 16-bit addresses.

   F: This 1-bit field SHALL be zero if the Final Destination Address is
      an IEEE extended 64-bit address (EUI-64), or 1 if it is a short
      16-bit addresses.

   Hops Left:  This 4-bit field SHALL be decremented by each forwarding
      node before sending this packet towards its next hop.  The packet
      is not forwarded any further if Hops Left is decremented to zero.
      The value 0xF is reserved and signifies an 8-bit Deep Hops Left
      field immediately following, and allows a source node to specify a
      hop limit greater than 14 hops.

   Originator Address:  This is the link-layer address of the
      Originator.

   Final Destination Address:  This is the link-layer address of the
      Final Destination.

   Note that the 'V' and 'F' bits allow for a mix of 16 and 64-bit
   addresses.  This is useful at least to allow for mesh layer
   "broadcast", as 802.15.4 broadcast addresses are defined as 16-bit
   short addresses.

   A further discussion of frame delivery within a mesh is in
   Section 11.








Montenegro, et al.          Standards Track                    [Page 10]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


5.3.  Fragmentation Type and Header

   If an entire payload (e.g., IPv6) datagram fits within a single
   802.15.4 frame, it is unfragmented and the LoWPAN encapsulation
   should not contain a fragmentation header.  If the datagram does not
   fit within a single IEEE 802.15.4 frame, it SHALL be broken into link
   fragments.  As the fragment offset can only express multiples of
   eight bytes, all link fragments for a datagram except the last one
   MUST be multiples of eight bytes in length.  The first link fragment
   SHALL contain the first fragment header as defined below.

                           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          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Figure 4: First Fragment

   The second and subsequent link fragments (up to and including the
   last) SHALL contain a fragmentation header that conforms to the
   format shown below.

                           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|
      +-+-+-+-+-+-+-+-+

                      Figure 5: Subsequent Fragments

   datagram_size:  This 11-bit field encodes the size of the entire IP
      packet before link-layer fragmentation (but after IP layer
      fragmentation).  The value of datagram_size SHALL be the same for
      all link-layer fragments of an IP packet.  For IPv6, this SHALL be
      40 octets (the size of the uncompressed IPv6 header) more than the
      value of Payload Length in the IPv6 header [RFC2460] of the
      packet.  Note that this packet may already be fragmented by hosts
      involved in the communication, i.e., this field needs to encode a
      maximum length of 1280 octets (the IEEE 802.15.4 link MTU, as
      defined in this document).

      NOTE: This field does not need to be in every packet, as one could
      send it with the first fragment and elide it subsequently.
      However, including it in every link fragment eases the task of
      reassembly in the event that a second (or subsequent) link



Montenegro, et al.          Standards Track                    [Page 11]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


      fragment arrives before the first.  In this case, the guarantee of
      learning the datagram_size as soon as any of the fragments arrives
      tells the receiver how much buffer space to set aside as it waits
      for the rest of the fragments.  The format above trades off
      simplicity for efficiency.

   datagram_tag:  The value of datagram_tag (datagram tag) SHALL be the
      same for all link fragments of a payload (e.g., IPv6) datagram.
      The sender SHALL increment datagram_tag for successive, fragmented
      datagrams.  The incremented value of datagram_tag SHALL wrap from
      65535 back to zero.  This field is 16 bits long, and its initial
      value is not defined.

   datagram_offset:  This field is present only in the second and
      subsequent link fragments and SHALL specify the offset, in
      increments of 8 octets, of the fragment from the beginning of the
      payload datagram.  The first octet of the datagram (e.g., the
      start of the IPv6 header) has an offset of zero; the implicit
      value of datagram_offset in the first link fragment is zero.  This
      field is 8 bits long.

   The recipient of link fragments SHALL use (1) the sender's 802.15.4
   source address (or the Originator Address if a Mesh Addressing field
   is present), (2) the destination's 802.15.4 address (or the Final
   Destination address if a Mesh Addressing field is present), (3)
   datagram_size, and (4) datagram_tag to identify all the link
   fragments that belong to a given datagram.

   Upon receipt of a link fragment, the recipient starts constructing
   the original unfragmented packet whose size is datagram_size.  It
   uses the datagram_offset field to determine the location of the
   individual fragments within the original unfragmented packet.  For
   example, it may place the data payload (except the encapsulation
   header) within a payload datagram reassembly buffer at the location
   specified by datagram_offset.  The size of the reassembly buffer
   SHALL be determined from datagram_size.

   If a link fragment that overlaps another fragment is received, as
   identified above, and differs in either the size or datagram_offset
   of the overlapped fragment, the fragment(s) already accumulated in
   the reassembly buffer SHALL be discarded.  A fresh reassembly may be
   commenced with the most recently received link fragment.  Fragment
   overlap is determined by the combination of datagram_offset from the
   encapsulation header and "Frame Length" from the 802.15.4 Physical
   Layer Protocol Data Unit (PPDU) packet header.

   Upon detection of a IEEE 802.15.4 Disassociation event, fragment
   recipients MUST discard all link fragments of all partially



Montenegro, et al.          Standards Track                    [Page 12]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   reassembled payload datagrams, and fragment senders MUST discard all
   not yet transmitted link fragments of all partially transmitted
   payload (e.g., IPv6) datagrams.  Similarly, when a node first
   receives a fragment with a given datagram_tag, it starts a reassembly
   timer.  When this time expires, if the entire packet has not been
   reassembled, the existing fragments MUST be discarded and the
   reassembly state MUST be flushed.  The reassembly timeout MUST be set
   to a maximum of 60 seconds (this is also the timeout in the IPv6
   reassembly procedure [RFC2460]).

6.  Stateless Address Autoconfiguration

   This section defines how to obtain an IPv6 interface identifier.

   The Interface Identifier [RFC4291] for an IEEE 802.15.4 interface may
   be based on the EUI-64 identifier [EUI64] assigned to the IEEE
   802.15.4 device.  In this case, the Interface Identifier is formed
   from the EUI-64 according to the "IPv6 over Ethernet" specification
   [RFC2464].

   All 802.15.4 devices have an IEEE EUI-64 address, but 16-bit short
   addresses (Section 3 and Section 12) are also possible.  In these
   cases, a "pseudo 48-bit address" is formed as follows.  First, the
   left-most 32 bits are formed by concatenating 16 zero bits to the 16-
   bit PAN ID (alternatively, if no PAN ID is known, 16 zero bits may be
   used).  This produces a 32-bit field as follows:

      16_bit_PAN:16_zero_bits

   Then, these 32 bits are concatenated with the 16-bit short address.
   This produces a 48-bit address as follows:

      32_bits_as_specified_previously:16_bit_short_address

   The interface identifier is formed from this 48-bit address as per
   the "IPv6 over Ethernet" specification [RFC2464].  However, in the
   resultant interface identifier, the "Universal/Local" (U/L) bit SHALL
   be set to zero in keeping with the fact that this is not a globally
   unique value.  For either address format, all zero addresses MUST NOT
   be used.

   A different MAC address set manually or by software MAY be used to
   derive the Interface Identifier.  If such a MAC address is used, its
   global uniqueness property should be reflected in the value of the
   U/L bit.

   An IPv6 address prefix used for stateless autoconfiguration [RFC4862]
   of an IEEE 802.15.4 interface MUST have a length of 64 bits.



Montenegro, et al.          Standards Track                    [Page 13]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


7.  IPv6 Link Local Address

   The IPv6 link-local address [RFC4291] for an IEEE 802.15.4 interface
   is formed by appending the Interface Identifier, as defined above, to
   the prefix FE80::/64.

          10 bits            54 bits                  64 bits
       +----------+-----------------------+----------------------------+
       |1111111010|         (zeros)       |    Interface Identifier    |
       +----------+-----------------------+----------------------------+

                                 Figure 6

8.  Unicast Address Mapping

   The address resolution procedure for mapping IPv6 non-multicast
   addresses into IEEE 802.15.4 link-layer addresses follows the general
   description in Section 7.2 of [RFC4861], unless otherwise specified.

   The Source/Target Link-layer Address option has the following forms
   when the link layer is IEEE 802.15.4 and the addresses are EUI-64 or
   16-bit short addresses, respectively.





























Montenegro, et al.          Standards Track                    [Page 14]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


                       0                   1
                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |     Type      |    Length=2   |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |                               |
                      +-        IEEE 802.15.4        -+
                      |          EUI-64               |
                      +-                             -+
                      |                               |
                      +-         Address             -+
                      |                               |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |                               |
                      +-         Padding             -+
                      |                               |
                      +-        (all zeros)          -+
                      |                               |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       0                   1
                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |     Type      |    Length=1   |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |     16-bit short Address      |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |                               |
                      +-         Padding             -+
                      |         (all zeros)           |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                                 Figure 7

   Option fields:

   Type:

      1: for Source Link-layer address.

      2: for Target Link-layer address.

   Length:  This is the length of this option (including the type and
      length fields) in units of 8 octets.  The value of this field is 2
      if using EUI-64 addresses, or 1 if using 16-bit short addresses.

   IEEE 802.15.4 Address:  The 64-bit IEEE 802.15.4 address, or the 16-
      bit short address (as per the format in Section 9), in canonical



Montenegro, et al.          Standards Track                    [Page 15]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


      bit order.  This is the address the interface currently responds
      to.  This address may be different from the built-in address used
      to derive the Interface Identifier, because of privacy or security
      (e.g., of neighbor discovery) considerations.

9.  Multicast Address Mapping

   The functionality in this section MUST only be used in a mesh-enabled
   LoWPAN.  An IPv6 packet with a multicast destination address (DST),
   consisting of the sixteen octets DST[1] through DST[16], is
   transmitted to the following 802.15.4 16-bit multicast address:

                       0                   1
                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |1 0 0|DST[15]* |   DST[16]     |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                                 Figure 8

   Here, DST[15]* refers to the last 5 bits in octet DST[15], that is,
   bits 3-7 within DST[15].  The initial 3-bit pattern of "100" follows
   the 16-bit address format for multicast addresses (Section 12).

   This allows for multicast support within 6LoWPAN networks, but the
   full specification of such support is out of the scope of this
   document.  Example mechanisms are: flooding, controlled flooding,
   unicasting to the PAN coordinator, etc.  It is expected that this
   would be specified by the different mesh routing mechanisms.

10.  Header Compression

   There is much published and in-progress standardization work on
   header compression.  Nevertheless, header compression for IPv6 over
   IEEE 802.15.4 has differing constraints summarized as follows:

      Existing work assumes that there are many flows between any two
      devices.  Here, we assume a very simple and low-context flavor of
      header compression.  Whereas this works independently of flows
      (potentially several), it does not use any context specific to any
      flow.  Thus, it cannot achieve as much compression as schemes that
      build a separate context for each flow to be compressed.

      Given the very limited packet sizes, it is highly desirable to
      integrate layer 2 with layer 3 compression, something
      traditionally not done (although now changing due to the ROHC
      (RObust Header Compression) working group).




Montenegro, et al.          Standards Track                    [Page 16]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


      It is expected that IEEE 802.15.4 devices will be deployed in
      multi-hop networks.  However, header compression in a mesh departs
      from the usual point-to-point link scenario in which the
      compressor and decompressor are in direct and exclusive
      communication with each other.  In an IEEE 802.15.4 network, it is
      highly desirable for a device to be able to send header compressed
      packets via any of its neighbors, with as little preliminary
      context-building as possible.

   Any new packet formats required by header compression reuse the basic
   packet formats defined in Section 5 by using different dispatch
   values.

   Header compression may result in alignment not falling on an octet
   boundary.  Since hardware typically cannot transmit data in units
   less than an octet, padding must be used.  Padding is done as
   follows: First, the entire series of contiguous compressed headers is
   laid out (this document only defines IPv6 and UDP header compression
   schemes, but others may be defined elsewhere).  Then, zero bits
   SHOULD be added as appropriate to align to an octet boundary.  This
   counteracts any potential misalignment caused by header compression,
   so subsequent fields (e.g., non-compressed headers or data payloads)
   start on an octet boundary and follow as usual.

10.1.  Encoding of IPv6 Header Fields

   By virtue of having joined the same 6LoWPAN network, devices share
   some state.  This makes it possible to compress headers without
   explicitly building any compression context state.  Therefore,
   6LoWPAN header compression does not keep any flow state; instead, it
   relies on information pertaining to the entire link.  The following
   IPv6 header values are expected to be common on 6LoWPAN networks, so
   the HC1 header has been constructed to efficiently compress them from
   the onset: Version is IPv6; both IPv6 source and destination
   addresses are link local; the IPv6 interface identifiers (bottom 64
   bits) for the source or destination addresses can be inferred from
   the layer two source and destination addresses (of course, this is
   only possible for interface identifiers derived from an underlying
   802.15.4 MAC address); the packet length can be inferred either from
   layer two ("Frame Length" in the IEEE 802.15.4 PPDU) or from the
   "datagram_size" field in the fragment header (if present); both the
   Traffic Class and the Flow Label are zero; and the Next Header is
   UDP, ICMP or TCP.  The only field in the IPv6 header that always
   needs to be carried in full is the Hop Limit (8 bits).  Depending on
   how closely the packet matches this common case, different fields may
   not be compressible thus needing to be carried "in-line" as well
   (Section 10.3.1).  This common IPv6 header (as mentioned above) can
   be compressed to 2 octets (1 octet for the HC1 encoding and 1 octet



Montenegro, et al.          Standards Track                    [Page 17]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   for the Hop Limit), instead of 40 octets.  Such a packet is
   compressible via the LOWPAN_HC1 format by using a Dispatch value of
   LOWPAN_HC1 followed by a LOWPAN_HC1 header "HC1 encoding" field (8
   bits) to encode the different combinations as shown below.  This
   header may be preceded by a fragmentation header, which may be
   preceded by a mesh header.

                           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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      | HC1 encoding  |     Non-Compressed fields follow...
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 9: LOWPAN_HC1 (common compressed header encoding)

   As can be seen below (bit 7), an HC2 encoding may follow an HC1
   octet.  In this case, the non-compressed fields follow the HC2
   encoding field (Section 10.3).

   The address fields encoded by "HC1 encoding" are interpreted as
   follows:

      PI:  Prefix carried in-line (Section 10.3.1).

      PC:  Prefix compressed (link-local prefix assumed).

      II:  Interface identifier carried in-line (Section 10.3.1).

      IC:  Interface identifier elided (derivable from the corresponding
         link-layer address).  If applied to the interface identifier of
         either the source or destination address when routing in a mesh
         (Section 11), the corresponding link-layer address is that
         found in the "Mesh Addressing" field (Section 5.2).

   The "HC1 encoding" is shown below (starting with bit 0 and ending at
   bit 7):

      IPv6 source address (bits 0 and 1):

         00:  PI, II

         01:  PI, IC

         10:  PC, II

         11:  PC, IC





Montenegro, et al.          Standards Track                    [Page 18]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


      IPv6 destination address (bits 2 and 3):

         00:  PI, II

         01:  PI, IC

         10:  PC, II

         11:  PC, IC

      Traffic Class and Flow Label (bit 4):

         0: not compressed; full 8 bits for Traffic Class and 20 bits
            for Flow Label are sent

         1: Traffic Class and Flow Label are zero

      Next Header (bits 5 and 6):

         00:  not compressed; full 8 bits are sent

         01:  UDP

         10:  ICMP

         11:  TCP

      HC2 encoding(bit 7):

         0: No more header compression bits

         1: HC1 encoding immediately followed by more header compression
            bits per HC2 encoding format.  Bits 5 and 6 determine which
            of the possible HC2 encodings apply (e.g., UDP, ICMP, or TCP
            encodings).

10.2.  Encoding of UDP Header Fields

   Bits 5 and 6 of the LOWPAN_HC1 allows compressing the Next Header
   field in the IPv6 header (for UDP, TCP, and ICMP).  Further
   compression of each of these protocol headers is also possible.  This
   section explains how the UDP header itself may be compressed.  The
   HC2 encoding in this section is the HC_UDP encoding, and it only
   applies if bits 5 and 6 in HC1 indicate that the protocol that
   follows the IPv6 header is UDP.  The HC_UDP encoding (Figure 10)
   allows compressing the following fields in the UDP header: source
   port, destination port, and length.  The UDP header's checksum field
   is not compressed and is therefore carried in full.  The scheme



Montenegro, et al.          Standards Track                    [Page 19]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   defined below allows compressing the UDP header to 4 octets instead
   of the original 8 octets.

   The only UDP header field whose value may be deduced from information
   available elsewhere is the Length.  The other fields must be carried
   in-line either in full or in a partially compressed manner
   (Section 10.3.2).

                           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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |HC_UDP encoding|     Fields carried in-line follow...
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 10: HC_UDP (UDP common compressed header encoding)

   The "HC_UDP encoding" for UDP is shown below (starting with bit 0 and
   ending at bit 7):

      UDP source port (bit 0):

         0: Not compressed, carried "in-line" (Section 10.3.2)

         1: Compressed to 4 bits.  The actual 16-bit source port is
            obtained by calculating: P + short_port value.  The value of
            P is the number 61616 (0xF0B0).  The short_port is expressed
            as a 4-bit value which is carried "in-line" (Section 10.3.2)

      UDP destination port (bit 1):

         0: Not compressed, carried "in-line" (Section 10.3.2)

         1: Compressed to 4 bits.  The actual 16-bit destination port is
            obtained by calculating: P + short_port value.  The value of
            P is the number 61616 (0xF0B0).  The short_port is expressed
            as a 4-bit value which is carried "in-line" (Section 10.3.2)

      Length (bit 2):

         0: not compressed, carried "in-line" (Section 10.3.2)

         1: compressed, length computed from IPv6 header length
            information.  The value of the UDP length field is equal to
            the Payload Length from the IPv6 header, minus the length of
            any extension headers present between the IPv6 header and
            the UDP header.

      Reserved (bit 3 through 7)



Montenegro, et al.          Standards Track                    [Page 20]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


10.3.  Non-Compressed Fields

10.3.1.  Non-Compressed IPv6 Fields

   This scheme allows the IPv6 header to be compressed to different
   degrees.  Hence, instead of the entire (standard) IPv6 header, only
   non-compressed fields need to be sent.  The subsequent header (as
   specified by the Next Header field in the original IPv6 header)
   immediately follows the IPv6 non-compressed fields.

   Uncompressed IPv6 addressing is described by a dispatch type
   containing an IPv6 dispatch value followed by the uncompressed IPv6
   header.  This dispatch type may be preceded by additional LoWPAN
   headers.

   The non-compressed IPv6 field that MUST be always present is the Hop
   Limit (8 bits).  This field MUST always follow the encoding fields
   (e.g., "HC1 encoding" as shown in Figure 9), perhaps including other
   future encoding fields).  Other non-compressed fields MUST follow the
   Hop Limit as implied by the "HC1 encoding" in the exact same order as
   shown above (Section 10.1): source address prefix (64 bits) and/or
   interface identifier (64 bits), destination address prefix (64 bits)
   and/or interface identifier (64 bits), Traffic Class (8 bits), Flow
   Label (20 bits) and Next Header (8 bits).  The actual next header
   (e.g., UDP, TCP, ICMP, etc) follows the non-compressed fields.

10.3.2.  Non-Compressed and Partially Compressed UDP Fields

   This scheme allows the UDP header to be compressed to different
   degrees.  Hence, instead of the entire (standard) UDP header, only
   non-compressed or partially compressed fields need to be sent.

   The non-compressed or partially compressed fields in the UDP header
   MUST always follow the IPv6 header and any of its associated in-line
   fields.  Any UDP header in-line fields present MUST appear in the
   same order as the corresponding fields appear in a normal UDP header
   [RFC0768], e.g., source port, destination port, length, and checksum.
   If either the source or destination ports are in "short_port"
   notation (as indicated in the compressed UDP header), then instead of
   taking 16 bits, the inline port numbers take 4 bits.

11.  Frame Delivery in a Link-Layer Mesh

   Even though 802.15.4 networks are expected to commonly use mesh
   routing, the IEEE 802.15.4-2003 specification [ieee802.15.4] does not
   define such capability.  In such cases, Full Function Devices (FFDs)
   run an ad hoc or mesh routing protocol to populate their routing
   tables (outside the scope of this document).  In such mesh scenarios,



Montenegro, et al.          Standards Track                    [Page 21]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   two devices do not require direct reachability in order to
   communicate.  Of these devices, the sender is known as the
   "Originator", and the receiver is known as the "Final Destination".
   An originator device may use other intermediate devices as forwarders
   towards the final destination.  In order to achieve such frame
   delivery using unicast, it is necessary to include the link-layer
   addresses of the originator and final destinations, in addition to
   the hop-by-hop source and destination.

   This section defines how to effect delivery of layer 2 frames in a
   mesh, given a target "Final Destination" link-layer address.

   Mesh delivery is enabled by including a Mesh Addressing header prior
   to any other headers of the LoWPAN encapsulation (Section 5), an
   unfragmented and fragmented header; a full-blown IPv6 header; or a
   compressed IPv6 header as per Section 10 or any others defined
   elsewhere.

   If a node wishes to use a default mesh forwarder to deliver a packet
   (i.e., because it does not have direct reachability to the
   destination), it MUST include a Mesh Addressing header with the
   originator's link-layer address set to its own, and the final
   destination's link-layer address set to the packet's ultimate
   destination.  It sets the source address in the 802.15.4 header to
   its own link-layer address, and puts the forwarder's link-layer
   address in the 802.15.4 header's destination address field.  Finally,
   it transmits the packet.

   Similarly, if a node receives a frame with a Mesh Addressing header,
   it must look at the Mesh Addressing header's "Final Destination"
   field to determine the real destination.  If the node is itself the
   final destination, it consumes the packet as per normal delivery.  If
   it is not the final destination, the device then reduces the "Hops
   Left" field, and if the result is zero, discards the packet.
   Otherwise, the node consults its link-layer routing table, determines
   what the next hop towards the final destination should be, and puts
   that address in the destination address field of the 802.15.4 header.
   Finally, the node changes the source address in the 802.15.4 header
   to its own link-layer address and transmits the packet.

   Whereas a node must participate in a mesh routing protocol to be a
   forwarder, no such requirement exists for simply using mesh
   forwarding.  Only "Full Function Devices" (FFDs) are expected to
   participate as routers in a mesh.  "Reduced Function Devices" (RFDs)
   limit themselves to discovering FFDs and using them for all their
   forwarding, in a manner similar to how IP hosts typically use default
   routers to forward all their off-link traffic.  For an RFD using mesh
   delivery, the "forwarder" is always the appropriate FFD.



Montenegro, et al.          Standards Track                    [Page 22]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


11.1.  LoWPAN Broadcast

   Additional mesh routing functionality is encoded using a routing
   header immediately following the Mesh header.  In particular, a
   broadcast header consists of a LOWPAN_BC0 dispatch followed by a
   sequence number field.  The sequence number is used to detect
   duplicate packets (and hopefully suppress them).

                           1
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |0|1|LOWPAN_BC0 |Sequence Number|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Figure 11: Broadcast Header

   Field definitions are as follows:

   Sequence Number:  This 8-bit field SHALL be incremented by the
      originator whenever it sends a new mesh broadcast or multicast
      packet.  Full specification of how to handle this field is out of
      the scope of this document.

   Further implications of such mesh-layer broadcast, e.g., whether it
   maps to a controlled flooding mechanism or its role in, say, topology
   discovery, is out of the scope of this document.

   Additional mesh routing capabilities, such as specifying the mesh
   routing protocol, source routing, and so on may be expressed by
   defining additional routing headers that precede the fragmentation or
   addressing header in the header stack.  The full specification of
   such mesh routing capabilities are out of the scope of this document.

12.  IANA Considerations

   This document creates two new IANA registries, as discussed below.
   Future assignments in these registries are to be coordinated via IANA
   under the policy of "Specification Required" [RFC2434].  It is
   expected that this policy will allow for other (non-IETF)
   organizations to more easily obtain assignments.

   This document creates a new IANA registry for the Dispatch type field
   shown in the header definitions in Section 5.  This document defines
   the values IPv6, LOWPAN_HC1 header compression, BC0 broadcast and two
   escape patterns (NALP to indicate not a LOWPAN frame and ESC to allow
   additional dispatch bytes).  This document defines this field to be 8
   bits long.  The values 00xxxxxx being reserved and not used, allows
   for a total of 192 different values, which should be more than



Montenegro, et al.          Standards Track                    [Page 23]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   enough.  If header compression formats in addition to HC1 are defined
   or if additional TCP, ICMP HC2 formats are defined, it is expected
   that these will use reserved dispatch values following LOWPAN_HC1.
   If additional mesh delivery formats are defined these will use
   reserved values following LOWPAN_BC0.

   This document creates a new IANA registry for the 16-bit short
   address fields as used in 6LoWPAN packets.

                       0                   1
                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                      |     16-bit short Address      |
                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                                 Figure 12

   This registry MUST include the addresses 0xffff (16-bit broadcast
   address accepted by all devices currently listening to the channel)
   and 0xfffe as defined in [ieee802.15.4].  Additionally, within
   6LoWPAN networks, 16-bit short addresses MUST follow this format
   (referring to bit fields in the order from 0 to 7), where "x" is a
   place holder for an unspecified bit value:

   Range 1, 0xxxxxxxxxxxxxxx:  The first bit (bit 0) SHALL be zero if
      the 16-bit address is a unicast address.  This leaves 15 bits for
      the actual address.

   Range 2, 100xxxxxxxxxxxxx:  Bits 0, 1, and 2 SHALL follow this
      pattern if the 16-bit address is a multicast address (see
      Section 9).  This leaves 13 bits for the actual multicast address.

   Range 3, 101xxxxxxxxxxxxx:  This pattern for bits 0, 1, and 2 is
      reserved.  Any future assignment shall follow the policy mentioned
      above.

   Range 4, 110xxxxxxxxxxxxx:  This pattern for bits 0, 1, and 2 is
      reserved.  Any future assignment shall follow the policy mentioned
      above.

   Range 5, 111xxxxxxxxxxxxx:  This pattern for bits 0, 1, and 2 is
      reserved.  Any future assignment shall follow the policy mentioned
      above.








Montenegro, et al.          Standards Track                    [Page 24]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


13.  Security Considerations

   The method of derivation of Interface Identifiers from EUI-64 MAC
   addresses is intended to preserve global uniqueness when possible.
   However, there is no protection from duplication through accident or
   forgery.

   Neighbor Discovery in IEEE 802.15.4 links may be susceptible to
   threats as detailed in [RFC3756].  Mesh routing is expected to be
   common in IEEE 802.15.4 networks.  This implies additional threats
   due to ad hoc routing as per [KW03].  IEEE 802.15.4 provides some
   capability for link-layer security.  Users are urged to make use of
   such provisions if at all possible and practical.  Doing so will
   alleviate the threats stated above.

   A sizeable portion of IEEE 802.15.4 devices is expected to always
   communicate within their PAN (i.e., within their link, in IPv6
   terms).  In response to cost and power consumption considerations,
   and in keeping with the IEEE 802.15.4 model of "Reduced Function
   Devices" (RFDs), these devices will typically implement the minimum
   set of features necessary.  Accordingly, security for such devices
   may rely quite strongly on the mechanisms defined at the link layer
   by IEEE 802.15.4.  The latter, however, only defines the Advanced
   Encryption Standard (AES) modes for authentication or encryption of
   IEEE 802.15.4 frames, and does not, in particular, specify key
   management (presumably group oriented).  Other issues to address in
   real deployments relate to secure configuration and management.
   Whereas such a complete picture is out of the scope of this document,
   it is imperative that IEEE 802.15.4 networks be deployed with such
   considerations in mind.  Of course, it is also expected that some
   IEEE 802.15.4 devices (the so-called "Full Function Devices", or
   "FFDs") will implement coordination or integration functions.  These
   may communicate regularly with off-link IPv6 peers (in addition to
   the more common on-link exchanges).  Such IPv6 devices are expected
   to secure their end-to-end communications with the usual mechanisms
   (e.g., IPsec, TLS, etc).

14.  Acknowledgements

   Thanks to the authors of RFC 2464 and RFC 2734, as parts of this
   document are patterned after theirs.  Thanks to Geoff Mulligan for
   useful discussions which helped shape this document.  Erik Nordmark's
   suggestions were instrumental for the header compression section.
   Also thanks to Shoichi Sakane, Samita Chakrabarti, Vipul Gupta,
   Carsten Bormann, Ki-Hyung Kim, Mario Mao, Phil Levis, Magnus
   Westerlund, and Jari Arkko.





Montenegro, et al.          Standards Track                    [Page 25]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


15.  References

15.1.  Normative References

   [RFC2119]       Bradner, S., "Key words for use in RFCs to Indicate
                   Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2434]       Narten, T. and H. Alvestrand, "Guidelines for Writing
                   an IANA Considerations Section in RFCs", BCP 26,
                   RFC 2434, October 1998.

   [RFC2460]       Deering, S. and R. Hinden, "Internet Protocol,
                   Version 6 (IPv6) Specification", RFC 2460,
                   December 1998.

   [RFC2464]       Crawford, M., "Transmission of IPv6 Packets over
                   Ethernet Networks", RFC 2464, December 1998.

   [RFC4291]       Hinden, R. and S. Deering, "IP Version 6 Addressing
                   Architecture", RFC 4291, February 2006.

   [RFC4861]       Narten, T., Nordmark, E., Simpson, W., and H.
                   Soliman, "Neighbor Discovery for IP version 6
                   (IPv6)", RFC 4861, September 2007.

   [RFC4862]       Thomson, S., Narten, T., and T. Jinmei, "IPv6
                   Stateless Address Autoconfiguration", RFC 4862,
                   September 2007.

   [ieee802.15.4]  IEEE Computer Society, "IEEE Std. 802.15.4-2003",
                   October 2003.

15.2.  Informative References

   [EUI64]         "GUIDELINES FOR 64-BIT GLOBAL IDENTIFIER (EUI-64)
                   REGISTRATION AUTHORITY", IEEE http://
                   standards.ieee.org/regauth/oui/tutorials/EUI64.html.

   [KW03]          Karlof, Chris and Wagner, David, "Secure Routing in
                   Sensor Networks: Attacks and Countermeasures",
                   Elsevier's AdHoc Networks Journal, Special Issue on
                   Sensor Network Applications and Protocols vol 1,
                   issues 2-3, September 2003.

   [RFC0768]       Postel, J., "User Datagram Protocol", STD 6, RFC 768,
                   August 1980.





Montenegro, et al.          Standards Track                    [Page 26]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   [RFC3756]       Nikander, P., Kempf, J., and E. Nordmark, "IPv6
                   Neighbor Discovery (ND) Trust Models and Threats",
                   RFC 3756, May 2004.

   [RFC3819]       Karn, P., Bormann, C., Fairhurst, G., Grossman, D.,
                   Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J.,
                   and L. Wood, "Advice for Internet Subnetwork
                   Designers", BCP 89, RFC 3819, July 2004.











































Montenegro, et al.          Standards Track                    [Page 27]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


Appendix A.  Alternatives for Delivery of Frames in a Mesh

   Before settling on the mechanism finally adopted for delivery in a
   mesh (Section 11), several alternatives were considered.  In addition
   to the hop-by-hop source and destination link-layer addresses,
   delivering a packet in a LoWPAN mesh requires the end-to-end
   originator and destination addresses.  These could be expressed
   either as layer 2 or as layer 3 (i.e., IP ) addresses.  In the latter
   case, there would be no need to provide any additional header support
   in this document (i.e., within the LoWPAN header itself).  The link-
   layer destination address would point to the next hop destination
   address while the IP header destination address would point to the
   final destination (IP) address (possibly multiple hops away from the
   source), and similarly for the source addresses.  Thus, while
   forwarding data, the single-hop source and destination addresses
   would change at each hop (always pointing to the node doing the
   forwarding and the "best" next link-layer hop, respectively), while
   the source and destination IP addresses would remain unchanged.
   Notice that if an IP packet is fragmented, the individual fragments
   may arrive at any node out of order.  If the initial fragment (which
   contains the IP header) is delayed for some reason, a node that
   receives a subsequent fragment would lack the required information.
   It would be forced to wait until it receives the IP header (within
   the first fragment) before being able to forward the fragment any
   further.  This imposes some additional buffering requirements on
   intermediate nodes.  Additionally, such a specification would only
   work for one type of LoWPAN payload: IPv6.  In general, it would have
   to be adapted for any other payload, and would require that payload
   to provide its own end-to-end addressing information.

   On the other hand, the approach finally followed (Section 11) creates
   a mesh at the LoWPAN layer (below layer 3).  Accordingly, the link-
   layer originator and final destination address are included within
   the LoWPAN header.  This enables mesh delivery for any protocol or
   application layered on the LoWPAN adaptation layer (Section 5).  For
   IPv6 as supported in this document, another advantage of expressing
   the originator and final destinations as layer 2 addresses is that
   the IPv6 addresses can be compressed as per the header compression
   specified in Section 10.  Furthermore, the number of octets needed to
   maintain routing tables is reduced due to the smaller size of
   802.15.4 addresses (either 64 bits or 16 bits) as compared to IPv6
   addresses (128 bits).  A disadvantage is that applications on top of
   IP do not address packets to link-layer destination addresses, but to
   IP (layer 3) destination addresses.  Thus, given an IP address, there
   is a need to resolve the corresponding link-layer address.
   Accordingly, a mesh routing specification needs to clarify the
   Neighbor Discovery implications, although in some special cases, it
   may be possible to derive a device's address at layer 2 from its



Montenegro, et al.          Standards Track                    [Page 28]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


   address at layer 3 (and vice versa).  Such complete specification is
   outside the scope of this document.

Authors' Addresses

   Gabriel Montenegro
   Microsoft Corporation

   EMail: gabriel.montenegro@microsoft.com


   Nandakishore Kushalnagar
   Intel Corp

   EMail: nandakishore.kushalnagar@intel.com


   Jonathan W. Hui
   Arch Rock Corp

   EMail: jhui@archrock.com


   David E. Culler
   Arch Rock Corp

   EMail: dculler@archrock.com
























Montenegro, et al.          Standards Track                    [Page 29]
^L
RFC 4944                IPv6 over IEEE 802.15.4           September 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.












Montenegro, et al.          Standards Track                    [Page 30]
^L