Skip to content
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

DRB deletion is not happening for UE Id above 255 #83

Open
VinashakAnkitAman opened this issue Jul 8, 2022 · 0 comments
Open

DRB deletion is not happening for UE Id above 255 #83

VinashakAnkitAman opened this issue Jul 8, 2022 · 0 comments

Comments

@VinashakAnkitAman
Copy link
Member

Setup Details

The S1APTester was used along with Magma EPC (https://github.com/magma/magma) to generate the issue.

Summary:

When S1APTester is used to attach detach more than 255 UEs, DRB deletion is not happening for UE Id above 255 during the detach procedure. Fetching UeCb for UE Id above 255 at code ueCb = nbDamGetUe(ueId); in the function nbDamUeDelReq in file src/enbApp/nb_dam.c is giving null result. As a result, following DRB deletion confirmation is missing from the log for UE Id above 255:

[2022_7_8_13_51_5.983][NB]../src/enbApp/nb_dam_ifm_app.c:287 INFO: Tunnel deleted successfully with LclTeid[167837480]

Steps to Reproduce

Modify the basic multi UE attach detach testcase to support large number of UEs and attach more than 255 UEs similar to below:

labadmin@labadmin-Latitude-5490:~/repo/magma/lte/gateway/python/integ_tests$ git diff s1aptests/test_attach_detach_multi_ue.py
diff --git a/lte/gateway/python/integ_tests/s1aptests/test_attach_detach_multi_ue.py b/lte/gateway/python/integ_tests/s1aptests/test_attach_detach_multi_ue.py
index 53479d4491..ed96122784 100644
--- a/lte/gateway/python/integ_tests/s1aptests/test_attach_detach_multi_ue.py
+++ b/lte/gateway/python/integ_tests/s1aptests/test_attach_detach_multi_ue.py
@@ -11,6 +11,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 """

+import time
 import unittest

 import s1ap_types
@@ -20,16 +21,34 @@ import s1ap_wrapper
 class TestAttachDetachMultiUe(unittest.TestCase):

     def setUp(self):
+        self.default_ip_block = s1ap_wrapper.TestWrapper.TEST_IP_BLOCK
+        s1ap_wrapper.TestWrapper.TEST_IP_BLOCK = "192.168.128.0/17"
         self._s1ap_wrapper = s1ap_wrapper.TestWrapper()

     def tearDown(self):
         self._s1ap_wrapper.cleanup()
+        s1ap_wrapper.TestWrapper.TEST_IP_BLOCK = self.default_ip_block

     def test_attach_detach_multi_ue(self):
         """ Same as attach detach but for 32 UEs """
         ue_ids = []
-        num_ues = 32
+        num_ues = 260
         self._s1ap_wrapper.configUEDevice(num_ues)
+
+        # The inactivity timers for UEs attached in the beginning starts getting
+        # expired before all the UEs could be attached. Increasing UE inactivity
+        # timer to 60 min (3600000 ms) to allow all the UEs to get attached and
+        # detached properly
+        print("Setting the inactivity timer value to 60 mins")
+        config_data = s1ap_types.FwNbConfigReq_t()
+        config_data.inactvTmrVal_pr.pres = True
+        config_data.inactvTmrVal_pr.val = 3600000
+        self._s1ap_wrapper._s1_util.issue_cmd(
+            s1ap_types.tfwCmd.ENB_INACTV_TMR_CFG,
+            config_data,
+        )
+        time.sleep(0.5)
+
         for _ in range(num_ues):
             req = self._s1ap_wrapper.ue_req
             print(
@@ -53,6 +72,17 @@ class TestAttachDetachMultiUe(unittest.TestCase):
                 s1ap_types.ueDetachType_t.UE_NORMAL_DETACH.value,
             )

+        # Reset the inactivity timer value to default one
+        print("Resetting the inactivity timer value to dafault value")
+        config_data = s1ap_types.FwNbConfigReq_t()
+        config_data.inactvTmrVal_pr.pres = True
+        config_data.inactvTmrVal_pr.val = 120000
+        self._s1ap_wrapper._s1_util.issue_cmd(
+            s1ap_types.tfwCmd.ENB_INACTV_TMR_CFG,
+            config_data,
+        )
+        time.sleep(0.5)
+

 if __name__ == "__main__":
     unittest.main()
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

No branches or pull requests

1 participant