Skip to content
Success

Changes

Summary

  1. library: add generic Mutex API for parallel components (details)
  2. library/PFCP_Emulation: a better PDU routing concept (details)
  3. library: as_pfcp_ignore(): log SeqNr of received PDUs (details)
  4. s1gw: f_init_pfcp(): use 'PFCPEM' as the prefix (details)
  5. s1gw: make number of eNBs configurable via module params (details)
  6. Revert "s1gw: cache PFCP Recovery Timestamp in ConnHdlr" (details)
  7. s1gw: move PFCP association handling into a dedicated ConnHdlr (details)
  8. s1gw: add multi-eNB variants of TC_e_rab_setup (details)
  9. s1gw: add f_ConnHdlrList_all_done() (details)
  10. s1gw: f_ConnHdlr_rx_erab_release_cmd(): fix wrong template (details)
  11. s1gw: add TC_e_rab_release_ind (details)
  12. s1gw: f_ConnHdlr_erab_release_cmd(): add missing logging (details)
  13. library/s1ap: fix wrong IE ID in E-RABReleaseListBearerRelComp (details)
  14. library/s1ap: fix wrong field in S1AP-RABReleaseInd (details)
  15. library/s1ap: add templates for INITIAL CONTEXT SETUP (details)
  16. library/s1ap: fix wrong IDs in {ts,tr}_S1AP_InitialCtxSetupResp (details)
Commit faa6fc2d3083e1d074a3a3e6ca8714c920a6d453 by laforge
library: add generic Mutex API for parallel components

In certain scenarios, it's required to ensure that only one of multiple
parallel components executes a specific code block at any given time.

This, for example, is the case for the S1GW testsuite, where we want to
simulate multiple eNBs establishing E-RABs.  Each new E-RAB triggers the
IUT (osmo-s1gw) to send a PFCP Session Establishment Request, and there
is no way for the PFCPEM to correlate which session belongs to which eNB.
This problem can be solved by ensuring that only one eNB is triggering
the PFCP Session Establishment Request(s) at a time.

This patch implements a generic Mutex API, which can also be used
by other testsuites that orchestrate multiple parallel components.

Change-Id: Id71f43bd5fc78d4bb4417d6c01fcff8112ea6032
The file was addedlibrary/Mutex.ttcn
Commit aaa88deeb3ef7f53f9867438ee7fcad9b7df8e11 by laforge
library/PFCP_Emulation: a better PDU routing concept

In recently merged 2962d170 I wrongly assumed, that SEID of outgoing
PFCP PDUs can be used to correlate and route the incoming PDUs.  In
fact, the PFCP peers use two different SEID values, negotiating them
using the F-SEID IE.

We could have implemented a logic to look for F-SEID in the outgoing
PDUs, store and then use it for routing.  However, a more flexible
approach is to allow the the PFCP_ConnHdlr components to subscribe
and unsubscribe to/from specific SEID values explicitly.

In this spirit, let's allow the PFCP_ConnHdlr components to subscribe
and unsubscribe to/from broadcast PDUs (i.e. those, for which the
PFCPEM component could not find a single recipient) explicitly.

Implicit routing using the SeqNr remains unchanged and will be
performed by the PFCPEM component automatically like before.

Change-Id: I25802471519fa297ad4cb2b056adaa6748b00af2
Related: 2962d170 "library/PFCP_Emulation: fix routing of incoming PDUs"
The file was modifiedhnbgw/HNBGW_Tests.ttcn
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
The file was modifiedlibrary/PFCP_Emulation.ttcn
Commit 19ef9f42928774f09248f907795c6cbf8c31cf84 by laforge
library: as_pfcp_ignore(): log SeqNr of received PDUs

Printing the PFCP PDU template ('?' by default) is not very informative
when reading logs.  Printing the message type of the received PDU is
not informative either, because message types are defined as numbers
in PFCP_Types.ttcn.  Printing the whole PDU is way too verbose, and
would be redundant given that the PFCPEM component already does print
all received PDUs.  Let's print the sequence number.

Change-Id: I803ff46def4ae0182310bc01e753fe0c05112836
The file was modifiedlibrary/PFCP_Emulation.ttcn
Commit d6bfbe2de135f1ee38ec75859296b4eaad9f55ad by laforge
s1gw: f_init_pfcp(): use 'PFCPEM' as the prefix

Make it clear that it's the PFCP EMulation component.

Change-Id: Ia5413313cffb265f83ea0850e31dfb35274c28ba
The file was modifieds1gw/S1GW_Tests.ttcn
Commit 69a58d44359e08e4c29d84b22c6a2b949a4a7178 by laforge
s1gw: make number of eNBs configurable via module params

... so that we can scale the number of eNBs simulated in the
*_multi TCs without having to touch and compile code.

Change-Id: Ia80b9118e66a5d6721b89d3ba068227d30dcc01f
The file was modifieds1gw/S1GW_Tests.ttcn
Commit ff60a63c2aa656978cfdaf5958e21fadf8462ef5 by laforge
Revert "s1gw: cache PFCP Recovery Timestamp in ConnHdlr"

