Support Cisco GGSN (Cisco 7200 with IOS 12.4.x)
I just managed to connect osmo-sgsn (2G) to an old real world GGSN implementation from Cisco (IOS 12.4 on 7200er routers).
The cool thing is that you can emulate the MIPS based hardware from these cisco routers via dynamips on commodity intel hardware :-)
I had to remove some GTP IEs the osmo-sgsn had sent that prevented the GTP tunnel to properly come up.
- GPRS only via GTPv0 and UMTS via GTPv1
- GPRS up to Release 6.0
- explicit GPRS Release 4.0 (via: gprs compliance 3gpp ggsn r4.0)
Here is some more information about this cisco IOS based GGSN:
Cisco GGSN Release 6.0 Configuration Guide, Cisco IOS Release 12.4(2)XB8
Cisco GGSN Release 6.0 Command Reference, Cisco IOS Release 12.4(2)XB8
Release Notes for Cisco GGSN Release 6.0 on the Cisco MWAM, Cisco IOS Software Release 12.4 XB
I've attached a patch with the following GTP IEs patched out that allowed me to connect to the Cisco GGSN.
#define GTPIE_RAT_TYPE 151 /* Radio Access Technology Type */ ->> TS 29.060 7.7.50 #define GTPIE_USER_LOC 152 /* User Location Information */ ->> TS 29.060 7.7.51 #define GTPIE_MS_TZ 153 /* MS Time Zone */ ->> TS 29.060 7.7.52 #define GTPIE_IMEI_SV 154 /* IMEI Software Version */ ->> TS 29.060 7.7.53
Up to GPRS release 9 all these IEs are marked as optional.
From GPRS Release 10 on the IE for IMEI_SV is marked as conditional the others remain optional.
I've also attached debug logs, pcap traces and the osmo-sgsn.cfg
The IOS debug logs were created with the following debug options enabled
debug gprs gtp events debug gprs gtp messages debug gprs gtp packets debug gprs gtp parsing
Dynamips parameters (bridge fa1/0 to eth0 on my host)
sudo dynamips -p 1:PA-FE-TX -s 1:0:gen_eth:eth0 --idle-pc=0x6155a540 c7200-adventerprisek9_mw-mz.124-20.T5.bin
Interesting test / report, I unfortuantely didn't see it until today by accident :/
I think it's actually the Cisco side that's broken if it doesn't accept "optional" IEs but refuses to ignore them?
If we need to work around such issues, the only realistic option I can see is that we have a vty configuration item which allows the user to specify the 3GPP release of the GGSN. This way we can then decide to suppress some of those later IEs on older releases.
Maybe there's also some version information visible in the GTP from the GGSN? I don't recall that part of the GTP specs off my head.