You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<pid="section-5.1.2-2">Furthermore, the client especially follows what is specified in <span><ahref="https://rfc-editor.org/rfc/rfc7641#section-5" class="relref">Section 5</a> of [<ahref="#RFC7641" class="cite xref">RFC7641</a>]</span>, i.e., it registers its interest to be an observer with the proxy, as if it was communicating with the servers.<ahref="#section-5.1.2-2" class="pilcrow">¶</a></p>
1690
1699
</section>
1691
1700
</div>
1701
+
<divid="ssec-cancel-forwarding">
1702
+
<sectionid="section-5.1.3">
1703
+
<h4id="name-cancellation-of-ongoing-res">
1704
+
<ahref="#section-5.1.3" class="section-number selfRef">5.1.3. </a><ahref="#name-cancellation-of-ongoing-res" class="section-name selfRef">Cancellation of Ongoing Response Forwarding</a>
1705
+
</h4>
1706
+
<pid="section-5.1.3-1">After having sent the unicast request to the proxy but before timeout expiration, the client might become not interested in receiving further corresponding responses, i.e., from that point in time until T seconds have elapsed since the request was sent to the proxy.<ahref="#section-5.1.3-1" class="pilcrow">¶</a></p>
1707
+
<pid="section-5.1.3-2">In such a case the client <spanclass="bcp14">MAY</span> ask the proxy for an early stop of the ongoing response forwarding, i.e., to not forward to the client any further response received to the forwarded group request from the servers.<ahref="#section-5.1.3-2" class="pilcrow">¶</a></p>
1708
+
<pid="section-5.1.3-3">To this end, the client can rely on one of the following two approaches.<ahref="#section-5.1.3-3" class="pilcrow">¶</a></p>
1709
+
<ulclass="normal">
1710
+
<liclass="normal" id="section-5.1.3-4.1">
1711
+
<pid="section-5.1.3-4.1.1">The client acts like it would at timeout expiration (see <ahref="#ssec-resp-proc-client-steps" class="auto internal xref">Section 5.5.1</a>), i.e., it simply frees up its local Token value associated with the original unicast request sent to the proxy.<ahref="#section-5.1.3-4.1.1" class="pilcrow">¶</a></p>
1712
+
<pid="section-5.1.3-4.1.2">
1713
+
Consequently, further responses forwarded by the proxy would result in the client sending a CoAP Reset message (RST), which the proxy would interpret as a loss of interest from the client.<ahref="#section-5.1.3-4.1.2" class="pilcrow">¶</a></p>
1714
+
<pid="section-5.1.3-4.1.3">
1715
+
While this approach would work when using CoAP over UDP between the client and the proxy, it might not be suitable in case a different transport is used instead.<ahref="#section-5.1.3-4.1.3" class="pilcrow">¶</a></p>
1716
+
</li>
1717
+
<liclass="normal" id="section-5.1.3-4.2">
1718
+
<pid="section-5.1.3-4.2.1">The client sends to the proxy a new CoAP unicast request, namely Early Stop Request, such that:<ahref="#section-5.1.3-4.2.1" class="pilcrow">¶</a></p>
1719
+
<ulclass="normal">
1720
+
<liclass="normal" id="section-5.1.3-4.2.2.1">
1721
+
<pid="section-5.1.3-4.2.2.1.1">It <spanclass="bcp14">MUST</span> use the method GET.<ahref="#section-5.1.3-4.2.2.1.1" class="pilcrow">¶</a></p>
1722
+
</li>
1723
+
<liclass="normal" id="section-5.1.3-4.2.2.2">
1724
+
<pid="section-5.1.3-4.2.2.2.1">It <spanclass="bcp14">MUST</span> use the same Token value of the original unicast request sent to the proxy. This explicitly relates the present Early Stop Request to the original unicast request.<ahref="#section-5.1.3-4.2.2.2.1" class="pilcrow">¶</a></p>
1725
+
</li>
1726
+
<liclass="normal" id="section-5.1.3-4.2.2.3">
1727
+
<pid="section-5.1.3-4.2.2.3.1">It <spanclass="bcp14">MUST</span> include the Multicast-Timeout Option, specifying 0 as option value. This explicitly indicates the client's wish to stop receiving further responses to the original unicast request.<ahref="#section-5.1.3-4.2.2.3.1" class="pilcrow">¶</a></p>
1728
+
</li>
1729
+
<liclass="normal" id="section-5.1.3-4.2.2.4">
1730
+
<pid="section-5.1.3-4.2.2.4.1">It <spanclass="bcp14">MUST NOT</span> include any of the following: the Proxy-Uri Option or the Proxy-Cri Option; the Proxy-Scheme Option or the Proxy-Scheme-Number Option, together with the Uri-* options. This explicitly indicates the proxy to not forward the Early Stop Request.<ahref="#section-5.1.3-4.2.2.4.1" class="pilcrow">¶</a></p>
1731
+
</li>
1732
+
</ul>
1733
+
<pid="section-5.1.3-4.2.3">
1734
+
After sending the Early Stop Request, the client frees up its local Token value associated with the original unicast request sent to the proxy.<ahref="#section-5.1.3-4.2.3" class="pilcrow">¶</a></p>
1735
+
</li>
1736
+
</ul>
1737
+
<pid="section-5.1.3-5">Note that, irrespective of the approach used by the client, freeing up the Token value does not make it eligible for possible reuse yet (see <ahref="#ssec-req-send-steps" class="auto internal xref">Section 5.1.1</a>).<ahref="#section-5.1.3-5" class="pilcrow">¶</a></p>
<pid="section-5.2.2-2">When doing so, the proxy especially follows what is specified for the client in <span><ahref="https://datatracker.ietf.org/doc/html/draft-ietf-core-groupcomm-bis-13#section-3.7" class="relref">Section 3.7</a> of [<ahref="#I-D.ietf-core-groupcomm-bis" class="cite xref">I-D.ietf-core-groupcomm-bis</a>]</span>, by forwarding the group request to the servers over IP multicast as defined in <ahref="#ssec-req-proc-proxy-steps" class="auto internal xref">Section 5.2.1</a> of this document.<ahref="#section-5.2.2-2" class="pilcrow">¶</a></p>
1746
1794
</section>
1747
1795
</div>
1796
+
<divid="ssec-cancel-forwarding-proxy">
1797
+
<sectionid="section-5.2.3">
1798
+
<h4id="name-cancellation-of-ongoing-resp">
1799
+
<ahref="#section-5.2.3" class="section-number selfRef">5.2.3. </a><ahref="#name-cancellation-of-ongoing-resp" class="section-name selfRef">Cancellation of Ongoing Response Forwarding</a>
1800
+
</h4>
1801
+
<pid="section-5.2.3-1">As defined in <ahref="#ssec-cancel-forwarding" class="auto internal xref">Section 5.1.3</a>, the client might ask the proxy for an early stop of the ongoing response forwarding, i.e., to stop forwarding to the client any further responses received to the forwarded group request from the servers.<ahref="#section-5.2.3-1" class="pilcrow">¶</a></p>
1802
+
<pid="section-5.2.3-2">Consistently, the proxy stops forwarding such responses to the client, after receiving a CoAP Reset message (RST) in reply to one of such responses, or after receiving an Early Stop Request related to the ongoing response forwarding (i.e., using the same Token value of the original unicast request from the client).<ahref="#section-5.2.3-2" class="pilcrow">¶</a></p>
1803
+
<pid="section-5.2.3-3">After that, in case the proxy receives further responses to the forwarded group request from the servers, the proxy <spanclass="bcp14">MUST NOT</span> forward those responses to the client. In fact, the proxy can safely free up its local Token value associated with that group request, which results in discarding any further responses to the same group request received from then on from the servers.<ahref="#section-5.2.3-3" class="pilcrow">¶</a></p>
<pid="section-8.1.1-2">Any other proxy in the chain acts as a client and registers its own interest to observe the target resource with the next hop towards the origin servers, as per <span><ahref="https://rfc-editor.org/rfc/rfc7641#section-5" class="relref">Section 5</a> of [<ahref="#RFC7641" class="cite xref">RFC7641</a>]</span>.<ahref="#section-8.1.1-2" class="pilcrow">¶</a></p>
2411
2469
</section>
2412
2470
</div>
2471
+
<divid="ssec-cancel-forwarding-proxy-chain">
2472
+
<sectionid="section-8.1.2">
2473
+
<h4id="name-cancellation-of-ongoing-respo">
2474
+
<ahref="#section-8.1.2" class="section-number selfRef">8.1.2. </a><ahref="#name-cancellation-of-ongoing-respo" class="section-name selfRef">Cancellation of Ongoing Response Forwarding</a>
2475
+
</h4>
2476
+
<pid="section-8.1.2-1">Consistently with what is described in <ahref="#ssec-cancel-forwarding-proxy" class="auto internal xref">Section 5.2.3</a>, a proxy might be asked by the (previous hop proxy closer to the) origin client for an early stop of the ongoing response forwarding.<ahref="#section-8.1.2-1" class="pilcrow">¶</a></p>
2477
+
<pid="section-8.1.2-2">That is, the proxy is asked to stop forwarding to the (previous hop proxy closer to the) origin client any further responses received to the forwarded group request from the (next hop proxy towards the) origin servers.<ahref="#section-8.1.2-2" class="pilcrow">¶</a></p>
2478
+
<pid="section-8.1.2-3">When this happens, the proxy proceeds as described in <ahref="#ssec-cancel-forwarding-proxy" class="auto internal xref">Section 5.2.3</a>. Furthermore, if the proxy is not the last one in the chain, the proxy <spanclass="bcp14">MAY</span> send to the next hop proxy towards the origin servers an Early Stop Request (see <ahref="#ssec-req-proc-proxy-steps" class="auto internal xref">Section 5.2.1</a>), with the same Token value of the group request that the proxy forwarded to the next hop proxy towards the origin servers.<ahref="#section-8.1.2-3" class="pilcrow">¶</a></p>
0 commit comments