A method and system are shown for handing off a communication stream
between a mobile node and a communication endpoint from a first
connection initiator to a second connection initiator while maintaining
call state for the communication stream. The first connection initiator
establishes a first connection to the communication endpoint in response
to receiving a first connection request from the mobile node that
includes a client identifier value for the mobile node. When the first
connection initiator detects loss of communication with the mobile node,
it sends a call-disconnect-notify (CDN) message having a cause code set
to a handoff value to the connection endpoint. The connection endpoint,
in response to the CDN message, stores call information for the first
connection along with the mobile node's client identifier value. The
first connection initiator also broadcasts a user-moved message that
includes the mobile node's client identifier value and the first
connection initiator's call information for the first connection. The
second connection initiator, upon receiving the user-moved message,
stores the first connection initiator's call information from the message
along with the mobile node's client identifier value. When the second
connection initiator receives a second connection request from the mobile
node having the mobile node's client identifier value, it retrieves the
call information from the user-moved message using the client identifier
value and sends a tunnel-handoff-request message, which includes the
client identifier value, to the connection endpoint. The connection
endpoint retrieves its call information for the first connection using
the client identifier value and sends a tunnel-handoff-response message
to the second connection initiator. The second connection initiator and
the connection endpoint then resume the communication stream using the
call information for the first connection.