mirror of
https://github.com/open5gs/open5gs.git
synced 2026-08-21 14:24:00 +00:00
mirror of https://github.com/open5gs/open5gs link from https://open5gs.org/
https://open5gs.org
During handover the target ran_ue/enb_ue is linked to the same amf_ue/mme_ue before the UE has moved, and after HandoverCancel it is only unlinked and removed once the RAN node answers UEContextReleaseCommand with UEContextReleaseComplete. A RAN node that withholds the Release Complete therefore keeps an addressable context that still resolves to the UE. The setup response handlers only verified the message identifiers, the sending RAN node's ownership of the context, and the existence of the PDU session or bearer. They did not verify that the context is the one currently serving the UE. A RAN node could therefore send an unrequested PDUSessionResourceSetupResponse or E-RABSetupResponse over such a context, and the AMF/MME would forward the supplied transport layer address and TEID, redirecting the downlink of a session that is still served by another RAN node. Add RAN_UE_IS_SERVING()/ENB_UE_IS_SERVING(), which require that the context is both the serving association and not already being released, and apply them in InitialContextSetupResponse and in PDUSessionResourceSetupResponse/E-RABSetupResponse. Rejected responses are answered with an Error Indication and produce no SBI, PFCP, or S11 side effect. Also set initial_context_setup_response_received after validation instead of before, so a rejected response leaves no state behind. This is not a general request-correlation mechanism. A RAN node that has been selected as a handover target retains other ways to influence the user plane, and HandoverNotify is deliberately left alone since rejecting it would change the outcome of a HandoverCancel/HandoverNotify race. |
||
|---|---|---|
| .github | ||
| configs | ||
| debian | ||
| docker | ||
| docs | ||
| lib | ||
| misc | ||
| src | ||
| subprojects | ||
| tests | ||
| vagrant | ||
| webui | ||
| .clang-tidy | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitignore | ||
| LICENSE | ||
| meson.build | ||
| meson_options.txt | ||
| README.md | ||
Getting Started
Please follow the documentation at open5gs.org!
Sponsors
If you find Open5GS useful for work, please consider supporting this Open Source project by Becoming a sponsor. To manage the funding transactions transparently, you can donate through OpenCollective.
Community
- Problem with Open5GS can be filed as issues in this repository.
- Other topics related to this project are happening on the discussions.
- Voice and text chat are available in Open5GS's Discord workspace. Use this link to get started.
Contributing
If you're contributing through a pull request to Open5GS project on GitHub, please read the Contributor License Agreement in advance.
License
- Open5GS Open Source files are made available under the terms of the GNU Affero General Public License (GNU AGPL v3.0).
- Commercial licenses are also available from NewPlane at sales@newplane.io.
Support
Technical support and customized services for Open5GS are provided by NewPlane at support@newplane.io.
