Feature #5759: Support for Mobility between SGSN (2G/3G) and S-GW (4G)
osmo-sgsn: Use/validate RIM Routing Address (Discriminator) IE from RAN Information Relay msg
Relevant spec section: TS 29.060 7.5.14 RAN Information Management MessagesAlso interesting:
- 3GPP TS 23.401, sections "5.6 Network Assisted Cell Change" and "5.15 RAN Information Management (RIM) procedures", "Annex D"
osmo-sgsn is currently ignoring the "RIM Routing Address" and "RIM Routing Address Discriminator" IEs when handling "RAN Information Relay" coming from GTPv1C (peer MME).
Instead, it is parsing the "RAN Transparent Container" and using the content inside it to always find out the destination of the message in order to relay it.
This is unexpected, since the "RAN Transparent Container" should in theory not be looked at.
Hence, we should be instead looking at "RIM Routing Address" and "RIM Routing Address Discriminator" IEs to know the destination address and hence know if we have to drop the message, or forward it to a specific PCU.
Since those IEs are optional, if not providing then we can keep the logic to look inside the container.
- % Done changed from 0 to 30
I have added the RIM ROUTING ADDRESS field to the TTCN3 testcase SGSN_Tests.TC_rim_eutran_to_geran now. The testcase still succeeds since osmo-sgsn ignores the field. I am currently checking how we can continue in osmo-sgsn. The field is already parsed now but there is nothing done with it yet. It is not complicated to use the RIM ROUTING ADDRESS field instead of the RIM ROUTING INFORMATION in the RAN TRANSPARENT CONTAINER, but we are not only looking at the destination address, but also at the source address. I need to check if this is still needed since at least in theory we are not supposed to look into the RAN TRANSPARENT CONTAINER (even though in practice this would be no problem at all).
- % Done changed from 30 to 80
A test that adds the missing RIM ROUTING ADDRESS IE is already in gerrit:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34077 SGSN_Tests: add RIM ROUTING ADDRESS field in request
This change still passes with osmo-sgsn as it is, since osmo-sgsn parses the RAN TRANSPARENT CONTAINTER and looks up the destination address in the destination RIM ROUTING INFORMATION IE.
To change osmo-sgsn, we must first add an API function to allow the sending of encoded RIM PDUs, this is done here:
https://gerrit.osmocom.org/c/libosmocore/+/34116 gprs_bssgp_rim: also print NSWI when sending RIM messages [NEW]
https://gerrit.osmocom.org/c/libosmocore/+/34117 gprs_bssgp_rim: allow sending of encoded RIM messages [NEW]
Osmo-sgsn is then changed as follows:
https://gerrit.osmocom.org/c/osmo-sgsn/+/34118 sgsn_rim: fix typo [NEW]
https://gerrit.osmocom.org/c/osmo-sgsn/+/34119 sgsn_rim: improve comment [NEW]
https://gerrit.osmocom.org/c/osmo-sgsn/+/34120 sgsn_rim: get rid of MME check in sgsn_rim_rx_from_gtp: [NEW]
https://gerrit.osmocom.org/c/osmo-sgsn/+/34121 sgsn_rim: do not check the origin of a RIM message [NEW]
https://gerrit.osmocom.org/c/osmo-sgsn/+/34122 sgsn_rim: forward message based on RIM ROUTING ADDRESS [NEW]
Technically the RIM ROUTING ADDRESS is now a mandatory field, even though it is optional. We assume that in case the field is missing the SGSN should apply a default route. This could be added later (or now) if necessary.
- % Done changed from 80 to 90
The following patches are still in review. Since the related libosmocore patch is now merged it now builds fine in gerrit: