-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdraft-tuexen-tsvwg-sctp-init-fwd.xml
266 lines (248 loc) · 10.9 KB
/
draft-tuexen-tsvwg-sctp-init-fwd.xml
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
<?xml version='1.0' encoding='utf-8'?>
<?xml-model href="rfc7991bis.rnc"?>
<?rfc toc='yes'?>
<?rfc compact='yes'?>
<?rfc subcompact='no'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
xml:lang="en"
ipr="trust200902"
submissionType="IETF"
consensus="true"
category="std"
docName="draft-tuexen-tsvwg-sctp-init-fwd-04"
version="3">
<front>
<title abbrev='INIT forwarding for SCTP'>
INIT Forwarding for the Stream Control Transmission Protocol
</title>
<seriesInfo name="Internet-Draft" value="draft-tuexen-tsvwg-sctp-init-fwd-04"/>
<author initials="M." surname="Tüxen" fullname="Michael Tüxen">
<organization abbrev='Münster Univ. of Appl. Sciences'>
Münster University of Applied Sciences</organization>
<address>
<postal>
<street>Stegerwaldstrasse 39</street>
<city>48565 Steinfurt</city>
<country>Germany</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author initials='T.' surname='Völker' fullname='Timo Völker'>
<organization abbrev='Münster Univ. of Appl. Sciences'>
Münster University of Applied Sciences</organization>
<address>
<postal>
<street>Stegerwaldstrasse 39</street>
<city>48565 Steinfurt</city>
<country>Germany</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date />
<abstract>
<t>The Stream Control Transmission Protocol (SCTP) extension described in this
document allows the support of a simple mechanism to distribute association
requests between a cluster of SCTP end points providing the same service.
In particular, this allows the use of anycast addresses in combination with
SCTP.</t>
</abstract>
</front>
<middle>
<section>
<name>Introduction</name>
<t>The protocol extension described in this document allows an initiation of
an SCTP association to deal with an address change of the peer during the
handshake.
The extension enables the peer to respond from another address than the one
used as destination address in the received packet containing the INIT chunk.
The SCTP Dynamic Address Reconfiguration extension described in
<xref target="RFC5061"/> can not be used, since it does not apply to the
handshake.</t>
</section>
<section anchor='conventions'>
<name>Conventions</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in all capitals, as shown here.</t>
</section>
<section>
<name>A New Chunk Parameter</name>
<t>The INIT Forwarding Chunk Parameter is defined by the following figure.</t>
<figure>
<name>INIT Forwarding Chunk Parameter</name>
<artwork align="left">
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0x8006 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Parameter /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
</figure>
<dl newline="true">
<dt>Type: 16 bits (unsigned integer)</dt>
<dd>
<t>This field holds the IANA defined parameter type for the
"INIT Forwarding" chunk parameter.
IANA is requested to assign the value 32774 (0x8006) for this parameter type.</t>
</dd>
<dt>Length: 16 bits (unsigned integer)</dt>
<dd>
<t>This field holds the length in bytes of the chunk parameter;
the value <bcp14>MUST</bcp14> be the length of the parameter included plus 4.</t>
</dd>
<dt>Parameter: variable length</dt>
<dd>
<t>The parameter <bcp14>MUST</bcp14> be one of:</t>
<ul>
<li><t>IPv4 Address parameter as specified in <xref target="RFC9260"/>.</t></li>
<li><t>IPv6 Address parameter as specified in <xref target="RFC9260"/>.</t></li>
<li><t>Padding parameter as specified in <xref target="RFC4820"/>.
The length of the Padding parameter <bcp14>MUST</bcp14> be either the length
of an IPv4 Address parameter or the length of the IPv6 Address parameter.</t></li>
</ul>
</dd>
</dl>
<t>All transported integer numbers are in "network byte order" a.k.a.,
Big Endian.</t>
<t>The INIT Forwarding Chunk Parameter <bcp14>MAY</bcp14> appear
in INIT and INIT ACK chunks and <bcp14>MUST NOT</bcp14> appear in any other
chunk.
If an INIT or INIT ACK chunk contains an INIT Forwarding Chunk Parameter,
the INIT Forwarding Chunk Parameter <bcp14>MUST</bcp14> be the first
optional/variable-length parameter.</t>
<t>If an end point not supporting the extension described in this document
receives this parameter in an INIT or INIT ACK chunk, it skips this parameter
and continues to process further parameters in the chunk.
This behaviour is <bcp14>REQUIRED</bcp14> by <xref target="RFC9260"/> because
the highest-order 2 bits of the Type are 10.</t>
</section>
<section>
<name>Procedures</name>
<t>If an end point that sends an SCTP packet containing an INIT chunk wants to
allow the peer to respond from an address different from the destination address
of the packet, <bcp14>MUST</bcp14> use the INIT Forwarding Chunk parameter as
the first optional/variable-length parameter.
The parameter in the INIT Forwarding Chunk parameter <bcp14>MUST</bcp14> be a
Padding parameter.
If the SCTP packet containing the INIT chunk is sent over IPV4, the length of
the padding parameter <bcp14>MUST</bcp14> be the length of an IPv4 Address
parameter, which is 8 bytes.
Otherwise, if the SCTP packet containing the INIT chunk is sent over IPV6,
the length of the padding parameter <bcp14>MUST</bcp14> be the length of an
IPv6 Address parameter, which is 20 bytes.</t>
<t>If a middlebox receives an SCTP packet containing an INIT chunk with
INIT Forwarding Chunk parameter as its first optional/variable-length parameter
and wants to change the destination address of the packet, it
<bcp14>MUST</bcp14> replace the Padding parameter in the INIT Forwarding Chunk
parameter with an IPv4 or IPv6 Address parameter containing the original
destination address of the SCTP packet containing the INIT chunk.
If the INIT Forwarding Chunk parameter does not contain a Padding parameter,
but an IPv4 or IPv6 Address parameter, the INIT Forwarding Chunk parameter
<bcp14>MUST NOT</bcp14> be modified at all.</t>
<t>If an end point receives an SCTP packet containing an INIT chunk and
the INIT chunk contains an INIT Forwarding Chunk parameter including an
Address parameter as its first optional/variable-length parameter, the
end point <bcp14>MUST</bcp14> include this INIT Forwarding Chunk parameter
as the first optional/variable-length parameter in the INIT ACK chunk, which
is sent in response.
If the INIT Forwarding Chunk parameter contains a Padding parameter and the
end-point does not want to use the destination address, it <bcp14>MUST</bcp14>
put an INIT Forwarding Chunk parameter containing this address in the
INIT ACK chunk sent in response.
If the end point wants to use the destination address in the association and
the INIT Forwarding Chunk parameter contains a Padding parameter, the
INIT Forwarding Chunk parameter <bcp14>MUST NOT</bcp14> be included in the
INIT ACK chunk.</t>
<t>If an end point receives an SCTP packet containing an INIT ACK chunk and it
cannot find the association for this packet using the IP addresses and port
numbers, and the INIT ACK chunk contains an INIT Forwarding Chunk parameter
as its first optional/variable-length parameter, it <bcp14>SHOULD</bcp14>
use the IP address contained in the Address parameter of the INIT Forwarding
Chunk parameter instead of the source address of the received packet for the
association lookup.
If an association is then found, the address in the INIT Forwarding Chunk
parameter <bcp14>MUST</bcp14> be removed as a remote address and the source
address of the packet containing the INIT ACK chunk <bcp14>MUST</bcp14> be added
as an unconfirmed remote address.</t>
</section>
<section>
<name>Socket API Considerations</name>
<t>This section describes how the socket API defined in
<xref target='RFC6458'/> needs to be extended to provide a way for the
application to control the UDP encapsulation.</t>
<t>Please note that this section is informational only.</t>
<t>A socket API implementation based on <xref target='RFC6458'/> is extended by
supporting one new read/write IPPROTO_SCTP level socket option.</t>
<section>
<name>Get or Set Accepting a Zero Checksum (SCTP_INIT_FORWARDING)</name>
<t>This socket option can be used to control the support of INIT forwarding.
It applies only to future SCTP associations on the socket.</t>
<t>This option expects an integer boolean flag, where a non-zero value
turns on the option, and a zero value turns off the option.</t>
<t>This option is off by default.</t>
</section>
</section>
<section>
<name>IANA Considerations</name>
<t>[NOTE to RFC-Editor: "RFCXXXX" is to be replaced by the RFC number you
assign this document.]</t>
<t>[NOTE to RFC-Editor: The requested value for the parameter type is tentative
and to be confirmed by IANA.]</t>
<t>This document (RFCXXXX) is the reference for the registration described
in this section.</t>
<t>A new chunk parameter type has to be assigned by IANA.
This requires an additional line in the "Chunk Parameter Types" registry for
SCTP:</t>
<table>
<name>New entry in "Chunk Parameter Types" registry</name>
<thead>
<tr><th>ID Value</th> <th>Chunk Parameter Type </th> <th>Reference</th></tr>
</thead>
<tbody>
<tr><td>32774</td> <td>INIT Forwarding (0x8006)</td> <td>[RFCXXXX]</td></tr>
</tbody>
</table>
</section>
<section>
<name>Security Considerations</name>
<t>This document does not change the considerations given in
<xref target="RFC9260"/>.</t>
</section>
</middle>
<back>
<references>
<name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4820.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml"/>
</references>
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5061.xml"/>
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6458.xml"/>
</references>
</references>
<!--
<section numbered='false'>
<name>Acknowledgments</name>
<t>The authors wish to thank
<contact fullname="..."/> and
<contact fullname="..."/>
for their invaluable comments.</t>
</section>
-->
</back>
</rfc>