Skip to content

Added code to handle delete session request and added routing #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 102 commits into
base: rsarwad_handle_mbr_in_s8
Choose a base branch
from

Conversation

rsarwad
Copy link
Owner

@rsarwad rsarwad commented Mar 31, 2021

Added code to handle delete session request and added routing logic at mme to s11 message to either sgw_s8 task or to spgw_task, based on federated mode of configuration

pshelar and others added 10 commits March 26, 2021 23:12
Add support to match on ingress and egress inbound packets.
New API is added to added to gtp task to add these flows:
openflow_add_s8_tunnel()
openflow_del_s8_tunnel()

Signed-off-by: Pravin B Shelar <[email protected]>
@@ -380,3 +430,29 @@ static void convert_proto_msg_to_itti_csr(
}
OAILOG_FUNC_OUT(LOG_SGW_S8);
}

void send_s8_delete_session_request(
imsi64_t imsi64, Imsi_t imsi, teid_t sgw_s11_teid, teid_t pgw_s5_teid,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just use one version of imsi in this call?

Copy link
Owner Author

@rsarwad rsarwad Apr 1, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imsi_t is defined as arrray of digits and in s8_proxy.proto file, imsi is defined as string; So for grpc conversion, Imsi_t is required.
imsi64 is required while sending the response message i.e after receiving the grpc response from FedGW.
I can use macro, IMSI64_TO_STRING for conversion; But I thought rather conversion, we can pass as parameter and use it.
Let me know your thoughts on same.


// Extract MCC and MNC from the imsi received and match with
// configuration
int mme_app_match_fed_mode_map(const uint8_t* imsi, imsi64_t imsi64) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need both imsi and imsi64 here? We can always derive one from the other.

Also, can we re-use the match_fed_mode_map defined in https://github.com/magma/magma/blob/master/lte/gateway/c/oai/lib/s6a_proxy/S6aClient.cpp#L105 . It will be better to move that out to c/oai/common/

@ssanadhya
Copy link

Rest looks good!

@rsarwad rsarwad force-pushed the rsarwad_handle_dsr_in_s8_task branch from 7b987e7 to c2749bc Compare April 1, 2021 02:46
rsarwad added 3 commits April 1, 2021 16:17
… to send s11 messages to either spgw task or sgw_s8 task based on federated mode of configuration

Signed-off-by: rashmi <[email protected]>
…raite task based on federated mode of configuration

Signed-off-by: rashmi <[email protected]>
rsarwad and others added 11 commits April 2, 2021 04:33
* Send actual configured APN AMBR to RAN

Signed-off-by: Ulas Kozat <[email protected]>
…s on MME (magma#5868)

* Redis client write perf improvements

Signed-off-by: Alex Rodriguez <[email protected]>

* Removing state conversion for static PCC rules on SPGW

Signed-off-by: Alex Rodriguez <[email protected]>

* Adding hash based versioning check for redis writes

Signed-off-by: Alex Rodriguez <[email protected]>
Signed-off-by: Scott Harrison Moeller <[email protected]>

Applied IWYU tooling to the `orc8r/gateway/c` sub-targets and corrected all findings (missing and extraneous include headers). This to work towards magma#4868 which regularly causes build failures as we migrate or update includes / build infrastructure.

Co-authored-by: Scott Harrison Moeller <[email protected]>
* Force setuptools version

Signed-off-by: Timothée Dzik <[email protected]>

* Force setuptools version

Signed-off-by: Timothée Dzik <[email protected]>
@rsarwad rsarwad force-pushed the rsarwad_handle_dsr_in_s8_task branch from a844fe6 to 31cde1d Compare April 9, 2021 10:32
rsarwad and others added 20 commits April 9, 2021 16:20
* AGW: MME: GTP: add S8 TEID args

Add missing TEIDs to program flow from eNB to PGW and vice-versa.
now the API takes in in and out TEID for S1 (eNB) tunnel as well as
S8 (PGW) tunnel.

Signed-off-by: Pravin B Shelar <[email protected]>
* Add blocked imei configuration support

Signed-off-by: Pruthvi Hebbani <[email protected]>
Add missing TEIDs to program flow from eNB to PGW and vice-versa.
now the API takes in in and out TEID for S1 (eNB) tunnel as well as
S8 (PGW) tunnel.

Signed-off-by: Pravin B Shelar <[email protected]>
* [Pipelined]Fix IPv6 Restart Flow Recovery

Signed-off-by: Nick Yurchenko <[email protected]>

* Fix lint

Signed-off-by: Nick Yurchenko <[email protected]>

* ADD UNIT TEST

Signed-off-by: Nick Yurchenko <[email protected]>
Signed-off-by: Pravin B Shelar <[email protected]>
* Generate final config file

Signed-off-by: Ulas Kozat <[email protected]>
* Add code to handle create session response at sgw_s8 task

Signed-off-by: rashmi <[email protected]>
rsarwad pushed a commit that referenced this pull request Apr 19, 2021
* Add T3489 tests

Introduce a new test to validate T3489 expiry.

Credit to ulaskozat for the diff

Testing done:
Verified that an ASAN use after free occurs on timer expiry

=7031==ERROR: AddressSanitizer: heap-use-after-free on address 0x603000093460 at pc 0x555807545462 bp 0x7f87093fd2b0 sp 0x7f87093fd2a8
WRITE of size 8 at 0x603000093460 thread T16
    #0 0x555807545461 in nas_stop_T3489 /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/esm_data_context.c:101
    #1 0x5558075c47c5 in esm_proc_esm_information_response /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/esm_information.c:119
    #2 0x55580759339b in esm_recv_information_response /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/sap/esm_recv.c:575
    #3 0x555807551fba in _esm_sap_recv /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/sap/esm_sap.c:679
    #4 0x555807550f33 in esm_sap_send /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/sap/esm_sap.c:283
    #5 0x5558075195a0 in lowerlayer_data_ind /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/emm/LowerLayer.c:276
    #6 0x55580757848f in _emm_as_data_ind /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/emm/sap/emm_as.c:688
    #7 0x555807574ec4 in emm_as_send /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/emm/sap/emm_as.c:180
    #8 0x55580753147f in emm_sap_send /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/emm/sap/emm_sap.c:105
    #9 0x5558074d74fc in nas_proc_ul_transfer_ind /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/nas_proc.c:326
    #10 0x5558071bd634 in handle_message /home/vagrant/magma/lte/gateway/c/oai/tasks/mme_app/mme_app_main.c:97
    #11 0x7f871bb277bd in zloop_start (/usr/lib/x86_64-linux-gnu/libczmq.so.4+0x287bd)
    #12 0x5558071bf169 in mme_app_thread /home/vagrant/magma/lte/gateway/c/oai/tasks/mme_app/mme_app_main.c:447
    #13 0x7f871e11f4a3 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x74a3)
    #14 0x7f871a494d0e in __clone (/lib/x86_64-linux-gnu/libc.so.6+0xe8d0e)

0x603000093460 is located 0 bytes inside of 32-byte region [0x603000093460,0x603000093480)
freed by thread T16 here:
    #0 0x7f871e602a10 in free (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1a10)
    #1 0x5558070dc054 in free_wrapper /home/vagrant/magma/lte/gateway/c/oai/common/dynamic_memory_check.c:47
    #2 0x555807545496 in nas_stop_T3489 /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/esm_data_context.c:103
    #3 0x5558075c517a in _esm_information /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/esm_information.c:269
    #4 0x5558075c4e15 in _esm_information_t3489_handler /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/esm/esm_information.c:199
    #5 0x5558074e2e8a in mme_app_nas_timer_handle_signal_expiry /home/vagrant/magma/lte/gateway/c/oai/tasks/nas/util/nas_timer.c:100
    #6 0x5558071be2d2 in handle_message /home/vagrant/magma/lte/gateway/c/oai/tasks/mme_app/mme_app_main.c:235
    #7 0x7f871bb277bd in zloop_start (/usr/lib/x86_64-linux-gnu/libczmq.so.4+0x287bd)

Signed-off-by: Amar Padmanabhan <[email protected]>

* Invalidate the T3849 timer id while processing esm information retransmit

The _esm_information function stops the existing T3849 timer as referenced
by the esm_ctxt datastructure timer before rescheduling a new T3849 timer
when it requests for the esm info from a UE.
Stopping the timer has a side effect of freeing up the UE related
retransmission data associated with it. This causes issues during
the T3849 timer expiry handling as the cancelled timer and the rescheduled
one reuse the same retransmission data datastructure.

Fix this by unsetting the T3849 timer in the handling of the timer expiry
as the esm_ctxt is not associated with any valid timers anymore. Further
as the timer is a oneshot timer it will be cleaned up after the processing
of the timer callback.

Signed-off-by: Amar Padmanabhan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.