Hello! Ondrej Tomcik :: KISTLER :: measure, analyze, inovate
From: 최우제 (Uze Choi) <uzc...@samsung.com> Sent: Donnerstag, 1. November 2018 09:50 To: 'John Zhang' <zha...@oppo.com>; Tomcik Ondrej <ondrej.tom...@kistler.com>; yitzc...@coapp.co.il; 'IoTivity Developer List' <iotivity-dev@lists.iotivity.org> Subject: RE: [dev] Maintaining a connection from Coap devices to the iotivity cloud Hi All, Regarding Ping-pong I have a little bit different use case. Connection can be monitored by API which Ondrej showed in the previous mail. With this device can reconnect into cloud again. Cloud can set the policy that device should regularly send the ping message (regardless of CoAP over TCP signaling or resource request) to make sure the device is healthy. Set the policy in the current implementation means – resource /oic/ping hosted by cloud itself (what is wrong because as written in the specification, OCF Cloud acts as the simple proxy, hosting resource directory. It’s not the server which should host its own resources) provides ping configuration, which devices reads right after connecting to the OCF Cloud. This mechanism shouldn’t be used at all. Cloud send the ping message,.. This is very strange… considering Cloud connection. Can you explain more why it is strange? Regarding RFC 8323 -> Upon receipt of a Ping message, the receiver MUST return a Pong message with an identical Token in response. There isn’t specified who is responsible to do send the ping. Whoever can send the ping, but recipient should response as soon as practical. Both parties can send ping in parallel and expect the result. In my opinion, the one who is interested if the device is there should send the ping and expect the pong. If the device will send the ping and backend won’t reply, what this information will be used for? Take it from cloud side, device is there when it responds with reasonable time for ping. If not, device is marked as offline and user of the system is informed that device is not available. However, there is no such a rule in OCF unfortunately. Not sure if something like this has to be in the OCF specification. If we would go with custom mechanism - protocol independent healtcheck, yes it has to be there. But I would start simply. The other point for OCF TCP spec I’d like to say. CSM signaling, (CSM is the spec on the coap over tcp to handshake the capability of max send size and BTW.) From the spec, 7.01 | CSM | RFC 8323<https://tools.ietf.org/html/rfc8323> “One CSM MUST be sent by each endpoint at the start of the Transport Connection.” from the spec. When the device connect to the Cloud, it will start the make the session and setup the tls, then device should send the CSM message and Cloud should send back the CMS message as handshake as far as CoAP over TCP spec. intends. But there is no clear comment how to use it CoAP over TCP spec. Furthermore, I cannot make sure whether cloud also should send the CMS message. It is mentioned, in the sentence you sent. There is no rule for this in detail in OCF as of now. One CSM MUST be sent by each endpoint at the start of the Transport Connection. For me this means that both parties have to send CSM at the start of the Transport Connection. But this is CoAP topic, not OCF. I believe for the feasible interoperability, these also need to be clearly defined in OCF domain at least. BR, Uze Choi From: iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> [mailto:iotivity-dev@lists.iotivity.org] On Behalf Of John Zhang Sent: Thursday, November 01, 2018 12:11 PM To: Ondrej Tomcik; yitzc...@coapp.co.il<mailto:yitzc...@coapp.co.il>; IoTivity Developer List Subject: Re: [dev] Maintaining a connection from Coap devices to the iotivity cloud Hi Ondrej, I have a quick question below. BR, John ________________________________ zha...@oppo.com<mailto:zha...@oppo.com> From: Ondrej Tomcik<mailto:ondrej.tom...@kistler.com> Date: 2018-11-01 03:52 To: yitzc...@coapp.co.il<mailto:yitzc...@coapp.co.il>; iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> Subject: Re: [dev] Maintaining a connection from Coap devices to the iotivity cloud ________________________________________ From: iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> [iotivity-dev@lists.iotivity.org] on behalf of yitzc...@coapp.co.il<mailto:yitzc...@coapp.co.il> [yitzc...@coapp.co.il] Sent: 31 October 2018 19:16 To: iotivity-dev@lists.iotivity.org<mailto:iotivity-dev@lists.iotivity.org> Subject: Re: [dev] Maintaining a connection from Coap devices to the iotivity cloud On Wed, Oct 31, 2018 at 03:26 AM, Ondrej Tomcik wrote: What do you need such an often keep alive exchange for? If a connection breaks, the Coap device will no longer receive requests. Therefore I need it to try to reconnect as soon as this happens. The only existing mechanism I am aware of telling if the connection is broken is via the PING/PONG mechanism. -> yes, thats what ping pong is for. In case the connection was not closed gracefuly, you are waiting for a tcp timeout. If you want to know if the device is online, thats the only way. But you have to consider your requirements, how accurate information about the device status has to be? Additionaly, you should introduce timeouts for your requests. So not only ping the device every 5 seconds, what is actually a bad idea, but handle also request timeouts and flag the device as not reachable for example. Its your business logic, based on your requirements and SLAs. What kind of load? Not necessarily a specific load, but assuming an IOT cloud with thousands or more devices, I will expect the devices themselves to initiate the ping instead of the gateway, in order to take of some load from the gateway, but I guess this point is not clearcut. What is the purpose of the ping pong? To provide an accurate information if the device is there ( and delay statistics for example, ... ). Who is interested if the device is there? Cloud user. Who owns information if the device is online? Cloud. Cloud is the one who owns and maintains this information. Cloud should be responsible to ping the device to check if it is online. Device is not interested if cloud is there. You may have ping configuration per device, for some specific SLA use cases, but its cloud who has to accurately provide this information. [John] To keep the connection, do you mean the cloud should Ping the device rather than the other way around? Or either peer can send Ping message? [cid:image001.gif@01D471CD.079FE220] [http://ext.samsung.net/mail/ext/v1/external/status/update?userid=uzchoi&do=bWFpbElEPTIwMTgxMTAxMDg0OTE5ZXBjYXMxcDMzODA2NmQzOWE2NWJiMzlkNjFkMGQ4OGE2OTViNTJmMyZyZWNpcGllbnRBZGRyZXNzPW9uZHJlai50b21jaWtAa2lzdGxlci5jb20_] -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9986): https://lists.iotivity.org/g/iotivity-dev/message/9986 Mute This Topic: https://lists.iotivity.org/mt/27796570/21656 Group Owner: iotivity-dev+ow...@lists.iotivity.org Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-