Commit Graph

353 Commits

Author SHA1 Message Date
Pau Espin 609c234f0b Document Gy interface spec reference 2024-01-25 07:05:33 +09:00
Pau Espin 64598fab2e Document Gx interface spec references 2024-01-25 07:05:33 +09:00
Gaber Stare d7b896affb [SMF] Build URR at bearer modification 2024-01-20 08:20:24 +09:00
Pau Espin 4ab275ad70 Rename and move ogs_gtp2_paa_to_ip() to lib/proto/conv
Both types are defined under lib/proto/type.h, and the conversion
function is used in several different protocols, so let's better move it
to generic lib/proto/conv.h and remove the "gtp2" prefix.
2024-01-06 07:44:14 +09:00
Sukchan Lee b1515a16ff [SMF] Fixes crash when PDU session release
I've resolved an issue where sending continuous
'PDU Session Release Request' message to the same session,
when more than two sessions were created, was causing an SMF crash.

For your reference, this problem did not occur
when only one session was created.
2024-01-05 21:15:34 +09:00
Sukchan Lee ab64ff9514
[IPv6] Fixed to include MTU in SLAAC RA (#2754) (#2758) 2023-11-28 17:38:51 +09:00
Sukchan Lee e92293e0af
[SEPP] Initial Update for 5G Roaming (#2739)
[SEPP] Initial Update for 5G Roaming
2023-11-19 19:34:51 +09:00
Pau Espin 9d7dc91f21
[SMF] Gy: Keep sending extra AVPs in INITIAL_REQUEST (#2721)
This commit splits filling Requested-Service-Unit, Used-Service-Unit and
QoS-Information into their own helper functions for better readibility,
and then partially reverts 125740727e,
where lots of AVPs were left out of INITIAL_REQUEST messagesi during the
changes made.
After looking through 3GPP TS 32.299 and rfc4006, it seems expected to
send Requested-Service-Unit only during INITIAL_REQUEST, and
Used-Service-Unit during UPDATE_REQUEST, so that part is kept.

However, I am not able to find clear indications that AVPs such as QoS
Information and RAT-Type should not be sent during INITIAL_REQUEST.
So, since we have the info, better set it already during
INITIAL_REQUEST, since the OCS may want to grant different resources
based on that information if available too.
2023-11-01 03:19:10 +09:00
Šimon Lukašík 490a3ecb99
A minor typo fix (#2707)
* minor typo fix

* typo fix: faimly -> family
2023-10-28 22:11:58 +09:00
Sukchan Lee e3c2fd00d9 [SBI] Do not raise ASSERT when not enough CLIENT pool (#2701) 2023-10-25 21:40:37 +09:00
Sukchan Lee 783defc52f [SMF] Remove unused varaible in gy-handler.c 2023-10-18 07:09:54 +09:00
Sukchan Lee de7b094191
Merge branch 'main' into sigscale-ocs 2023-10-18 06:54:29 +09:00
Emanuele Di Pascale 7ea37ef618 smf: don't assert if we run out of IPs
currently if no IP address is available from the configured
subnets in the SMF when attempting to assign an IP to an UE
we assert and the SMF crashes. Handle the error more gracefully
by returning an error cause instead.
2023-10-11 20:42:31 +09:00
Sukchan Lee d4f2b545a3 [SBI] Fixed invalid format of subscrCond (#2630)
The format of subscrCond must be 'oneOf'.
2023-09-24 09:01:59 +09:00
Sukchan Lee 05ed95d623 [GTPU] Fixed PDCP SN handling (#2584, #2477)
Scenario is handover on S1AP, data forwarding is enabled, and
the Source ENB is forwarding DL PDCP packets to EPC(SGWU)
with PDCP SN included. SGWU is also forwarding these packets
to the Target ENB.

However the PDCP SN is not present in the forwarded packets
from SGWU to Target ENB.

I modified this part, and there was the same problem in 5GC, fixed it as well.

A lot of code in GTP-U has been modified,
so if you have any problems, please let us know right away.
2023-09-10 22:37:42 +09:00
Sukchan Lee 260eabb317 [SMF] Invalid Message(SmContextCreateData) (#2590)
curl --noproxy '*' --http2-prior-knowledge -X POST --header "Content-Type: multipart/related" --data-binary @pdu http:/192.168.29.231:7777/nsmf-pdusession/v1/sm-contexts
Attaching file 'pdu'

SMF crashes as not able to decode the message properly. SmContextCreateData is not accessible.
2023-09-07 22:38:45 +09:00
Sukchan Lee 654fe4010c [GTP] gtp_message_fuzz: Abrt in ogs_abort
See below for details.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=59414
2023-08-24 22:19:42 +09:00
Sukchan Lee 04f7958420 [SMF] Deregister issue during sess release (#2537)
A situation in which you establish two sessions and release both of them.

In the first SESSION, the UE normally sent PDUSessionResourceReleaseResponse
and PDU session release complete. However, these were not sent when releasing
the second SESSION.

At this point, when the UE tried to do a deregistration,
the SMF was not properly handling the exception.

I've just fixed this.
2023-08-24 21:26:23 +09:00
Sukchan Lee 4b0bade80e [TLV] PFCP parser crash from FuzzingLabs (#2523) 2023-08-18 22:19:46 +09:00
Sukchan Lee fc4072590e [SMF] Added SMF registrations (#2514, #2524) 2023-08-18 20:21:08 +09:00
Sukchan Lee e01f46eb6c
Use x1000 multiplier for Kbps, Mbps, ... etc. (#2515)
NAS, GTP, PFCP, SBI, all except S1AP/NGAP use x1000 multiplier for Kbps, Mbps, Gbps ... etc.

From now on in WebUI all units also use a multiplier of x1000.
2023-08-13 18:19:45 +09:00
Sukchan Lee e7f7c4274e [SMF] Fix crash on double policy deletion (#2489) 2023-08-10 22:14:48 +09:00
Sukchan Lee b116f077a5
UPF HA - release/establish new PDU session in CM_IDLE (#2471)
See also #2396, #2418
2023-07-25 22:38:38 +09:00
Sukchan Lee 00415b857b Follow-up on #2443 2023-07-18 09:51:45 +09:00
mitmitmitm 02dd09e122 [SMF] Reply with error instead of crashing when IP pool is exhausted 2023-07-18 09:47:22 +09:00
Sukchan Lee 9ba20f6e22 Follow-up on #2428 2023-07-15 23:30:32 +09:00
mitmitmitm c43444233b [SMF] Don't abort session tear-down on PCF error 2023-07-15 23:29:24 +09:00
mitmitmitm 6273ca5c43 [SMF] Reject session on PFCP sess. est. timeout 2023-07-15 23:29:24 +09:00
mitmitmitm 9cef0f14e3 [SMF] On sess. est. fail, don't reply to AMF twice on the same stream 2023-07-15 23:29:24 +09:00
Gaber Stare 12c0310328 [SMF] Decrease sessions metric on OLD Session Release
Since [redesign](8553c77733)
of fivegs_smffunction_sm_sessionnbr gauge, the metric doesn't
expose some decrements. The decreasing of gauge had been
moved out of function stats_remove_smf_session.

It should be decreased every time stats_remove_smf_session
is called, but this particular case is easily reproducible
by killing UPF while the session is established.
2023-06-21 22:11:52 +09:00
Daniel Willmann ef60207c1e [SMF] Fix Gx/Gy assert() if more than 64 CCRs are sent
The current code uses the cc request number as an index to the
transaction array (xact/xact_data). Since cc request number is a 32 bit
integer this is unfeasible for longer sessions and if more than a
handful of messages are exchanged per session.

The array size was already increased in #2038 which simply delays the
issue.
Furthermore, the current code asserts that cc_request_number is <=
MAX_CC_REQUEST_NUMBER which leads to an out-of-bounds write if
cc_request_number == MAX_CC_REQUEST_NUMBER.

Instead use a smaller array and index into it using cc_request_number
% array size. More than 2 requests should never be in flight at any one
time (initial or update request together with a termination request) so
an array size of 4 should be fine.
2023-06-21 22:07:32 +09:00
Bostjan Meglic 93bcd7fda7 [SMF] Fix a use-after-free bug 2023-06-15 18:33:20 +09:00
Bostjan Meglic 1e64d6602a [AMF,SMF,PCF] Rename the function for calculating NF Instance load
- have a more consistent naming among the NF's
- always have the same prefix (amf_/smf_/pcf_) depending on the NF
- function name is always the same, how the function calculates the load
is NF specific and internal to the function itself (but not the function
name).
2023-06-13 20:44:48 +09:00
EugeneBogush 31deecb03f fix Gy for 3GPP-User-Location-Info 2023-06-13 06:02:15 +09:00
Pau Espin 3a4116123f [SMF] Fix typo in log line 2023-06-07 22:34:22 +09:00
mitmitmitm 9f5be6c356 [SMF/PFCP] Send framed routes in both UL and DL pdrs 2023-06-03 09:20:16 +09:00
Sukchan Lee f969309f11 [CORE] Rollback ogs_pool_init/final (#2339)
ogs_pool_init() shall be used in the initialization routine.
Otherwise, memory will be fragment since this function uses system malloc()

Compared with ogs_pool_init()

ogs_pool_create() could be called while the process is running,
so this function should use ogs_malloc() instead of system malloc()
2023-05-28 22:50:28 +09:00
Sukchan Lee 31f95ce2e0 [SBI] Fixed Invalid S-NSSAI format (#2337) 2023-05-28 21:53:52 +09:00
mitmitmitm 928a80ef26 [PFCP] Support PFCP advertise address in F-SEID 2023-05-25 22:46:52 +09:00
Eugene Bogush b391cc589d relocation of user-location-info on top level 2023-05-25 22:42:54 +09:00
Gaber Stare 6856dfd6b7 [SMF] Expose metrics for nr. of PDU session creations
[ETSI TS 128 552 V16.9.0](https://www.etsi.org/deliver/etsi_ts/128500_128599/128552/16.09.00_60/ts_128552v160900p.pdf):

Registration type label is not provided.
A nonstandard PLMNID label is added to achieve uniqueness.

- 5.3.1.3 Number of PDU sessions requested to be created by the SMF

PLMNID and SNSSAI are defined during PDU session creation processing.
Some requests can be rejected during processing before label values are known.
Those requests are not counted under particular labels.
To count also such requests, the basic metric with empty labels is exposed too.

```
fivegs_smffunction_sm_pdusessioncreationreq{plmnid="",snssai=""} 1
fivegs_smffunction_sm_pdusessioncreationreq{plmnid="00101",snssai="1000009"} 1
```

- 5.3.1.4 Number of PDU sessions successfully created by the SMF
```
fivegs_smffunction_sm_pdusessioncreationsucc{plmnid="00101",snssai="1000009"} 1
```

- 5.3.1.5 Number of PDU sessions failed to be created by the SMF
```
fivegs_smffunction_sm_pdusessioncreationfail{cause="400"} 1
```

Example for one successful and one failed (during creation processing) PDU session creation:

```
fivegs_smffunction_sm_pdusessioncreationreq{plmnid="",snssai=""} 2
fivegs_smffunction_sm_pdusessioncreationreq{plmnid="00101",snssai="1000009"} 1

fivegs_smffunction_sm_pdusessioncreationsucc{plmnid="00101",snssai="1000009"} 1

fivegs_smffunction_sm_pdusessioncreationfail{cause="400"} 1
```
2023-05-25 21:38:15 +09:00
Sukchan Lee 7ce1137a10 [SMF] Disable Network Service request while ACTIVATING
Disable Network triggered service request
while UE triggered service request

(#2294)
2023-05-08 22:33:50 +09:00
Sukchan Lee 01d3db4b6e [MME/SMF] Added Extended-PCO in 4G/LTE (#2261) 2023-04-22 00:06:50 +09:00
Sukchan Lee aed52a9ad8 [GTP-U] Send Error Indication for unknown PDR 2023-04-16 12:30:36 +09:00
Sukchan Lee d2e2a58232 [PFCP] Implement the Restoration Indication 2023-04-16 12:30:36 +09:00
Sukchan Lee 642d9e2e18 [PFCP/GTP] SEID/TEID Randomness (#1303) 2023-04-16 12:30:36 +09:00
Abdelmuhaimen Seaudi 69831c43f5 add support for sigscale ocs
added several changes to correctly work with sigscal ocs offline charging
2023-04-12 22:31:01 +02:00
Bostjan Meglic bc3b27339e [SMF] Check if session has been removed already between different events
This fix is needed to prevent SMF crash in case that one of the
neighbouring NF (AMF) crashed in the middle of the procedure.
2023-04-05 21:25:54 +09:00
Sukchan Lee 32019df0f0 Fixed MacOSX compile error 2023-04-04 21:53:39 +09:00
Sukchan Lee e828f98bb6 [SMF] Fixed Gy Service-Context-Id 2023-04-04 21:33:55 +09:00