This reverts commit 7ad95e1cfb00d269069bd052c44a9cae9027f763.

A follow-up commit will remove the need for each ConnHdlr to call
f_ConnHdlr_register_pfcp(), that among with handling the PFCP
association retrieves a PFCP Recovery Timestamp from the PFCPEM.

Caching the PFCP Recovery Timestamp value is not really worth it,
since it's rarely used and can always be retrieved on demand.

Change-Id: I3b1c488e3ec251c7659cd9bc3197cca2f9d03144
The file was modifieds1gw/S1GW_Tests.ttcn
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
Commit 17f589464ba4063f12f3b03a9a958f492ad6d88f by laforge
s1gw: move PFCP association handling into a dedicated ConnHdlr

Previously, the PFCP association request from the IUT was handled by
the first ConnHdlr component (idx := 0).  While this approach has
worked, it fails when multiple ConnHdlr instances (idx > 0) are spawned.

The problem arises when other ConnHdlr (idx > 0) instances initiate
PFCP procedures before the first ConnHdlr (idx := 0) has established
the association, so we end up playing races.

This patch introduces a dedicated ConnHdlr component to handle the
PFCP association independently.  Once the association is established,
the actual test ConnHdlr instances are spawned, ensuring a more
reliable and orderly process.

Change-Id: I5e1a14105a35b785bf598dc2a8c436ea6fb6b0f1
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
The file was modifieds1gw/S1GW_Tests.ttcn
Commit 2f6d76c9dd982fbf9c6660e875fb6d3aa3beced6 by laforge
s1gw: add multi-eNB variants of TC_e_rab_setup

The idea is to simulate multiple eNBs establishing one or more
E-RAB(s) simultaneously.  In order to achieve that, use the new
Mutex API to ensure that only one ConnHdlr component is triggering
PFCP session establishment at any given time.

The problem is that there is no way for the PFCPEM component to
correlate which PFCP session belongs to which eNB when multiple
ConnHdlr instances establish E-RAB(s) in parallel.  This can be
solved by making a part of the test scenario synchronous.

Change-Id: I9e2eb25a7ae78ff623b94802d881af4894d0cacd
The file was modifieds1gw/expected-results.xml
The file was modifieds1gw/gen_links.sh
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
The file was modifieds1gw/S1GW_Tests.ttcn
Commit fb40c1f25de90fd95dc9553f5db3209967008c66 by laforge
s1gw: add f_ConnHdlrList_all_done()

Change-Id: I20c472dd8ce7f5a25c349cc079bd5bd873be2950
The file was modifieds1gw/S1GW_Tests.ttcn
Commit a2624ff32a4a342c51c62ca4e74ca8f7afa3a538 by laforge
s1gw: f_ConnHdlr_rx_erab_release_cmd(): fix wrong template

Change-Id: Ib6b9f346216aaa9587025e1c580876611e6fa7bc
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
Commit bb187e8180d52b615ec84a407e9caad0207b49fa by laforge
s1gw: add TC_e_rab_release_ind

Change-Id: Icc28a596b7646441761cc3f56653c5f7b3ddaaca
The file was modifieds1gw/S1GW_Tests.ttcn
The file was modifieds1gw/expected-results.xml
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
Commit e87acf9c5fb7ec3dc79115ba3ec7ed1f735024ac by laforge
s1gw: f_ConnHdlr_erab_release_cmd(): add missing logging

Change-Id: I6e4574ebda2459f0a5f23ee51a21a883d079c54a
The file was modifieds1gw/S1GW_ConnHdlr.ttcn
Commit 1fb6689026a791e745160f04ea7d03f39c777b27 by laforge
library/s1ap: fix wrong IE ID in E-RABReleaseListBearerRelComp

Change-Id: I22e80f418787c10ccd002e30a329c0271cdd1b8a
Fixes: e59e681c "library/s1ap: add E-RAB RELEASE templates"
The file was modifiedlibrary/s1ap/S1AP_Templates.ttcn
Commit 1f8173137b53a0069fcdd3c9c012a7633875e0b4 by laforge
library/s1ap: fix wrong field in S1AP-RABReleaseInd

Change-Id: I7a24b6401a19a6e37392083b26657bcb45b35cbe
Fixes: e59e681c "library/s1ap: add E-RAB RELEASE templates"
The file was modifiedlibrary/s1ap/S1AP_Templates.ttcn
Commit 15b2f739bcadfc52aee9b12ceed99e91da55dd57 by laforge
library/s1ap: add templates for INITIAL CONTEXT SETUP

Change-Id: I249e34ce91c874d4b6628d367672b58a77da041e
The file was modifiedlibrary/s1ap/S1AP_Templates.ttcn
Commit a9b2b0f4f977e669136a8e87ea7bbe501b07dc96 by laforge
library/s1ap: fix wrong IDs in {ts,tr}_S1AP_InitialCtxSetupResp

Change-Id: I752f202e891f7f6ff4f8f33b56de90c99c4ab456
Fixes: ce818da5b "library: Add S1AP Templates"
The file was modifiedlibrary/s1ap/S1AP_Templates.ttcn