-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarification on Less Than and Greater Than attributes #191
Comments
Hello, many thanks for your deep analysis.
So according to your analysis and thanks for this, it seems current implementations you mentionned are not in line with the (2015/2016) spec. |
Hi, and thanks for your response.
So what is the expected behaviour? Should it be as described in draft-ietf-core-dynlink-01? |
DM WG to review this Issue based on Pittsburgh feedback. |
Feedback provided by DM Working Group. For gt "Notes : This "Greater Than" Attribute defines a threshold high value. When this Attributes is present, the LwM2M client MUST notify the server each time the Observed Resource value crosses the "Greater Than" Attribute value with respect to pmin parameter" NOTE THE WORD EACH TIME |
Please excuse me, but this does not seem to resolve anything for me. "Each time" was never a problem, the word "crosses" was. Specifically, whether there is some directionality to it. Please explicitly clarify the following - should a notification be sent for each of the following cases?
If the answer is "all of them (1, 2, 3, 4)", then what's the point of calling the attributes "less than" and "greater than" as there is essentially no semantic difference between the two? The other plausible answer is "2 and 3", which would be consistent with the current drafts of draft-ietf-core-dynlink. Which answer is right in the end? |
I think it would be beneficial to add examples for better clarity. My answer would be 2 and 3 based on my understanding of the 5.1.2 statement above. What is not very clear to me is if LWM2M "gt" is actaully aligned with "gth" in draft-ietf-core-dynlink. |
The common definition of the word "crosses" is "To go from one side of (something) to the other" (via Wiktionary), which strongly suggests behaviour as described for "gth" in draft-ietf-core-dynlink. But to be honest, I'm still not sure what is the official understanding of the DM WG even though this ticket is closed. |
DM has provided the following comment after the need for further clarification after closing the issue. lt and gt must be considered as thresholds. If the value goes from one side to the other side of gt or lt, a notification should be sent. ex 1 ex 2 The Note just above table 4 title is only applicable when both lt & gt are defined We agree the names are confusing. Note that draft-ietf-core-dynlink should not be considered: it is not a reference document for LwM2M TS. Moreover, this is still a draft and was started long after LwM2M TS. |
So, to sum things up:
Is the above correct? |
Also, this example of yours:
seems to be in direct contradiction to what is explicitly stated in the specification. To quote Table 4:
so it seems obvious that the difference of 2 when the Step attribute is set to 2 shall trigger notification. |
Based on the above reply, DM indicates:
|
OK, thank you very much for your clarification. Now everything is clear to me. |
Features: - Implemented anjay_download() API for asynchronous CoAP(S) downloads - Added anjay_download example code - Added support for CoAP firmware download in demo application Bugfixes: - Fixed Register/Update transport when changing Binding - Fixed lt/gt/st semantics according to OpenMobileAlliance/OMA_LwM2M_for_Developers#191 - Fixed handling of unrelated BLOCK2 requests during a block-wise Read - Disallowed Write-Attributes requests if the server does not have Read access rights - Fixed build instructions for OS X in README Improvements: - Added packet capture in Python tests - Added compilation instructions for Android - Made missing scan-build a fatal error if static analysis was enabled with a CMake flag - Integrated Coverity scan with Travis build - Allowed configuration of CoAP transmission parameters in anjay_new()
Features: - Implemented anjay_download() API for asynchronous CoAP(S) downloads - Added anjay_download example code - Added support for CoAP firmware download in demo application Bugfixes: - Fixed Register/Update transport when changing Binding - Fixed lt/gt/st semantics according to OpenMobileAlliance/OMA_LwM2M_for_Developers#191 - Fixed handling of unrelated BLOCK2 requests during a block-wise Read - Disallowed Write-Attributes requests if the server does not have Read access rights - Fixed build instructions for OS X in README Improvements: - Added packet capture in Python tests - Added compilation instructions for Android - Made missing scan-build a fatal error if static analysis was enabled with a CMake flag - Integrated Coverity scan with Travis build - Allowed configuration of CoAP transmission parameters in anjay_new()
Features: - Implemented anjay_download() API for asynchronous CoAP(S) downloads - Added anjay_download example code - Added support for CoAP firmware download in demo application Bugfixes: - Fixed Register/Update transport when changing Binding - Fixed lt/gt/st semantics according to OpenMobileAlliance/OMA_LwM2M_for_Developers#191 - Fixed handling of unrelated BLOCK2 requests during a block-wise Read - Disallowed Write-Attributes requests if the server does not have Read access rights - Fixed build instructions for OS X in README Improvements: - Added packet capture in Python tests - Added compilation instructions for Android - Made missing scan-build a fatal error if static analysis was enabled with a CMake flag - Integrated Coverity scan with Travis build - Allowed configuration of CoAP transmission parameters in anjay_new()
Features: - Implemented anjay_download() API for asynchronous CoAP(S) downloads - Added anjay_download example code - Added support for CoAP firmware download in demo application Bugfixes: - Fixed Register/Update transport when changing Binding - Fixed lt/gt/st semantics according to OpenMobileAlliance/OMA_LwM2M_for_Developers#191 - Fixed handling of unrelated BLOCK2 requests during a block-wise Read - Disallowed Write-Attributes requests if the server does not have Read access rights - Fixed build instructions for OS X in README Improvements: - Added packet capture in Python tests - Added compilation instructions for Android - Made missing scan-build a fatal error if static analysis was enabled with a CMake flag - Integrated Coverity scan with Travis build - Allowed configuration of CoAP transmission parameters in anjay_new()
In the current (OMA-TS-LightweightM2M-V1_0-20170126-D) revision of the 1.0 TS, the "Greater Than" attribute is defined (in section 1.2, Table 4) as follows:
The use of the word "crosses" is somewhat ambiguous and hard to understand. Different existing implementations implement semantics of this Attribute in different ways:
gt
or less thanlt
.mbed Client's behaviour is consistent with wording used in very old revisions of the spec, such as OMA-TS-LightweightM2M-V1_0-20141126-C ("When present, the LWM2M Client SHOULD notify its value when the value is above the value specified in parameter").
The Attributes in LwM2M seem to be related to the mechanism introduced in draft-ietf-core-interfaces and currently maintained in draft-ietf-core-dynlink. Both of these documents are referenced in the LwM2M 1.0 TS draft.
draft-ietf-core-interfaces-01, an old revision back from 2013, defines the
gt
andlt
attributes in a way consistent with the wording used in he aforementioned 20141126-C revision and with the behaviour of mbed Client. It is listed as a normative reference [CoRE_Interface] and briefly mentioned in section 4.4 (Write Attributes):draft-ietf-core-dynlink-01, the current draft revision, is listed as an informative reference [DYNAMIC LINK], but never otherwise mentioned in the TS. It describes the
gt
andlt
attributes in a way mostly consistent with Wakaama's interpretation, but seems to suggest that a notification will only be sent when the value changes from something belowgt
to something abovegt
, not the other way round.I focused on the
gt
Attribute, because its symmetry withlt
is well understood.Which of these interpretations is correct for LwM2M? I believe it should be described in a more detailed and unambiguous way in the TS.
Here I am leaving some of my thoughts about each of the interpretations for consideration:
lt
andgt
are set seems consistent with draft-ietf-core-dynlink-01.lt
andgt
not only symmetrical, but essentially identical - there is no practical difference between settinglt
ONLY orgt
ONLY, they both have exactly the same semantics in such case. Thus, it doesn't intuitively seem correct.Also, this requirement mentioned just under Table 4 in section 1.2:
does not seem to make much sense for some of the interpretations.
The text was updated successfully, but these errors were encountered: