udr_diameter: emit QoS profile, MSISDN, real APN in ULA Subscription-Data - #35
Merged
Merged
Conversation
…Data The ULA Subscription-Data was minimal — Subscriber-Status, optional AMBR, and a bare APN-Configuration with a hardcoded Service-Selection of "default". A real MME/SGW additionally expects the default APN's EPS-Subscribed-QoS-Profile (QCI + ARP) to set up the default bearer, plus the subscriber's MSISDN and real APN. Extend the S6a dictionary with MSISDN (701), EPS-Subscribed-QoS-Profile (1431), QoS-Class-Identifier (1028), Allocation-Retention-Priority (1034), Priority-Level (1046) and Pre-emption-Capability/Vulnerability (1047/1048), and grow APN-Configuration (+QoS profile) and Subscription-Data (+MSISDN). subscription_data/1 now emits, when provisioned: - MSISDN, TBCD-encoded per TS 23.008; - Service-Selection from apn_config_profile.apn (falling back to "default"); - EPS-Subscribed-QoS-Profile (QCI + ARP) from apn_config_profile.qos. All additive and backward-compatible: a minimal stored profile still yields the previous, thinner ULA. apn_config_profile is a free-form pass-through map and msisdn is a first-class subscription field, so no provisioning-layer change is needed. update-location.md's deferred list is corrected to the fields that remain unemitted (Access-Restriction-Data, Network-Access-Mode, RAU-TAU-Timer, per-APN AMBR, multiple APN configs, Supported-Features). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Fills out the S6a ULA
Subscription-Dataso it carries what a real MME/SGW needs for a full attach. Previously it emitted onlySubscriber-Status, optionalAMBR, and a bareAPN-Configurationwith a hardcodedService-Selectionof"default"— no default-bearer QoS, no MSISDN, no real APN.Why
Reviewing real S6a attach captures from live eNBs/MME against a production HSS showed the reference ULA additionally carries, and the MME consumes:
EPS-Subscribed-QoS-Profile(QCI + ARP) insideAPN-Configuration— the default-bearer QoS;MSISDNinSubscription-Data;Service-Selection.Our codec emitted none of these — the gap the honest per-procedure doc had flagged as "Subscription-Data currently minimal."
Changes
diameter_3gpp_s6a.dia): addMSISDN(701),EPS-Subscribed-QoS-Profile(1431),QoS-Class-Identifier(1028),Allocation-Retention-Priority(1034),Priority-Level(1046),Pre-emption-Capability/Vulnerability(1047/1048), with enums; growAPN-Configuration(+QoS profile) andSubscription-Data(+MSISDN).subscription_data/1): emit MSISDN (TBCD per TS 23.008),Service-Selectionfromapn_config_profile.apn(falls back to"default"), andEPS-Subscribed-QoS-Profile(QCI + ARP) fromapn_config_profile.qos, when provisioned.update-location.md's deferred list to the fields that genuinely remain unemitted (Access-Restriction-Data, Network-Access-Mode, RAU-TAU-Timer, per-APN AMBR, multiple APN configs, Supported-Features).Additive and backward-compatible: a minimal stored profile still yields the prior, thinner ULA.
apn_config_profileis a free-form pass-through map andmsisdnis a first-class subscription field, so no provisioning-layer change is required — provisioned values flow straight to the wire.Tests
TDD: three new codec round-trip tests written first and watched fail, then made to pass:
ula_returns_msisdn— asserts the exact TBCD wire bytes;ula_returns_provisioned_apn—Service-Selectionis the provisioned APN, not the fallback;ula_returns_qos_profile—EPS-Subscribed-QoS-Profilecarries QCI + ARP (priority + pre-emption).Fixture values are synthetic (no identifiers from the source captures). Verified locally with rebar3 3.26.0 / OTP 29: 59/59 across codec + ULR + integration + ISD suites, and dialyzer clean.
🤖 Generated with Claude Code