1
|
|
2
|
|
3
|
== Messages we did not rule out in our meeting: ==
|
4
|
These are the messages we did not explicitly mentioned as not relevant in
|
5
|
our meeting. The messages marked with a + are verified to be used RX or TX
|
6
|
by osmo-bsc. From that we can deduct that these messages are the ones that
|
7
|
we are interested in.
|
8
|
|
9
|
+ASSIGNMENT REQUEST
|
10
|
+ASSIGNMENT COMPLETE
|
11
|
+ASSIGNMENT FAILURE
|
12
|
CHANNEL MODIFY REQUEST
|
13
|
+CLEAR COMMAND
|
14
|
+CLEAR COMPLETE
|
15
|
+CLEAR REQUEST
|
16
|
RESOURCE REQUEST
|
17
|
+RESET
|
18
|
+RESET ACK
|
19
|
RESOURCE INDICATION
|
20
|
+PAGING
|
21
|
+CLASSMARK UPDATE
|
22
|
CLASSMARK REQUEST
|
23
|
+CIPHER MODE COMMAND
|
24
|
+CIPHER MODE COMPLETE
|
25
|
+CIPHER MODE REJECT
|
26
|
+COMPLETE LAYER 3 INFORMATION
|
27
|
+SAPI "N" REJECT
|
28
|
RESET CIRCUIT
|
29
|
RESET CIRCUIT ACKNOWLEDGE
|
30
|
CONFUSION
|
31
|
UNEQUIPPED CIRCUIT
|
32
|
LOAD INDICATION
|
33
|
SUSPEND
|
34
|
RESUME
|
35
|
CHANGE CIRCUIT
|
36
|
CHANGE CIRCUIT ACKNOWLEDGE
|
37
|
COMMON ID
|
38
|
LSA INFORMATION
|
39
|
CONNECTION ORIENTED INFORMATION
|
40
|
PERFORM LOCATION REQUEST
|
41
|
PERFORM LOCATION RESPONSE
|
42
|
PERFORM LOCATION ABORT
|
43
|
CONNECTIONLESS INFORMATION
|
44
|
EMERGENCY RESET INDICATION
|
45
|
EMERGENCY RESET COMMAND
|
46
|
RESET RESOURCE
|
47
|
RESET RESOURCE ACKNOWLEDGE
|
48
|
|
49
|
(+ means, message is actually used in osmo-bsc)
|
50
|
|
51
|
|
52
|
|
53
|
|
54
|
== Messages we actually use in osmo-bsc ==
|
55
|
This is a rough overview how osmo-bsc processes incoming messages and how it
|
56
|
generates messages.
|
57
|
|
58
|
in osmo_bsc_bssap.c:
|
59
|
RX:BSS_MAP_MSG_RESET_ACKNOWLEDGE (no response, only prints log line)
|
60
|
RX:BSS_MAP_MSG_PAGING (no response)
|
61
|
RX:BSS_MAP_MSG_CLEAR_CMD => CALL:gsm0808_create_clear_complete() => TX:BSS_MAP_MSG_CLEAR_COMPLETE
|
62
|
RX:BSS_MAP_MSG_CIPHER_MODE_CMD => CALL:gsm0808_create_cipher_reject() => on error: TX:BSS_MAP_MSG_CIPHER_MODE_REJECT on success: (no response)
|
63
|
RX:BSS_MAP_MSG_ASSIGMENT_RQST => CALL:gsm0808_create_assignment_failure() => on error: TX:BSS_MAP_MSG_ASSIGMENT_FAILURE on success: (no response)
|
64
|
|
65
|
in osmo_bsc_api.c:
|
66
|
CALL:sapi_n_reject() => CALL:gsm0808_create_sapi_reject() => TX:BSS_MAP_MSG_SAPI_N_REJECT
|
67
|
CALL:cipher_mode_compl() => CALL:gsm0808_create_cipher_complete() => TX:BSS_MAP_MSG_CIPHER_MODE_COMPLETE
|
68
|
CALL:compl_l3() => CALL:gsm0808_create_layer3() => TX:BSS_MAP_MSG_COMPLETE_LAYER_3 (what happens in case of failure?)
|
69
|
CALL:assign_compl() => CALL:gsm0808_create_assignment_completed() => TX:BSS_MAP_MSG_ASSIGMENT_COMPLETE
|
70
|
CALL:assign_fail() => CALL:gsm0808_create_assignment_failure() => TX:BSS_MAP_MSG_ASSIGMENT_FAILURE
|
71
|
CALL:clear_request() => CALL:gsm0808_create_clear_rqst() => TX:BSS_MAP_MSG_CLEAR_RQST
|
72
|
CALL:classmark_chg() => CALL:gsm0808_create_classmark_update() => TX:BSS_MAP_MSG_CLASSMARK_UPDATE
|
73
|
|
74
|
in osmo_bsc_msc.c
|
75
|
... => CALL:gsm0808_create_reset() => BSS_MAP_MSG_RESET
|
76
|
|
77
|
We do not use (RX only):
|
78
|
gsm0808_create_reset_ack() => BSS_MAP_MSG_RESET_ACKNOWLEDGE
|
79
|
gsm0808_create_clear_command() => BSS_MAP_MSG_CLEAR_CMD
|
80
|
|
81
|
|
82
|
|
83
|
|
84
|
== Messages we have to patch: ==
|
85
|
To make osmo-bsc AoIP compliant, the following messages have to be patched
|
86
|
(extended) to support the new AoIP fields:
|
87
|
|
88
|
+ASSIGNMENT REQUEST (BSS_MAP_MSG_ASSIGMENT_RQST, rx only, osmo_bsc_bssap.c)
|
89
|
=> Gets new fields: AoIP Transport Layer Address (MGW), Codec List (MSC Preferred), Call Identifier
|
90
|
+ASSIGNMENT COMPLETE (BSS_MAP_MSG_ASSIGMENT_COMPLETE, gsm0808_create_assignment_completed()) (test exists)
|
91
|
=> Gets new fields: AoIP Transport Layer Address (BSS), Speech Codec (Chosen)
|
92
|
+ASSIGNMENT FAILURE (BSS_MAP_MSG_ASSIGMENT_FAILURE, gsm0808_create_assignment_failure()) (test exists)
|
93
|
=> Codec List (BSS Supported)
|
94
|
CLEAR COMMAND
|
95
|
CLEAR COMPLETE
|
96
|
CLEAR REQUEST
|
97
|
RESET
|
98
|
RESET ACK
|
99
|
PAGING
|
100
|
CLASSMARK UPDATE
|
101
|
CIPHER MODE COMMAND
|
102
|
CIPHER MODE COMPLETE
|
103
|
CIPHER MODE REJECT
|
104
|
+COMPLETE LAYER 3 INFORMATION (BSS_MAP_MSG_COMPLETE_LAYER_3, gsm0808_create_layer3()) (test exists)
|
105
|
=> Gets new fields: Codec List (BSS Supported)
|
106
|
SAPI "N" REJECT
|
107
|
|
108
|
(+ means, message needs to be patched)
|
109
|
|
110
|
|
111
|
== Messages the MSC sends: (do we have a create function for each message?) ==
|
112
|
In case we also want to cover the MSC role, the following messeages are needed.
|
113
|
The list has been deducted from the messages our BSC is capable to receive.
|
114
|
|
115
|
For the following messages, a create function exists:
|
116
|
gsm0808_create_reset_ack() => BSS_MAP_MSG_RESET_ACKNOWLEDGE
|
117
|
gsm0808_create_clear_command() => BSS_MAP_MSG_CLEAR_CMD
|
118
|
|
119
|
The following messages do not have a create function yet:
|
120
|
BSS_MAP_MSG_PAGING
|
121
|
Fields:
|
122
|
IMSI
|
123
|
[GSM0808_IE_IMSI] = { TLV_TYPE_TLV },
|
124
|
TMSI
|
125
|
[GSM0808_IE_TMSI] = { TLV_TYPE_TLV },
|
126
|
Cell Identifier List
|
127
|
[GSM0808_IE_CELL_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
|
128
|
Channel Needed
|
129
|
[GSM0808_IE_CHANNEL_NEEDED] = { TLV_TYPE_TV },
|
130
|
eMLPP Priority
|
131
|
[GSM0808_IE_EMLPP_PRIORITY] = { TLV_TYPE_TV },
|
132
|
Paging Information
|
133
|
[GSM0808_IE_PAGING_INFO] = { TLV_TYPE_TV },
|
134
|
|
135
|
BSS_MAP_MSG_CIPHER_MODE_CMD
|
136
|
Fields:
|
137
|
Layer 3 Header Information
|
138
|
[GSM0808_IE_LAYER_3_HEADER_INFORMATION] = { TLV_TYPE_TLV },
|
139
|
Encryption Information
|
140
|
[GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV },
|
141
|
Cipher Response Mode
|
142
|
[GSM0808_IE_CIPHER_RESPONSE_MODE] = { TLV_TYPE_TV },
|
143
|
|
144
|
BSS_MAP_MSG_ASSIGMENT_RQST Does not exist yet! (contains AoIP fields!)
|
145
|
Channel Type
|
146
|
+[GSM0808_IE_CHANNEL_TYPE] = { TLV_TYPE_TLV },
|
147
|
Layer 3 Header Information
|
148
|
-[GSM0808_IE_LAYER_3_HEADER_INFORMATION]= { TLV_TYPE_TLV },
|
149
|
Priority
|
150
|
-[GSM0808_IE_PRIORITY] = { TLV_TYPE_TLV },
|
151
|
Circuit Identity Code
|
152
|
+[GSM0808_IE_CIRCUIT_IDENTITY_CODE] = { TLV_TYPE_FIXED, 2 },
|
153
|
Downlink DTX Flag
|
154
|
-[GSM0808_IE_DOWNLINK_DTX_FLAG] = { TLV_TYPE_TV },
|
155
|
Interference Band To Be Used
|
156
|
-[GSM0808_IE_INTERFERENCE_BAND_TO_USE] = { TLV_TYPE_TV },
|
157
|
Classmark Information 2
|
158
|
-[GSM0808_IE_CLASSMARK_INFORMATION_T2] = { TLV_TYPE_TLV },
|
159
|
field also used by gsm0808_create_classmark_update()
|
160
|
parameter list: const uint8_t *cm2, uint8_t cm2_len
|
161
|
Group Call Reference
|
162
|
-[GSM0808_IE_GROUP_CALL_REFERENCE] = { TLV_TYPE_TLV },
|
163
|
Talker Flag
|
164
|
-[GSM0808_IE_TALKER_FLAG] = { TLV_TYPE_T },
|
165
|
Configuration Evolution Indication
|
166
|
-[GSM0808_IE_CONFIG_EVO_INDI] = { TLV_TYPE_TV },
|
167
|
LSA Access Control Suppression
|
168
|
-[GSM0808_IE_LSA_ACCESS_CTRL_SUPPR] = { TLV_TYPE_TV },
|
169
|
Service Handover
|
170
|
-[GSM0808_IE_SERVICE_HANDOVER] = { TLV_TYPE_TLV },
|
171
|
Encryption Information
|
172
|
-[GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV },
|
173
|
Talker Priority
|
174
|
-[GSM0808_IE_TALKER_PRIORITY] = { TLV_TYPE_TV },
|
175
|
AoIP Transport Layer Address (MGW)
|
176
|
#[GSM0808_IE_AOIP_TRASP_ADDR] = { TLV_TYPE_TLV },
|
177
|
Codec List (MSC Preferred)
|
178
|
#[GSM0808_IE_SPEECH_CODEC_LIST] = { TLV_TYPE_TLV },
|
179
|
Call Identifier
|
180
|
#[GSM0808_IE_CALL_ID] = { TLV_TYPE_FIXED, 4 },
|
181
|
|
182
|
|
183
|
(Fields marked with + are understood by our BSC, fields marked with - are
|
184
|
exlicitly ignored, unmarked fields are not checked, fields marked with #
|
185
|
are not yet understood by the BSC, but will be needed to support AoIP)
|
186
|
|
187
|
|
188
|
|
189
|
|
190
|
|
191
|
|
192
|
|