Connecting to the Peer

When the upper layer requests that the protocol initiate a connection to a remote peer, it passes the address of the remote peer to connect to, and the initiator MUST:

  • Create a new Connection.

  • Set Connection.Role to "ACTIVE".

  • Use implementation-specific means to create a new Connection.Endpoint.

  • Determine an initial value for Connection.ReceiveCreditMax, Connection.SendCreditTargetConnection.MaxSendSize, Connection.MaxFragmentedRecvSize, Connection.MaxReceiveSize and Connection.KeepaliveInterval.<2>

  • Set Connection.MaxReadWriteSize to 0.

  • Set Connection.KeepaliveRequested to "NONE".

  • Set Connection.Protocol, Connection.SendCredits, Connection.ReceiveCredits, and Connection.FragmentReassemblyRemaining to 0.

  • Set Connection.SendQueue, Connection.FragmentReassemblyBuffer, and Connection.InvalidatedToken to empty.

  • Set Connection.SendImmediate to FALSE.

  • Start a Negotiation Timer of 120 seconds.

  • Post one receive buffer of at least 512 bytes.

  • Request a connection to the specified remote peer.

If the connection request fails, the resulting error MUST be returned to the upper layer. If the connection request succeeds, the initiator MUST send a Negotiate Request message as specified in section

If the negotiation is successful, an implementation-defined representation of the Connection is returned to the upper layer as specified in section If unsuccessful, an implementation-specific local error is returned.