blob: 97b06b4ef29a1b8c8b0bbce08306fd8c1cb32db9 [file] [log] [blame]
Neels Hofmeyrc4628a32018-12-07 14:47:34 +01001msc {
2 hscale=2;
3 bsca [label="BSC-A"], ai[label="MSC-I (at MSC-A)"], a[label="MSC-A"], bt[label="MSC-T (at MSC-B)"], bi[label="MSC-I (at MSC-B)"], bscb[label="BSC-B"],
4 ct[label="MSC-T (at MSC-C)"], bscc[label="BSC-C"];
5
6 ai note bt [label="'MSC-A,I,T' are explained in 3GPP TS 49.008 '4.3 Roles of MSC-A, MSC-I and MSC-T'"];
7 ai note ai [label="I = Internal; the MSC that does BSSMAP to the BSC (may change to a remote MSC-B after HO)"];
8 a note a [label="A = first; the MSC that has MM control (never changes)"];
9 bt note bi [label="B = second; the MSC that acts as BSS relay for MSC-A"];
10 bt note bt [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)"];
11
12 bsca => ai [label="BSSMAP Handover Required"];
13 ai -> a [label="BSSMAP Handover Required"];
14
15 a rbox a [label="MSC-A routes all MSC-T messages to remote MSC-B."];
16
17 a => bt [label="MAP Prepare Handover"];
18 a note bt [label="in Osmocom, MAP messages are actually sent as GSUP, to the HLR"];
19
20 bt rbox bt [label="MSC-B routes all MSC-A type messages back to MSC-A."];
21 bt rbox bt [label="MSC-B generates a Handover MSISDN"];
22
23 bt => bscb [label="BSSMAP Handover Request"];
24 bt <= bscb [label="BSSMAP Handover Request ACK"];
25 a <= bt [label="MAP Prepare Handover Response"];
26
27 a => bt [label="establish SIP call to Handover MSISDN via external MNCC"];
28
29 ai <- a [label="BSSMAP Handover Command"];
30 bsca <= ai [label="BSSMAP Handover Command"];
31
32 --- [label="MS sends RACH to new cell"];
33
34 bt <= bscb [label="BSSMAP Handover Detected"];
35 a <= bt [label="MAP Access Signaling Request"];
36
37 bt <= bscb [label="BSSMAP Handover Complete"];
38 a <= bt [label="MAP Send End Signal"];
39 bt rbox bt [label="MSC-B drops the generated Handover MSISDN"];
40
41 a abox a [label="MSC-A accepts the new MSC-B and BSC"];
42 ai note bt [label="previous MSC-I (A) gets dropped, MSC-T (B) becomes the new MSC-I"];
43 ai rbox a [label="MSC-A performs all MSC-I tasks via MAP at remote MSC-B's MSC-I."];
44 bt abox bi [label="MSC-I"];
45 ai abox ai [label="discard"];
46 bsca <= ai [label="BSSMAP Clear Command"];
47
48 ...;
49 ...;
50
51 --- [label="Another inter-MSC handover"];
52 a note bi [label="MSC-A remains in charge"];
53
54 bscb => bi [label="BSSMAP Handover Required"];
55 bi => a [label="BSSMAP Handover Required"];
56
57 a rbox a [label="MSC-A routes all MSC-T messages to remote MSC-C."];
58
59 a => ct [label="MAP Prepare Handover"];
60 ct rbox ct [label="MSC-C routes all MSC-A type messages back to MSC-A."];
61 ct => bscc [label="BSSMAP Handover Request"];
62 ct <= bscc [label="BSSMAP Handover Request ACK"];
63 a <= ct [label="MAP Prepare Handover Response"];
64 a => bi [label="MAP Prepare Handover Response"];
65 bscb <= bi [label="BSSMAP Handover Command"];
66
67 --- [label="MS sends RACH to new cell"];
68
69 ct <= bscc [label="BSSMAP Handover Detected"];
70 a <= ct [label="MAP Access Signaling Request"];
71
72 ct <= bscc [label="BSSMAP Handover Complete"];
73 a <= ct [label="MAP Send End Signal"];
74
75 a abox a [label="MSC-A accepts the new MSC-C and BSC"];
76 bi note ct [label="previous MSC-I (B) gets dropped, MSC-T (B) becomes the new MSC-I"];
77 ai rbox a [label="MSC-A performs all MSC-I tasks via MAP at remote MSC-C's MSC-I."];
78 ct abox ct [label="MSC-I"];
79 bi abox bi [label="discard"];
80 bscb <= bi [label="BSSMAP Clear Command"];
81
82}