gbproxy: Improve NSEI/... numbering and improve paging test coverage

With this setup we can and do now test:
* Paging a LAI on BVC0 is sent once per matching NSE
* Paging a LAI on BVC0 is sent to multiple different matching NSE
* Paging a RA ID on BVC0 is sent once per matching NSE
* Paging a RA ID on BVC0 is sent to multiple different matching NSE

Change-Id: I698a932b3dc78c776e9350283109463bcdc40e6b
Related: SYS#5226
This commit is contained in:
Daniel Willmann 2020-12-01 10:54:08 +01:00 committed by laforge
parent f259021a24
commit 2c9300fd28
3 changed files with 147 additions and 48 deletions

View File

@ -20,7 +20,7 @@ GBProxy_Tests.mp_nsconfig_sgsn := {
GBProxy_Tests.mp_nsconfig_pcu := {
{
nsei := 1,
nsei := 2001,
role_sgsn := false,
handle_sns := false,
nsvc := {
@ -58,30 +58,56 @@ GBProxy_Tests.mp_nsconfig_pcu := {
nsvci := 4
}
}
}
}
GBProxy_Tests.mp_gbconfigs := {
{
nsei := 1,
sgsn_role := false,
bvc := {
{
bvci := 196,
cell_id := {
ra_id := {
lai := {
mcc_mnc := '262F42'H,
lac := 13135
},
rac := 0
},
cell_id := 20960
},
depth := BSSGP_DECODE_DEPTH_BSSGP
}
},
{
nsei := 2002,
role_sgsn := false,
handle_sns := false,
nsvc := {
{
provider := {
fr := {
netdev := "hdlc5",
dlci := 20
}
},
nsvci := 5
}, {
provider := {
fr := {
netdev := "hdlc6",
dlci := 21
}
},
nsvci := 6
}
}
};
},
{
nsei := 2003,
role_sgsn := false,
handle_sns := false,
nsvc := {
{
provider := {
fr := {
netdev := "hdlc7",
dlci := 22
}
},
nsvci := 7
}, {
provider := {
fr := {
netdev := "hdlc8",
dlci := 23
}
},
nsvci := 8
}
}
}
}
[MAIN_CONTROLLER]

View File

@ -44,7 +44,7 @@ const BcdMccMnc c_mcc_mnc := '262F42'H;
const integer max_fr_info_size := 1600;
modulepar {
/* IP/port on which we run our internal GSUP/HLR emulation */
/* SGSN NS configuration */
NSConfigurations mp_nsconfig_sgsn := {
{
nsei := 101,
@ -66,9 +66,12 @@ modulepar {
}
}
};
/* BSS NSEI start at 2000 + x
* NSVCI start from value of NSEI + 100
* UDP port is NSVCI * 10 */
NSConfigurations mp_nsconfig_pcu := {
{
nsei := 96,
nsei := 2001,
role_sgsn := false,
handle_sns := false,
nsvc := {
@ -82,12 +85,12 @@ modulepar {
remote_ip := "127.0.0.1"
}
},
nsvci := 97
nsvci := 2101
}
}
},
{
nsei := 97,
nsei := 2002,
role_sgsn := false,
handle_sns := false,
nsvc := {
@ -95,18 +98,18 @@ modulepar {
provider := {
ip := {
address_family := AF_INET,
local_udp_port := 21011,
local_udp_port := 21020,
local_ip := "127.0.0.1",
remote_udp_port := 23000,
remote_ip := "127.0.0.1"
}
},
nsvci := 98
nsvci := 2102
}
}
},
{
nsei := 98,
nsei := 2003,
role_sgsn := false,
handle_sns := false,
nsvc := {
@ -114,24 +117,33 @@ modulepar {
provider := {
ip := {
address_family := AF_INET,
local_udp_port := 21012,
local_udp_port := 21030,
local_ip := "127.0.0.1",
remote_udp_port := 23000,
remote_ip := "127.0.0.1"
}
},
nsvci := 99
nsvci := 2103
}
}
}
};
/* BVCI are NSEI*10 + x
* The first NSE only has one BVC, the second one 2 and so on
* The Cell ID is BVCI + 10000
* LAC/RAC are configured in such a way that:
* LAC 13135 is present once in NSE(2001), twice in NSE(2002) and once in NSE(2003)
* LAC 13300 is present twice in NSE(2003)
* RAI 13135-1 is present in NSE(2002) and NSE(2003)
* RAI 13300-0 is present twice in NSE(2003)
*/
BssgpConfigs mp_gbconfigs := {
{
nsei := 96,
nsei := 2001,
sgsn_role := false,
bvc := {
{
bvci := 196,
bvci := 20011,
cell_id := {
ra_id := {
lai := {
@ -140,18 +152,18 @@ modulepar {
},
rac := 0
},
cell_id := 20960
cell_id := 30011
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
}
}
}, {
nsei := 97,
nsei := 2002,
sgsn_role := false,
bvc := {
{
bvci := 210,
bvci := 20021,
cell_id := {
ra_id := {
lai := {
@ -160,18 +172,48 @@ modulepar {
},
rac := 1
},
cell_id := 20961
cell_id := 30021
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
},
{
bvci := 20022,
cell_id := {
ra_id := {
lai := {
mcc_mnc := c_mcc_mnc,
lac := 13135
},
rac := 2
},
cell_id := 30022
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
}
}
}, {
nsei := 98,
nsei := 2003,
sgsn_role := false,
bvc := {
{
bvci := 220,
bvci := 20031,
cell_id := {
ra_id := {
lai := {
mcc_mnc := c_mcc_mnc,
lac := 13135
},
rac := 1
},
cell_id := 30031
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
},
{
bvci := 20032,
cell_id := {
ra_id := {
lai := {
@ -180,7 +222,22 @@ modulepar {
},
rac := 0
},
cell_id := 20962
cell_id := 30032
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
},
{
bvci := 20033,
cell_id := {
ra_id := {
lai := {
mcc_mnc := c_mcc_mnc,
lac := 13300
},
rac := 0
},
cell_id := 30033
},
depth := BSSGP_DECODE_DEPTH_BSSGP,
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
@ -1354,8 +1411,13 @@ testcase TC_paging_ps_sig_bss() runs on test_CT {
/* PS-PAGING on SIG-BVC for Location Area */
private function f_TC_paging_ps_sig_lac(charstring id) runs on BSSGP_ConnHdlr
{
/* Both PCU index 0 and 1 have a BVC within the LAC */
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1});
/* The first LAC (13135) is shared by all three NSEs */
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1, 2});
/* Reset state */
g_roi := {};
/* Make LAC (13300) available on pcu index 2 */
f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[2].cell_id.ra_id.lai), 0, {2});
}
testcase TC_paging_ps_sig_lac() runs on test_CT {
var BSSGP_ConnHdlr vc_conn;
@ -1389,8 +1451,15 @@ testcase TC_paging_ps_sig_lac_unknown() runs on test_CT {
/* PS-PAGING on SIG-BVC for Routeing Area */
private function f_TC_paging_ps_sig_rac(charstring id) runs on BSSGP_ConnHdlr
{
/* Only PCU index 0 has a matching BVC within the LAC */
/* Only PCU index 0 has a matching BVC with the RA ID */
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[0].cell_id.ra_id), 0, {0});
g_roi := {};
/* PCU index 1 and 2 have a matching BVC with the RA ID */
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {1, 2});
g_roi := {};
/* PCU index 2 has two matching BVCs with the RA ID */
f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {2});
}
testcase TC_paging_ps_sig_rac() runs on test_CT {
var BSSGP_ConnHdlr vc_conn;

View File

@ -24,10 +24,14 @@ ns
encapsulation udp local-port 23000
encapsulation framerelay-gre enabled 0
nse 1 nsvci 1 frnet hdlcnet1 dlci 16
nse 1 nsvci 2 frnet hdlcnet2 dlci 17
nse 1 nsvci 3 frnet hdlcnet3 dlci 18
nse 1 nsvci 4 frnet hdlcnet4 dlci 19
nse 2001 nsvci 1 frnet hdlcnet1 dlci 16
nse 2001 nsvci 2 frnet hdlcnet2 dlci 17
nse 2001 nsvci 3 frnet hdlcnet3 dlci 18
nse 2001 nsvci 4 frnet hdlcnet4 dlci 19
nse 2002 nsvci 5 frnet hdlcnet5 dlci 20
nse 2002 nsvci 6 frnet hdlcnet6 dlci 21
nse 2003 nsvci 7 frnet hdlcnet7 dlci 22
nse 2003 nsvci 8 frnet hdlcnet8 dlci 23
gbproxy
sgsn nsei 101