Commit Graph

281 Commits

Author SHA1 Message Date
Andre Puschmann 8df388ba3e usim: fix typo in log 2020-09-14 21:20:59 +02:00
Andre Puschmann 138ec1f8e7 nas,usim: remove use of shadowed variables 2020-07-20 10:58:10 +02:00
Andre Puschmann a7911f0dab pdcp,rlc: refactor SDU queueing policy
this patch refactors the SDU queuing and dropping policy of the RLC and PDCP layer.
the previous design had issues when packets have been generated at a higher
rate above the PDCP than they could be consumed below the RLC.

When the RLC SDU queues were full, we allowed two policies, one to block on the write
and the other to drop the SDU. Both options are not ideal because they either
lead to a blocking stack thread or to lost PDCP PDUs.

To avoid this, this patch makes the following changes:

* PDCP monitors RLC's SDU queue and drops packets on its north-bound SAP if queues are full
  * a new method sdu_queue_is_full() has been added to the RLC interface for PDCP
* remove blocking write from pdcp and rlc write_sdu() interface
  * all writes into queues need to be non-blocking
  * if Tx queues are overflowing, SDUs are dropped above PDCP, not RLC
* log warning if RLC still needs to drop SDUs
  * this case should be avoided with the monitoring mechanism
2020-07-13 17:05:28 +02:00
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 2020-07-13 11:19:25 +01:00
Andre Puschmann 1e4eae7395 nas: log estimated count instead of local rx_count when logging integrity check result 2020-07-05 16:56:06 +02:00
Pedro Alvarez 772ab89391 srsUE: Fix for NAS overflow counter computation. 2020-07-02 14:52:21 +01:00
Xavier Arteaga de230826b9 Added string helper for removing spaces and parsing list
Fix

Fix string parser
2020-06-16 11:00:51 +02:00
Pedro Alvarez 960c0e97cd Added handling of RRC re-establishment to srsENB.
* Added the appropriate code for handling and sending the
   re-establishment procedure messages to rrc_ue.c/.h.
 * Triggered RRC reconfiguration after the reception of RRC
   re-establishment complete
 * Refreshed K_eNB at the reception of re-establishment
   request
 * Changed the mapping of TEIDs to RNTIs in the GTP-U layer,
   as the RNTI might change with reestablishment.
2020-06-02 11:19:17 +01:00
Andre Puschmann 25ab36ddd5 nas: fix UE not attaching if PLMN isn't found after switching on
if no cell/PLMN can be found if the UE is switched on, the UE was never
trying again.
In theory this would be handled by T3410, but the timer
is not started in case the PLMN search isn't done yet.
2020-05-01 21:03:47 +02:00
Francisco Paisana de4d58d8fe fix coverity scan issues in master 2020-04-29 11:17:00 +02:00
Xavier Arteaga 77d5dedddc Fix LGTM warnings and recommendations 2020-04-22 18:01:43 +02:00
Xavier Arteaga 562590e595 Fix LGTM warnings 2020-04-22 18:01:43 +02:00
Francisco Paisana 28467d568d eliminated old way to schedule tasks using the heap 2020-04-17 11:38:24 +01:00
Andre Puschmann d35c9e2b89 nas: add support ot UE test loop mode B
extend GW-NAS interface to signal test mode activation.
The method is a noop in the normal GW but is implemented in
the TTCN3 DUT according to TS 36.509 for Mode B
2020-04-10 21:18:43 +02:00
Andre Puschmann 66a799661e gw,tft: move traffic flow template matching into own class
this prepares the reuse of the matching functions for the TTCN3 DUT.
create own matcher class that the GW uses.
2020-04-10 21:18:43 +02:00
Francisco Paisana 2950d26daa remove asn1 namespace from srsue files 2020-04-09 10:10:04 +01:00
Daniel Willmann 925225dbeb Implement Close UE Test Loop/Complete messages
This commit implements support for the CLOSE_UE_TEST_LOOP message.
Currently the mode is not saved and looping the data is not implemented.
Only the *_COMPLETE message is sent back as a response.
2020-04-04 22:51:43 +02:00
Andre Puschmann a4abd96ab6 nas: use MME security header when receiving identity request
this basically avoids sending a integrity protected or ciphered
identity response to a plain identity request
2020-04-03 22:22:04 +02:00
Andre Puschmann 4f8f6bf90c nas: add comment as to why attach request is only integrity protected 2020-04-03 22:22:04 +02:00
Andre Puschmann acc2948b45 nas: fix security handling
First of all, with this the NAS conformance tests pass with ciphering and
integrity turned on. Before only integrity was working.

