Initiator Responder --------- --------- listen_negotiate() \ Await request request_negotiate() M_REQ_NEG -> negotiate_step() \ Open session, <- M_NEGOTIATE / start negotiation negotiate_step() M_NEGOTIATE -> negotiate_step() \ Continue <- M_NEGOTIATE / negotiation ... negotiate_wait() \ Insert M_WAIT -> / delay negotiate_step() M_NEGOTIATE -> negotiate_step() \ Continue <- M_NEGOTIATE / negotiation negotiate_step() M_NEGOTIATE -> end_negotiate() \ End <- M_END / negotiation \ Process results