diff options
Diffstat (limited to 'doc/rfc/rfc5061.txt')
-rw-r--r-- | doc/rfc/rfc5061.txt | 2299 |
1 files changed, 2299 insertions, 0 deletions
diff --git a/doc/rfc/rfc5061.txt b/doc/rfc/rfc5061.txt new file mode 100644 index 0000000..3738e5a --- /dev/null +++ b/doc/rfc/rfc5061.txt @@ -0,0 +1,2299 @@ + + + + + + +Network Working Group R. Stewart +Request for Comments: 5061 Cisco Systems, Inc. +Category: Standards Track Q. Xie + Motorola, Inc. + M. Tuexen + Univ. of Applied Sciences Muenster + S. Maruyama + M. Kozuka + Kyoto University + September 2007 + + + Stream Control Transmission Protocol (SCTP) + Dynamic Address Reconfiguration + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Abstract + + A local host may have multiple points of attachment to the Internet, + giving it a degree of fault tolerance from hardware failures. Stream + Control Transmission Protocol (SCTP) (RFC 4960) was developed to take + full advantage of such a multi-homed host to provide a fast failover + and association survivability in the face of such hardware failures. + This document describes an extension to SCTP that will allow an SCTP + stack to dynamically add an IP address to an SCTP association, + dynamically delete an IP address from an SCTP association, and to + request to set the primary address the peer will use when sending to + an endpoint. + + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 1] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 3. Serial Number Arithmetic . . . . . . . . . . . . . . . . . . . 4 + 4. Additional Chunks and Parameters . . . . . . . . . . . . . . . 4 + 4.1. New Chunk Types . . . . . . . . . . . . . . . . . . . . . 4 + 4.1.1. Address Configuration Change Chunk (ASCONF) . . . . . 5 + 4.1.2. Address Configuration Acknowledgment Chunk + (ASCONF-ACK) . . . . . . . . . . . . . . . . . . . . . 6 + 4.2. New Parameter Types . . . . . . . . . . . . . . . . . . . 7 + 4.2.1. Add IP Address . . . . . . . . . . . . . . . . . . . . 8 + 4.2.2. Delete IP Address . . . . . . . . . . . . . . . . . . 9 + 4.2.3. Error Cause Indication . . . . . . . . . . . . . . . . 10 + 4.2.4. Set Primary IP Address . . . . . . . . . . . . . . . . 11 + 4.2.5. Success Indication . . . . . . . . . . . . . . . . . . 12 + 4.2.6. Adaptation Layer Indication . . . . . . . . . . . . . 13 + 4.2.7. Supported Extensions Parameter . . . . . . . . . . . . 13 + 4.3. New Error Causes . . . . . . . . . . . . . . . . . . . . . 14 + 4.3.1. Error Cause: Request to Delete Last Remaining IP + Address . . . . . . . . . . . . . . . . . . . . . . . 15 + 4.3.2. Error Cause: Operation Refused Due to Resource + Shortage . . . . . . . . . . . . . . . . . . . . . . . 15 + 4.3.3. Error Cause: Request to Delete Source IP Address . . . 16 + 4.3.4. Error Cause: Association Aborted Due to Illegal + ASCONF-ACK . . . . . . . . . . . . . . . . . . . . . . 17 + 4.3.5. Error Cause: Request Refused - No Authorization. . . . 17 + 5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 18 + 5.1. ASCONF Chunk Procedures . . . . . . . . . . . . . . . . . 18 + 5.1.1. Congestion Control of ASCONF Chunks . . . . . . . . . 20 + 5.2. Upon Reception of an ASCONF Chunk . . . . . . . . . . . . 21 + 5.3. General Rules for Address Manipulation . . . . . . . . . . 24 + 5.3.1. A Special Case for OOTB ABORT Chunks . . . . . . . . . 29 + 5.3.2. A Special Case for Changing an Address . . . . . . . . 29 + 5.4. Setting of the Primary Address . . . . . . . . . . . . . . 29 + 5.5. Bundling of Multiple ASCONFs . . . . . . . . . . . . . . . 30 + 6. Security Considerations . . . . . . . . . . . . . . . . . . . 30 + 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 + 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 34 + 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35 + 9.1. Normative References . . . . . . . . . . . . . . . . . . . 35 + 9.2. Informative References . . . . . . . . . . . . . . . . . . 35 + Appendix A. Abstract Address Handling . . . . . . . . . . . . . . 36 + A.1. General Remarks . . . . . . . . . . . . . . . . . . . . . 36 + A.2. Generalized Endpoints . . . . . . . . . . . . . . . . . . 36 + A.3. Associations . . . . . . . . . . . . . . . . . . . . . . . 37 + A.4. Relationship with RFC 4960 . . . . . . . . . . . . . . . . 38 + A.5. Rules for Address Manipulation . . . . . . . . . . . . . . 38 + + + +Stewart, et al. Standards Track [Page 2] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +1. Introduction + + A local host may have multiple points of attachment to the Internet, + giving it a degree of fault tolerance from hardware failures. SCTP + was developed to take full advantage of such a multi-homed host to + provide a fast failover and association survivability in the face of + such hardware failures. However, many modern computers allow for the + dynamic addition and deletion of network cards (sometimes termed a + hot-pluggable interface). Complicate this with the ability of a + provider, in IPv6, to dynamically renumber a network, and there still + is a gap between full-fault tolerance and the currently defined SCTP + protocol. No matter if a card is added or an interface is + renumbered, in order to take advantage of this new configuration, the + transport association must be restarted. For many fault-tolerant + applications this restart is considered an outage and is undesirable. + + This document describes an extension to SCTP to attempt to correct + this problem for the more demanding fault-tolerant application. This + extension will allow an SCTP stack to: + + o Dynamically add an IP address to an association. + + o Dynamically delete an IP address from an association. + + o Request to set the primary address the peer will use when sending + to an endpoint. + + The dynamic addition and subtraction of IP addresses allows an SCTP + association to continue to function through host and network + reconfigurations. These changes, brought on by provider or user + action, may mean that the peer would be better served by using the + newly added address; however, this information may only be known by + the endpoint that had the reconfiguration occur. In such a case this + extension allows the local endpoint to advise the peer as to what it + thinks is the better primary address that the peer should be using. + + One last thing this extension adds is a small, 32-bit integer called + an adaptation indication that can be exchanged at startup. This is + useful for applications where there are one or more specific layers + below the application, yet still above SCTP. In such a case, the + exchange of this indication can allow the proper layer to be enabled + below the application. + +2. Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + + +Stewart, et al. Standards Track [Page 3] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +3. Serial Number Arithmetic + + It is essential to remember that the actual Address Configuration + Change Chunk (ASCONF) Sequence Number space is finite, though very + large. This space ranges from 0 to 2**32 - 1. Since the space is + finite, all arithmetic dealing with ASCONF Sequence Numbers MUST be + performed modulo 2**32. This unsigned arithmetic preserves the + relationship of sequence numbers as they cycle from 2**32 - 1 to 0 + again. There are some subtleties to computer modulo arithmetic, so + great care should be taken in programming the comparison of such + values. When referring to ASCONF Sequence Numbers, the symbol "=<" + means "less than or equal"(modulo 2**32). + + Comparisons and arithmetic on ASCONF sequence numbers in this + document SHOULD use Serial Number Arithmetic as defined in [RFC1982] + where SERIAL_BITS = 32. + + ASCONF Sequence Numbers wrap around when they reach 2**32 - 1. That + is, the next ASCONF Sequence Number an ASCONF chunk MUST use after + transmitting an ASCONF Sequence Number = 2**32 - 1 is 0. + + Any arithmetic done on Stream Sequence Numbers SHOULD use Serial + Number Arithmetic (as defined in [RFC1982]) where SERIAL_BITS = 16. + All other arithmetic and comparisons in this document use normal + arithmetic. + +4. Additional Chunks and Parameters + + This section describes the addition of two new chunks and seven new + parameters to allow: + + o Dynamic addition of IP addresses to an association. + + o Dynamic deletion of IP addresses from an association. + + o A request to set the primary address the peer will use when + sending to an endpoint. + + Additionally, this section describes three new Error Causes that + support these new chunks and parameters. + +4.1. New Chunk Types + + This section defines two new chunk types that will be used to + transfer the control information reliably. Table 1 illustrates the + two new chunk types. + + + + + +Stewart, et al. Standards Track [Page 4] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Chunk Type Chunk Name + -------------------------------------------------------------- + 0xC1 Address Configuration Change Chunk (ASCONF) + 0x80 Address Configuration Acknowledgment (ASCONF-ACK) + + Table 1: Address Configuration Chunks + +4.1.1. Address Configuration Change Chunk (ASCONF) + + This chunk is used to communicate to the remote endpoint one of the + configuration change requests that MUST be acknowledged. The + information carried in the ASCONF Chunk uses the form of a Type- + Length-Value (TLV), as described in "3.2.1 Optional/Variable-length + Parameter Format" in [RFC4960] for all variable parameters. This + chunk MUST be sent in an authenticated way by using the mechanism + defined in [RFC4895]. If this chunk is received unauthenticated it + MUST be silently discarded as described in [RFC4895]. + + 0 1 2 3 + 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 = 0xC1 | Chunk Flags | Chunk Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Parameter | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF Parameter #1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ \ + / .... / + \ \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF Parameter #N | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Sequence Number: 32 bits (unsigned integer) + + This value represents a Sequence Number for the ASCONF Chunk. The + valid range of a Sequence Number is from 0 to 4294967295 (2**32 - 1). + Sequence Numbers wrap back to 0 after reaching 4294967295. + + Address Parameter: 8 or 20 bytes (depending on the address type) + + This field contains an address parameter, either IPv6 or IPv4, from + [RFC4960]. The address is an address of the sender of the ASCONF + Chunk; the address MUST be considered part of the association by the + peer endpoint (the receiver of the ASCONF Chunk). This field may be + + + +Stewart, et al. Standards Track [Page 5] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + used by the receiver of the ASCONF to help in finding the + association. If the address 0.0.0.0 or ::0 is provided, the receiver + MAY lookup the association by other information provided in the + packet. This parameter MUST be present in every ASCONF message, i.e. + it is a mandatory TLV parameter. + + Note: The host name address MUST NOT be sent and MUST be ignored if + received in any ASCONF message. + + It should be noted that the ASCONF Chunk format requires the receiver + to report to the sender if it does not understand the ASCONF Chunk. + This is accomplished by setting the upper bits in the chunk type as + described in [RFC4960], Section 3.2. Note that the upper two bits in + the ASCONF Chunk are set to one. As defined in [RFC4960], Section + 3.2, when setting these upper bits in this manner the receiver that + does not understand this chunk MUST skip the chunk and continue + processing, and report in an Operation Error Chunk using the + 'Unrecognized Chunk Type' cause of error. This will NOT abort the + association but indicates to the sender that it MUST not send any + further ASCONF chunks. + + ASCONF Parameter: TLV format + + Each address configuration change is represented by a TLV parameter, + as defined in Section 4.2. One or more requests may be present in an + ASCONF Chunk. + +4.1.2. Address Configuration Acknowledgment Chunk (ASCONF-ACK) + + This chunk is used by the receiver of an ASCONF Chunk to acknowledge + the reception. It carries zero or more results for any ASCONF + parameters that were processed by the receiver. This chunk MUST be + sent in an authenticated way by using the mechanism defined in + [RFC4895]. If this chunk is received unauthenticated it MUST be + silently discarded as described in [RFC4895]. + + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 6] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + 0 1 2 3 + 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 = 0x80 | Chunk Flags | Chunk Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF Parameter Response#1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ \ + / .... / + \ \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF Parameter Response#N | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Sequence Number: 32 bits (unsigned integer) + + This value represents the Sequence Number for the received ASCONF + Chunk that is acknowledged by this chunk. This value is copied from + the received ASCONF Chunk. + + ASCONF Parameter Response: TLV format + + The ASCONF Parameter Response is used in the ASCONF-ACK to report the + status of ASCONF processing. By default, if a responding endpoint + does not include any Error Cause, a success is indicated. Thus a + sender of an ASCONF-ACK MAY indicate complete success of all TLVs in + an ASCONF by returning only the Chunk Type, Chunk Flags, Chunk Length + (set to 8), and the Sequence Number. + +4.2. New Parameter Types + + The seven new parameters added follow the format defined in Section + 3.2.1 of [RFC4960]. Tables 2, 3, and 4 describe the parameters. + + Address Configuration Parameters Parameter Type + ------------------------------------------------- + Set Primary Address 0xC004 + Adaptation Layer Indication 0xC006 + Supported Extensions 0x8008 + + Table 2: Parameters That Can Be Used in an INIT/INIT-ACK Chunk + + + + + + + + +Stewart, et al. Standards Track [Page 7] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Address Configuration Parameters Parameter Type + ------------------------------------------------- + Add IP Address 0xC001 + Delete IP Address 0xC002 + Set Primary Address 0xC004 + + Table 3: Parameters Used in an ASCONF Parameter + + + Address Configuration Parameters Parameter Type + ------------------------------------------------- + Error Cause Indication 0xC003 + Success Indication 0xC005 + + Table 4: Parameters Used in an ASCONF Parameter Response + + Any parameter that appears where it is not allowed (for example, a + 0xC002 parameter appearing within an INIT or INIT-ACK) MAY be + responded to with an ABORT by the receiver of the invalid parameter. + If the receiver chooses NOT to abort, the parameter MUST be ignored. + A robust implementation SHOULD ignore the parameter and leave the + association intact. + +4.2.1. Add IP Address + + 0 1 2 3 + 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 = 0xC001 | Length = Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF-Request Correlation ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Parameter | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + ASCONF-Request Correlation ID: 32 bits + + This is an opaque integer assigned by the sender to identify each + request parameter. The receiver of the ASCONF Chunk will copy this + 2-bit value into the ASCONF Response Correlation ID field of the + ASCONF-ACK response parameter. The sender of the ASCONF can use this + same value in the ASCONF-ACK to find which request the response is + for. Note that the receiver MUST NOT change this 32-bit value. + + + + + + + + +Stewart, et al. Standards Track [Page 8] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Address Parameter: TLV + + This field contains an IPv4 or IPv6 address parameter as described in + Section 3.3.2.1 of [RFC4960]. The complete TLV is wrapped within + this parameter. It informs the receiver that the address specified + is to be added to the existing association. This parameter MUST NOT + contain a broadcast or multicast address. If the address 0.0.0.0 or + ::0 is provided, the source address of the packet MUST be added. + + An example TLV requesting that the IPv4 address 192.0.2.1 be added to + the association would look as follows: + + +--------------------------------+ + | Type=0xC001 | Length = 16 | + +--------------------------------+ + | C-ID = 0x01023474 | + +--------------------------------+ + | Type=5 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + + Valid Chunk Appearance + + The Add IP Address parameter may only appear in the ASCONF Chunk + type. + +4.2.2. Delete IP Address + + 0 1 2 3 + 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 =0xC002 | Length = Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF-Request Correlation ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Parameter | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + ASCONF-Request Correlation ID: 32 bits + + This is an opaque integer assigned by the sender to identify each + request parameter. The receiver of the ASCONF Chunk will copy this + 32-bit value into the ASCONF Response Correlation ID field of the + ASCONF-ACK response parameter. The sender of the ASCONF can use this + same value in the ASCONF-ACK to find which request the response is + for. Note that the receiver MUST NOT change this 32-bit value. + + + + +Stewart, et al. Standards Track [Page 9] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Address Parameter: TLV + + This field contains an IPv4 or IPv6 address parameter, as described + in Section 3.3.2.1 of [RFC4960]. The complete TLV is wrapped within + this parameter. It informs the receiver that the address specified + is to be removed from the existing association. This parameter MUST + NOT contain a broadcast or multicast address. If the address 0.0.0.0 + or ::0 is provided, all addresses of the peer except the source + address of the packet MUST be deleted. + + An example TLV deleting the IPv4 address 192.0.2.1 from an existing + association would look as follows: + + +--------------------------------+ + | Type=0xC002 | Length = 16 | + +--------------------------------+ + | C-ID = 0x01023476 | + +--------------------------------+ + | Type=5 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + + Valid Chunk Appearance + + The Delete IP Address parameter may only appear in the ASCONF Chunk + type. + +4.2.3. Error Cause Indication + + 0 1 2 3 + 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 = 0xC003 | Length = Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF-Response Correlation ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Error Cause(s) or Success Indication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + ASCONF-Response Correlation ID: 32 bits + + This is an opaque integer assigned by the sender to identify each + request parameter. The receiver of the ASCONF Chunk will copy this + 32-bit value from the ASCONF-Request Correlation ID into the ASCONF + Response Correlation ID field so the peer can easily correlate the + request to this response. Note that the receiver MUST NOT change + this 32-bit value. + + + +Stewart, et al. Standards Track [Page 10] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Error Cause(s): TLV(s) + + When reporting an error, this response parameter is used to wrap one + or more standard Error Causes normally found within an SCTP + Operational Error or SCTP Abort (as defined in [RFC4960]). The Error + Cause(s) follow the format defined in Section 3.3.10 of [RFC4960]. + + Valid Chunk Appearance + + The Error Cause Indication parameter may only appear in the ASCONF- + ACK Chunk Type. + +4.2.4. Set Primary IP Address + + 0 1 2 3 + 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 =0xC004 | Length = Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF-Request Correlation ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Parameter | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + ASCONF-Request Correlation ID: 32 bits + + This is an opaque integer assigned by the sender to identify each + request parameter. The receiver of the ASCONF Chunk will copy this + 32-bit value into the ASCONF Response Correlation ID field of the + ASCONF-ACK response parameter. The sender of the ASCONF can use this + same value in the ASCONF-ACK to find which request the response is + for. Note that the receiver MUST NOT change this 32-bit value. + + Address Parameter: TLV + + This field contains an IPv4 or IPv6 address parameter as described in + Section 3.3.2.1 of [RFC4960]. The complete TLV is wrapped within + this parameter. It requests the receiver to mark the specified + address as the primary address to send data to (see Section 5.1.2 of + [RFC4960]). The receiver MAY mark this as its primary address upon + receiving this request. If the address 0.0.0.0 or ::0 is provided, + the receiver MAY mark the source address of the packet as its + primary. + + An example TLV requesting that the IPv4 address 192.0.2.1 be made the + primary destination address would look as follows: + + + + + +Stewart, et al. Standards Track [Page 11] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + +--------------------------------+ + | Type=0xC004 | Length = 16 | + +--------------------------------+ + | C-ID = 0x01023479 | + +--------------------------------+ + | Type=5 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + + Valid Chunk Appearance + + The Set Primary IP Address parameter may appear in the ASCONF, the + INIT, or the INIT-ACK Chunk Type. The inclusion of this parameter in + the INIT or INIT-ACK can be used to indicate an initial preference of + primary address. + +4.2.5. Success Indication + + 0 1 2 3 + 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 = 0xC005 | Length = 8 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ASCONF-Response Correlation ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + By default, if a responding endpoint does not report an error for any + requested TLV, a success is implicitly indicated. Thus, a sender of + an ASCONF-ACK MAY indicate complete success of all TLVs in an ASCONF + by returning only the Chunk Type, Chunk Flags, Chunk Length (set to + 8), and the Sequence Number. + + The responding endpoint MAY also choose to explicitly report a + success for a requested TLV, by returning a success report ASCONF + Parameter Response. + + ASCONF-Response Correlation ID: 32 bits + + This is an opaque integer assigned by the sender to identify each + request parameter. The receiver of the ASCONF Chunk will copy this + 32-bit value from the ASCONF-Request Correlation ID into the ASCONF + Response Correlation ID field so the peer can easily correlate the + request to this response. + + + + + + + +Stewart, et al. Standards Track [Page 12] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Valid Chunk Appearance + + The Success Indication parameter may only appear in the ASCONF-ACK + Chunk Type. + +4.2.6. Adaptation Layer Indication + + 0 1 2 3 + 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 =0xC006 | Length = 8 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Adaptation Code point | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + This parameter is specified for the communication of peer upper-layer + protocols. It is envisioned to be used for flow control and other + adaptation layers that require an indication to be carried in the + INIT and INIT-ACK. Each adaptation layer that is defined that wishes + to use this parameter MUST specify an adaptation code point in an + appropriate RFC defining its use and meaning. This parameter SHOULD + NOT be examined by the receiving SCTP implementation and should be + passed opaquely to the upper-layer protocol. + + Note: This parameter is not used in either the addition or deletion + of addresses but is for the convenience of the upper layer. This + document includes this parameter to minimize the number of SCTP + documents. + + Valid Chunk Appearance + + The Adaptation Layer Indication parameter may appear in INIT or INIT- + ACK chunk and SHOULD be passed to the receiver's upper-layer protocol + based upon the upper-layer protocol configuration of the SCTP stack. + This parameter MUST NOT be sent in any other chunks, and if it is + received in another chunk, it MUST be ignored. + +4.2.7. Supported Extensions Parameter + + This parameter is used at startup to identify any additional + extensions that the sender supports. The sender MUST support both + the sending and the receiving of any chunk types listed within the + Supported Extensions Parameter. An implementation supporting this + extension MUST list the ASCONF,the ASCONF-ACK, and the AUTH chunks in + its INIT and INIT-ACK parameters. + + + + + + +Stewart, et al. Standards Track [Page 13] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Parameter Type = 0x8008 | Parameter Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CHUNK TYPE 1 | CHUNK TYPE 2 | CHUNK TYPE 3 | CHUNK TYPE 4 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | .... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CHUNK TYPE N | PAD | PAD | PAD | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Parameter Type This field holds the IANA-defined parameter type for + the Supported Extensions Parameter. The value of this field is + 0x8008. + + Parameter Type Length This field holds the length of the parameter, + including the Parameter Type, Parameter Length, and any additional + supported extensions. Note: The length MUST NOT include any padding. + + CHUNK TYPE X This field(s) hold the chunk type of any SCTP + extension(s) that are currently supported by the sending SCTP. + Multiple chunk types may be defined listing each additional feature + that the sender supports. The sender MUST NOT include multiple + Supported Extensions Parameter within any chunk. + + Parameter Appearance This parameter may appear in the INIT or INIT- + ACK chunk. This parameter MUST NOT appear in any other chunk. + +4.3. New Error Causes + + Five new Error Causes are added to the SCTP Operational Errors, + primarily for use in the ASCONF-ACK Chunk. + + Cause Code + Value Cause Code + --------- ---------------- + 0x00A0 Request to Delete Last Remaining IP Address + 0x00A1 Operation Refused Due to Resource Shortage + 0x00A2 Request to Delete Source IP Address + 0x00A3 Association Aborted Due to Illegal ASCONF-ACK + 0x00A4 Request Refused - No Authorization + + Table 5: New Error Causes + + + + + + + +Stewart, et al. Standards Track [Page 14] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +4.3.1. Error Cause: Request to Delete Last Remaining IP Address + + Cause of error + + Request to Delete Last Remaining IP Address: The receiver of this + error sent a request to delete the last IP address from its + association with its peer. This error indicates that the request is + rejected. + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cause Code=0x00A0 | Cause Length=Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ TLV-Copied-From-ASCONF / + / \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + An example of a failed delete in an Error Cause TLV would look as + follows in the response ASCONF-ACK message: + + +--------------------------------+ + | Type = 0xC003 | Length = 28 | + +----------------+---------------+ + | C-ID = 0x01023476 | + +--------------------------------+ + | Cause=0x00A0 | Length = 20 | + +----------------+---------------+ + | Type= 0xC002 | Length = 16 | + +----------------+---------------+ + | C-ID = 0x01023476 | + +--------------------------------+ + | Type=0x0005 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + +4.3.2. Error Cause: Operation Refused Due to Resource Shortage + + Cause of error + + This Error Cause is used to report a failure by the receiver to + perform the requested operation due to a lack of resources. The + entire TLV that is refused is copied from the ASCONF into the Error + Cause. + + + + + + +Stewart, et al. Standards Track [Page 15] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cause Code=0x00A1 | Cause Length=Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ TLV-Copied-From-ASCONF / + / \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + An example of a failed addition in an Error Cause TLV would look as + follows in the response ASCONF-ACK message: + + +--------------------------------+ + | Type = 0xC003 | Length = 28 | + +--------------------------------+ + | C-ID = 0x01023474 | + +--------------------------------+ + | Cause=0x00A1 | Length = 20 | + +----------------+---------------+ + | Type=0xC001 | Length = 16 | + +--------------------------------+ + | C-ID = 0x01023474 | + +--------------------------------+ + | Type=0x0005 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + +4.3.3. Error Cause: Request to Delete Source IP Address + + Cause of error + + Request to Delete Source IP Address: The receiver of this error sent + a request to delete the source IP address of the ASCONF message. + This error indicates that the request is rejected. + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cause Code=0x00A2 | Cause Length=Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ TLV-Copied-From-ASCONF / + / \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + +Stewart, et al. Standards Track [Page 16] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + An example of a failed delete in an Error Cause TLV would look as + follows in the response ASCONF-ACK message: + + +--------------------------------+ + | Type = 0xC003 | Length = 28 | + +--------------------------------+ + | C-ID = 0x01023476 | + +--------------------------------+ + | Cause=0x00A2 | Length = 20 | + +----------------+---------------+ + | Type=0xC002 | Length = 16 | + +----------------+---------------+ + | C-ID = 0x01023476 | + +--------------------------------+ + | Type=0x0005 | Length = 8 | + +----------------+---------------+ + | Value=0xC0000201 | + +----------------+---------------+ + + IMPLEMENTATION NOTE: It is unlikely that an endpoint would source a + packet from the address being deleted, unless the endpoint does not + do proper source address selection. + +4.3.4. Error Cause: Association Aborted Due to Illegal ASCONF-ACK + + This error is to be included in an ABORT that is generated due to the + reception of an ASCONF-ACK that was not expected but is larger than + the current Sequence Number (see Section 5.3, Rule F0 ). Note that a + Sequence Number is larger than the last acked Sequence Number if it + is either the next sequence or no more than 2**31-1 greater than the + current Sequence Number. Sequence Numbers smaller than the last + acked Sequence Number are silently ignored. + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cause Code=0x00A3 | Cause Length=4 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +4.3.5. Error Cause: Request Refused - No Authorization. + + Cause of error + + This Error Cause may be included to reject a request based on local + security policies. + + + + + + +Stewart, et al. Standards Track [Page 17] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + 0 1 2 3 + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cause Code=0x00A4 | Cause Length=Variable | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + \ TLV-Copied-From-ASCONF / + / \ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +5. Procedures + + This section will lay out the specific procedures for address- + configuration change chunk type and its processing. + +5.1. ASCONF Chunk Procedures + + When an endpoint has an ASCONF signaled change to be sent to the + remote endpoint, it MUST do the following: + + A1) Create an ASCONF Chunk as defined in Section 4.1.1. The chunk + MUST contain all of the TLV(s) of information necessary to be + sent to the remote endpoint, and unique correlation identities + for each request. + + A2) A Sequence Number MUST be assigned to the Chunk. The Sequence + Number MUST be larger by one. The Sequence Number MUST be + initialized at the start of the association to the same value as + the Initial Transmission Sequence Number (TSN) and every time a + new ASCONF Chunk is created, it MUST be incremented by one after + assigning the Sequence Number to the newly created chunk. + + A3) If no SCTP packet with one or more ASCONF Chunk(s) is + outstanding (unacknowledged) with the remote peer, send the + chunk and proceed to step A4. If an ASCONF chunk is + outstanding, then the ASCONF chunk should be queued for later + transmission and no further action should be taken until the + previous ASCONF is acknowledged or a timeout occurs. + + A4) The sender MUST Start a T-4 Retransmission Timeout (RTO) timer, + using the RTO value of the selected destination address + (normally the primary path; see [RFC4960], Section 6.4 for + details). + + + + + + + + + +Stewart, et al. Standards Track [Page 18] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + A5) When the ASCONF-ACK that acknowledges the Sequence Number last + sent arrives, the sender MUST stop the T-4 RTO timer, and clear + the appropriate association and destination error counters as + defined in [RFC4960], Sections 8.1 and 8.2. + + A6) The endpoint MUST process all of the TLVs within the ASCONF- + ACK(s) to find out particular status information returned to the + various requests that were sent. Use the Correlation IDs to + correlate the request and the responses. + + A7) If an error response is received for a TLV parameter, all TLVs + with no response before the failed TLV are considered successful + if not reported. All TLVs after the failed response are + considered unsuccessful unless a specific success indication is + present for the parameter. + + A8) If there is no response(s) to specific TLV parameter(s), and no + failures are indicated, then all request(s) are considered + successful. + + A9) If the peer responds to an ASCONF with an ERROR Chunk reporting + that it did not recognize the ASCONF Chunk Type, the sender of + the ASCONF MUST NOT send any further ASCONF Chunks and MUST stop + its T-4 timer. + + If the T-4 RTO timer expires the endpoint MUST do the following: + + B1) Increment the error counters and perform path failure detection + on the appropriate destination address as defined in [RFC4960], + Sections 8.1 and 8.2. + + B2) Increment the association error counters and perform endpoint + failure detection on the association as defined in [RFC4960], + Sections 8.1 and 8.2. + + B3) Backoff the destination address RTO value to which the ASCONF + chunk was sent by doubling the RTO timer value. + + Note: The RTO value is used in the setting of all timer types + for SCTP. Each destination address has a single RTO estimate. + + + + + + + + + + + +Stewart, et al. Standards Track [Page 19] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + B4) Re-transmit the ASCONF Chunk last sent and if possible choose an + alternate destination address (please refer to [RFC4960], + Section 6.4.1). An endpoint MUST NOT add new parameters to this + chunk; it MUST be the same (including its Sequence Number) as + the last ASCONF sent. An endpoint MAY, however, bundle an + additional ASCONF with new ASCONF parameters with the next + Sequence Number. For details, see Section 5.5. + + B5) Restart the T-4 RTO timer. Note that if a different destination + is selected, then the RTO used will be that of the new + destination address. + + Note: The total number of retransmissions is limited by B2 above. If + the maximum is reached, the association will fail and enter into the + CLOSED state (see [RFC4960], Section 6.4.1 for details). + +5.1.1. Congestion Control of ASCONF Chunks + + In defining the ASCONF Chunk transfer procedures, it is essential + that these transfers MUST NOT cause congestion within the network. + To achieve this, we place these restrictions on the transfer of + ASCONF Chunks: + + C1) One and only one SCTP packet-holding ASCONF Chunk(s) MAY be in + transit and unacknowledged at any one time. If a sender, after + sending an ASCONF chunk, decides it needs to transfer another + ASCONF Chunk, it MUST wait until the ASCONF-ACK Chunk returns + from the previous ASCONF Chunk before sending a subsequent + ASCONF. Note: This restriction binds each side, so at any time, + two ASCONF may be in-transit on any given association (one sent + from each endpoint). However, when an ASCONF Chunk is + retransmitted due to a time-out, the additionally held ASCONF + Chunks can be bundled into the retransmission packet as + described in Section 5.5. + + C2) An ASCONF Chunk may be bundled with any other chunk type + including other ASCONF Chunks. If bundled with other ASCONF + Chunks, the chunks MUST appear in sequential order with respect + to their Sequence Number. + + C3) An ASCONF-ACK Chunk may be bundled with any other chunk type + including other ASCONF-ACK Chunks. If bundled with other + ASCONF-ACK Chunks, the chunks MUST appear in sequential order + with respect to their Sequence Number. + + + + + + + +Stewart, et al. Standards Track [Page 20] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + C4) Both ASCONF and ASCONF-ACK Chunks MUST NOT be sent in any SCTP + state except ESTABLISHED, SHUTDOWN-PENDING, SHUTDOWN-RECEIVED, + and SHUTDOWN-SENT. + + C5) An ASCONF Chunk and an ASCONF-ACK Chunk SHOULD not be larger + than the PMTU. If the PMTU is unknown, then the PMTU should be + set to the minimum PMTU. The minimum PMTU depends on the IP + version used for transmission, and is the lesser of 576 octets + and the first-hop MTU for IPv4 [RFC1122] and 1280 octets for + IPv6 [RFC2460]. + + An ASCONF sender without these restrictions could possibly flood the + network with a large number of separate address-change operations, + thus causing network congestion. + + If the sender of an ASCONF Chunk receives an Operational Error + indicating that the ASCONF Chunk Type is not understood, then the + sender MUST NOT send subsequent ASCONF Chunks to the peer. The + endpoint should also inform the upper-layer application that the peer + endpoint does not support any of the extensions detailed in this + document. + +5.2. Upon Reception of an ASCONF Chunk + + When an endpoint receives an ASCONF Chunk from the remote peer, + special procedures may be needed to identify the association the + ASCONF Chunk is associated with. To properly find the association, + the following procedures SHOULD be followed: + + D1) Use the source address and port number of the sender to attempt + to identify the association (i.e., use the same method defined + in [RFC4960] used for all other SCTP Chunks). If found proceed + to rule D4. + + D2) If the association is not found, use the address found in the + Address Parameter TLV combined with the port number found in the + SCTP common header. If found, proceed to rule D4. + + D2-ext) If more than one ASCONF Chunks are packed together, use the + address found in the ASCONF Address Parameter TLV of each of + the subsequent ASCONF Chunks. If found, proceed to rule D4. + + + + + + + + + + +Stewart, et al. Standards Track [Page 21] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + D3) If neither D1, D2, nor D2-ext locates the association, treat the + chunk as an Out Of The Blue packet as defined in [RFC4960]. + + D4) Follow the normal rules to validate the SCTP verification tag + found in [RFC4960]. + + D5) After the verification tag has been validated, normal chunk + processing should occur. Prior to finding the ASCONF chunk, the + receiver MUST encounter an AUTH chunk as described in [RFC4895]. + If either authentication fails, or the AUTH chunk is missing, + the receiver MUST silently discard this chunk and the rest of + the packet. + + After identification and verification of the association, the + following should be performed to properly process the ASCONF Chunk: + + E1) If the value found in the Sequence Number of the ASCONF Chunk is + equal to the ('Peer-Sequence-Number' + 1) and the Sequence + Number of the ASCONF Chunk is the first in the SCTP Packet, the + endpoint MAY clean any old cached ASCONF-ACK up to the 'Peer- + Sequence-Number' and then proceed to rule E4. + + E1-ext) If the value found in the Sequence Number of the ASCONF + Chunk is equal to the ('Peer-Sequence-Number' + 1) and the + ASCONF chunk is NOT the first Sequence Number in the SCTP + packet, proceed to rule E4 but do NOT clear any cached + ASCONF- ACK or state information. + + E2) If the value found in the Sequence Number is less than the + ('Peer- Sequence-Number' + 1), simply skip to the next ASCONF, + and include in the outbound response packet any previously + cached ASCONF-ACK response that was sent and saved that matches + the Sequence Number of the ASCONF. Note: It is possible that no + cached ASCONF-ACK Chunk exists. This will occur when an older + ASCONF arrives out of order. In such a case, the receiver + should skip the ASCONF Chunk and not include ASCONF-ACK Chunk + for that chunk. + + E3) Then, process each ASCONF one by one as above while the Sequence + Number of the ASCONF is less than the ('Peer-Sequence-Number' + + 1). + + + + + + + + + + +Stewart, et al. Standards Track [Page 22] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + E4) When the Sequence Number matches the next one expected, process + the ASCONF as described below and after processing the ASCONF + Chunk, append an ASCONF-ACK Chunk to the response packet and + cache a copy of it (in the event it later needs to be + retransmitted). + + V1) Process the TLVs contained within the Chunk performing the + appropriate actions as indicated by each TLV type. The + TLVs MUST be processed in order within the Chunk. For + example, if the sender puts 3 TLVs in one chunk, the first + TLV (the one closest to the Chunk Header) in the Chunk MUST + be processed first. The next TLV in the chunk (the middle + one) MUST be processed second and finally, the last TLV in + the Chunk MUST be processed last. + + V2) In processing the chunk, the receiver should build a + response message with the appropriate error TLVs, as + specified in the Parameter type bits, for any ASCONF + Parameter it does not understand. To indicate an + unrecognized parameter, Cause Type 8 should be used as + defined in the ERROR in Section 3.3.10.8, [RFC4960]. The + endpoint may also use the response to carry rejections for + other reasons, such as resource shortages, etc., using the + Error Cause TLV and an appropriate error condition. + + Note: A positive response is implied if no error is indicated by + the sender. + + V3) All responses MUST copy the ASCONF-Request Correlation ID + field received in the ASCONF parameter from the TLV being + responded to, into the ASCONF-Request Correlation ID field + in the response parameter. + + V4) After processing the entire Chunk, the receiver of the + ASCONF MUST queue the response ASCONF-ACK Chunk for + transmission after the rest of the SCTP packet has been + processed. This allows the ASCONF-ACK Chunk to be bundled + with other ASCONF-ACK Chunks as well as any additional + responses, e.g., a Selective Acknowledgment (SACK) Chunk. + + V5) Update the 'Peer-Sequence-Number' to the value found in the + Sequence Number field. + + + + + + + + + +Stewart, et al. Standards Track [Page 23] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + E5) Otherwise, the ASCONF Chunk is discarded since it must be either + a stale packet or from an attacker. A receiver of such a packet + MAY log the event for security purposes. + + E6) When all ASCONF Chunks are processed for this SCTP packet, send + back the accumulated single response packet with all of the + ASCONF-ACK Chunks. The destination address of the SCTP packet + containing the ASCONF-ACK Chunks MUST be the source address of + the SCTP packet that held the ASCONF Chunks. + + E7) While processing the ASCONF Chunks in the SCTP packet, if the + response packet will exceed the PMTU of the return path, the + receiver MUST stop adding additional ASCONF-ACKs into the + response packet but MUST continue to process all of the ASCONF + Chunks, saving ASCONF-ACK Chunk responses in its cached copy. + The sender of the ASCONF Chunk will later retransmit the ASCONF + Chunks that were not responded to, at which time the cached + copies of the responses that would NOT fit in the PMTU can be + sent to the peer. + + Note: These rules have been presented with the assumption that the + implementation is caching old ASCONF-ACKs in case of loss of SCTP + packets in the ACK path. It is allowable for an implementation to + maintain this state in another form it deems appropriate, as long as + that form results in the same ASCONF-ACK sequences being returned to + the peer as outlined above. + +5.3. General Rules for Address Manipulation + + When building TLV parameters for the ASCONF Chunk that will add or + delete IP addresses, the following rules MUST be applied: + + F0) If an endpoint receives an ASCONF-ACK that is greater than or + equal to the next Sequence Number to be used but no ASCONF Chunk + is outstanding, the endpoint MUST ABORT the association. Note + that a Sequence Number is greater than if it is no more than + 2^^31-1 larger than the current Sequence Number (using serial + arithmetic). + + F1) When adding an IP address to an association, the IP address is + NOT considered fully added to the association until the ASCONF- + ACK arrives. This means that until such time as the ASCONF + containing the add is acknowledged, the sender MUST NOT use the + new IP address as a source for ANY SCTP packet except on + carrying an ASCONF Chunk. The receiver of the Add IP Address + + + + + + +Stewart, et al. Standards Track [Page 24] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + request may use the address as a destination immediately. The + receiver MUST use the path-verification procedure for the added + address before using that address. The receiver MUST NOT send + packets to the new address except for the corresponding ASCONF- + ACK Chunk or HEARTBEAT Chunks for path verification before the + new path is verified. If the ASCONF-ACK is sent to the new + address, it MAY be bundled with the HEARTBEAT chunk for path + verification. + + F2) After the ASCONF-ACK of an IP address Add arrives, the endpoint + MAY begin using the added IP address as a source address for any + type of SCTP chunk. + + F3a) If an endpoint receives an Error Cause TLV indicating that the + IP address Add or IP address Deletion parameters was not + understood, the endpoint MUST consider the operation failed and + MUST NOT attempt to send any subsequent Add or Delete requests + to the peer. + + F3b) If an endpoint receives an Error Cause TLV indicating that the + IP address Set Primary IP Address parameter was not understood, + the endpoint MUST consider the operation failed and MUST NOT + attempt to send any subsequent Set Primary IP Address requests + to the peer. + + F4) When deleting an IP address from an association, the IP address + MUST be considered a valid destination address for the reception + of SCTP packets until the ASCONF-ACK arrives and MUST NOT be + used as a source address for any subsequent packets. This means + that any datagrams that arrive before the ASCONF-ACK destined to + the IP address being deleted MUST be considered part of the + current association. One special consideration is that ABORT + Chunks arriving destined to the IP address being deleted MUST be + ignored (see Section 5.3.1 for further details). + + F5) An endpoint MUST NOT delete its last remaining IP address from + an association. In other words, if an endpoint is NOT multi- + homed, it MUST NOT use the delete IP address without an Add IP + Address preceding the delete parameter in the ASCONF Chunk. Or, + if an endpoint sends multiple requests to delete IP addresses, + it MUST NOT delete all of the IP addresses that the peer has + listed for the requester. + + + + + + + + + +Stewart, et al. Standards Track [Page 25] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + F6) An endpoint MUST NOT set an IP header source address for an SCTP + packet holding the ASCONF Chunk to be the same as an address + being deleted by the ASCONF Chunk. + + F7) If a request is received to delete the last remaining IP address + of a peer endpoint, the receiver MUST send an Error Cause TLV + with the Error Cause set to the new error code 'Request to + Delete Last Remaining IP Address'. The requested delete MUST + NOT be performed or acted upon, other than to send the ASCONF- + ACK. + + F8) If a request is received to delete an IP address that is also + the source address of the IP packet that contained the ASCONF + chunk, the receiver MUST reject this request. To reject the + request, the receiver MUST send an Error Cause TLV set to the + new error code 'Request to Delete Source IP Address' (unless + Rule F5 has also been violated, in which case the error code + 'Request to Delete Last Remaining IP Address' is sent). + + F9) If an endpoint receives an ADD IP Address request and does not + have the local resources to add this new address to the + association, it MUST return an Error Cause TLV set to the new + error code 'Operation Refused Due to Resource Shortage'. + + F10) If an endpoint receives an 'Out of Resource' error in response + to its request to ADD an IP address to an association, it must + either ABORT the association or not consider the address part of + the association. In other words, if the endpoint does not ABORT + the association, it must consider the add attempt failed and NOT + use this address since its peer will treat SCTP packets destined + to the address as Out Of The Blue packets. + + F11) When an endpoint receives an ASCONF to add an IP address sends + an 'Out of Resource' in its response, it MUST also fail any + subsequent add or delete requests bundled in the ASCONF. The + receiver MUST NOT reject an ADD and then accept a subsequent + DELETE of an IP address in the same ASCONF Chunk. In other + words, once a receiver begins failing any ADD or DELETE request, + it must fail all subsequent ADD or DELETE requests contained in + that single ASCONF. + + + + + + + + + + + +Stewart, et al. Standards Track [Page 26] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + F12) When an endpoint receives a request to delete an IP address that + is the current primary address, it is an implementation decision + as to how that endpoint chooses the new primary address. + + F13) When an endpoint receives a valid request to DELETE an IP + address, the endpoint MUST consider the address no longer part + of the association. It MUST NOT send SCTP packets for the + association to that address and it MUST treat subsequent packets + received from that address as Out Of The Blue. + + During the time interval between sending out the ASCONF and + receiving the ASCONF-ACK, it MAY be possible to receive DATA + Chunks out of order. The following examples illustrate these + problems: + + F14) All addresses added by the reception of an ASCONF Chunk MUST be + put into the UNCONFIRMED state and MUST have path verification + performed on them before the address can be used as described in + [RFC4960], Section 5.4. + + Endpoint-A Endpoint-Z + ---------- ---------- + ASCONF[Add-IP:X]------------------------------> + /--ASCONF-ACK + / + /--------/---New DATA: + / / Destination + <-------------------/ / IP:X + / + <--------------------------/ + + In the above example, we see a new IP address (X) being added to the + Endpoint-A. However, due to packet re-ordering in the network, a new + DATA chunk is sent and arrives at Endpoint-A before the ASCONF-ACK + confirms the add of the address to the association. + + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 27] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + A similar problem exists with the deletion of an IP address as + follows: + + Endpoint-A Endpoint-Z + ---------- ---------- + /------------New DATA: + / Destination + / IP:X + ASCONF [DEL-IP:X]---------/----------------> + <-----------------/------------------ASCONF-ACK + / + / + <-------------/ + + In this example, we see a DATA chunk destined to the IP:X (which is + about to be deleted) arriving after the deletion is complete. For + the ADD case, an endpoint SHOULD consider the newly added IP address + for the purpose of sending data to the association before the ASCONF- + ACK has been received. The endpoint MUST NOT source data from this + new address until the ASCONF-ACK arrives, but it may receive out-of- + order data as illustrated and MUST NOT treat this data as an OOTB + datagram (please see [RFC4960] section 8.4). It MAY drop the data + silently or it MAY consider it part of the association, but it MUST + NOT respond with an ABORT. + + For the DELETE case, an endpoint MAY respond to the late-arriving + DATA packet as an OOTB datagram or it MAY hold the deleting IP + address for a small period of time as still valid. If it treats the + DATA packet as OOTB, the peer will silently discard the ABORT (since + by the time the ABORT is sent, the peer will have removed the IP + address from this association). If the endpoint elects to hold the + IP address valid for a period of time, it MUST NOT hold it valid + longer than 2 RTO intervals for the destination being removed. + + + + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 28] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +5.3.1. A Special Case for OOTB ABORT Chunks + + Another case worth mentioning is illustrated below: + + Endpoint-A Endpoint-Z + ---------- ---------- + + New DATA:------------\ + Source IP:X \ + \ + ASCONF-REQ[DEL-IP:X]----\------------------> + \ /---------ASCONF-ACK + \ / + \----/-----------> OOTB + (Ignored <---------------------/-------------ABORT + by rule F4) / + <---------------------/ + + For this case, during the deletion of an IP address, an Abort MUST be + ignored if the destination address of the Abort message is that of a + destination being deleted. + +5.3.2. A Special Case for Changing an Address + + In some instances, the sender may only have one IP address in an + association that is being renumbered. When this occurs, the sender + may not be able to send the appropriate ADD/DELETE pair to the peer, + and may use the old address as a source in the IP header. For this + reason, the sender MUST fill in the Address Parameter field with an + address that is part of the association (in this case, the one being + deleted). This will allow the receiver to locate the association + without using the source address found in the IP header. + + The receiver of such a chunk MUST always first use the source address + found in the IP header in looking up the association. The receiver + should attempt to use the address found in the Address Parameter + field only if the lookup using the source address from the IP header + fails. The receiver MUST reply to the source address of the packet + in this case, which is the new address that was added by the ASCONF + (since the old address is no longer part of the association after + processing). + +5.4. Setting of the Primary Address + + A sender of the set primary parameter MAY elect to send this combined + with an add or delete of an address. A sender MUST only send a set + primary request to an address that is already considered part of the + association. In other words, if a sender combines a set primary with + + + +Stewart, et al. Standards Track [Page 29] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + an add new IP address request, the set primary will be discarded + unless the add request is to be processed BEFORE the set primary + (i.e., it precedes the set primary). + + A request to set primary MAY also appear in an INIT or INIT-ACK + chunk, which can give advice to the peer endpoint as to which of its + addresses the sender of the INIT or INIT-ACK would prefer as the + primary address. + + The request to set an address as the primary path is an option the + receiver SHOULD perform. It is considered advice to the receiver of + the best-destination address to use in sending SCTP packets (in the + requester's view). If a request arrives that asks the receiver to + set an address as primary that does not exist, the receiver SHOULD + NOT honor the request, leaving its existing primary address + unchanged. + +5.5. Bundling of Multiple ASCONFs + + In the normal case, a single ASCONF is sent in a packet and a single + reply ASCONF-ACK is received. However, in the event of the loss of + an SCTP packet containing either an ASCONF or ASCONF-ACK, it is + allowable for a sender to bundle additional ASCONFs in the + retransmission. In bundling multiple ASCONFs, the following rules + MUST be followed: + + 1. Previously transmitted ASCONF Chunks MUST be left unchanged. + + 2. Each SCTP packet containing ASCONF Chunks MUST be bundled + starting with the smallest ASCONF Sequence Number first in the + packet (closest to the Chunk header) and preceding in sequential + order from the lowest to highest ASCONF Sequence Number. + + 3. All ASCONFs within the packet MUST be adjacent to each other, + i.e., no other chunk type must separate the ASCONFs. + + 4. Each new ASCONF lookup address MUST be populated as if the + previous ASCONFs had been processed and accepted. + +6. Security Considerations + + The addition and or deletion of an IP address to an existing + association does provide an additional mechanism by which existing + associations can be hijacked. Therefore, this document requires the + use of the authentication mechanism defined in [RFC4895] to limit the + ability of an attacker to hijack an association. + + + + + +Stewart, et al. Standards Track [Page 30] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Hijacking an association by using the addition and deletion of an IP + address is only possible for an attacker who is able to intercept the + initial two packets of the association setup when the SCTP-AUTH + extension is used without pre-shared keys. If such a threat is + considered a possibility, then the [RFC4895] extension MUST be used + with a preconfigured shared endpoint pair key to mitigate this + threat. For a more detailed analysis, see [RFC4895]. + + When the address parameter in ASCONF chunks with Add, IP Delete IP, + or Set Primary IP parameters is a wildcard, the source address of the + packet is used. This address is not protected by SCTP-AUTH [RFC4895] + and an attacker can therefore intercept such a packet and modify the + source address. Even if the source address is not one presently an + alternate for the association, the identification of the association + may rely on the other information in the packet (perhaps the + verification tag, for example). An on-path attacker can therefore + modify the source address to its liking. + + If the ASCONF includes an Add IP with a wildcard address, the + attacker can add an address of its liking, which provides little + immediate damage but can set up later attacks. + + If the ASCONF includes a Delete IP with a wildcard address, the + attacker can cause all addresses but one of its choosing to be + deleted from an association. The address supplied by the attacker + must already belong to the association, which makes this more + difficult for the attacker. However, the sole remaining address + might be one that the attacker controls, for example, or can monitor, + etc. In the least, the sender and the deceived receiver would have + different ideas of what that sole remaining address would be. This + will eventually cause the association to fail, but in the meantime, + the deceived receiver could be transmitting packets to an address the + sender did not intend. + + If the ASCONF includes a Set Primary IP with a wildcard address, then + the attacker can cause an address to be used as a primary address. + This is limited to an address that already belongs to the + association, so the damage is limited. At least, the result would be + that the recipient is using a primary address that the sender did not + intend. However, if both a wildcard Add IP and a wildcard Set + Primary IP are used, then the attacker can modify the source address + to both add an address to its liking to the association and make it + the primary address. Such a combination would present the attacker + with an opportunity for more damage. + + + + + + + +Stewart, et al. Standards Track [Page 31] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Note that all these attacks are from an on-path attacker. Endpoints + that believe they face a threat from on-path attackers SHOULD NOT use + wildcard addresses in ASCONF Add IP, Delete IP, or Set Primary IP + parameters. + + If an SCTP endpoint that supports this extension receives an INIT + that indicates that the peer supports the ASCONF extension but does + NOT support the [RFC4895] extension, the receiver of such an INIT + MUST send an ABORT in response. Note that an implementation is + allowed to silently discard such an INIT as an option as well, but + under NO circumstance is an implementation allowed to proceed with + the association setup by sending an INIT-ACK in response. + + An implementation that receives an INIT-ACK that indicates that the + peer does not support the [RFC4895] extension MUST NOT send the + COOKIE-ECHO to establish the association. Instead, the + implementation MUST discard the INIT-ACK and report to the upper- + layer user that an association cannot be established destroying the + Transmission Control Block (TCB). + + Other types of attacks, e.g., bombing, are discussed in detail in + [RFC5062]. The bombing attack, in particular, is countered by the + use of a random nonce and is required by [RFC4960]. + + An on-path attacker can modify the INIT and INIT-ACK Supported + Extensions parameter (and authentication-related parameters) to + produce a denial of service. If the on-path attacker removes the + [RFC4895]-related parameters from an INIT that indicates it supports + the ASCONF extension, the association will not be established. If + the on-path attacker adds a Supported Extensions parameter mentioning + the ASCONF type to an INIT or INIT-ACK that does not carry any AUTH- + related parameters, the association will not be established. If the + on-path attacker removes the Supported Extensions parameter (or + removes the ASCONF type from that parameter) from the INIT or the + INIT-ACK, then the association will not be able to use the ADD-IP + feature. If the on-path attacker adds the Supported Extensions + parameter listing the ASCONF type to an INIT-ACK that did not carry + one (but did carry AUTH-related parameters), then the INIT sender may + use ASCONF where the INIT-ACK sender does not support it. This would + be discovered later if the INIT sender transmitted an ASCONF, but the + INIT sender could have made configuration choices at that point. As + the INIT and INIT-ACK are not protected by the AUTH feature, there is + no way to counter such attacks. Note however that an on-path + attacker capable of modifying the INIT and INIT-ACK would almost + certainly also be able to prevent the INIT and INIT-ACK from being + delivered or modify the verification tags or checksum to cause the + packet to be discarded, so the Supported Extensions adds little + additional vulnerability (with respect to preventing association + + + +Stewart, et al. Standards Track [Page 32] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + formation) to the SCTP protocol. The ability to prevent the use of + this new feature is an additional vulnerability to SCTP but only for + this new feature. + + The Adaptation Layer Indication is subject to corruption, insertion, + or deletion from the INIT and INIT-ACK chunks by an on-path attacker. + This parameter SHOULD be opaque to the SCTP protocol (see Section + 4.2.6), and so changes to the parameter will likely not affect the + SCTP protocol. However, any adaptation layer that is defined SHOULD + consider its own vulnerabilities in the Security Considerations + section of the RFC that defines its adaptation code point. + + The Set Primary IP Address parameter is subject to corruption, + insertion, or deletion by an on-path attacker when included in the + INIT and INIT-ACK chunks. The attacker could use this to influence + the receiver to choose an address to its own purposes (one over which + it has control, one that would be less desirable for the sender, + etc.). An on-path attacker would also have the ability to include or + remove addresses for the association from the INIT or INIT-ACK, so it + is not limited in the address it can specify in the Set Primary IP + Address. Endpoints that wish to avoid this possible threat MAY defer + sending the initial Set Primary request and wait until the + association is fully established before sending a fully protected + ASCONF with the Set Primary as its single parameter. + +7. IANA Considerations + + This document defines the following new SCTP parameters, chunks, and + errors (http://www.iana.org/assignments/sctp-parameters): + + o two new chunk types, + + o six parameter types, and + + o five new SCTP error causes. + + The chunk types with their assigned values are shown below. + + Chunk Type Chunk Name + -------------------------------------------------------------- + 0xC1 Address Configuration Change Chunk (ASCONF) + 0x80 Address Configuration Acknowledgment (ASCONF-ACK) + + + + + + + + + +Stewart, et al. Standards Track [Page 33] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + The parameter types are listed below: + + Parameter Type Parameter Name + ------------------------------------------------- + 0x8008 Supported Extensions + 0xC001 Add IP Address + 0xC002 Delete IP Address + 0xC003 Error Cause Indication + 0xC004 Set Primary Address + 0xC005 Success Indication + 0xC006 Adaptation Layer Indication + + The Error Causes are listed below: + + Cause Code + Value Cause Code + --------- ---------------- + 0x00A0 Request to Delete Last Remaining IP Address + 0x00A1 Operation Refused Due to Resource Shortage + 0x00A2 Request to Delete Source IP Address + 0x00A3 Association Aborted Due to Illegal ASCONF-ACK + 0x00A4 Request Refused - No Authorization + + This document also defines an adaptation code point. The adaptation + code point is a 32-bit integer that is assigned by IANA through an + IETF Consensus action as defined in [RFC2434]. For this new + registry, no initial values are being added by this document; + however, [RDDP] will add the first entry. + +8. Acknowledgments + + The authors would like to express a special note of thanks to Michael + Ramahlo and Phillip Conrad for their extreme efforts in the early + formation of this draft. + + The authors wish to thank Jon Berger, Mark Butler, Lars Eggert, + Janardhan Iyengar, Greg Kendall, Seok Koh, Salvatore Loreto, Peter + Lei, John Loughney, Sandy Murphy, Ivan Arias Rodriguez, Renee Revis, + Marshall Rose, Ronnie Sellars, Chip Sharp, and Irene Ruengeler for + their invaluable comments. + + The authors would also like to give special mention to Maria-Carmen + Belinchon and Ian Rytina for their early contributions to this + document and their thoughtful comments. + + And a special thanks to James Polk, abstract writer to the few but + lucky. + + + + +Stewart, et al. Standards Track [Page 34] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +9. References + +9.1. Normative References + + [RFC1122] Braden, R., "Requirements for Internet Hosts - + Communication Layers", STD 3, RFC 1122, October 1989. + + [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, + August 1996. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 2434, + October 1998. + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 2460, December 1998. + + [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol", + RFC 4960, September 2007. + + [RFC4895] Tuexen, M., Stewart, R., Lei, P., and E. Rescorla, + "Authenticated Chunks for the Stream Control Transmission + Protocol (SCTP)", RFC 4895, August 2007. + +9.2. Informative References + + [RFC5062] Stewart, R., Tuexen, M., and G. Camarillo, "Security + Attacks Found Against SCTP and Current Countermeasures", + RFC 5062, September 2007. + + [RDDP] Bestler, C. and R. Stewart, "Stream Control Transmission + Protocol (SCTP) Direct Data Placement (DDP) Adaptation", + Work in Progress, September 2006. + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 35] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +Appendix A. Abstract Address Handling + +A.1. General Remarks + + This appendix is non-normative. It is present to give the reader a + concise mathematical definition of an SCTP endpoint. The following + text provides a working definition of the endpoint notion to discuss + address reconfiguration. It is not intended to restrict + implementations in any way; its goal is to provide a set of + definitions only. Using these definitions should make a discussion + about address issues easier. + +A.2. Generalized Endpoints + + A generalized endpoint is a pair of a set of IP addresses and a port + number at any given point of time. The precise definition is as + follows: + + A generalized endpoint gE at time t is given by + + gE(t) = ({IP1, ..., IPn}, Port) + + where {IP1, ..., IPn} is a non-empty set of IP addresses. + + Please note that the dynamic addition and deletion of IP addresses + described in this document allows the set of IP addresses of a + generalized endpoint to be changed at some point of time. The port + number can never be changed. + + The set of IP addresses of a generalized endpoint gE at a time t is + defined as + + Addr(gE)(t) = {IP1, ..., IPn} + + if gE(t) = ({IP1, ..., IPn}, Port) holds at time t. + + The port number of a generalized endpoint gE is defined as + + Port(gE) = Port + + if gE(t) = ({IP1, ..., IPn}, Port) holds at time t. + + There is one fundamental rule that restricts all generalized + endpoints: + + For two different generalized endpoints gE' and gE'' with the same + port number Port(gE') = Port(gE''), the address sets Addr(gE')(t) and + Addr(gE'')(t) must be disjoint at every point in time. + + + +Stewart, et al. Standards Track [Page 36] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +A.3. Associations + + Associations consist of two generalized endpoints and the two address + sets known by the peer at any time. The precise definition is as + follows: + + An association A between two different generalized endpoints gE' and + gE'' is given by + + A = (gE', S', gE'', S'') + + where S'(t) and S''(t) are a set of addresses at any time t such that + S'(t) is a non-empty subset of Addr(gE')(t) and S''(t) is a non-empty + subset of Addr(gE'')(t). + + If A = (gE', S', gE'', S'') is an association between the generalized + endpoints gE' and gE'', the following notion is used: + + Addr(A, gE') = S' and Addr(A, gE'') = S''. + + If the dependency on time is important the notion Addr(A, gE')(t) = + S'(t) will be used. + + If A is an association between gE' and gE'', then Addr(A, gE') is the + subset of IP addresses of gE', which is known by gE'' and used by + gE'. + + Association establishment between gE' and gE'' can be seen as: + + 1. gE' and gE'' do exist before the association. + + 2. If an INIT has to be sent from gE' to gE'', address-scoping rules + and other limitations are applied to calculate the subset S' from + Addr(gE'). The addresses of S' are included in the INIT chunk. + + 3. If an INIT-ACK has to be sent from gE'' to gE', address-scoping + rules and other limitations are applied to calculate the subset + S'' from Addr(gE''). The addresses of S'' are included in the + INIT-ACK chunk. + + 4. After the handshake the association A = (gE', S', gE'', S'') has + been established. + + 5. Right after the association establishment Addr(A, gE') and + Addr(A, gE'') are the addresses that have been seen on the wire + during the handshake. + + + + + +Stewart, et al. Standards Track [Page 37] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +A.4. Relationship with RFC 4960 + + [RFC4960] defines the notion of an endpoint. This subsection will + show that these endpoints are also (special) generalized endpoints. + + [RFC4960] has no notion of address-scoping or other address-handling + limitations and provides no mechanism to change the addresses of an + endpoint. + + This means that an endpoint is simply a generalized endpoint that + does not depend on time. Neither the port nor the address list + changes. + + During association setup, no address-scoping rules or other + limitations will be applied. This means that for an association A + between two endpoints gE' and gE'', the following is true: + + Addr(A, gE') = Addr(gE') and Addr(A, gE'') = Addr(gE''). + +A.5. Rules for Address Manipulation + + The rules for address manipulation can now be stated in a simple way: + + 1. An address can be added to a generalized endpoint gE only if this + address is not an address of a different generalized endpoint + with the same port number. + + 2. An address can be added to an association A with generalized + endpoint gE if it has been added to the generalized endpoint gE + first. This means that the address must be an element of + Addr(gE) first and then it can become an element of Addr(A, gE). + But this is not necessary. If the association does not allow the + reconfiguration of the addresses only Addr(gE) can be modified. + + 3. An address can be deleted from an association A with generalized + endpoint gE as long as Addr(A, gE) stays non-empty. + + 4. An address can be deleted from an generalized endpoint gE only if + it has been removed from all associations having gE as a + generalized endpoint. + + These rules simply make sure that the rules for the endpoints and + associations given above are always fulfilled. + + + + + + + + +Stewart, et al. Standards Track [Page 38] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +Authors' Addresses + + Randall R. Stewart + Cisco Systems, Inc. + 4875 Forest Drive + Suite 200 + Columbia, SC 29206 + US + + Phone: + EMail: rrs@cisco.com + + + Qiaobing Xie + Motorola, Inc. + 1501 W. Shure Drive, 2-3C + Arlington Heights, IL 60004 + USA + + Phone: +1-847-632-3028 + EMail: Qiaobing.Xie@motorola.com + + + Michael Tuexen + Univ. of Applied Sciences Muenster + Stegerwaldstr. 39 + 48565 Steinfurt + Germany + + EMail: tuexen@fh-muenster.de + + + Shin Maruyama + Kyoto University + Yoshida-Honmachi + Sakyo-ku + Kyoto, Kyoto 606-8501 + JAPAN + + Phone: +81-75-753-7417 + EMail: mail@marushin.gr.jp + + + + + + + + + + +Stewart, et al. Standards Track [Page 39] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + + Masahiro Kozuka + Kyoto University + Yoshida-Honmachi + Sakyo-ku + Kyoto, Kyoto 606-8501 + JAPAN + + Phone: +81-75-753-7417 + EMail: ma-kun@kozuka.jp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 40] + +RFC 5061 SCTP Dynamic Address Reconfiguration September 2007 + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2007). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + + + + + + + + + + + + +Stewart, et al. Standards Track [Page 41] + |