Mainly the NAS was applying the integrity protection and/or ciphering
incorrectly because it wasn't taking the secuirty status of the PDUs
into account. Some where already correct, some not. The patch
streamlines the handling for all outgoing messages.
2020-04-03 22:22:04 +02:00
Francisco Paisana 30ae2226c1 common interface for stack multiqueue tasks, background tasks and timers 2020-03-31 13:42:06 +01:00
Andre Puschmann dbb8b6a360 nas: add helper for entering new state in FSM
the helper will log the event
2020-03-30 11:23:40 +02:00
Andre Puschmann ef80502047 nas: print attach attempts on console 2020-03-30 11:23:40 +02:00
Andre Puschmann f477c1d2e5 nas: allow starting a attach request procedure even if a PLMN is already selected
previously the NAS would cancel a attach request procedure if the PLMN
is already selected. PLMN selection, however, in not necessarily happening
before requesting RRC to establish a connection.
2020-03-30 11:23:40 +02:00
Andre Puschmann d8680cc9a8 nas: add helper to pack attach request and send to RRC 2020-03-30 11:23:40 +02:00
Andre Puschmann cf28276a3a nas: add helper function to reset NAS security context 2020-03-30 11:23:40 +02:00
Andre Puschmann 94c6034339 nas: rename start_attach_request to start_attach_proc
this is to better differentiate from "send_attach_request" that
only packs and send the actual attach request message. The
entire attach procedure may include PLMN search, etc.
2020-03-30 11:23:40 +02:00
Andre Puschmann 0e76b9ed15 nas: set NAS key set identifier to no key available when attaching with IMSI 2020-03-28 21:24:13 +01:00
Andre Puschmann 9cfe692825 nas: fix reset of attach attempt counter according to 24.301 Sec 5.5.1.1 2020-03-27 18:15:37 +01:00
Andre Puschmann d0480141e5 nas: move re-arming and stopping of attach request related timers
t3402, t3410 and t3411 are now managed in the sender
function of the attach request. previosly they were only
correctly started in the high-level NAS call start_attach_request()
which may not be called if NAS itself resends the request
2020-03-27 18:15:37 +01:00
Andre Puschmann 15c47fab56 nas: adding t3402 to restart attach after initial attach attempt counter expired 2020-03-27 18:15:37 +01:00
Andre Puschmann 7ef56cb637 nas: add an attach attempt counter as described in 24.301 2020-03-27 18:15:37 +01:00
Francisco Paisana 344eaf49ec use logmap in the whole enb and ue 2020-03-25 15:50:30 +00:00
Andre Puschmann 3f10224729 refactor airplane mode simulation and move to NAS
- move handling to NAS
- use switch off to enable airplane mode (don't wait for EPC response)
- add tiny FSM to control airplane mode activation/deactivation
- only start on/off counter after state has been entered
2020-03-23 13:36:25 +01:00
Francisco Paisana de3c28e52d added task dispatch capabilities to stack interface 2020-03-22 11:50:58 +00:00
Francisco Paisana 138347b6b5 nas using stack timers 2020-03-19 21:52:53 +00:00
Francisco Paisana d3f49d0e3c changed interface sync-stack to allow tti jumps > 1 2020-03-19 16:47:55 +00:00
Xavier Arteaga e832769ae6 Updated copyright 2020-03-16 11:26:06 +01:00
Daniel Willmann b7e11b7bda Use RRC establishment cause mo-signalling for NAS Attach procedure 2020-03-15 18:27:51 +01:00
Daniel Willmann 275f26d875 liblte_mme.h: Add/fix UE_TEST_LOOP/DEACT_TEST_MODE msg types 2020-03-15 18:27:51 +01:00
Andre Puschmann 70ffe79b43 add support for periodic airplane mode simulation in srsUE 2020-03-13 17:35:03 +01:00
Pedro Alvarez 96c82b3fc6 Moved PDCP configs to pdcp_config.h. Added `as_security_cfg_t` structure to hold access stratum keys.
Refactored PDCP, RRC and USIM accordingly.
2020-03-11 09:00:38 +00:00
Pau Espin Pedrol 1d81ef9e24 gw: Proper error log on non-existing netns 2020-03-09 11:08:12 +01:00
Andre Puschmann 5b8b718482 simplify NAS security handling and fix missing call in act test mode complete
add extra method to apply NAS security config, if configured,
that can be used by each NAS message sender
2020-03-06 18:07:21 +01:00
Andre Puschmann ae4cfb50f2 print warning to console if TUN interface couldn't be setup 2020-03-03 15:25:53 +01:00
Andre Puschmann dffa2af461 fix NAS re-attach after detach request from network
needed to add a timer to delay transmission of attach request
to allow RRC release on eNB side
2020-02-28 18:09:21 +01:00
Andre Puschmann e4f85ec390 remove re-arming of t3411 after PLMN search
t3411 is restarted after attach or TAU failure only
2020-02-28 18:09:21 +01:00
Andre Puschmann 5b31c1db43 nas: delete security context when receiving attach reject with cause 3, 6, or 35 2020-02-28 12:52:44 +01:00
Andre Puschmann f25b4f17f1 nas: log attach request cause 2020-02-15 19:33:25 +01:00
Andre Puschmann cccabdaf4f removing unneeded install targets for static libs (reported by Filipe) 2020-02-10 17:38:42 +01:00
Andre Puschmann 7c1b4c1f12 add support for IMEISV when requesting UE idendity 2020-02-07 10:19:42 +01:00
Francisco Paisana 296af7e297 fix setting up nas log before all log configuration 2020-01-31 11:56:02 +00:00
Francisco Paisana ea777d92e8 applied new logmap class to nas 2020-01-29 14:20:43 +00:00
Francisco Paisana 91d83fc20d different way to retrieve a proc future 2020-01-24 10:10:27 +00:00
Andre Puschmann 77522a6b69 add srsUE parameter to change netns before creating TUN in GW 2020-01-14 20:52:09 +01:00
Andre Puschmann 476f970ee1 replace FIXME with TODO 2019-12-18 11:25:56 +01:00
Pedro Alvarez c5979f59eb Clang format UE, eNB and lib (#850)
* Clang-formated UE, eNB and lib.
* Fixed compiling errors from clang-format.
* Fix linking issues introduced by clang-format
* Fix poor formating in initializing arrays of arrays.
* Fix mistake in conflict resolution on rm_turbo.c
* Re-apply clang format to gtpc_ies.h
2019-12-16 16:04:22 +01:00
Andre Puschmann 1a7142d73f fix GW init procedure and set pool instance in ctor 2019-11-07 16:25:36 +01:00
Andre Puschmann d25a734200 fix uninit value in NAS and move emm_info on stack 2019-10-25 10:32:35 +02:00
Francisco Paisana d2c56caf7e applied new timer class to the whole code base 2019-10-23 19:33:25 +01:00
Francisco Paisana b254bdbb93 typedefed the proc_result_t<void> to become proc_state_t 2019-10-23 18:19:25 +02:00
Francisco Paisana f2d88e5a5b simplified NAS rrc connection request procedure
move non-type-specific methods of proc_t to its base class.
procedure state machine was simplified via a future-type. Now procedures dont get stuck until the user reads the procedure outcome.
made the NAS procedures more event trigger/reaction-based.
2019-10-23 18:19:25 +02:00
Francisco Paisana 8864787f59 added the continuation functionality to procedures via the "then()" method. 2019-10-23 18:19:25 +02:00
Francisco Paisana c1be118d1d new wrapper-based design for stack procedures. Removes extra base class, gets rid of spurious copies/moves during the pop(), and allows the use of a non-default ctor() 2019-10-23 18:19:25 +02:00
Andre Puschmann 891a66a2e5 make the establishment cause a paramter when sending a connection request
needed to signal a mo_sig establishment cause after a RLF
2019-10-18 16:38:55 +02:00
Francisco Paisana 9bcb268421 added for-range loop and bool decay checks to clang-tidy. Applied some of the recommendations of clang-tidy to nas.cc 2019-10-18 12:36:17 +02:00
Andre Puschmann cf548fe807 nas: add handling of T3410/T3411 2019-10-15 10:13:21 +02:00
Andre Puschmann 35307a047a make UE switch_on non-blocking
this allows a simpler main that just signals NAS to switch on the UE
but doesn't block until the action is completed.

For making sure the UE also attached if the first attempt failed
the NAS needs to be extended to support the correct timers.
2019-10-15 10:13:21 +02:00
Francisco Paisana 80ef7f8497 changed the name of proc Error/Warning/Info logging macros 2019-10-14 15:18:15 +02:00
Francisco Paisana 71ebac861c fix nas proc logging, and reuse of cell selection result 2019-10-14 15:18:15 +02:00
Andre Puschmann 3c6ff0da30 make NAS logging less verbose 2019-10-09 11:53:27 +02:00
Andre Puschmann c5f52adfba nas: fix issue in which NAS wouldn't allow to attach once it failed
the main issue was the plmn_selected variable. the solution
was to create a function to enter the deregistered state that resets the variable
and performs all other actions that need to be performed, like clearing
EPS bearers.

The patch also extends the SS to support AT commands to enable/disable
data services and now succesfully passes TC_9_2_2_1_7
2019-10-09 11:34:49 +02:00
Andre Puschmann f94d2537a3 nas: send identity response integrity protected if security ctxt is present 2019-10-01 20:59:00 +02:00
Andre Puschmann bb84b27f0b fix RRC connect proc in NAS to allow reattch after detach 2019-10-01 20:59:00 +02:00
Andre Puschmann cfadd1ba0b use received count for NAS integrity check
using the local rx count has caused issues when our UE
missed one NAS message was therefore out-of-sync and then
dropped all following NAS messages due to integrity failure

the NAS spec clearly states that the UE should use the
count received as an input for the integrity check calculation
2019-10-01 20:59:00 +02:00
Andre Puschmann 0e89f72846 remove EPS bearer deletion when going RRC idle
when going RRC idle, NAS gets informed and currently
clears all registered EPS bearers. This is wrong because
the EPS can outlive a RRC session.

Also in the conformance tests it's clearly seen
that after a RRC release a dedicatated EPS bearer is
created with a linked EPS bearer ID that has been
created _before_ RRC went idle.
2019-09-22 14:57:20 +02:00
Pedro Alvarez 004db4a067 Applied clang-format to zuc_support PR. 2019-09-10 13:46:21 +02:00
David Rupprecht 4ff70b6008 reconfigured test case for eia sec matching 2019-09-10 13:46:21 +02:00
David Rupprecht 50332089ce Add EEA3 and EIA3 support for UE/enodeb and MME 2019-09-10 13:46:21 +02:00
Francisco Paisana c9d3b61038 added resumable procedures to make RRC and NAS non-blocking 2019-08-08 10:56:54 +02:00
Andre Puschmann 2e9a981a8a fix home plmn extraction for PCSC USIM module 2019-07-19 18:16:58 +02:00
Ismael Gomez 7e1ae45d58 Fixes #573 2019-07-12 13:38:49 +02:00
Pedro Alvarez 9b6aaac1b5 Ignore PDCP status PDUs, instead of passing them to the GW. Check on the GW if the packet is large enough to hold an IPv4 header. 2019-07-12 13:08:42 +02:00
Andre Puschmann 5faa819dcd fixing uninitialized class members found by coverity 2019-07-08 11:12:46 +01:00
Pedro Alvarez a868a13409 Fix compilation error when PCSC is enabled. 2019-07-05 16:53:17 +02:00
Francisco Paisana b936629221 removed rrc asn1 header from bcd_helpers, from rlc_interface, and rlc tests 2019-07-05 10:44:15 +02:00
Francisco Paisana bb0dbf0f1c created a asn1 utils with helper functions and types related to the asn1. These types/functions will help isolate the rrc_asn1 lib from most of the layers, reducing this way the compile times, and leading to better isolation. This will also make the transition to NR smoother. I removed the asn1 types from the NAS and USIM interface so far. 2019-07-05 10:44:15 +02:00
Joseph Giovatto 69e9066c76 use time in usec for rand seed
removed extra call to srand in sesue process
2019-07-02 17:28:24 +02:00
Andre Puschmann 58763fb714 stack: move initialization of log object into ctor
this fixes the issue when the stack is torn down if, for example,
the radio couldn't be loaded correctly. it will hence call stop() on all stack
components which are not initialzized yet, and logging therefore doesn't work.
the log object is know during contruction time and therefore can be passed
in as soon as possible.
2019-06-27 14:51:33 +02:00
Pedro Alvarez 8f5ad55c4a Added attach request as a UL info trasnfer in the UE. Added interface to remove eps bearer map when going idle. Fixed bug in GW in assignment of IPv4 addresses. UE seems to rebound from the service reject now. 2019-06-26 18:04:41 +02:00
Andre Puschmann 19bc65012b nas: remove EPS bearer before adding updating params 2019-06-26 17:57:25 +02:00
Francisco Paisana 10a56e2a84 moved GW out of the UE stack. This is important to keep concurrency out of the stack once it becomes single-threaded 2019-06-20 15:26:52 +02:00
Andre Puschmann ad2b5d7635 pcsc: fix uninitialized variable and class dtor 2019-06-18 20:50:23 +02:00
Andre Puschmann abef6ce152 move own ipv6 header definition into own header file and use it in tft filter 2019-06-18 16:06:52 +02:00
Andre Puschmann b32254c5e2 use lock_guard for GW 2019-06-12 20:44:23 +02:00
Pedro Alvarez 22139afe09 Changed log to debug. Changed mutex to lock guard. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 6d05265d92 Adding mutex to protect the tft_filter map. 2019-06-07 21:40:03 +02:00
Andre Puschmann 71212dd447 remove console logging in GW 2019-06-07 21:40:03 +02:00
Andre Puschmann 2b7b4d0e7e remove hard-coded LCID for dedicated bearer in GW 2019-06-07 21:40:03 +02:00
Pedro Alvarez 7a184a8cd8 Added log to tft_packet_filter. 2019-06-07 21:40:03 +02:00
Pedro Alvarez fa7d91e1c9 Added comment to match function. Fixed mistake in IP flags. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 8b417a4259 Checking filter component flags before calling the match_* function. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 39f5b03674 Removed empty line. Changed comment. Removed unused variables. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 94ee294aea Removing debug printf's 2019-06-07 21:40:03 +02:00
Pedro Alvarez 2723aa9b12 Added EPS bearer id to apply_tft interface. Sending packets to the correct LCID if they match the packet filter. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 657ef090a2 Fix accidental deletion in conflict resolution. 2019-06-07 21:40:03 +02:00
Pedro Alvarez b55a4ccfee Revert "Refactored the gw.cc run thread to reduce excessive indentation. Starting to add TFT OP code handling."
This reverts commit 19af4d0052e5478f511edc3624429a9c98c13aed.
2019-06-07 21:40:03 +02:00
Pedro Alvarez 684ee2834e Starting to add ToS field checking to tft_packet_filter. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 40dd3e332c Added logic and test to match IPv4 local address 2019-06-07 21:40:03 +02:00
Pedro Alvarez 0f6c55023b Adding logic and testing for single remote port matching. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 326aef4431 Added match logic for local UDP port. Starting to add logic for remote UDP port. 2019-06-07 21:40:03 +02:00
Pedro Alvarez e2ca02bbe4 Starting to add match methods to tft_packet_filter 2019-06-07 21:40:03 +02:00
Pedro Alvarez 272e40a60d Started to add a lookup in the gw to see if there is a match in the packet filter. 2019-06-07 21:40:03 +02:00
Pedro Alvarez ccf404f12b Fix in getting filter information for local port. 2019-06-07 21:40:03 +02:00
Pedro Alvarez 190a0ff37e Adding test to unpacking of the packet filters. 2019-06-07 21:40:03 +02:00
Pedro Alvarez a8eaf16881 Starting to add a structure for the packet filters. 2019-06-07 21:40:03 +02:00
Pedro Alvarez f924a45421 Refactored the gw.cc run thread to reduce excessive indentation. Starting to add TFT OP code handling. 2019-06-07 21:40:03 +02:00
Pedro Alvarez a7e0a0624b Starting to add interface apply_traffic_flow_template between NAS and GW. 2019-06-07 21:40:03 +02:00
Pedro Alvarez d67d18cc6b Removing deplicated error codes. 2019-06-07 13:51:56 +02:00
Andre Puschmann 3f613d7183 nas/gw/rrc: make LCID for DRB dynamic
- add interface to RRC to allow NAS to query the DRB for a given
  EPS bearer id
- extend interface for NAS to setup GW to also pass LCID of bearer
- in NAS, use this new interface to pass actual LCID of the default
  DRB when creating the TUN device
2019-06-05 20:50:52 +02:00
Andre Puschmann b2a35f6b5a nas: add parser and sender for modify EPS bearer context messages 2019-06-05 17:41:46 +02:00
Andre Puschmann dcb04c6461 turn usim object into a unique_ptr 2019-06-05 17:41:46 +02:00
Andre Puschmann e47010130f extend thread class to set unique thread name in ctor
this will also extend all classes that use srslte::thread
to specify the name of the thread in the ctor as well
as to set the name of the worker threads in the thread pool
the thread name will be displayed in gdb.
2019-06-03 15:03:20 +02:00
Andre Puschmann 3f90230d1a nas: add EPS bearer map 2019-05-30 13:05:02 +02:00
Andre Puschmann 647282180b nas: fix return value in integrity check 2019-05-30 13:05:02 +02:00
Andre Puschmann 1c749ad559 add basic handling for deactivating eps bearer 2019-05-30 13:05:02 +02:00
Andre Puschmann 0bd30343bb fix packing of dedicated bearer context accept 2019-05-30 13:05:02 +02:00
Andre Puschmann 823bcf77dd nas: set establishment_cause to mt_access after paging 2019-05-30 13:05:02 +02:00
Andre Puschmann 5451fb6007 nas: add basic handling for dedicated bearer and UE testmode messages 2019-05-30 13:05:02 +02:00
Andre Puschmann 7de9f39fcc nas: move sending of attach complete message in extra function 2019-05-29 10:42:45 +02:00
Andre Puschmann 65f50cd7ba introduce new UE layer design
- abstract UE object now consists of a radio, a PHY, and a stack layer
- add new stack abstraction layer that combines MAC, RLC, RRC, PDCP, NAS and GW
- PHY layer now has a single stack interface and does not talk to MAC and RRC seperatly
2019-05-17 17:46:28 +02:00