| msc { |
| hscale=2; |
| bsca [label="BSC-A"], i[label="MSC-I"], a[label="MSC-A"], t[label="MSC-T"], bscb[label="BSC-B"]; |
| |
| i note t [label="'MSC-A,I,T' are explained in 3GPP TS 49.008 '4.3 Roles of MSC-A, MSC-I and MSC-T'"]; |
| i note i [label="I = Internal; the MSC that does BSSMAP to the BSC (may change to a remote MSC-B after HO)"]; |
| a note a [label="A = first; the MSC that has MM control BSSMAP to the BSC (never changes)"]; |
| t note t [label="T = transitory; the MSC that a handover is going towards (may be MSC-A for inter-BSC HO, may be a remote MSC-B)"]; |
| |
| bsca => i [label="BSSMAP Handover Required"]; |
| i -> a [label="BSSMAP Handover Required"]; |
| |
| a -> t [label="MAP Prepare Handover"]; |
| t => bscb [label="BSSMAP Handover Request"]; |
| t <= bscb [label="BSSMAP Handover Request ACK"]; |
| a <- t [label="MAP Prepare Handover Response"]; |
| i <- a [label="MAP Prepare Handover Response"]; |
| bsca <= i [label="BSSMAP Handover Command"]; |
| |
| --- [label="MS sends RACH to new cell"]; |
| |
| t <= bscb [label="BSSMAP Handover Detected"]; |
| a <- t [label="MAP Access Signaling Request"]; |
| |
| t <= bscb [label="BSSMAP Handover Complete"]; |
| a <- t [label="MAP Send End Signal"]; |
| |
| |
| a abox a [label="MSC-A accepts the new BSC"]; |
| i note t [label="previous MSC-I gets dropped, MSC-T becomes the new MSC-I"]; |
| i abox i [label="discard"]; |
| t abox t [label="MSC-I"]; |
| |
| bsca <= i [label="BSSMAP Clear Command"]; |
| |
| } |