DupInitInCookieWait2.seq - Duplicate INIT chunk is received in COOKIE-WAIT state (MUST NOT change state)
To check that if INIT chunk is received in COOKIE-WAIT state then the endpoint should respond with an INIT-ACK using the same parameters it sent in its original INIT chunk. After that, the endpoint MUST NOT change its state, the T1-init timer shall be left running.
./DupInitInCookieWait2.seq [-tooloption ...] -pkt ./DupInitInCookieWait2.def -tooloption : v6eval tool option See Also: ../common/STD_PKT_COMMON.def ../common/SCTP_COMMON.def
Association not established between endpoint A and B. Also arrange the data in endpoint B such that upper layers send Associate primitive to startup an association with endpoint A.
Endpoint A Endpoint B ULP (CLOSED) (CLOSED)
<----- Associate <----------------- INIT
INIT ----------------->
<----------------- INIT-ACK
<----------------- INIT (retransmit) INIT-ACK ----------------->
<----------------- COOKIE-ECHO
COOKIE-ACK -----------------> Communication Up ---------->
TEST DESCRIPTION:
1. Start normal association procedure by sending associate primitive from ULP in endpoint B and from ULP in endpoint A at the same time. Record the message sequence using a signal emulator. 2. Check A: After send INIT-ACK, the endpoint B MUST NOT change its state. 3. Check B: Association is established.
None
RFC 4960
5.2.1. INIT Received in COOKIE-WAIT or COOKIE-ECHOED State (Item B)
This usually indicates an initialization collision, i.e., each endpoint is attempting, at about the same time, to establish an association with the other endpoint.
Upon receipt of an INIT in the COOKIE-WAIT state, an endpoint MUST respond with an INIT ACK using the same parameters it sent in its original INIT chunk (including its Initiate Tag, unchanged). When responding, the endpoint MUST send the INIT ACK back to the same address that the original INIT (sent by this endpoint) was sent.
Upon receipt of an INIT in the COOKIE-ECHOED state, an endpoint MUST respond with an INIT ACK using the same parameters it sent in its original INIT chunk (including its Initiate Tag, unchanged), provided that no NEW address has been added to the forming association. If the INIT message indicates that a new address has been added to the association, then the entire INIT MUST be discarded, and NO changes should be made to the existing association. An ABORT SHOULD be sent in response that MAY include the error 'Restart of an association with new addresses'. The error SHOULD list the addresses that were added to the restarting association.
When responding in either state (COOKIE-WAIT or COOKIE-ECHOED) with an INIT ACK, the original parameters are combined with those from the newly received INIT chunk. The endpoint shall also generate a State Cookie with the INIT ACK. The endpoint uses the parameters sent in its INIT to calculate the State Cookie.
After that, the endpoint MUST NOT change its state, the T1-init timer shall be left running, and the corresponding TCB MUST NOT be destroyed. The normal procedures for handling State Cookies when a TCB exists will resolve the duplicate INITs to a single association.
For an endpoint that is in the COOKIE-ECHOED state, it MUST populate its Tie-Tags within both the association TCB and inside the State Cookie (see Section 5.2.2 for a description of the Tie-Tags).