| < draft-ietf-lpwan-coap-static-context-hc-02.txt | draft-ietf-lpwan-coap-static-context-hc-03.txt > | |||
|---|---|---|---|---|
| lpwan Working Group A. Minaburo | lpwan Working Group A. Minaburo | |||
| Internet-Draft Acklio | Internet-Draft Acklio | |||
| Intended status: Informational L. Toutain | Intended status: Informational L. Toutain | |||
| Expires: March 10, 2018 Institut MINES TELECOM ; IMT Atlantique | Expires: September 5, 2018 Institut MINES TELECOM; IMT Atlantique | |||
| September 06, 2017 | March 04, 2018 | |||
| LPWAN Static Context Header Compression (SCHC) for CoAP | LPWAN Static Context Header Compression (SCHC) for CoAP | |||
| draft-ietf-lpwan-coap-static-context-hc-02 | draft-ietf-lpwan-coap-static-context-hc-03 | |||
| Abstract | Abstract | |||
| This draft defines the way SCHC header compression can be applied to | This draft defines the way SCHC header compression can be applied to | |||
| CoAP headers. CoAP header structure differs from IPv6 and UDP | CoAP headers. CoAP header structure differs from IPv6 and UDP | |||
| protocols since the CoAP Header is flexible header with a variable | protocols since the CoAP Header is flexible header with a variable | |||
| number of options themself of a variable length. Another important | number of options themself of a variable length. Another important | |||
| difference is the asymmetry in the header information used for | difference is the asymmetry in the header information used for | |||
| request and response messages. This draft takes into account the | request and response messages. This draft takes into account the | |||
| fact that a thing can play the role of a CoAP client, a CoAP client | fact that a thing can play the role of a CoAP client, a CoAP client | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 10, 2018. | This Internet-Draft will expire on September 5, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 2, line 43 ¶ | skipping to change at page 2, line 43 ¶ | |||
| 7. Protocol analysis . . . . . . . . . . . . . . . . . . . . . . 13 | 7. Protocol analysis . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 8. Examples of CoAP header compression . . . . . . . . . . . . . 14 | 8. Examples of CoAP header compression . . . . . . . . . . . . . 14 | |||
| 8.1. Mandatory header with CON message . . . . . . . . . . . . 14 | 8.1. Mandatory header with CON message . . . . . . . . . . . . 14 | |||
| 8.2. Complete exchange . . . . . . . . . . . . . . . . . . . . 16 | 8.2. Complete exchange . . . . . . . . . . . . . . . . . . . . 16 | |||
| 9. Normative References . . . . . . . . . . . . . . . . . . . . 17 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 17 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| CoAP [rfc7252] is an implementation of the REST architecture for | CoAP [rfc7252] is an implementation of the REST architecture for | |||
| constrained devices. Gateway between CoAP and HTTP can be easily | constrained devices. A Gateway between CoAP and HTTP can be easily | |||
| built since both protocols uses the same address space (URL), caching | built since both protocols uses the same address space (URL), caching | |||
| mechanisms and methods. | mechanisms and methods. | |||
| Nevertheless, if limited, the size of a CoAP header may be too large | Nevertheless, if limited, the size of a CoAP header may be too large | |||
| for LPWAN constraints and some compression may be needed to reduce | for LPWAN constraints and some compression may be needed to reduce | |||
| the header size. | the header size. | |||
| [I-D.toutain-lpwan-ipv6-static-context-hc] defines a header | [I-D.toutain-lpwan-ipv6-static-context-hc] defines a header | |||
| compression mechanism for LPWAN network based on a static context. | compression mechanism for LPWAN network based on a static context. | |||
| The context is said static since the element values composing the | The context is said static since the field description composing the | |||
| context are not learned during the packet exchanges but are | Rules and the context are not learned during the packet exchanges but | |||
| previously defined. The context(s) is(are) known by both ends before | are previously defined. The context(s) is(are) known by both ends | |||
| transmission. | before transmission. | |||
| A context is composed of a set of rules (contexts) that are | A context is composed of a set of rules that are referenced by Rule | |||
| referenced by Rule IDs (identifiers). A rule contains an ordered | IDs (identifiers). A rule contains an ordered list of the fields | |||
| list of the header fields containing a field ID (FID) and its | descriptions containing a field ID (FID) and its position when | |||
| position when repeated, a direction indicator (DI) (upstream, | repeated, a direction indicator (DI) (upstream, downstream and | |||
| downstream and bidirectional) and some associated Target Values (TV) | bidirectional) and some associated Target Values (TV) which are | |||
| which are expected in the message header. A Matching Operator (MO) | expected in the message header. A Matching Operator (MO) is | |||
| is associated to each header field description. The rule is selected | associated to each header field description. The rule is selected if | |||
| if all the MOs fit the TVs. In that case, a Compression | all the MOs fit the TVs. In that case, a Compression/Decompression | |||
| Decompression Function (CDF) associated to each field defines the | Action (CDA) associated to each field defines the link between the | |||
| link between the compressed and decompressed value for each of the | compressed and decompressed value for each of the header fields. | |||
| header fields. | ||||
| This document describes how the rules can be applied to CoAP flows. Compression of the | This document describes how the rules can be applied to CoAP flows. | |||
| CoAP header may be done in conjunction with the above layers or independantly. | Compression of the CoAP header may be done in conjunction with the | |||
| above layers or independantly. | ||||
| 2. CoAP Compressing | 2. CoAP Compressing | |||
| CoAP differs from IPv6 and UDP protocols on the following | CoAP differs from IPv6 and UDP protocols on the following aspects: | |||
| aspects: | ||||
| o IPv6 and UDP are symmetrical protocols. The same fields are found | o IPv6 and UDP are symmetrical protocols. The same fields are found | |||
| in the request and in the response, only location in the header | in the request and in the response, only the location in the | |||
| may vary (e.g. source and destination fields). A CoAP request is | header may vary (e.g. source and destination fields). A CoAP | |||
| different from an response. For example, the URI-path option is | request is different from a response. For example, the URI-path | |||
| mandatory in the request and is not found in the response, request | option is mandatory in the request and is not found in the | |||
| may contain an Accept option and the response a Content-format | response, a request may contain an Accept option and the response | |||
| option. | a Content-format option. | |||
| Even when a field is "symmetric" (i.e. found in both directions) | Even when a field is "symmetric" (i.e. found in both directions) | |||
| the values carried are different. For instance the Type field | the values carried are different. For instance the Type field | |||
| will contain a CON value in the request and a ACK or RST value in | will contain a CON value in the request and a ACK or RST value in | |||
| the response. Exploiting the asymmetry in compression will allow | the response. Exploiting the asymmetry in compression will allow | |||
| to send no bit in the compressed request and a single bit in the | to send no bit in the compressed request and a single bit in the | |||
| answer. Same behavior can be applied to the CoAP Code field (O.OX | answer. Same behavior can be applied to the CoAP Code field (O.OX | |||
| code are present in the request and Y.ZZ in the answer). | code are present in the request and Y.ZZ in the answer). | |||
| o CoAP also obeys to the client/server paradigm and the compression | o CoAP also obeys to the client/server paradigm and the compression | |||
| rate can be different if the request is issued from a LPWAN node | rate can be different if the request is issued from an LPWAN node | |||
| or from an non LPWAN device. For instance a Thing (ES) aware of | or from an non LPWAN device. For instance a Thing (ES) aware of | |||
| LPWAN constraints can generate a 1 byte token, but a regular CoAP | LPWAN constraints can generate a 1 byte token, but a regular CoAP | |||
| client will certainly send a larger token to the Thing. SCHC | client will certainly send a larger token to the Thing. SCHC | |||
| compression will not modify the values to offer a better | compression will not modify the values to offer a better | |||
| compression rate. Nevertheless a proxy placed before the | compression rate. Nevertheless a proxy placed before the | |||
| compressor may change some field values to offer a better | compressor may change some field values to offer a better | |||
| compression rate and maintain the necessary context for | compression rate and maintain the necessary context for | |||
| interoperability with existing CoAP implementations. | interoperability with existing CoAP implementations. | |||
| o In IPv6 and UDP header fields have a fixed size. In CoAP, Token | o In IPv6 and UDP header fields have a fixed size. In CoAP, Token | |||
| size may vary from 0 to 8 bytes, length is given by a field in the | size may vary from 0 to 8 bytes, length is given by a field in the | |||
| header. More systematically, the CoAP options are described using | header. More systematically, the CoAP options are described using | |||
| the Type-Length-Value. When applying SCHC header compression. | the Type-Length-Value. When applying SCHC header compression. | |||
| By sending compressed field information following the rule order, | By sending compressed field information following the rule order, | |||
| SCHC offers a serialization/deserialization mechanism. Since a | SCHC offers a serialization/deserialization mechanism. Since a | |||
| field exists to indicate the token length there is no ambiguity. | field exists to indicate the token length there is no ambiguity. | |||
| For options, the rule indicates also the expected options found | For options, the rule indicates also the expected options found | |||
| the int CoAP header. Therefore only the length is needed to | the int CoAP header. Therefore only the length is needed to | |||
| recognise an option. The length will be send using the same CoAP | recognize an option. The length will be sent using the same CoAP | |||
| encoding (size less than 12 are directly sent, higher values uses | encoding (size less than 12 are directly sent, higher values use | |||
| the escape mechanisms defined by [rfc7252]). Delta Type is | the escape mechanisms defined by [rfc7252]). Delta Type is | |||
| omitted, the value will be recovered by the decompressor. This | omitted, the value will be recovered by the decompressor. This | |||
| reduce the option length of 4, 12 or 20 bits regarding the | reduces the option length of 4, 12 or 20 bits regarding the | |||
| orignial size of the delta type encoding in the option. | original size of the delta type encoding in the option. | |||
| o In CoAP headers a field can be duplicated several times, for | o In CoAP headers a field can be duplicated several times, for | |||
| instances, elements of an URI (path or queries) or accepted | instances, elements of an URI (path or queries) or accepted | |||
| formats. The position defined in a rule, associated to a Field | formats. The position defined in a rule, associated to a Field | |||
| ID, can be used to identify the proper element. | ID, can be used to identify the proper element. | |||
| 3. Compression of CoAP header fields | 3. Compression of CoAP header fields | |||
| This section discusses of the compression of the different CoAP | This section discusses of the compression of the different CoAP | |||
| header fields. These are just examples. The compression should take | header fields. These are just examples. The compression should take | |||
| into account the nature of the traffic and not only the field values. | into account the nature of the traffic and not only the field values. | |||
| Next chapter will define some compression rules for some common | Next chapter will define some compression rules for some common | |||
| exchanges. | exchanges. | |||
| 3.1. CoAP version field (2 bits) | 3.1. CoAP version field (2 bits) | |||
| This field is bidirectional and can be elided during the SCHC | This field is bidirectional and can be elided during the SCHC | |||
| compression, since it always contains the same value. It appears | compression, since it always contains the same value. It appears | |||
| only in first position. | only in first position. | |||
| FID Pos DI TV MO CDF | FID FL FP DI Value MO CDA Sent | |||
| ver 1 bi 1 equal not-sent | ver 2 1 bi 1 equal not-sent | |||
| 3.2. CoAP type field | 3.2. CoAP type field | |||
| This field can be managed bidirectionally or unidirectionally.Several | This field can be managed bidirectionally or unidirectionally.Several | |||
| strategies can be applied to this field regarding the values used: | strategies can be applied to this field regarding the values used: | |||
| o If the ES is a client or a Server and non confirmable message are | o If the ES is a client or a Server and non confirmable message are | |||
| used, the transmission of the Type field can be avoided: | used, the transmission of the Type field can be avoided: | |||
| * Pos is always 1, | * Pos is always 1, | |||
| * DI can either be "uplink" if the ES is a CoAP client or | * DI can either be "uplink" if the ES is a CoAP client or | |||
| "downlink" if the ES is a CoAP server, or "bidirectional" | "downlink" if the ES is a CoAP server, or "bidirectional" | |||
| * TV is set to the value, | * TV is set to the value, | |||
| * MO is set to "equal" | * MO is set to "equal" | |||
| * CDF is set to "not-sent". | * CDA is set to "not-sent". | |||
| FID Pos DI TV MO CDF | FID FL FP DI Target Value MO CDA Sent | |||
| type 1 bi NON equal not-sent | type 2 1 bi NON equal not-sent | |||
| o If the ES is either a client or a Server and confirmable message | o If the ES is either a client or a Server and confirmable message | |||
| are used, the DI can be used to elide the type on the request and | are used, the DI can be used to elide the type on the request and | |||
| compress it to 1 bit on the response. The example above shows the | compress it to 1 bit on the response. The example above shows the | |||
| rule for a ES acting as a client, directions need to be reversed | rule for a ES acting as a client, directions need to be reversed | |||
| for a ES acting as a server. | for a ES acting as a server. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| type 1 up CON equal not-sent | type 2 1 up CON equal not-sent | |||
| type 1 dw {0:ACK, 1:RST} match-mapping mapping-sent | type 2 1 dw [ACK,RST] match-mapping mapping-sent [1] | |||
| o Otherwise if the ES is acting simultaneously as a client and a | o Otherwise if the ES is acting simultaneously as a client and a | |||
| server and the rule handle these two traffics, Type field must be | server and the rule handle these two traffics, Type field must be | |||
| sent uncompressed. | sent uncompressed. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| type 1 bi ignore send-value | type 2 1 bi ignore send-value [2] | |||
| 3.3. CoAP token length field | 3.3. CoAP token length field | |||
| This field is bi-directional. | This field is bi-directional. | |||
| Several strategies can be applied to this field regarding the values: | Several strategies can be applied to this field regarding the values: | |||
| o no token or a wellknown length, the transmission can be avoided. | o no token or a wellknown length, the transmission can be avoided. | |||
| A special care must be taken, if CON messages are acknowledged | A special care must be taken, if CON messages are acknowledged | |||
| with an empty ACK message. In that case the token is not always | with an empty ACK message. In that case the token is not always | |||
| present. | present. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| TKL 1 bi value ignore send-value | TKL 4 1 bi value ignore send-value [4] | |||
| o If the length is changing from one message to an other, the Token | o If the length is changing from one message to an other, the Token | |||
| Length field must be sent. If the Token length can be limited, | Length field must be sent. If the Token length can be limited, | |||
| then only the least significant bits have to be sent. The example | then only the least significant bits have to be sent. The example | |||
| below allows values between 0 and 3. | below allows values between 0 and 3. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| TKL 1 bi 0x0 MSB(2) LSB(2) | TKL 4 1 bi 0x0 MSB(2) LSB(2) [2] | |||
| o otherwise the field value has to be sent. | o otherwise the field value has to be sent. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| TKL 1 bi ignore value-sent | TKL 4 1 bi ignore value-sent [4] | |||
| 3.4. CoAP code field | 3.4. CoAP code field | |||
| This field is bidirectional, but compression can be enhanced using | This field is bidirectional, but compression can be enhanced using | |||
| DI. | DI. | |||
| The CoAP Code field defines a tricky way to ensure compatibility with | The CoAP Code field defines a tricky way to ensure compatibility with | |||
| HTTP values. Nevertheless only 21 values are defined by [rfc7252] | HTTP values. Nevertheless only 21 values are defined by [rfc7252] | |||
| compared to the 255 possible values. | compared to the 255 possible values. | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| | Code | Description | Mapping | | | Code | Description | Mapping | | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| | 0.00 | | 0x00 | | | 0.00 | | 0x00 | | |||
| | 0.01 | GET | 0x01 | | | 0.01 | GET | 0x01 | | |||
| | 0.02 | POST | 0x02 | | | 0.02 | POST | 0x02 | | |||
| | 0.03 | PUT | 0x03 | | | 0.03 | PUT | 0x03 | | |||
| | 0.04 | DELETE | 0x04 | | | 0.04 | DELETE | 0x04 | | |||
| | 0.05 | FETCH | 0x05 | | | 0.05 | FETCH | 0x05 | | |||
| | 0.06 | PATCH | 0x06 | | | 0.06 | PATCH | 0x06 | | |||
| | 0.07 | iPATCH | 0x07 | | | 0.07 | iPATCH | 0x07 | | |||
| | 2.01 | Created | 0x08 | | | 2.01 | Created | 0x08 | | |||
| | 2.02 | Deleted | 0x09 | | | 2.02 | Deleted | 0x09 | | |||
| | 2.03 | Valid | 0x0A | | | 2.03 | Valid | 0x0A | | |||
| | 2.04 | Changed | 0x0B | | | 2.04 | Changed | 0x0B | | |||
| | 2.05 | Content | 0x0C | | | 2.05 | Content | 0x0C | | |||
| | 4.00 | Bad Request | 0x0D | | | 4.00 | Bad Request | 0x0D | | |||
| | 4.01 | Unauthorized | 0x0E | | | 4.01 | Unauthorized | 0x0E | | |||
| | 4.02 | Bad Option | 0x0F | | | 4.02 | Bad Option | 0x0F | | |||
| | 4.03 | Forbidden | 0x10 | | | 4.03 | Forbidden | 0x10 | | |||
| | 4.04 | Not Found | 0x11 | | | 4.04 | Not Found | 0x11 | | |||
| | 4.05 | Method Not Allowed | 0x12 | | | 4.05 | Method Not Allowed | 0x12 | | |||
| | 4.06 | Not Acceptable | 0x13 | | | 4.06 | Not Acceptable | 0x13 | | |||
| | 4.12 | Precondition Failed | 0x14 | | | 4.12 | Precondition Failed | 0x14 | | |||
| | 4.13 | Request Entity Too Large | 0x15 | | | 4.13 | Request Entity Too Large | 0x15 | | |||
| | 4.15 | Unsupported Content-Format | 0x16 | | | 4.15 | Unsupported Content-Format | 0x16 | | |||
| | 5.00 | Internal Server Error | 0x17 | | | 5.00 | Internal Server Error | 0x17 | | |||
| | 5.01 | Not Implemented | 0x18 | | | 5.01 | Not Implemented | 0x18 | | |||
| | 5.02 | Bad Gateway | 0x19 | | | 5.02 | Bad Gateway | 0x19 | | |||
| | 5.03 | Service Unavailable | 0x1A | | | 5.03 | Service Unavailable | 0x1A | | |||
| | 5.04 | Gateway Timeout | 0x1B | | | 5.04 | Gateway Timeout | 0x1B | | |||
| | 5.05 | Proxying Not Supported | 0x1C | | | 5.05 | Proxying Not Supported | 0x1C | | |||
| +------+------------------------------+-----------+ | +------+------------------------------+-----------+ | |||
| Figure 1: Example of CoAP code mapping | Figure 1: Example of CoAP code mapping | |||
| Figure 1 gives a possible mapping, it can be changed to add new codes | Figure 1 gives a possible mapping, it can be changed to add new codes | |||
| or reduced if some values are never used by both ends. It could | or reduced if some values are never used by both ends. It could | |||
| efficiently be coded on 5 bits. | efficiently be coded on 5 bits. | |||
| Even if the number of code can be increase with other RFC, | Even if the number of code can be increase with other RFC, | |||
| implementations may use a limited number of values, which can help to | implementations may use a limited number of values, which can help to | |||
| reduce the number of bits sent on the LPWAN. | reduce the number of bits sent on the LPWAN. | |||
| skipping to change at page 8, line 17 ¶ | skipping to change at page 8, line 17 ¶ | |||
| The field can be treated differently in upstream than in downstream. | The field can be treated differently in upstream than in downstream. | |||
| If the Thing is a client an entry can be set on the uplink message | If the Thing is a client an entry can be set on the uplink message | |||
| with a code matching for 0.0X values and another for downlink values | with a code matching for 0.0X values and another for downlink values | |||
| for Y.ZZ codes. It is the opposite if the thing is a server. | for Y.ZZ codes. It is the opposite if the thing is a server. | |||
| If the ES always sends or receives requests with the same method, the | If the ES always sends or receives requests with the same method, the | |||
| Code field can be elided. The entry below shows a rule for a client | Code field can be elided. The entry below shows a rule for a client | |||
| sending only GET request. | sending only GET request. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| code 1 up GET equal not-sent | code 8 1 up GET equal not-sent | |||
| If the client may send different methods, a matching-list can be | If the client may send different methods, a matching-list can be | |||
| applied. For table Figure 1, 3 bits are necessary, but it could be | applied. For table Figure 1, 3 bits are necessary, but it could be | |||
| less if fewer methods are used. Example below gives an example where | less if fewer methods are used. Example below gives an example where | |||
| the ES is a server and receives only GET and POST requests. | the ES is a server and receives only GET and POST requests. | |||
| FID Pos DI TV MO CDF | FID FL FP DI Target Value MO CDA Sent | |||
| code 1 dw {0:0.01, 1:0.02}match-mapping mapping-sent | code 8 1 dw [0.01, 0.02] match-mapping mapping-sent [1] | |||
| The same approach can be applied to responses. | The same approach can be applied to responses. | |||
| 3.5. CoAP Message ID field | 3.5. CoAP Message ID field | |||
| This field is bidirectional. | This field is bidirectional. | |||
| Message ID is used for two purposes: | Message ID is used for two purposes: | |||
| o To acknowledge a CON message with an ACK. | o To acknowledge a CON message with an ACK. | |||
| o To avoid duplicate messages. | o To avoid duplicate messages. | |||
| In LPWAN, since a message can be received by several radio gateway, | In LPWAN, since a message can be received by several radio gateway, | |||
| some LPWAN technologies include a sequence number in L2 to avoid | some LPWAN technologies include a sequence number in L2 to avoid | |||
| duplicate frames. Therefore if the message does not need to be | duplicate frames. Therefore if the message does not need to be | |||
| acknowledged (NON or RST message), the Message ID field can be | acknowledged (NON or RST message), the Message ID field can be | |||
| avoided. | avoided. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| Mid 1 bi ignore not-sent | Mid 8 1 bi ignore not-sent | |||
| The decompressor must generate a value. | The decompressor must generate a value. | |||
| [[Note; check id this field is not used by OSCOAP .]] | [[Note; check id this field is not used by OSCOAP .]] | |||
| To optimize information sent on the LPWAN, shorter values may be used | To optimize information sent on the LPWAN, shorter values may be used | |||
| during the exchange, but Message ID values generated a common CoAP | during the exchange, but Message ID values generated a common CoAP | |||
| implementation will not take into account this limitation. Before | implementation will not take into account this limitation. Before | |||
| the compression, a proxy may be needed to reduce the size. | the compression, a proxy may be needed to reduce the size. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| Mid 1 bi 0x0000 MSB(12) LSB(4) | Mid 8 1 bi 0x0000 MSB(12) LSB(4) [4] | |||
| Otherwise if no compression is possible, the field has to be sent | Otherwise if no compression is possible, the field has to be sent | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| Mid 1 bi ignore value-sent | Mid 8 1 bi ignore value-sent [8] | |||
| 3.6. CoAP Token field | 3.6. CoAP Token field | |||
| This field is bi-directional. | This field is bi-directional. | |||
| Token is used to identify transactions and varies from one | Token is used to identify transactions and varies from one | |||
| transaction to another. Therefore, it is usually necessary to send | transaction to another. Therefore, it is usually necessary to send | |||
| the value of the token field on the LPWAN network. The optimization | the value of the token field on the LPWAN network. The optimization | |||
| will occur by using small values. | will occur by using small values. | |||
| Common CoAP implementations may generate large tokens, even if | Common CoAP implementations may generate large tokens, even if | |||
| shorter tokens could be used regarding the LPWAN characteristics. A | shorter tokens could be used regarding the LPWAN characteristics. A | |||
| proxy may be needed to reduce the size of the token before | proxy may be needed to reduce the size of the token before | |||
| compression. | compression. | |||
| The size of the compress token sent is known by a combination of the | The size of the compress token sent is known by a combination of the | |||
| Token Length field and the rule entry. For instance, with the entry | Token Length field and the rule entry. For instance, with the entry | |||
| below: | below: | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| tkl 1 bi 2 equal not-sent | tkl 4 1 bi 2 equal not-sent | |||
| token 1 bi 0x00 MSB(12) LSB(4) | token 8 1 bi 0x00 MSB(12) LSB(4) [4] | |||
| The uncompressed token is 2 bytes long, but the compressed size will | The uncompressed token is 2 bytes long, but the compressed size will | |||
| be 4 bits. | be 4 bits. | |||
| 4. CoAP options | 4. CoAP options | |||
| 4.1. CoAP option Content-format field. | 4.1. CoAP option Content-format field. | |||
| This field is unidirectional and must not be set to bidirectional in | This field is unidirectional and must not be set to bidirectional in | |||
| a rule entry. It is used only by the server to inform the client | a rule entry. It is used only by the server to inform the client | |||
| about of the payload type and is never found in client requests. | about of the payload type and is never found in client requests. | |||
| If single value is expected by the client, the TV contains that value | If single value is expected by the client, the TV contains that value | |||
| and MO is set to "equal" and the CDF is set to "not-sent". The | and MO is set to "equal" and the CDF is set to "not-sent". The | |||
| examples below describe the rules for an ES acting as a server. | examples below describe the rules for an ES acting as a server. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| content 1 up value equal not-sent | content 16 1 up value equal not-sent | |||
| If several possible value are expected by the client, a matching-list | If several possible value are expected by the client, a matching-list | |||
| can be used. | can be used. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| content 1 up {0:50,1:41} match-mapping mapping-sent | content 16 1 up [50, 41] match-mapping mapping-sent [1] | |||
| Otherwise the value can be sent.The value-sent CDF in the compressor | Otherwise the value can be sent.The value-sent CDF in the compressor | |||
| do not send the option type and the decompressor reconstruct it | do not send the option type and the decompressor reconstruct it | |||
| regarding the position in the rule. | regarding the position in the rule. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| content 1 up ignore value-sent | content 16 1 up ignore value-sent [0-16] | |||
| 4.2. CoAP option Accept field | 4.2. CoAP option Accept field | |||
| This field is unidirectional and must not be set to bidirectional in | This field is unidirectional and must not be set to bidirectional in | |||
| a rule entry. It is used only by the client to inform of the | a rule entry. It is used only by the client to inform of the | |||
| possible payload type and is never found in server response. | possible payload type and is never found in server response. | |||
| The number of accept options is not limited and can vary regarding | The number of accept options is not limited and can vary regarding | |||
| the usage. To be selected a rule must contain the exact number about | the usage. To be selected a rule must contain the exact number about | |||
| accept options with their positions. Since the order in which the | accept options with their positions. Since the order in which the | |||
| Accept value are sent, the position order can be modified. The rule | Accept value are sent, the position order can be modified. The rule | |||
| below | below | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| accept 1 up 41 egal not-sent | accept 16 1 up 41 egal not-sent | |||
| accept 2 up 50 egal not-sent | accept 16 2 up 50 egal not-sent | |||
| will be selected only if two accept options are in the CoAP header if | will be selected only if two accept options are in the CoAP header if | |||
| this order. | this order. | |||
| The rule below: | The rule below: | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| accept 0 up 41 egal not-sent | accept 16 0 up 41 egal not-sent | |||
| accept 0 up 50 egal not-sent | accept 16 0 up 50 egal not-sent | |||
| will accept a-only CoAP messages with 2 accept options, but the order | will accept a-only CoAP messages with 2 accept options, but the order | |||
| will not influence the rule selection. The decompression will | will not influence the rule selection. The decompression will | |||
| reconstruct the header regarding the rule order. | reconstruct the header regarding the rule order. | |||
| Otherwise a matching-list can be applied to the different values, in | Otherwise a matching-list can be applied to the different values, in | |||
| that case the order is important to recover the appropriate value and | that case the order is important to recover the appropriate value and | |||
| the position must be clearly indicate. | the position must be clearly indicate. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| accept 1 up {0:50,1:41} match-mapping mapping-sent | accept 16 1 up [50,41] match-mapping mapping-sent [1] | |||
| accept 2 up {0:50,1:61} match-mapping mapping-sent | accept 16 2 up [50,61] match-mapping mapping-sent [1] | |||
| accept 3 up {0:61,1:71} match-mapping mapping-sent | accept 16 3 up [61,71] match-mapping mapping-sent [1] | |||
| Finally, the option can be explicitly sent. | Finally, the option can be explicitly sent. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| accept 1 up ignore value-sent | accept 1 up ignore value-sent | |||
| 4.3. CoAP option Max-Age field, CoAP option Uri-Host and Uri-Port | 4.3. CoAP option Max-Age field, CoAP option Uri-Host and Uri-Port | |||
| fields | fields | |||
| This field is unidirectional and must not be set to bidirectional in | This field is unidirectional and must not be set to bidirectional in | |||
| a rule entry. It is used only by the server to inform of the caching | a rule entry. It is used only by the server to inform of the caching | |||
| duration and is never found in client requests. | duration and is never found in client requests. | |||
| If the duration is known by both ends, value can be elided on the | If the duration is known by both ends, value can be elided on the | |||
| LPWAN. | LPWAN. | |||
| skipping to change at page 11, line 45 ¶ | skipping to change at page 11, line 45 ¶ | |||
| 5. CoAP option Uri-Path and Uri-Query fields | 5. CoAP option Uri-Path and Uri-Query fields | |||
| This fields are unidirectional and must not be set to bidirectional | This fields are unidirectional and must not be set to bidirectional | |||
| in a rule entry. They are used only by the client to access to a | in a rule entry. They are used only by the client to access to a | |||
| specific resource and are never found in server response. | specific resource and are never found in server response. | |||
| The Matching Operator behavior has not changed, but the value must | The Matching Operator behavior has not changed, but the value must | |||
| take a position value, if the entry is repeated : | take a position value, if the entry is repeated : | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| URI-Path 1 up foo equal not-sent | URI-Path 1 up foo equal not-sent | |||
| URI-Path 2 up bar equal not-sent | URI-Path 2 up bar equal not-sent | |||
| Figure 2: Position entry. | Figure 2: Position entry. | |||
| For instance, the rule Figure 2 matches with /foo/bar, but not /bar/ | For instance, the rule Figure 2 matches with /foo/bar, but not /bar/ | |||
| foo. | foo. | |||
| When the length is not clearly indicated in the rule, the value | When the length is not clearly indicated in the rule, the value | |||
| length must be sent with the field data, which means for CoAP to send | length must be sent with the field data, which means for CoAP to send | |||
| directly the CoAP option with length and value. | directly the CoAP option with length and value. | |||
| For instance for a CoMi path /c/X6?k="eth0" the rule can be set to: | For instance for a CoMi path /c/X6?k="eth0" the rule can be set to: | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| URI-Path 1 up c equal not-sent | URI-Path 1 up c equal not-sent | |||
| URI-Path 2 up ignore value-sent | URI-Path 2 up ignore value-sent | |||
| URI-Query 1 up k= MSB (16) LSB | URI-Query 1 up k= MSB (16) LSB | |||
| Figure 3: CoMi URI compression | Figure 3: CoMi URI compression | |||
| Figure 3 shows the parsing and the compression of the URI. where c is | Figure 3 shows the parsing and the compression of the URI. where c is | |||
| not sent. The second element is sent with the length (i.e. 0x2 X 6) | not sent. The second element is sent with the length (i.e. 0x2 X 6) | |||
| followed by the query option (i.e. 0x05 "eth0"). | followed by the query option (i.e. 0x05 "eth0"). | |||
| A Mapping list can be used to reduce size of variable Paths or | A Mapping list can be used to reduce size of variable Paths or | |||
| Queries. In that case, to optimize the compression, several elements | Queries. In that case, to optimize the compression, several elements | |||
| can be regrouped into a single entry. Numbering of elements do not | can be regrouped into a single entry. Numbering of elements do not | |||
| change, MO comparison is set with the first element of the matching. | change, MO comparison is set with the first element of the matching. | |||
| FID Pos DI TV MO CDF | FID FL FP DI TV MO CDA Sent | |||
| URI-Path 1 up {0:"/c/c", equal not-sent | URI-Path 1 up {0:"/c/c", equal not-sent | |||
| 1:"/c/d" | 1:"/c/d" | |||
| URI-Path 3 up ignore value-sent | URI-Path 3 up ignore value-sent | |||
| URI-Query 1 up k= MSB (16) LSB | URI-Query 1 up k= MSB (16) LSB | |||
| Figure 4: complex path example | Figure 4: complex path example | |||
| For instance, the following Path /foo/bar/variable/stable can leads | For instance, the following Path /foo/bar/variable/stable can leads | |||
| to the rule defined Figure 4. | to the rule defined Figure 4. | |||
| 5.1. CoAP option Proxy-URI and Proxy-Scheme fields | 5.1. CoAP option Proxy-URI and Proxy-Scheme fields | |||
| These fields are unidirectional and must not be set to bidirectional | These fields are unidirectional and must not be set to bidirectional | |||
| in a rule entry. They are used only by the client to access to a | in a rule entry. They are used only by the client to access to a | |||
| skipping to change at page 14, line 12 ¶ | skipping to change at page 14, line 12 ¶ | |||
| 7. Protocol analysis | 7. Protocol analysis | |||
| 8. Examples of CoAP header compression | 8. Examples of CoAP header compression | |||
| 8.1. Mandatory header with CON message | 8.1. Mandatory header with CON message | |||
| In this first scenario, the LPWAN compressor receives from outside | In this first scenario, the LPWAN compressor receives from outside | |||
| client a POST message, which is immediately acknowledged by the | client a POST message, which is immediately acknowledged by the | |||
| Thing. For this simple scenario, the rules are described Figure 5. | Thing. For this simple scenario, the rules are described Figure 5. | |||
| rule id 1 | Rule ID 1 | |||
| +-------------+------+---------+-------------+-----+----------------+ | +-------------+--+--+--+------+---------+-------------++------------+ | |||
| | Field |TV |MO |CDF |dir | Sent | | | Field |FL|FP|DI|Target| Match | CDA || Sent | | |||
| +=============+======+=========+=============+=====+================+ | | | | | |Value | Opera. | || [bits] | | |||
| |CoAP version | 01 |equal |not-sent |bi | | | +-------------+--+--+--+------+---------+-------------++------------+ | |||
| |CoAP Type | |ignore |value-sent |bi |TT | | |CoAP version | | |bi| 01 |equal |not-sent || | | |||
| |CoAP TKL | 0 |equal |not-sent |bi | | | |CoAP version | | |bi| 01 |equal |not-sent || | | |||
| |CoAP Code | ML1 |match-map|matching-sent|bi | CC CCC | | |CoAP Type | | |bi| |ignore |value-sent ||TT | | |||
| |CoAP MID | 0000 |MSB(7 ) |LSB(9) |bi | M-ID | | |CoAP TKL | | |bi| 0 |equal |not-sent || | | |||
| |CoAP Uri-Path| path |equal 1 |not-sent |down | | | |CoAP Code | | |bi| ML1 |match-map|matching-sent|| CC CCC | | |||
| +-------------+------+---------+-------------+-----+----------------+ | |CoAP MID | | |bi| 0000 |MSB(7 ) |LSB(9) || M-ID| | |||
| |CoAP Uri-Path| | |dw| path |equal 1 |not-sent || | | ||||
| +-------------+--+--+--+------+---------+-------------++------------+ | ||||
| Figure 5: CoAP Context to compress header without token | Figure 5: CoAP Context to compress header without token | |||
| The version and Token Length fields are elided. Code has shrunk to 5 | The version and Token Length fields are elided. Code has shrunk to 5 | |||
| bits using the matching list (as the one given Figure 1: 0.01 is | bits using the matching list (as the one given Figure 1: 0.01 is | |||
| value 0x01 and 2.05 is value 0x0c) Message-ID has shrunk to 9 bits to | value 0x01 and 2.05 is value 0x0c) Message-ID has shrunk to 9 bits to | |||
| preserve alignment on byte boundary. The most significant bit must | preserve alignment on byte boundary. The most significant bit must | |||
| be set to 0 through a CoAP proxy. Uri-Path contains a single element | be set to 0 through a CoAP proxy. Uri-Path contains a single element | |||
| indicated in the matching operator. | indicated in the matching operator. | |||
| skipping to change at page 15, line 5 ¶ | skipping to change at page 15, line 5 ¶ | |||
| only the Type, a mapped code and the least 9 significant bits of | only the Type, a mapped code and the least 9 significant bits of | |||
| Message ID. The receiver decompresses the header. . | Message ID. The receiver decompresses the header. . | |||
| The CON message is a request, therefore the LC process to a dynamic | The CON message is a request, therefore the LC process to a dynamic | |||
| mapping. When the ES receives the ACK message, this will not | mapping. When the ES receives the ACK message, this will not | |||
| initiate locally a message ID mapping since it is a response. The LC | initiate locally a message ID mapping since it is a response. The LC | |||
| receives the ACK and uncompressed it to restore the original value. | receives the ACK and uncompressed it to restore the original value. | |||
| Dynamic Mapping context lifetime follows the same rules as message ID | Dynamic Mapping context lifetime follows the same rules as message ID | |||
| duration. | duration. | |||
| End System LPWA LC | End System LPWA LC | |||
| | | | | | | |||
| | rule id=1 |<---------------------- | | rule id=1 |<-------------------- | |||
| |<--------------------| +-+-+--+----+--------+ | |<-------------------| +-+-+--+----+------+ | |||
| <-------------------- | TTCC CCCM MMMM MMMM| |1|0| 4|0.01| 0x0034 | | <------------------- | TTCC CCCM MMMM MMMM| |1|0| 4|0.01|0x0034| | |||
| +-+-+--+----+--------+ | 0000 0010 0011 0100| | 0xb4 p a t | | +-+-+--+----+-------+ | 0000 0010 0011 0100| | 0xb4 p a t| | |||
| |1|0| 1|0.01| 0x0034 | | | | h | | |1|0| 1|0.01|0x0034 | | | | h | | |||
| | 0xb4 p a t | | | +------+ | | 0xb4 p a t | | | +------+ | |||
| | h | | | | | h | | | | |||
| +------+ | | | +------+ | | | |||
| | | | | | | |||
| | | | | | | |||
| +-+-+--+----+--------+ |-------------------->| | ---------------------->| rule id=1 | | |||
| |1|2| 0|2.05| 0x0034 | | TTCC CCCM MMMM MMMM|------------------------> | +-+-+--+----+--------+ |------------------->| | |||
| +-+-+--+----+--------+ | 1001 1000 0011 0100| +-+-+--+----+--------+ | |1|2| 0|2.05| 0x0034 | | TTCC CCCM MMMM MMMM|---------------------> | |||
| | | |1|2| 0|2.05| 0x0034 | | +-+-+--+----+--------+ | 1001 1000 0011 0100| +-+-+--+----+------+ | |||
| v v +-+-+--+----+--------+ | | | |1|2| 0|2.05|0x0034| | |||
| v v +-+-+--+----+------+ | ||||
| Figure 6: Compression with global addresses | Figure 6: Compression with global addresses | |||
| The message can be further optimized by setting some fields | The message can be further optimized by setting some fields | |||
| unidirectional, as described in Figure 7. Note that Type is no more | unidirectional, as described in Figure 7. Note that Type is no more | |||
| sent in the compressed format, Compressed Code size in not changed in | sent in the compressed format, Compressed Code size in not changed in | |||
| that example (8 values are needed to code all the requests and 21 to | that example (8 values are needed to code all the requests and 21 to | |||
| code all the responses in the matching list Figure 1) | code all the responses in the matching list Figure 1) | |||
| rule id 1 | Rule ID 2 | |||
| +-------------+------+---------+-------------+---+----------------+ | +-------------+--+--+--+------+---------+------------++------------+ | |||
| | Field |TV |MO |CDF |dir| Sent | | | Field |FL|FP|DI|Target| MO | CDA || Sent | | |||
| +=============+======+=========+=============+===+================+ | | | | | |Value | | || [bits] | | |||
| |CoAP version | 01 |equal |not-sent |bi | | | +-------------+--+--+--+------+---------+------------++------------+ | |||
| |CoAP Type | CON |equal |not-sent |dw | | | |CoAP version | | |bi|01 |equal |not-sent || | | |||
| |CoAP Type | ACK |equal |not-sent |up | | | |CoAP Type | | |dw|CON |equal |not-sent || | | |||
| |CoAP TKL | 0 |equal |not-sent |bi | | | |CoAP Type | | |up| ACK |equal |not-sent || | | |||
| |CoAP Code | ML2 |match-map|mapping-sent |dw |CCCC C | | |CoAP TKL | | |bi|0 |equal |not-sent || | | |||
| |CoAP Code | ML3 |match-map|mapping-sent |up |CCCC C | | |CoAP Code | | |dw|ML2 |match-map|mapping-sent||CCCC C | | |||
| |CoAP MID | 0000 |MSB(5) |LSB(11) |bi | M-ID | | |CoAP Code | | |up|ML3 |match-map|mapping-sent||CCCC C | | |||
| |CoAP Uri-Path| path |equal 1 |not-sent |dw | | | |CoAP MID | | |bi|0000 |MSB(5) |LSB(11) || M-ID | | |||
| +-------------+------+---------+-------------+---+----------------+ | |CoAP Uri-Path| | |dw|path |equal 1 |not-sent || | | |||
| +-------------+--+--+--+------+---------+------------++------------+ | ||||
| ML1 = {CON : 0, ACK:1} ML2 = {POST:0, 2.04:1, 0.00:3} | ML1 = {CON : 0, ACK:1} ML2 = {POST:0, 2.04:1, 0.00:3} | |||
| Figure 7: CoAP Context to compress header without token | Figure 7: CoAP Context to compress header without token | |||
| 8.2. Complete exchange | 8.2. Complete exchange | |||
| In that example, the Thing is using CoMi and sends queries for 2 SID. | In that example, the Thing is using CoMi and sends queries for 2 SID. | |||
| CON | CON | |||
| skipping to change at page 16, line 26 ¶ | skipping to change at page 16, line 26 ¶ | |||
| |<------------------------| ACK MID=0x0012 | |<------------------------| ACK MID=0x0012 | |||
| | | 0.00 | | | 0.00 | |||
| | | | | | | |||
| | | | | | | |||
| |<------------------------| CON | |<------------------------| CON | |||
| | | MID=0X0034 | | | MID=0X0034 | |||
| | | Content-Format X | | | Content-Format X | |||
| ACK MID=0x0034 |------------------------>| | ACK MID=0x0034 |------------------------>| | |||
| 0.00 | 0.00 | |||
| rule id 3 | Rule ID 3 | |||
| +-------------+------+---------+-------------+---+----------------+ | +--------------+--+--+--+------+--------+-----------++------------+ | |||
| | Field |TV |MO |CDF |dir| Sent | | | Field |FL|FP|DI|Target| MO | CDA || Sent | | |||
| +=============+======+=========+=============+===+================+ | | | | | |Value | | || [bits] | | |||
| |CoAP version | 01 |equal |not-sent |bi | | | +--------------+--+--+--+------+--------+-----------++------------+ | |||
| |CoAP Type | CON |equal |not-sent |up | | | |CoAP version | | |bi| 01 |equal |not-sent || | | |||
| |CoAP Type | ACK |equal |not-sent |dw | | | |CoAP Type | | |up| CON |equal |not-sent || | | |||
| |CoAP TKL | 1 |equal |not-sent |bi | | | |CoAP Type | | |dw| ACK |equal |not-sent || | | |||
| |CoAP Code | POST |equal |not-sent |up | | | |CoAP TKL | | |bi| 1 |equal |not-sent || | | |||
| |CoAP Code | 0.00 |equal |not-sent |dw | | | |CoAP Code | | |up| POST |equal |not-sent || | | |||
| |CoAP MID | 0000 |MSB(8) |LSB |bi |MMMMMMMM | | |CoAP Code | | |dw| 0.00 |equal |not-sent || | | |||
| |CoAP Token | |ignore |send-value |up |TTTTTTTT | | |CoAP MID | | |bi| 0000 |MSB(8) |LSB ||MMMMMMMM | | |||
| |CoAP Uri-Path| /c |equal 1 |not-sent |dw | | | |CoAP Token | | |up| |ignore |send-value ||TTTTTTTT | | |||
| |CoAP Uri-query ML4 |equal 1 |not-sent |dw |P | | |CoAP Uri-Path | | |dw| /c |equal 1 |not-sent || | | |||
| |CoAP Content | X |equal |not-sent |up | | | |CoAP Uri-query| | |dw| ML4 |equal 1 |not-sent ||P | | |||
| +-------------+------+---------+-------------+---+----------------+ | |CoAP Content | | |up| X |equal |not-sent || | | |||
| +--------------+--+--+--+------+--------+-----------++------------+ | ||||
| rule id 4 | Rule ID 4 | |||
| +-------------+------+---------+-------------+---+----------------+ | +--------------+--+--+--+------+--------+-----------++------------+ | |||
| | Field |TV |MO |CDF |dir| Sent | | | Field |FL|FP|DI|Target| MO | CDA || Sent | | |||
| +=============+======+=========+=============+===+================+ | | | | | |Value | | || [bits] | | |||
| |CoAP version | 01 |equal |not-sent |bi | | | +--------------+--+--+--+------+--------+-----------++------------+ | |||
| |CoAP Type | CON |equal |not-sent |dw | | | |CoAP version | | |bi| 01 |equal |not-sent || | | |||
| |CoAP Type | ACK |equal |not-sent |up | | | |CoAP Type | | |dw| CON |equal |not-sent || | | |||
| |CoAP TKL | 1 |equal |not-sent |bi | | | |CoAP Type | | |up| ACK |equal |not-sent || | | |||
| |CoAP Code | 2.05 |equal |not-sent |dw | | | |CoAP TKL | | |bi| 1 |equal |not-sent || | | |||
| |CoAP Code | 0.00 |equal |not-sent |up | | | |CoAP Code | | |dw| 2.05 |equal |not-sent || | | |||
| |CoAP MID | 0000 |MSB(8) |LSB |bi |MMMMMMMM | | |CoAP Code | | |up| 0.00 |equal |not-sent || | | |||
| |CoAP Token | |ignore |send-value |dw |TTTTTTTT | | |CoAP MID | | |bi| 0000 |MSB(8) |LSB ||MMMMMMMM | | |||
| |COAP Accept | X |equal |not-sent |dw | | | |CoAP Token | | |dw| |ignore |send-value||TTTTTTTT | | |||
| +-------------+------+---------+-------------+---+----------------+ | |COAP Accept | | |dw| X |equal |not-sent || | | |||
| +--------------+--+--+--+------+---------+----------++------------+ | ||||
| alternative rule: | alternative rule: | |||
| rule id 4 | Rule ID 4 | |||
| +-------------+------+---------+-------------+---+----------------+ | +--------------+--+--+--+------+---------+-----------++------------+ | |||
| | Field |TV |MO |CDF |dir| Sent | | | Field |FL|FP|DI|Target| MO | CDA || Sent | | |||
| +=============+======+=========+=============+===+================+ | | | | | |Value | | || [bits] | | |||
| |CoAP version | 01 |equal |not-sent |bi | | | +--------------+--+--+--+------+---------+-----------++------------+ | |||
| |CoAP Type | ML1 |match-map|match-sent |bi |t | | |CoAP version | | |bi| 01 |equal |not-sent || | | |||
| |CoAP TKL | 1 |equal |not-sent |bi | | | |CoAP Type | | |bi| ML1 |match-map|match-sent ||t | | |||
| |CoAP Code | ML2 |match-map|match-sent |up | cc | | |CoAP TKL | | |bi| 1 |equal |not-sent || | | |||
| |CoAP Code | ML3 |match-map|match-sent |dw | cc | | |CoAP Code | | |up| ML2 |match-map|match-sent || cc | | |||
| |CoAP MID | 0000 |MSB(8) |LSB |bi |MMMMMMMM | | |CoAP Code | | |dw| ML3 |match-map|match-sent || cc | | |||
| |CoAP Token | |ignore |send-value |dw |TTTTTTTT | | |CoAP MID | | |bi| 0000 |MSB(8) |LSB ||MMMMMMMM | | |||
| |CoAP Uri-Path| /c |equal 1 |not-sent |dw | | | |CoAP Token | | |dw| |ignore |send-value ||TTTTTTTT | | |||
| |CoAP Uri-query ML4 |equal 1 |not-sent |dw |P | | |CoAP Uri-Path | | |dw| /c |equal 1 |not-sent || | | |||
| |CoAP Content | X |equal |not-sent |up | | | |CoAP Uri-query| | |dw| ML4 |equal 1 |not-sent ||P | | |||
| |COAP Accept | x |equal |not-sent |dw | | | |CoAP Content | | |up| X |equal |not-sent || | | |||
| +-------------+------+---------+-------------+---+----------------+ | |COAP Accept | | |dw| x |equal |not-sent || | | |||
| +--------------+--+--+--+------+---------+-----------++------------+ | ||||
| ML1 {CON:0, ACK:1} ML2 {POST:0, 0.00: 1} ML3 {2.05:0, 0.00:1} | ML1 {CON:0, ACK:1} ML2 {POST:0, 0.00: 1} ML3 {2.05:0, 0.00:1} | |||
| ML4 {NULL:0, k=AS:1, K=AZE:2} | ML4 {NULL:0, k=AS:1, K=AZE:2} | |||
| 9. Normative References | 9. Normative References | |||
| [I-D.toutain-lpwan-ipv6-static-context-hc] | [I-D.toutain-lpwan-ipv6-static-context-hc] | |||
| Minaburo, A. and L. Toutain, "LPWAN Static Context Header | Minaburo, A. and L. Toutain, "LPWAN Static Context Header | |||
| Compression (SCHC) for IPv6 and UDP", draft-toutain-lpwan- | Compression (SCHC) for IPv6 and UDP", draft-toutain-lpwan- | |||
| ipv6-static-context-hc-00 (work in progress), September | ipv6-static-context-hc-00 (work in progress), September | |||
| skipping to change at page 18, line 21 ¶ | skipping to change at page 18, line 26 ¶ | |||
| Ana Minaburo | Ana Minaburo | |||
| Acklio | Acklio | |||
| 2bis rue de la Chataigneraie | 2bis rue de la Chataigneraie | |||
| 35510 Cesson-Sevigne Cedex | 35510 Cesson-Sevigne Cedex | |||
| France | France | |||
| Email: ana@ackl.io | Email: ana@ackl.io | |||
| Laurent Toutain | Laurent Toutain | |||
| Institut MINES TELECOM ; IMT Atlantique | Institut MINES TELECOM; IMT Atlantique | |||
| 2 rue de la Chataigneraie | 2 rue de la Chataigneraie | |||
| CS 17607 | CS 17607 | |||
| 35576 Cesson-Sevigne Cedex | 35576 Cesson-Sevigne Cedex | |||
| France | France | |||
| Email: Laurent.Toutain@imt-atlantique.fr | Email: Laurent.Toutain@imt-atlantique.fr | |||
| End of changes. 45 change blocks. | ||||
| 216 lines changed or deleted | 222 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||