170 likes | 346 Views
p2tFloorTaken. p2tReleaseFloor. timerREVOKE3. p2tFloorReleased && !checkStates. p2tREVOKE. p2tREQUEST. p2tRequestAnswered && collision. p2tFloorReleased. p2tRequestAnswered && (!collision ¦¦ collision && highestPrio). p2tREQUEST. p2tGetFloor.
E N D
p2tFloorTaken p2tReleaseFloor timerREVOKE3 p2tFloorReleased && !checkStates p2tREVOKE p2tREQUEST p2tRequestAnswered && collision p2tFloorReleased p2tRequestAnswered && (!collision ¦¦ collision && highestPrio) p2tREQUEST p2tGetFloor p2tRequestAnswered && collision && !highestPrio p2tRequestAnswered && !allAnswered() p2tRequestAnswered && !allAnswered() timerREVOKE1&2 p2tRequestAnswered && collision && prio p2tREQUEST p2tRequestAnswered && !collision timerRESEND p2tRELEASE a7: send GRANT a16: wait a6: send IDLE a1: send TAKEN a13: wait a10: send REQUEST a17: send IDLE a15: wait a5: start SoundListener a0: send REQUEST a2: send RELEASE a11: start timerRESEND a18: inform GUI a8: start timerRESEND a3: a9: send GRANT a19: send GRANT a12: send TAKEN a4: send GRANT a14: send REVOKE s3 s0 s5 s4 s1 s1 s7 s8 s9 listen idle listen_req resent release_pend terminated talk talk_req collision
p2tFloorReleased && !checkStates p2tRequestAnswered && !allAnswered() p2tREQUEST p2tREVOKE timerREVOKE3 p2tRequestAnswered && (!collision ¦¦ collision && highestPrio) p2tRELEASE p2tFloorTaken p2tReleaseFloor p2tGetFloor timerREVOKE1&2 p2tFloorReleased p2tREQUEST a15: wait a1: send TAKEN a19: send GRANT a18: inform GUI a17: send IDLE a2: send RELEASE a16: wait a0: send REQUEST a5: start SoundListener a14: send REVOKE a6: send IDLE a4: send GRANT a3: s5 s4 s1 s8 s3 s1 s0 s7 s9 talk collision terminated release_pend talk_req listen_req listen idle resent
p2tREQUEST p2tRequestAnswered && !allAnswered() p2tRequestAnswered && collision timerRESEND p2tRequestAnswered && collision && !highestPrio p2tRequestAnswered && !collision p2tRequestAnswered && collision && prio p2tGetFloor p2tFloorTaken a11: start timerRESEND a10: send REQUEST a12: send TAKEN a9: send GRANT a0: send REQUEST a5: start SoundListener a7: send GRANT a8: start timerRESEND a13: wait s5 s4 s3 s9 s1 s0 s7 s8 s1 talk collision release_pend talk_req listen_req listen idle resent terminated
p2tTerminate p2tTerminate p2tTerminate p2tTerminate p2tTerminate p2tTerminate p2tTerminate p2tTerminate a87: a80: a82: a81: a84: a86: a85: a83: s9 s0 s1 s1 s7 s4 s5 s8 s3 resent talk_req collision listen_req terminated listen idle talk release_pend
timerGetFloorTERMINATE p2tREQUEST p2tTerminate p2tGRANT timerGetFloorTERMINATE p2tSendRequest p2tGRANT timerGetTIMEOUT timerGRANT p2tREQUEST a4: report unavailable a1: send REQUEST a7: a6: terminate a8: a2: report granted a3: report collision a9: terminate a5: terminate a0: send REQUEST s3 s0 s2 s1 start req_sent terminated completed RtcpTransactionGetFloor timerGRANT: exponential backoff timerGetTIMEOUT: fixed value timerGetFloorTERMINATE: fixed value
timerTAKEN timerGrantFloorTERMINATE p2tSendGrant p2tTAKEN p2tREQUEST timerGrantFloorTERMINATE p2tTAKEN a1: report taken a0: send GRANT a4: terminate a2: send GRANT a5: send GRANT a6: a3: terminate s3 s2 s1 s0 completed grant_sent start terminated TransactionGrantFloor timerTAKEN: exponential backoff timerGrantFloorTERMINATE: fixed value
timerRelFloorTERMINATE timerRelFloorTERMINATE p2tIDLE timerRelTIMEOUT p2tReleaseFloor p2tIDLE timerIDLE a3: report unavailable a5: terminate a4: terminate a1: send RELEASE a6: a0: send RELEASE a2: report idle s2 s0 s1 s3 rel_sent completed start terminated TransactionReleaseFloor exponential backoff timerIDLE: timerRelTIMEOUT: fixed value fixed value timerRelFloorTERMINATE:
timerIdleFloorTERMINATE p2tRELEASE p2tReleaseFloor p2tSendTaken p2tGRANT timerTakenFloorTERMINATE a1: send TAKEN a1: send IDLE a0: send IDLE a0: send TAKEN a2: a2: s1 s2 s0 s0 s1 s2 start terminated idle_sent terminated taken_sent start TransactionIdleFloor TransactionTakenFloor timerIdleFloorTERMINATE: fixed value timerIdleFloorTERMINATE: fixed value
RtcpTransactionGetFloor RtcpTransactionGetFloor RtcpTransactionGrantFloor RtcpTransactionGrantFloor RtcpTransactionTakenFloor RtcpTransactionTakenFloor RtcpTransactionReleaseFloor RtcpTransactionReleaseFloor RtcpTransactionIdleFloor RtcpTransactionIdleFloor GroupListServer Sip SipDialogContainer SipDialogP2T SipDialogP2Tuser SipDialogP2Tuser RtcpSender RtcpReceiver SoundSender SoundReceiver GroupListClient GroupList GroupListUserElement
0 2 3 8 16 31 P subtype V=2 PT=APP=204 length SSRC/CSRC name (ASCII) application-dependent data … RTCP APP 0 2 3 8 16 31 V=2 P subtype=0 PT=APP=204 length SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number collision counter SDES item CNAME RTCP APP FLOOR REQUEST
0 2 3 8 16 31 V=2 P subtype=1 PT=APP=204 length SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number collision counter SDES item CNAME RTCP APP FLOOR GRANT 0 2 3 8 16 31 V=2 P subtype=2 PT=APP=204 length=3 SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number padding RTCP APP FLOOR TAKEN 0 2 3 8 16 31 V=2 P subtype=3 PT=APP=204 length=3 SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number reason code RTCP APP FLOOR DENY
0 2 3 8 16 31 V=2 P subtype=4 PT=APP=204 length=3 SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number padding RTCP APP FLOOR RELEASE 0 2 3 8 16 31 V=2 P subtype=5 PT=APP=204 length=3 SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number padding RTCP APP FLOOR IDLE 0 2 3 8 16 31 V=2 P subtype=6 PT=APP=204 length=3 SSRC/CSRC of UA name (ASCII) = „P2T_“ sequence number warning code RTCP APP FLOOR REVOKE
Alice Bob Alice Clark Alice Clark Bob Bob Alice Clark Bob Clark ringing ringing ringing ringing ?
Network SipMessageTransport GUI Sip MessageRouter SIP message SipSMCommand SipSMCommand SipSMCommand
Sip SipDialogContainer SipSMCommand-Queue SipDialog SipDialog DefaultDialogHandler … SipTransaction SipTransaction SipTransaction
UA 1 UA 2 UA 3 UA 4 Router Minisip Minisip Minisip Minisip NISTNetwork Emulation SIP Registrar Server 192.168.1.0/24 LAN2 192.168.0.0/24 LAN1