diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-16 22:05:20 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-16 22:05:20 +0000 |
commit | 71ef4b2e33e682ead93afc90409e5e55e0f83fab (patch) | |
tree | a0e3b8c2f40011eeb98851744e8689513d4d1e2e | |
parent | 7c925059f0d92d7f6f2400c8102e5ccec1f1bffb (diff) |
automatic import of freerouter
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | freerouter-p4dpdk-pkt.service | 34 | ||||
-rw-r--r-- | freerouter-p4dpdk.service | 19 | ||||
-rw-r--r-- | freerouter-p4emu.service | 34 | ||||
-rw-r--r-- | freerouter-p4mnl.service | 37 | ||||
-rw-r--r-- | freerouter-p4udp.service | 38 | ||||
-rw-r--r-- | freerouter-p4urng.service | 34 | ||||
-rw-r--r-- | freerouter-p4xdp.service | 37 | ||||
-rw-r--r-- | freerouter-p4xsk.service | 37 | ||||
-rw-r--r-- | freerouter.spec | 161 | ||||
-rw-r--r-- | sources | 1 |
11 files changed, 433 insertions, 0 deletions
@@ -0,0 +1 @@ +/v24.8.15.tar.gz diff --git a/freerouter-p4dpdk-pkt.service b/freerouter-p4dpdk-pkt.service new file mode 100644 index 0000000..d809f87 --- /dev/null +++ b/freerouter-p4dpdk-pkt.service @@ -0,0 +1,34 @@ +[Unit] +Description=p4dpdk specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4dpdk.bin -m 2048 --no-huge --no-pci --vdev=net_af_packet0,iface=eth1,blocksz=16384,framesz=16384 --vdev=net_af_packet1,iface=eth2,blocksz=16384,framesz=16384 --vdev=net_af_packet2,iface=veth250,blocksz=16384,framesz=16384 -- 127.0.0.1 9080 2 0 1 2 1 3 4 -2 65407 0 -9 256 0 -4 512 0 +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4dpdk.service b/freerouter-p4dpdk.service new file mode 100644 index 0000000..1269eb3 --- /dev/null +++ b/freerouter-p4dpdk.service @@ -0,0 +1,19 @@ +[Unit] +Description=p4dpdk specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +StandardOutput=file:/var/log/p4dpdk.log +ExecStartPre=-/sbin/modprobe uio_pci_generic +ExecStartPre=-/usr/bin/dpdk-devbind.py -b uio_pci_generic 0000:00:05.0 +ExecStartPre=-/usr/bin/dpdk-devbind.py -b uio_pci_generic 0000:00:06.0 +ExecStart=/usr/bin/p4dpdk.bin -a 0000:00:05.0 -a 0000:00:06.0 --vdev=net_af_packet0,iface=veth250,blocksz=16384,framesz=16384 -- 127.0.0.1 9080 2 0 1 2 1 3 4 -2 65407 0 -9 256 0 -4 512 0 +ExecStopPost=-/usr/bin/dpdk-devbind.py -b virtio-pci 0000:00:05.0 +ExecStopPost=-/usr/bin/dpdk-devbind.py -b virtio-pci 0000:00:06.0 +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4emu.service b/freerouter-p4emu.service new file mode 100644 index 0000000..647f60d --- /dev/null +++ b/freerouter-p4emu.service @@ -0,0 +1,34 @@ +[Unit] +Description=p4emu specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4emu.bin 127.0.0.1 9080 2 eth1 eth2 veth250 +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4mnl.service b/freerouter-p4mnl.service new file mode 100644 index 0000000..82c3c4e --- /dev/null +++ b/freerouter-p4mnl.service @@ -0,0 +1,37 @@ +[Unit] +Description=p4mnl specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4mnl_user.bin 127.0.0.1 9080 2 eth1 eth2 veth250 +ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4udp.service b/freerouter-p4udp.service new file mode 100644 index 0000000..7ea4a56 --- /dev/null +++ b/freerouter-p4udp.service @@ -0,0 +1,38 @@ +[Unit] +Description=p4udp specific process of freerouter +Requires=freerouter.service network.target +After=freerouter.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4udp.bin 127.0.0.1 9080 2 127.0.0.1 127.0.0.1 1101 1102 1103 1104 22709 22710 +# remote UDP sockets +# qemu1: -netdev socket,id=net0,udp=127.0.0.1:1101,localaddr=127.0.0.1:1102 +# qemu2: -netdev socket,id=net0,udp=127.0.0.1:1103,localaddr=127.0.0.1:1104 +# or +# socat interface:eth1 udp4-connect:127.0.0.1:1101,bind=127.0.0.1:1102 +# socat interface:eth2 udp4-connect:127.0.0.1:1103,bind=127.0.0.1:1104 +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4urng.service b/freerouter-p4urng.service new file mode 100644 index 0000000..e9cdb28 --- /dev/null +++ b/freerouter-p4urng.service @@ -0,0 +1,34 @@ +[Unit] +Description=p4urng specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4urng.bin 127.0.0.1 9080 2 eth1 eth2 veth250 +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4xdp.service b/freerouter-p4xdp.service new file mode 100644 index 0000000..bfee29c --- /dev/null +++ b/freerouter-p4xdp.service @@ -0,0 +1,37 @@ +[Unit] +Description=p4xdp specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4xdp_user.bin 127.0.0.1 9080 2 skb eth1 eth2 veth250 +ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter-p4xsk.service b/freerouter-p4xsk.service new file mode 100644 index 0000000..c5f8c6f --- /dev/null +++ b/freerouter-p4xsk.service @@ -0,0 +1,37 @@ +[Unit] +Description=p4xsk specific process of freerouter +Requires=freerouter.service freerouter-native@cpu_port.service network.target +After=freerouter.service freerouter-native@cpu_port.service network.target + +[Service] +Type=simple +ExecStart=/usr/bin/p4xsk.bin 127.0.0.1 9080 2 skb eth1 eth2 veth250 +ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off +ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off +Restart=always +RestartSec=5 +WorkingDirectory=/var/lib/freerouter +User=freerouter +Group=freerouter +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/freerouter /etc/freerouter +PrivateTmp=true +# PrivateDevices is not possible because some types need access to a physical device. +PrivateDevices=false +PrivateNetwork=false +# Private Users clears all capabilities. +PrivateUsers=false +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictNamespaces=true +LockPersonality=true +RemoveIPC=true + +[Install] +WantedBy=multi-user.target diff --git a/freerouter.spec b/freerouter.spec new file mode 100644 index 0000000..2bb9345 --- /dev/null +++ b/freerouter.spec @@ -0,0 +1,161 @@ +%undefine _missing_build_ids_terminate_build +%undefine _debugsource_packages + +Name: freerouter +Version: 24.8.15 +Release: 1%{?dist} +Summary: Free, open source router OS process + +License: CC-BY-SA +URL: http://www.freertr.org/ +Source0: https://github.com/mc36/freeRtr/archive/refs/tags/v%{?version}.tar.gz +Source1: freerouter-p4dpdk.service +Source2: freerouter-p4dpdk-pkt.service +Source3: freerouter-p4emu.service +Source4: freerouter-p4mnl.service +Source5: freerouter-p4udp.service +Source6: freerouter-p4urng.service +Source7: freerouter-p4xdp.service +Source8: freerouter-p4xsk.service +%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler} +Recommends: socat +Recommends: freerouter-native +BuildRequires: liburing-devel +BuildRequires: libxdp-devel +BuildRequires: openssl-devel +%else +BuildRequires: openssl1.1-devel +%endif +BuildRequires: systemd +BuildRequires: clang llvm +BuildRequires: dpdk-devel +BuildRequires: libpcap-devel +BuildRequires: libmnl-devel +BuildRequires: java-11-openjdk-devel +Requires: java-11-openjdk-headless + +%description +freeRouter speaks routing protocols, and (re)encapsulates packets on +interfaces since it handles packets itself, it is independent of +underlaying os capabilities (optionally, it can export forwarding tables +through openflow to external switch) since it is an unprivilegized process, +it receives and sends packets through sockets there are external, privileged +processes that place traffic to these sockets (it means that internet can +be used as backplane for router processes) the command line tries to +mimic the industry standards with one exception: no global routing table: +every routed interface must be in a virtual routing table positive side +effect: there are no vrf-awareness questions + +%package native +Summary: Native tools for better performance than socat +Requires: %{name} = %{version}-%{release} +%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler} +Recommends: dpdk-tools xdp-tools +%endif + +%description native +These tools are completely optional but should deliver better performance +than socat. + + +%package doc +BuildArch: noarch +Summary: Examples of freeRouter test configurations +Requires: %{name} = %{version}-%{release} + +%description doc +Examples of freeRouter test configurations. + + +%prep +%setup -q -n freeRtr-%{?version} +cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} . + +%build +pushd src +./cj.sh +./cp.sh +popd + +pushd misc/native +sed -i '/^strip/d' c.sh +./c.sh +popd + +%install +find binTmp -size 0 -print -delete +find misc/demo -type f -not -name '*.txt' -delete +sed -i 's|/usr/bin/freerouter|/usr/lib/jvm/jre-11-openjdk/bin/java -jar /usr/share/java/rtr.jar|g' misc/debian2/freerouter.service + +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_libdir} +mkdir -p %{buildroot}%{_javadir} +mkdir -p %{buildroot}%{_unitdir} +mkdir -p %{buildroot}%{_datadir}/freerouter +mkdir -p %{buildroot}%{_sysconfdir}/freerouter/interfaces +mkdir -p %{buildroot}%{_sharedstatedir}/freerouter + +install -m644 src/rtr.jar %{buildroot}%{_javadir} +cp binTmp/*.bin %{buildroot}%{_bindir} +install -m755 binTmp/*.so %{buildroot}%{_libdir} +install -m755 misc/debian2/interface.sh %{buildroot}%{_datadir}/freerouter/ +install -m644 misc/debian2/interface.cpu_port %{buildroot}%{_sysconfdir}/freerouter/interfaces/cpu_port +install -m644 misc/debian2/rtr-hw.txt misc/debian2/rtr-sw.txt %{buildroot}%{_sysconfdir}/freerouter +install -m644 misc/debian2/freerouter-native@.service %{buildroot}%{_unitdir} +install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir} +install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir}/freerouter@.service +sed -i 's|rtr-|%i-|g' %{buildroot}%{_unitdir}/freerouter@.service + +%pre +getent group freerouter >/dev/null 2>&1 || groupadd -r freerouter >/dev/null 2>&1 || : +getent passwd freerouter >/dev/null 2>&1 || useradd -M -r -g freerouter -s /sbin/nologin \ + -c "freeRouter OS process" -d %{_sharedstatedir}/freerouter freerouter || : +usermod -aG dialout freerouter + +%post +%systemd_post freerouter.service +%systemd_post freerouter@\*.service + +%preun +%systemd_preun freerouter.service +%systemd_preun freerouter@\*.service + +%postun +%systemd_postun_with_restart freerouter.service +%systemd_postun_with_restart freerouter@\*.service + +%post native +%systemd_post freerouter-native@\*.service + +%preun native +%systemd_preun freerouter-native@\*.service + +%postun native +%systemd_postun_with_restart freerouter-native@\*.service + + +%files +%license misc/debian2/copyright +%doc misc/demo misc/captures readme.md changelog.txt todo.txt +%dir %attr(0755,freerouter,freerouter) %{_sharedstatedir}/freerouter +%dir %attr(0770,freerouter,freerouter) %{_sysconfdir}/freerouter +%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-hw.txt +%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-sw.txt +%{_javadir}/rtr.jar +%{_unitdir}/freerouter.service +%{_unitdir}/freerouter@.service + +%files native +%doc freerouter-p4dpdk.service freerouter-p4dpdk-pkt.service +%doc freerouter-p4emu.service freerouter-p4mnl.service +%doc freerouter-p4udp.service freerouter-p4urng.service +%doc freerouter-p4xdp.service freerouter-p4xsk.service +%dir %{_sysconfdir}/freerouter/interfaces +%config(noreplace) %{_sysconfdir}/freerouter/interfaces/cpu_port +%{_bindir}/*.bin +%{_libdir}/*.so +%{_datadir}/freerouter/ +%{_unitdir}/freerouter-native@.service + +%files doc +%doc cfg @@ -0,0 +1 @@ +ee0719c75b54166072332ec57062d1a3 v24.8.15.tar.gz |