- 02 Aug, 2024 15 commits
-
-
Robert Schmidt authored
-
Robert Schmidt authored
Handle IPv6 (and IPv4v6) PDU sessions by correctly instructing nas_config() to set up the interface with provided IP addresses. Note that as of now, IPv6 PDU sessions have not been fully tested. Remove a useless assert at the gNB; to my understanding the gNB does not care about the IP session type (at least for IP), as it just transparently tunnels the IP packets from/to GTP. I added a comment in the code where to change to request a PDU session different from IPv4. Currently it is hardcoded to IPv4, and it seems that a default OAI 5GC config would reject a PDU session type different from IPv4.
-
Robert Schmidt authored
- Read interface flags before setting status to not inadvertently overwrite existing flags - Set interface flag point-to-point, remove multicast (I think a UE is not supposed to send anywhere else than to the UPF, so it seems to not make sense to declare the interface as multicast)
-
Robert Schmidt authored
Implement handling of IPv4 and IPv6 (on the same interface) in nas_config().
-
Robert Schmidt authored
These rules & route are necessary to properly send packets on oaitun_ue1 interface: 1. This forces the packets coming from a subnet different than the UE's subnet to go back through oaitun_ue1 rather than via what the default route defined on the system (e.g., important if ping from the internet arrives). 2. On machines setting net.ipv4.conf.oaitun_ue1.rp_filter=1 (e.g. RHEL), this prevents that source filtering for packets coming back is applied and those packets be dropped. By default, many hosts have rp_filter=2, so no strict source filtering is applied, and it would work; on others, this rule prevents source filter dropping.
-
Robert Schmidt authored
Prior to this commit, there was a global variable baseNetAddress that could be set independently through a setter and also through the configuration module. This baseNetAddress (16 bits IPv4) would then be complemented with two more bytes in nas_config(). However, this is counter-productive, as not only we have a global variable that is avoidable (we can give the entire address to nas_config() directly), but it also would not work with IPv6. Hence, modify to give nas_config() the entire address. A follow-up commit will add IPv6 support.
-
Robert Schmidt authored
- refactor functions to make them shorter - provide doxygen strings - open socket for operation once instead of in each function - use named constant (from enum) to differentiate interface UP/DOWN - Linux kernel defines name length as IFNAM_SIZE, so use that for interface name length. Also, it seems no null-byte is needed.
-
Robert Schmidt authored
I initially planned to entirely remove the netmask configuration. However, in specific configurations, e.g. in 4G Rfsim with feMBMS, routing does not seem to work anymore using these commands: iperf -B 10.0.2.2 -s -u -i1 iperf -c 10.0.2.2 -B 10.0.2.1 -u -t 30 -b 2.00M -i1 Therefore, we simplify by hardcoding the netmask to /24, which allows the above to work.
-
Robert Schmidt authored
Remove the broadcast address from the UE, as logically, a UE has nothing to broadcast: it can only directly talk to the core. Additionally, at least as of now, the UE interface is shown as "POINTOPOINT", so broadcasting is not possible.
-
Robert Schmidt authored
Remove unused header includes, as well as the test program (which does not do much, and certainly does not test in the way we use the interfaces).
-
Robert Schmidt authored
Remove nas_config_mbms() since nas_config_mbms() and nas_config() do the same
-
Robert Schmidt authored
The routing table is temporarily removed in this commit and introduced in one of the next commits.
-
Robert Schmidt authored
Does the same change in the _mbms() functions as in the previous commit. Also, simplify logic in netlink_init_mbms_tun(): directly use the id in the interface. This requires a slight ID change in the users, which is also done in this commit.
-
Robert Schmidt authored
Instead of implicitly using a hardcoded prefix "oaitun_" interface name, move that out to the callers of these functions to make it clear. The ID still remains outside. The "sister functions" nas_config_mbms()/netlink_init_tun_mbms() will do the same change in the next commit.
-
Robert Schmidt authored
Comparing both functions, it seems that nas_config_mbms_s1() sets the same parameters, assuming that in nas_config_mbms(), we set - (UE_NAS_USE_TUN || ENB_NAS_USE_TUN) yielding true -> should yield the same interface name - netmask is hardcoded to 255.255.255.0 - baseNetAddress is hardcoded 10.0 So replace the call with nas_config_mbms() by setting parameters accordingly.
-
- 01 Aug, 2024 7 commits
-
-
Robert Schmidt authored
- Remove unused NAS_config(): It does most of what the highly similar nas_config() does. - Remove unused set_gateway() - Remove unused blocking_NAS_config() - Remove unused functions getNetMask() - Remove unused broadcast functionality: functions setBroadcastAddress() and getBroadcastAddress(), as well as global variable broadcastAddr are not used in consumers. Remove it. - Make functions static
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
I don't know about any user of the kernel modules. It is effectively legacy code we carry around, for no good reason. Remove it for the moment. If we ever need it, we can revert.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
Remove netlink code, and the PDCP_USE_NETLINK macro, as there is no known use, it makes the code more complicated, and is simply "technical debt". In 4G PDCP, a subtle change has been introduced, in pdcp_module_init() of pdcp.c. Looking at the diff of this commit, it can be seen that there is now a new "else-if (ENB_NAS_USE_TUN_W_MBMS_BIT)" branch that is under what was the "if (PDCP_USE_NETLINK)" branch, while the code fragment was actually inside the "else" branch of PDCP_USE_NETLINK. This seems to be necessary: previously, if we did not use noS1 mode and we don't use any TUN (i.e., the eNB), the else block would set up this interface. It is important that this interface is brought up, because if we omit it, RFsim will not work. It seems to me that this interface will regularly create some traffic; without it, RFsim will be blocked, and the UE cannot connect. In short, it seems to be important to have the MBMS interface, which injects traffic in the RFsim side, which will unblock RFsim. The change in pdcp_module_init() preserves the total changes of the if-else (PDCP_USE_NETLINK).
-
- 30 Jul, 2024 18 commits
-
-
Robert Schmidt authored
-
Robert Schmidt authored
Remove function pointers that were used in the past to implement the F1(-U) interface in 4G, i.e., to have different functions to handle split/monolithic operations. As we don't have F1 in 4G anymore (see commit 9dc22822), we don't need the function pointers anymore. On that occasion, rename the 5G functions by prepending nr_ to them; this allows to refactor the interface in 5G further (which is not the focus of this changeset).
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
Integration: `2024.w30` See merge request oai/openairinterface5g!2877 * !2830 NR feature set update * !2868 Fix support for USRP UHD Versions => 4.5.0.0 * !2870 fix(docker): base image for target oai-gnb-aw2s shall be jammy * !2874 Fix memory leaks in gNB PDU Session Setup Request processing * !2866 RRC: reject PDU sessions if security is not active * !2829 Automatic update of USRP RX gain during initial search using --agc option * !2878 USRP: add a T trace to record the TX IQ data on antenna 0 * !2633 Handle F1 Reset at DU, and ensure state re-init on F1Setup * !2864 Fix an assert in power control * !2754 Introduce gold sequence cache
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Laurent THOMAS authored
-
Laurent THOMAS authored
-
Laurent THOMAS authored
-
Laurent THOMAS authored
-
Laurent THOMAS authored
-
Robert Schmidt authored
-
Laurent THOMAS authored
Harmonize nr_gold_pusch() and nr_gold_pdsch(), as the gold sequence calculation for PUSCH and PDSCH is the same.
-