From 12c849f94feeb66624e2ac5241b90765911a84f8 Mon Sep 17 00:00:00 2001 From: Sandeep Nagapattinam Date: Mon, 12 Feb 2024 15:07:35 +0530 Subject: [PATCH] Update LNW documentation with LNW v2 details (#408) * Update LNW documentation with LNW v2 details Signed-off-by: Sandeep N * Address review comments for LNW v2 documentation Signed-off-by: Sandeep N --------- Signed-off-by: Sandeep N --- docs/apps/lnw/es2k/es2k-ecmp-topology.png | Bin 146526 -> 0 bytes docs/apps/lnw/es2k/es2k-frr-topology.png | Bin 141284 -> 0 bytes .../lnw/es2k/es2k-linux-networking-ecmp.md | 391 --------------- .../lnw/es2k/es2k-linux-networking-frr.md | 333 ------------- .../lnw/es2k/es2k-linux-networking-ipv6.md | 324 ------------- docs/apps/lnw/es2k/es2k-lnw-overlay-ipv6.md | 362 ++++++++++++++ docs/apps/lnw/es2k/es2k-lnw-overlay-vms.md | 24 +- docs/apps/lnw/es2k/es2k-lnw-underlay-ecmp.md | 453 ++++++++++++++++++ docs/apps/lnw/es2k/es2k-lnw-underlay-frr.md | 403 ++++++++++++++++ docs/apps/lnw/lnw-index.rst | 8 +- 10 files changed, 1245 insertions(+), 1053 deletions(-) delete mode 100644 docs/apps/lnw/es2k/es2k-ecmp-topology.png delete mode 100644 docs/apps/lnw/es2k/es2k-frr-topology.png delete mode 100644 docs/apps/lnw/es2k/es2k-linux-networking-ecmp.md delete mode 100644 docs/apps/lnw/es2k/es2k-linux-networking-frr.md delete mode 100644 docs/apps/lnw/es2k/es2k-linux-networking-ipv6.md create mode 100644 docs/apps/lnw/es2k/es2k-lnw-overlay-ipv6.md create mode 100644 docs/apps/lnw/es2k/es2k-lnw-underlay-ecmp.md create mode 100644 docs/apps/lnw/es2k/es2k-lnw-underlay-frr.md diff --git a/docs/apps/lnw/es2k/es2k-ecmp-topology.png b/docs/apps/lnw/es2k/es2k-ecmp-topology.png deleted file mode 100644 index 83af6f14f719310275e9e2d888410352da1678ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146526 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℞F`3aW; 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 TQ=#o8c;Td{tDnm{r-UW|0EiCv diff --git a/docs/apps/lnw/es2k/es2k-frr-topology.png b/docs/apps/lnw/es2k/es2k-frr-topology.png deleted file mode 100644 index 9f5d66b43215c6d0da76bcaf95d8d9763140c82c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141284 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 diff --git a/docs/apps/lnw/es2k/es2k-linux-networking-ecmp.md b/docs/apps/lnw/es2k/es2k-linux-networking-ecmp.md deleted file mode 100644 index c40f92e4..00000000 --- a/docs/apps/lnw/es2k/es2k-linux-networking-ecmp.md +++ /dev/null @@ -1,391 +0,0 @@ - - -# Linux Networking with ECMP (ES2K) - -This document explains how to run the Linux networking scenario on ES2K. - -## Topology - -![Linux Networking Topology](es2k-ecmp-topology.png) - -Notes about topology: - -- Four Kernel netdevs are created by default by loading IDPF driver during ACC bring-up. You can also create more than Four netdevs. For that, we need to modify `acc_apf` parameter under `num_default_vport` in `/etc/dpcp/cfg/cp_init.cfg` on IMC before starting `run_default_init_app`. -- In `/etc/dpcp/cfg/cp_init.cfg` file also modify default `sem_num_pages` value to the value mentioned in `/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking/README_P4_CP_NWS`. -- vlan1, vlan2, .... vlanN created using Linux commands and are on top of an IDPF Netdev. These VLAN ports should be equal to number of VM's that are spawned. -- br-int, VxLAN ports are created using ovs-vsctl command provided by the networking recipe and all the vlan ports are attached to br-int using ovs-vsctl command. - -System under test will have above topology running the networking recipe. Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. Note the [Limitations](#limitations) section before setting up the topology. - -## Create P4 artifacts and start Infrap4d process - -- Use Linux networking p4 program present in the directory `/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking` for this scenario. -- See [Running Infrap4d on Intel IPU E2100](/guides/es2k/running-infrap4d) for compiling `P4 artifacts`, `bringing up ACC` and running `infrap4d` on ACC. - -## Creating the topology - -The p4rt-ctl and ovs-vsctl utilities can be found in $P4CP_INSTALL/bin. - -### Set the forwarding pipeline - -Once the application is started, set the forwarding pipeline config using -P4Runtime Client `p4rt-ctl` set-pipe command - -```bash -$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/linux_networking.pb.bin \ - $OUTPUT_DIR/linux_networking.p4info.txt -``` - -Note: Assuming `linux_networking.pb.bin` and `linux_networking.p4info.txt` -along with other P4 artifacts are created as per the steps mentioned in previous section. - -### Configure VSI Group and add a netdev - -Use one of the IPDF netdevs on ACC to receive all control packets from overlay -VM's by assigning to a VSI group. VSI group 3 is dedicated for this configuration, -execute below devmem commands on IMC. - -```bash -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0x8000050000000008 - -# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi -# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-3 -devmem 0x2029200388 64 0x3 - -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0xA000050000000008 -``` - -Note: Here VSI 8 has been used for receiving all control packets and added -to VSI group 3. This refers to HOST netdev VSIG 3 as per the topology -diagram. Modify this VSI based on your configuration. - -### Create Overlay network - -Option 1: Create VF's on HOST and spawn VM's on top of those VF's. -Example to create 4 VF's: echo 4 > /sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.0/sriov_numvfs - -```bash -# VM1 configuration -telnet -ip addr add 99.0.0.1/24 dev -ifconfig up - -# VM2 configuration -telnet -ip addr add 99.0.0.2/24 dev -ifconfig up -``` - -Option 2: If we are unable to spawn VM's on top of the VF's, for this use case we can also leverage kernel network namespaces. -Move each VF to a network namespace and assign IP addresses - -```bash -ip netns add VM0 -ip link set netns VM0 -ip netns exec VM0 ip addr add 99.0.0.1/24 dev -ip netns exec VM0 ifconfig up - -ip netns add VM1 -ip link set netns VM1 -ip netns exec VM1 ip addr add 99.0.0.2/24 dev -ip netns exec VM1 ifconfig up -``` - -### Start OvS as a separate process - -Legacy OvS is used as a control plane for source MAC learning of overlay VM's. OvS should be started as a seperate process. - -```bash -export RUN_OVS=/tmp -rm -rf $RUN_OVS/etc/openvswitch -rm -rf $RUN_OVS/var/run/openvswitch -mkdir -p $RUN_OVS/etc/openvswitch/ -mkdir -p $RUN_OVS/var/run/openvswitch - -ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ - /opt/p4/p4-cp-nws/share/openvswitch/vswitch.ovsschema - -ovsdb-server $RUN_OVS/etc/openvswitch/conf.db \ - --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ - --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovsdb-server.pid \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovsdb-server.ctl \ - --detach - -ovs-vswitchd --detach \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.pid \ - --no-chdir unix:$RUN_OVS/var/run/openvswitch/db.sock \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.ctl \ - --mlockall \ - --log-file=/tmp/ovs-vswitchd.log - -alias ovs-vsctl="ovs-vsctl --db unix:$RUN_OVS/var/run/openvswitch/db.sock" -ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 -ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 - -ovs-vsctl show -``` - -### Create VLAN representers - -For each VM that is spawned for overlay network we need to have a port representer. -We create VLAN netdevs on top of the IPDF netdev which is assigned to VSI group 3 in step-2 mentioned above. - -```bash -ip link add link name vlan1 type vlan id 1 -ip link add link name vlan2 type vlan id 2 -ifconfig vlan1 up -ifconfig vlan2 up -``` - -Note: Here the assumption is, we have created 2 overlay VM's and creating 2 port representers for those VM's. -Port representer should always be in the format: `lowercase string 'vlan'+'vlanID'` - -### Create integration bridge and add ports to the bridge - -Create OvS bridge, VxLAN tunnel and assign ports to the bridge. - -```bash -ovs-vsctl add-br br-int -ifconfig br-int up - -ovs-vsctl add-port br-int vlan1 -ovs-vsctl add-port br-int vlan2 -ifconfig vlan1 up -ifconfig vlan2 up - -ovs-vsctl add-port br-int vxlan1 -- set interface vxlan1 type=vxlan \ - options:local_ip=30.1.1.1 options:remote_ip=40.1.1.1 options:dst_port=4789 -``` - -Note: Here we are creating VxLAN tunnel with VNI 0, you can create any VNI for tunneling. - -### Configure rules for overlay control packets - -Configure rules to send overlay control packets from a VM to its respective port representers. - -Below configuration assumes - -- Overlay VF1 has a VSI value 14 -- Overlay VF2 has a VSI value 15 - -These VSI values can be checked with `/usr/bin/cli_client -q -c` command -on IMC. This command provides VSI ID, Vport ID, and corresponding MAC -addresses for all: - -- IDPF netdevs on ACC -- VF's on HOST -- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) -- Netdevs on IMC - -```bash -# Rules for control packets coming from overlay VF (VSI-14). -# IPU will add a VLAN tag 1 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(1,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_push(1,0,1)" - -# Rules for control packets coming from overlay VF (VSI-15). -# IPU will add a VLAN tag 2 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(2,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_push(1,0,2)" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 1 and send to overlay VF (VSI-14). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=1,action=linux_networking_control.remove_vlan_and_send_to_port(1,30)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(30)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_pop" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 2 and send to overlay VF (VSI-15). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=2,action=linux_networking_control.remove_vlan_and_send_to_port(2,31)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(31)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_pop" -``` - -### Configure rules for underlay control packets - -Configure rules to send underlay control packets from IDPF netdev to physical port. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 for first ECMP member -- First physical port will have a port ID of 0 -- Underlay IDPF netdev has a VSI value 11 for second ECMP member -- Second physical port will have a port ID of 1 - -```bash -# Configuration for control packets between physical port 0 to underlay IDPF netdev VSI-10 -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_from_wire_to_ovs_table \ - "vmeta.common.port_id=0,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(26)" - -# Configuration for control packets between underlay IDPF netdev VSI-10 to physical port 0 -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=10,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(0)" - -# Configuration for control packets between physical port 1 to underlay IDPF netdev VSI-11 -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_from_wire_to_ovs_table \ - "vmeta.common.port_id=1,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(27)" - -# Configuration for control packets between underlay IDPF netdev VSI-11 to physical port 1 -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=11,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(1)" -``` - -### Underlay configuration - -Create a dummy interface which is used for TEP termination and IDPF netdev for underlay connectivity. - -Option 1: Statically configure underlay ECMP routes to reach link partner (or) \ -Option 2: Use BGP protocol with FRR, for ECMP route redistribution to reach link partner. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 for first ECMP member -- Underlay IDPF netdev has a VSI value 11 for second ECMP member - -```bash -p4rt-ctl add-entry br0 linux_networking_control.ecmp_lpm_root_lut \ - "user_meta.cmeta.bit32_zeros=4/255.255.255.255,priority=2,action=linux_networking_control.ecmp_lpm_root_lut_action(0)" - -ip link add dev TEP0 type dummy - -nmcli device set managed no -nmcli device set managed no -``` - -Option 1: Static configuration - -```bash -ifconfig TEP0 30.1.1.1/24 up -ifconfig 50.1.1.1/24 up -ifconfig 60.1.1.1/24 up - -ip route add 40.1.1.1 nexthop via 50.1.1.2 dev \ - weight 1 nexthop via 60.1.1.2 dev weight 1 -ip route show -``` - -Sample link partner underlay configuration. - -```bash -ip link add dev TEP0 type dummy -ifconfig TEP0 40.1.1.1/24 up -ifconfig 50.1.1.2/24 up -ifconfig 60.1.1.2/24 up - -ip route add 30.1.1.1 nexthop via 50.1.1.1 dev \ - weight 1 nexthop via 60.1.1.1 dev weight 1 -ip route show - -``` - -Option 2: FRR running configuration - -```bash -# -# - -interface TEP0 -ip address 30.1.1.1/24 -exit -! -interface -ip address 50.1.1.1/24 -exit -! -interface -ip address 60.1.1.1/24 -exit -! -router bgp 65000 -bgp router-id 30.1.1.1 -neighbor 50.1.1.2 remote-as 65000 -neighbor 60.1.1.2 remote-as 65000 -! -address-family ipv4 unicast - network 30.1.1.0/24 -exit-address-family -``` - -Sample link partner FRR VTYSH configuration. - -```bash -interface TEP0 -ip address 40.1.1.1/24 -exit -! -interface -ip address 50.1.1.2/24 -exit -! -interface -ip address 60.1.1.2/24 -exit -! -router bgp 65000 -bgp router-id 40.1.1.1 -neighbor 50.1.1.1 remote-as 65000 -neighbor 60.1.1.1 remote-as 65000 -! -address-family ipv4 unicast - network 40.1.1.0/24 -exit-address-family -``` - -### Test the ping scenarios - -- Ping between VM's on the same host -- First Underlay ping -- Second Underlay ping -- Remote TEP ping -- Overlay ping: Ping between VM's on different hosts - -## Limitations - -Current Linux Networking support for the networking recipe has following limitations: - -- All VLAN interfaces created on top of IDPF netdev, should always be in lowercase format "vlan+vlan_id" -Ex: vlan1, vlan2, vlan3 ... vlan4094. -- Set the pipeline before adding br-int port, vxlan0 port, and adding vlan ports to br-int bridge. -- VxLAN destination port should always be standard port. i.e., 4789. (limitation by p4 parser) -- We do not support any ofproto rules that would prevent FDB learning on OvS. -- VLAN Tagged packets are not supported. -- For VxLAN tunneled packets only IPv4-in-IPv4 is supported. diff --git a/docs/apps/lnw/es2k/es2k-linux-networking-frr.md b/docs/apps/lnw/es2k/es2k-linux-networking-frr.md deleted file mode 100644 index 23510894..00000000 --- a/docs/apps/lnw/es2k/es2k-linux-networking-frr.md +++ /dev/null @@ -1,333 +0,0 @@ - - -# Linux Networking with FRR (ES2K) - -This document explains how to run the Linux networking scenario on ES2K. - -## Topology - -![FRR Topology](es2k-frr-topology.png) - -Notes about topology: - -- Four Kernel netdevs are created by default by loading IDPF driver during ACC bring-up. You can also create more than Four netdevs. For that, we need to modify `acc_apf` parameter under `num_default_vport` in `/etc/dpcp/cfg/cp_init.cfg` on IMC before starting `run_default_init_app`. -- In `/etc/dpcp/cfg/cp_init.cfg` file also modify default `sem_num_pages` value to the value mentioned in `/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking/README_P4_CP_NWS`. -- vlan1, vlan2, .... vlanN created using Linux commands and are on top of an IDPF Netdev. These VLAN ports should be equal to number of VM's that are spawned. -- br-int, VxLAN ports are created using ovs-vsctl command provided by the networking recipe and all the vlan ports are attached to br-int using ovs-vsctl command. - -System under test will have above topology running the networking recipe. Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. Note the [Limitations](#limitations) section before setting up the topology. - -## Create P4 artifacts and start Infrap4d process - -- Use Linux networking p4 program present in the directory `/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking` for this scenario. -- See [Running Infrap4d on Intel IPU E2100](/guides/es2k/running-infrap4d.md) for compiling `P4 artifacts`, `bringing up ACC` and running `infrap4d` on ACC. - -## Creating the topology - -The p4rt-ctl and ovs-vsctl utilities can be found in $P4CP_INSTALL/bin. - -### Set the forwarding pipeline - -Once the application is started, set the forwarding pipeline config using -P4Runtime Client `p4rt-ctl` set-pipe command - -```bash -$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/linux_networking.pb.bin \ - $OUTPUT_DIR/linux_networking.p4info.txt -``` - -Note: Assuming `linux_networking.pb.bin` and `linux_networking.p4info.txt` along with other P4 artifacts are created as per the steps mentioned in previous section. - -### Configure VSI Group and add a netdev - -Use one of the IPDF netdevs on ACC to receive all control packets from overlay VM's by assigning to a VSI group. VSI group 3 is dedicated for this configuration, execute below devmem commands on IMC. - -```bash -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0x8000050000000008 - -# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi -# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-3 -devmem 0x2029200388 64 0x3 - -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0xA000050000000008 -``` - -Note: Here VSI 8 has been used for receiving all control packets and added to VSI group 3. This refers to HOST netdev VSIG 3 as per the topology diagram. Modify this VSI based on your configuration. - -### Create Overlay network - -Option 1: Create VF's on HOST and spawn VM's on top of those VF's. -Example to create 4 VF's: echo 4 > /sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.0/sriov_numvfs - -```bash -# VM1 configuration -telnet -ip addr add 99.0.0.1/24 dev -ifconfig up - -# VM2 configuration -telnet -ip addr add 99.0.0.2/24 dev -ifconfig up -``` - -Option 2: If we are unable to spawn VM's on top of the VF's, we can leverage kernel network namespaces. -Move each VF to a network namespace and assign IP addresses: - -```bash -ip netns add VM0 -ip link set netns VM0 -ip netns exec VM0 ip addr add 99.0.0.1/24 dev -ip netns exec VM0 ifconfig up - -ip netns add VM1 -ip link set netns VM1 -ip netns exec VM1 ip addr add 99.0.0.2/24 dev -ip netns exec VM1 ifconfig up -``` - -### Start OvS as a separate process - -Legacy OvS is used as a control plane for source MAC learning of overlay VM's. OvS should be started as a seperate process. - -```bash -export RUN_OVS=/tmp -rm -rf $RUN_OVS/etc/openvswitch -rm -rf $RUN_OVS/var/run/openvswitch -mkdir -p $RUN_OVS/etc/openvswitch/ -mkdir -p $RUN_OVS/var/run/openvswitch - -ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ - /opt/p4/p4-cp-nws/share/openvswitch/vswitch.ovsschema - -ovsdb-server $RUN_OVS/etc/openvswitch/conf.db \ - --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ - --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovsdb-server.pid \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovsdb-server.ctl \ - --detach - -ovs-vswitchd --detach \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.pid \ - --no-chdir unix:$RUN_OVS/var/run/openvswitch/db.sock \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.ctl \ - --mlockall \ - --log-file=/tmp/ovs-vswitchd.log - -alias ovs-vsctl="ovs-vsctl --db unix:$RUN_OVS/var/run/openvswitch/db.sock" -ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 -ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 - -ovs-vsctl show -``` - -### Create VLAN representers - -For each VM that is spawned for overlay network we need to have a port representer. We create VLAN netdevs on top of the IPDF netdev which is assigned to VSI group 3 in step-2 mentioned above. - -```bash -ip link add link name vlan1 type vlan id 1 -ip link add link name vlan2 type vlan id 2 -ifconfig vlan1 up -ifconfig vlan2 up -``` - -Note: Here the assumption is, we have created 2 overlay VM's and creating -2 port representers for those VM's. Port representer should always be in -the format: `lowercase string 'vlan'+'vlanID'` - -### Create integration bridge and add ports to the bridge - -Create OvS bridge, VxLAN tunnel and assign ports to the bridge. - -```bash -ovs-vsctl add-br br-int -ifconfig br-int up - -ovs-vsctl add-port br-int vlan1 -ovs-vsctl add-port br-int vlan2 -ifconfig vlan1 up -ifconfig vlan2 up - -ovs-vsctl add-port br-int vxlan1 -- set interface vxlan1 type=vxlan \ - options:local_ip=30.1.1.1 options:remote_ip=40.1.1.1 options:dst_port=4789 -``` - -Note: Here we are creating VxLAN tunnel with VNI 0, you can create any VNI for tunneling. - -### Configure rules for overlay control packets - -Configure rules to send overlay control packets from a VM to its respective port representers. - -Below configuration assumes - -- Overlay VF1 has a VSI value 14 -- Overlay VF2 has a VSI value 15 - -These VSI values can be checked with `/usr/bin/cli_client -q -c` command on IMC. -This command provides VSI ID, Vport ID, and corresponding MAC addresses for all: - -- IDPF netdevs on ACC -- VF's on HOST -- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) -- Netdevs on IMC - -```bash -# Rules for control packets coming from overlay VF (VSI-14). -# IPU will add a VLAN tag 1 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(1,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_push(1,0,1)" - -# Rules for control packets coming from overlay VF (VSI-15). -# IPU will add a VLAN tag 2 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(2,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_push(1,0,2)" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 1 and send to overlay VF (VSI-14). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=1,action=linux_networking_control.remove_vlan_and_send_to_port(1,30)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(30)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_pop" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 2 and send to overlay VF (VSI-15). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=2,action=linux_networking_control.remove_vlan_and_send_to_port(2,31)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(31)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_pop" -``` - -### Configure rules for underlay control packets - -Configure rules to send underlay control packets from IDPF netdev to physical port. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 -- First physical port will have a port ID of 0 - -```bash -# Configuration for control packets between physical port 0 to underlay IDPF netdev VSI-10 -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_from_wire_to_ovs_table \ - "vmeta.common.port_id=0,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(26)" - -# Configuration for control packets between underlay IDPF netdev VSI-10 to physical port 0 -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=10,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(0)" -``` - -### Underlay configuration - -Create a dummy interface which is used for TEP termination and IDPF netdev for -underlay connectivity. Use BGP protocol with FRR, for route redistribution. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 - -```bash -p4rt-ctl add-entry br0 linux_networking_control.ecmp_lpm_root_lut \ - "user_meta.cmeta.bit32_zeros=4/255.255.255.255,priority=2,action=linux_networking_control.ecmp_lpm_root_lut_action(0)" - -nmcli device set managed no -ip link add dev TEP0 type dummy -``` - -FRR running configuration - -```bash -# -# - -interface TEP0 -ip address 30.1.1.1/24 -exit -! -interface -ip address 70.1.1.1/24 -exit -! -router bgp 65000 -bgp router-id 30.1.1.1 -neighbor 70.1.1.1 remote-as 65000 -! -address-family ipv4 unicast -network 30.1.1.0/24 -exit-address-family -``` - -Sample link partner FRR VTYSH configuration. - -```bash -interface TEP0 -ip address 40.1.1.1/24 -exit -! -interface -ip address 70.1.1.2/24 -exit -! -router bgp 65000 -bgp router-id 40.1.1.1 -neighbor 70.1.1.2 remote-as 65000 -! -address-family ipv4 unicast - network 40.1.1.0/24 -exit-address-family -``` - -### Test the ping scenarios - -- Ping between VM's on the same host -- Underlay ping -- Remote TEP ping -- Overlay ping: Ping between VM's on different hosts - -## Limitations - -Current Linux Networking support for the networking recipe has following limitations: - -- All VLAN interfaces created on top of IDPF netdev, should always be in lowercase format "vlan+vlan_id" -Ex: vlan1, vlan2, vlan3 ... vlan4094. -- Set the pipeline before adding br-int port, vxlan0 port, and adding vlan ports to br-int bridge. -- VxLAN destination port should always be standard port. i.e., 4789. (limitation by p4 parser) -- We do not support any ofproto rules that would prevent FDB learning on OvS. -- VLAN Tagged packets are not supported. -- For VxLAN tunneled packets only IPv4-in-IPv4 is supported. diff --git a/docs/apps/lnw/es2k/es2k-linux-networking-ipv6.md b/docs/apps/lnw/es2k/es2k-linux-networking-ipv6.md deleted file mode 100644 index 31869ed1..00000000 --- a/docs/apps/lnw/es2k/es2k-linux-networking-ipv6.md +++ /dev/null @@ -1,324 +0,0 @@ - - -# Linux Networking with IPv6 (ES2K) - -This document explains how to run the Linux networking scenario on ES2K. - -## Topology - -![Linux Networking with IPv6](es2k-lnw-topology.png) - -Notes about topology: - -- Four Kernel netdevs are created by default by loading IDPF driver during -ACC bring-up. You can also create more than Four netdevs. For that, we -need to modify `acc_apf` parameter under `num_default_vport` in -`/etc/dpcp/cfg/cp_init.cfg` on IMC before starting `run_default_init_app`. - -- In `/etc/dpcp/cfg/cp_init.cfg` file also modify default `sem_num_pages` -value to the value mentioned in -`/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking/README_P4_CP_NWS`. - -- vlan1, vlan2, .... vlanN created using Linux commands and are on top of -an IDPF Netdev. These VLAN ports should be equal to number of VM's that -are spawned. - -- br-int, VxLAN ports are created using ovs-vsctl command provided by the -networking recipe and all the vlan ports are attached to br-int using -ovs-vsctl command. - -System under test will have above topology running the networking recipe. -Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. -Note the [Limitations](#limitations) section before setting up the -topology. - -## Create P4 artifacts and start Infrap4d process - -- Use Linux networking p4 program present in the directory -`/opt/p4/p4sde/share/mev_reference_p4_files/linux_networking` for this -scenario. - -- See [Running Infrap4d on Intel IPU E2100](/guides/es2k/running-infrap4d) -for compiling `P4 artifacts`, `bringing up ACC` and running `infrap4d` on -ACC. - -## Creating the topology - -The p4rt-ctl and ovs-vsctl utilities can be found in $P4CP_INSTALL/bin. - -### Set the forwarding pipeline - -Once the application is started, set the forwarding pipeline config using -P4Runtime Client `p4rt-ctl` set-pipe command - -```bash -$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/linux_networking.pb.bin \ - $OUTPUT_DIR/linux_networking.p4info.txt -``` - -Note: Assuming `linux_networking.pb.bin` and `linux_networking.p4info.txt` -along with other P4 artifacts are created as per the steps mentioned in -previous section. - -### Configure VSI Group and add a netdev - -Use one of the IPDF netdevs on ACC to receive all control packets from -overlay VM's by assigning to a VSI group. VSI group 3 is dedicated for -this configuration, execute below devmem commands on IMC. - -```bash -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0x8000050000000008 - -# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi -# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-3. -devmem 0x2029200388 64 0x3 - -# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which need to map into vsig -devmem 0x20292002a0 64 0xA000050000000008 -``` - -Note: Here VSI 8 has been used for receiving all control packets and added -to VSI group 3. This refers to HOST netdev VSIG 3 as per the topology -diagram. Modify this VSI based on your configuration. - -### Create Overlay network - -Option 1: Create VF's on HOST and spawn VM's on top of those VF's. -Example to create 4 VF's: echo 4 > /sys/devices/pci0000:ae/0000:ae:00.0/0000:af:00.0/sriov_numvfs - -```bash -# VM1 configuration -telnet -ip -6 addr add 9::1/64 dev -ifconfig up - -# VM2 configuration -telnet -ip -6 addr add 9::2/64 -ifconfig up -``` - -Option 2: If we are unable to spawn VM's on top of the VF's, for this use -case we can also leverage kernel network namespaces. Move each VF to a -network namespace and assign IP addresses - -```bash -ip netns add VM0 -ip link set netns VM0 -ip netns exec VM0 ip -6 addr add 9::1/64 dev -ip netns exec VM0 ifconfig up - -ip netns add VM1 -ip link set netns VM1 -ip netns exec VM1 ip -6 addr add 9::2/64 dev -ip netns exec VM1 ifconfig up -``` - -### Start OvS as a separate process - -Legacy OvS is used as a control plane for source MAC learning of overlay -VM's. OvS should be started as a seperate process. - -```bash -export RUN_OVS=/tmp -rm -rf $RUN_OVS/etc/openvswitch -rm -rf $RUN_OVS/var/run/openvswitch -mkdir -p $RUN_OVS/etc/openvswitch/ -mkdir -p $RUN_OVS/var/run/openvswitch - -ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ - /opt/p4/p4-cp-nws/share/openvswitch/vswitch.ovsschema - -ovsdb-server $RUN_OVS/etc/openvswitch/conf.db \ - --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ - --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovsdb-server.pid \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovsdb-server.ctl \ - --detach - -ovs-vswitchd --detach \ - --pidfile=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.pid \ - --no-chdir unix:$RUN_OVS/var/run/openvswitch/db.sock \ - --unixctl=$RUN_OVS/var/run/openvswitch/ovs-vswitchd.ctl \ - --mlockall \ - --log-file=/tmp/ovs-vswitchd.log - -alias ovs-vsctl="ovs-vsctl --db unix:$RUN_OVS/var/run/openvswitch/db.sock" -ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 -ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 - -ovs-vsctl show -``` - -### Create VLAN representers - -For each VM that is spawned for overlay network we need to have a port -representer. We create VLAN netdevs on top of the IPDF netdev which is -assigned to VSI group 3 in step-2 mentioned above. - -```bash -ip link add link name vlan1 type vlan id 1 -ip link add link name vlan2 type vlan id 2 -ifconfig vlan1 up -ifconfig vlan2 up -``` - -Note: Here the assumption is, we have created 2 overlay VM's and creating -2 port representers for those VM's. Port representer should always be in -the format: `lowercase string 'vlan'+'vlanID'` - -### Create integration bridge and add ports to the bridge - -Create OvS bridge, VxLAN tunnel and assign ports to the bridge. - -```bash -ovs-vsctl add-br br-int -ifconfig br-int up - -ovs-vsctl add-port br-int vlan1 -ovs-vsctl add-port br-int vlan2 -ifconfig vlan1 up -ifconfig vlan2 up - -ovs-vsctl add-port br-int vxlan0 -- set interface vxlan0 type=vxlan \ - options:local_ip=1000:1::1 options:remote_ip=1000:1::2 options:dst_port=4789 -``` - -Note: Here we are creating VxLAN tunnel with VNI 0, you can create any VNI -for tunneling. - -### Configure rules for overlay control packets - -Configure rules to send overlay control packets from a VM to its -respective port representers. - -Below configuration assumes - -- Overlay VF1 has a VSI value 14 -- Overlay VF2 has a VSI value 15 - -These VSI values can be checked with `/usr/bin/cli_client -q -c` command -on IMC. This command provides VSI ID, Vport ID, and corresponding MAC -addresses for all: - -- IDPF netdevs on ACC -- VF's on HOST -- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) -- Netdevs on IMC - -```bash -# Rules for control packets coming from overlay VF (VSI-14). -# IPU will add a VLAN tag 1 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(1,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_push(1,0,1)" - -# Rules for control packets coming from overlay VF (VSI-15). -# IPU will add a VLAN tag 2 and send to HOST1 (VSI-8). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.add_vlan_and_send_to_port(2,24)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_host_to_ovs_table \ - "vmeta.common.vsi=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(24)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_push_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_push(1,0,2)" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 1 and send to overlay VF (VSI-14). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=1,action=linux_networking_control.remove_vlan_and_send_to_port(1,30)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=14,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(30)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=1,action=linux_networking_control.vlan_pop" - -# Rules for control packets coming from HOST1 (VSI-8). -# IPU will remove the VLAN tag 2 and send to overlay VF (VSI-15). - -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_ovs_to_host_table \ - "vmeta.common.vsi=8,hdrs.dot1q_tag[vmeta.common.depth].hdr.vid=2,action=linux_networking_control.remove_vlan_and_send_to_port(2,31)" -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_loopback_from_ovs_to_host_table \ - "vmeta.misc_internal.vm_to_vm_or_port_to_port[27:17]=15,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(31)" -p4rt-ctl add-entry br0 linux_networking_control.vlan_pop_mod_table \ - "vmeta.common.mod_blob_ptr=2,action=linux_networking_control.vlan_pop" -``` - -### Configure rules for underlay control packets - -Configure rules to send underlay control packets from IDPF netdev to physical port. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 -- First physical port will have a port ID of 0 - -```bash -# Configuration for control packets between physical port 0 and underlay IDPF netdev VSI-10 -p4rt-ctl add-entry br0 linux_networking_control.handle_rx_from_wire_to_ovs_table \ - "vmeta.common.port_id=0,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(26)" - -# Configuration for control packets between underlay IDPF netdev VSI-10 and physical port 0 -p4rt-ctl add-entry br0 linux_networking_control.handle_tx_from_host_to_ovs_and_ovs_to_wire_table \ - "vmeta.common.vsi=10,user_meta.cmeta.bit32_zeros=0,action=linux_networking_control.set_dest(0)" -``` - -### Underlay configuration - -Configure underlay IP addresses, and add static routes. - -Below configuration assumes - -- Underlay IDPF netdev has a VSI value 10 - -```bash -p4rt-ctl add-entry br0 linux_networking_control.ipv6_lpm_root_lut \ - "user_meta.cmeta.bit32_zeros=0/255.255.255.255,priority=1,action=linux_networking_control.ipv6_lpm_root_lut_action(0)" - -nmcli device set managed no -ip -6 addr add 1000:1::1/64 dev -ip route del 1000:1::/64 dev -ip route add 1000:1::/64 dev -ip -6 route change 1000:1::/64 via 1000:1::2 dev -``` - -### Test the ping scenarios - -- Ping6 between VM's on the same host -- Underlay ping6 -- Overlay ping: Ping6 between VM's on different hosts - -## Limitations - -Current Linux Networking support for the networking recipe has following limitations: - -- All VLAN interfaces created on top of IDPF netdev, should always be in lowercase format "vlan+vlan_id" -Ex: vlan1, vlan2, vlan3 ... vlan4094. -- Set the pipeline before adding br-int port, vxlan0 port, and adding vlan ports to br-int bridge. -- VxLAN destination port should always be standard port. i.e., 4789. (limitation by p4 parser) -- We do not support any ofproto rules that would prevent FDB learning on OvS. -- VLAN Tagged packets are not supported. -- For VxLAN tunneled packets only IPv6-in-IPv6 is supported. diff --git a/docs/apps/lnw/es2k/es2k-lnw-overlay-ipv6.md b/docs/apps/lnw/es2k/es2k-lnw-overlay-ipv6.md new file mode 100644 index 00000000..2d5e7db4 --- /dev/null +++ b/docs/apps/lnw/es2k/es2k-lnw-overlay-ipv6.md @@ -0,0 +1,362 @@ + + +# Linux Networking with IPv6 (ES2K) + +This document explains how to run the Linux networking scenario on ES2K. + +## Topology + +![Linux Networking Topology](es2k-lnw-topology.png) + +See [Linux Networking for ES2K](es2k-linux-networking.md) +for more details on this feature. + +Prerequisites: + +- Download `hw-p4-programs` TAR file specific to the build and extract it to get `fxp-net_linux-networking-v2` p4 artifacts. Go through `Limitations` specified in `README` and bring up the setup accordingly. +- Follow steps mentioned in [Deploying P4 Programs for E2100](/guides/es2k/deploying-p4-programs) for bringing up IPU with a custom P4 package. +Modify `load_custom_pkg.sh` with following parameters for linux_networking package: + +```text + sed -i 's/sem_num_pages = 1;/sem_num_pages = 25;/g' $CP_INIT_CFG + sed -i 's/lem_num_pages = 1;/lem_num_pages = 10;/g' $CP_INIT_CFG + sed -i 's/acc_apf = 4;/acc_apf = 8;/g' $CP_INIT_CFG +``` + +- Download `IPU_Documentation` TAR file specific to the build and refer to `Getting Started Guide` on how to install compatible `IDPF driver` on host. Once an IDPF driver is installed, bring up SRIOV VF by modifying the `sriov_numvfs` file present under one of the IDPF network devices. Example as below + + ```bash + echo 1 > /sys/class/net/ens802f0/device/sriov_numvfs + ``` + +Notes about topology: + +- VMs are spawned on top of each VF. Each VF will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a corresponding APF netdev on HOST. Create port representors in ACC for each HOST APF netdev. These APF netdevs on HOST will receive unknown traffic for applications to act on. +- All port representors should be part of an OvS bridge. Based on topology, this OvS bridge will just perform bridging or TEP termination on a bridge which is used to enable underlay connectivity for VxLAN traffic. +- OvS bridges and VxLAN ports are created using ovs-vsctl command (provided by the networking recipe). +- All port representors are attached to OvS bridge using ovs-vsctl command. +- This config has: + - 1 Overlay VF + - 1 Port representors in ACC for the 1 Overlay VF + - 2 physical ports + - 2 Port representors in ACC for the 2 physical ports + - 2 APF netdevs on HOST + - 2 Port representors in ACC for the 2 HOST APF netdevs + - TEP termination dummy interface + +System under test will have above topology running the networking recipe. Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. Refer to the Limitations section in [Linux Networking for E2100](es2k-linux-networking.md) before setting up the topology. + +## Creating the topology + +Follow steps mentioned in [Running Infrap4d on Intel E2100](/guides/es2k/running-infrap4d.md) for starting `infrap4d` process and creating protobuf binary for `fxp-net_linux-networking-v2` p4 program. + +### Port mapping + +These VSI values can be checked with `/usr/bin/cli_client -q -c` command on IMC. This command provides VSI ID, Vport ID, and MAC addresses for all: + +- IDPF netdevs on ACC +- VFs on HOST +- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) +- Netdevs on IMC + +| Overlay VFs | Overlay VFs VSI ID | ACC port representor | ACC port representor VSI ID | +| ------------| ------------------ | -------------------- | --------------------------- | +| ens802f0v0 | (0x1b) 27 | enp0s1f0d1 | (0x09) 9 | + +| Physical port | Physical port ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| Phy port 0 | (0x0) 0 | enp0s1f0d9 | (0x11) 17 | +| Phy port 1 | (0x1) 1 | enp0s1f0d11 | (0x13) 19 | + +| APF netdev | APF netdev VSI ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| ens802f0d1 | (0x18) 24 | enp0s1f0d10 | (0x12) 18 | +| ens802f0d2 | (0x19) 25 | enp0s1f0d12 | (0x14) 20 | + +(NOTE: Port names and their VSI IDs may differ from setup to setup. Configure accordingly.) + +### Set the forwarding pipeline + +Once the application is started, set the forwarding pipeline config using +P4Runtime Client `p4rt-ctl` set-pipe command + +```bash +$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/fxp-net_linux-networking-v2.pb.bin \ + $OUTPUT_DIR/p4info.txt +``` + +Note: Assumes that `fxp-net_linux-networking-v2.pb.bin`, `p4info.txt` and other P4 artifacts, are created by following the steps in the previous section. + +### Configure VSI Group and add a netdev + +Add all ACC port representors to VSI group 1. VSI group 1 is dedicated for this configuration. +Execute the following devmem commands on IMC. + +```bash +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0x8000050000000009 + +# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi +# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-1. +devmem 0x2029200388 64 0x1 + +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0xA000050000000009 +``` + +Note: Here VSI 9 has been used as one of the ACC port representors and added to VSI group 1. For this use case, add all 5 IDPF interfaces created on ACC. Modify this VSI based on your configuration. + +### Start OvS as a separate process + +Enhanced OvS is used as a control plane for source MAC learning of overlay VMs. This OvS binary is available as part of ACC build and should be started as a separate process. + +```bash +export RUN_OVS=/opt/p4/p4-cp-nws + +rm -rf $RUN_OVS/etc/openvswitch +rm -rf $RUN_OVS/var/run/openvswitch +mkdir -p $RUN_OVS/etc/openvswitch/ +mkdir -p $RUN_OVS/var/run/openvswitch + + +ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ + $RUN_OVS/share/openvswitch/vswitch.ovsschema + +ovsdb-server \ + --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ + --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ + --pidfile --detach + +ovs-vsctl --no-wait init + +mkdir -p /tmp/logs +ovs-vswitchd --pidfile --detach --mlockall \ + --log-file=/tmp/logs/ovs-vswitchd.log + +ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 +ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 + +ovs-vsctl show +``` + +### Create Overlay network + +Option 1: Create VFs on HOST and spawn VMs on top of those VFs. +Example: Below config is provided for one VM, and considering each VM is in one VLAN. Extend this to other VMs. + +```bash +# VM1 configuration +telnet +ip link add link name .10 type vlan id 10 +ip addr add 9::1/64 dev .10 +ifconfig up +ifconfig .10 up +``` + +Option 2: If we are unable to spawn VMs on top of the VFs, we can leverage kernel network namespaces. +Move each VF to a network namespace and assign IP addresses. +Example: Below config is provided for one overlay port, and tag each port in the namespace to a single VLAN. Extend this to other namespaces. + +```bash +ip netns add VM0 +ip link set netns VM0 +ip netns exec VM0 ip link add link name .10 type vlan id 10 +ip netns exec VM0 ip addr add 9::1/64 dev .10 +ip netns exec VM0 ifconfig up +ip netns exec VM0 ifconfig .10 up +``` + +### Configure rules for mapping between Overlay VF and ACC port representor + +Configure rules to send overlay packets from a VM to its associated port representors. + +Refer to above port mapping for overlay VF to ACC port representor mapping. Here, sample commands are shown for a single overlay network. Configure similar mapping for remaining VFs. + +Example: + +- Overlay VF1 has a VSI value 27, its corresponding port representor has VSI value 9 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-27). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v6 \ + "vmeta.common.vsi=27,zero_padding=0,action=linux_networking_control.set_source_port(43)" + +# Create a mapping between overlay VF (VSI-27/source port-43) and ACC port representor (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=43,zero_padding=0,action=linux_networking_control.fwd_to_vsi(25)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=9,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(43)" + +# Create a mapping for traffic to flow between VSIs (VSI-27/source port-43) and (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=9,target_vsi=27,action=linux_networking_control.fwd_to_vsi(43)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=27,target_vsi=9,action=linux_networking_control.fwd_to_vsi(25)" + +``` + +### Configure rules for mapping between Physical port and ACC port representor + +Configure rules to send ingress packets from a physical port to its associated port representors. + +Refer to above port mapping for physical port to ACC port representor mapping. Here, sample commands are shown for a single physical port. Configure similar mapping for remaining physical ports. + +Example: + +- Physical port 0 port id is 0, its corresponding port representor has VSI value 17 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for a physical port (Phy port-0). Source port action can be any value. +# For simplicity consider the same value as phy port id. + p4rt-ctl add-entry br0 linux_networking_control.rx_source_port \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.set_source_port(0)" + +# Create a mapping between physical port (Phy port 0/src port 0) and ACC port representor (VSI-17) + p4rt-ctl add-entry br0 linux_networking_control.rx_phy_port_to_pr_map \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" +``` + +### Configure rules for mapping between APF netdev on HOST and ACC port representor + +Configure rules to send APF netdev on HOST to its associated port representors. + +Refer to above port mapping for APF netdev on HOST to ACC port representor mapping. Here, sample commands are shown for APF netdev on HOST. Configure similar mapping for remaining APF netdevs on HOST. + +Example: + +- APF netdev 1 on HOST has a VSI value 24, its corresponding port representor has VSI value 18 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-24). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v6 \ + "vmeta.common.vsi=24,zero_padding=0,action=linux_networking_control.set_source_port(40)" + +# Create a mapping between overlay VF (VSI-24/source port-40) and ACC port representor (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=40,zero_padding=0,action=linux_networking_control.fwd_to_vsi(34)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" + +# Create a mapping for traffic to flow between VSIs (VSI-24/source port-40) and (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=18,target_vsi=24,action=linux_networking_control.fwd_to_vsi(40)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=24,target_vsi=18,action=linux_networking_control.fwd_to_vsi(34)" +``` + +### Configure supporting p4 runtime tables + +For TCAM entry configure LPM LUT table + +```bash + p4rt-ctl add-entry br0 linux_networking_control.ipv6_lpm_root_lut \ + "user_meta.cmeta.bit32_zeros=0/255.255.255.255,priority=65535,action=linux_networking_control.ipv6_lpm_root_lut_action(0)" +``` + +Create a dummy LAG bypass table for all 8 hash indexes + +```bash + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=0,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=1,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=2,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=3,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=4,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=5,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=6,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=7,action=linux_networking_control.bypass" +``` + +### Create integration bridge and add ports to the bridge + +Create OvS bridge, VxLAN tunnel and assign overlay VFs port representor to individual bridges. +Reference provided for single overlay network, repeat similar steps for other VFs. + +Each bridge has: + +- One overlay PR which is Native-tagged to a specific VLAN +- One VxLAN port which is Native-untagged to the VLAN and with different remote TEP and VNI + +```bash +ovs-vsctl add-br br-1 +ovs-vsctl add-port br-1 enp0s1f0d1 tag=10 vlan_mode=native-tagged +ovs-vsctl add-port br-1 vxlan1 tag=10 vlan_mode=native-untagged -- set interface vxlan1 type=vxlan \ + options:local_ip=1000:1::1 options:remote_ip=1000:1::2 options:key=10 options:dst_port=4789 +``` + +Note: Here we are creating a VxLAN tunnel with VNI 10, you can create any VNI for tunneling. + +### Underlay configuration + +Create TEP termination bridge, add physical port's port representor and APF netdev port representor. Reference provided for underlay network, repeat similar steps for multiple underlay networks. + +```bash +ovs-vsctl add-br br-tun-1 +ovs-vsctl add-port br-tun-1 enp0s1f0d9 +ovs-vsctl add-port br-tun-1 enp0s1f0d10 +``` + +Configure underlay IP address on the termination bridge, and add change routes to reach remote IP. + +```bash +# On termiantion bridge, configure an IP to reach remote TEP, and modify route to include nexthop details. +ifconfig br-tun-1 up +ip -6 addr add 1000:1::1/64 dev br-tun-1 +ip -6 route del 1000:1::/64 dev br-tun-1 +ip -6 route add 1000:1::/64 dev br-tun-1 +ip -6 route change 1000:1::/64 via 1000:1::2 dev br-tun-1 +``` + +### Test the ping scenarios + +- Underlay ping6 +- Overlay ping: Ping6 between VM's on different hosts diff --git a/docs/apps/lnw/es2k/es2k-lnw-overlay-vms.md b/docs/apps/lnw/es2k/es2k-lnw-overlay-vms.md index 2c9bd2ca..8d3c7718 100644 --- a/docs/apps/lnw/es2k/es2k-lnw-overlay-vms.md +++ b/docs/apps/lnw/es2k/es2k-lnw-overlay-vms.md @@ -1,3 +1,23 @@ + + # Linux Networking with Overlay VMs This document explains how to run the Linux networking scenario on ES2K with 8 overlay VMs. @@ -14,12 +34,14 @@ Prerequisites: - Download `hw-p4-programs` TAR file specific to the build and extract it to get `fxp-net_linux-networking-v2` p4 artifacts. Go through `Limitations` specified in `README` and bringup the setup accordingly. - Follow steps mentioned in [Deploying P4 Programs for E2100](/guides/es2k/deploying-p4-programs) for bringing up IPU with a custom P4 package. Modify `load_custom_pkg.sh` with following parameters for linux_networking package: + ```text sed -i 's/sem_num_pages = 1;/sem_num_pages = 25;/g' $CP_INIT_CFG sed -i 's/lem_num_pages = 1;/lem_num_pages = 10;/g' $CP_INIT_CFG sed -i 's/acc_apf = 4;/acc_apf = 16;/g' $CP_INIT_CFG ``` + - Download `IPU_Documentation` TAR file specific to the build and refer to `Getting Started Guide` on how to install compatible `IDPF driver` on host. Once an IDPF driver is installed, bring up SRIOV VF by modifying the `sriov_numvfs` file present under one of the IDPF network devices. Example as below ```bash @@ -322,7 +344,7 @@ ovs-vsctl add-port br-1 vxlan1 tag=10 vlan_mode=native-untagged -- set interface options:local_ip=10.1.1.1 options:remote_ip=10.1.1.2 options:key=10 options:dst_port=4789 ``` -Note: Here we are creating a VxLAN tunnel with VNI 0, you can create any VNI for tunneling. +Note: Here we are creating a VxLAN tunnel with VNI 10, you can create any VNI for tunneling. ### Underlay configuration diff --git a/docs/apps/lnw/es2k/es2k-lnw-underlay-ecmp.md b/docs/apps/lnw/es2k/es2k-lnw-underlay-ecmp.md new file mode 100644 index 00000000..10ce9d63 --- /dev/null +++ b/docs/apps/lnw/es2k/es2k-lnw-underlay-ecmp.md @@ -0,0 +1,453 @@ + + +# Linux Networking with ECMP (ES2K) + +This document explains how to run the Linux networking scenario on ES2K. + +## Topology + +![Linux Networking Topology](es2k-lnw-topology.png) + +See [Linux Networking for ES2K](es2k-linux-networking.md) +for more details on this feature. + +Prerequisites: + +- Download `hw-p4-programs` TAR file specific to the build and extract it to get `fxp-net_linux-networking-v2` p4 artifacts. Go through `Limitations` specified in `README` and bring up the setup accordingly. +- Follow steps mentioned in [Deploying P4 Programs for E2100](/guides/es2k/deploying-p4-programs) for bringing up IPU with a custom P4 package. +Modify `load_custom_pkg.sh` with following parameters for linux_networking package: + +```text + sed -i 's/sem_num_pages = 1;/sem_num_pages = 25;/g' $CP_INIT_CFG + sed -i 's/lem_num_pages = 1;/lem_num_pages = 10;/g' $CP_INIT_CFG + sed -i 's/acc_apf = 4;/acc_apf = 8;/g' $CP_INIT_CFG +``` + +- Download `IPU_Documentation` TAR file specific to the build and refer to `Getting Started Guide` on how to install compatible `IDPF driver` on host. Once an IDPF driver is installed, bring up SRIOV VF by modifying the `sriov_numvfs` file present under one of the IDPF network devices. Example as below + + ```bash + echo 2 > /sys/class/net/ens802f0/device/sriov_numvfs + ``` + +Notes about topology: + +- VMs are spawned on top of each VF. Each VF will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a corresponding APF netdev on HOST. Create port representors in ACC for each HOST APF netdev. These APF netdevs on HOST will receive unknown traffic for applications to act on. +- All port representors should be part of an OvS bridge. Based on topology, this OvS bridge will just perform bridging or TEP termination on a bridge which is used to enable underlay connectivity for VxLAN traffic. +- OvS bridges and VxLAN ports are created using ovs-vsctl command (provided by the networking recipe). +- All port representors are attached to OvS bridge using ovs-vsctl command. +- This config has: + - 2 Overlay VFs + - 2 Port representors in ACC for the 2 Overlay VFs + - 2 physical ports + - 2 Port representors in ACC for the 2 physical ports + - 2 APF netdevs on HOST + - 2 Port representors in ACC for the 2 HOST APF netdevs + - TEP termination dummy interface + +System under test will have above topology running the networking recipe. Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. Refer to the Limitations section in [Linux Networking for E2100](es2k-linux-networking.md) before setting up the topology. + +## Creating the topology + +Follow steps mentioned in [Running Infrap4d on Intel E2100](/guides/es2k/running-infrap4d.md) for starting `infrap4d` process and creating protobuf binary for `fxp-net_linux-networking-v2` p4 program. + +### Port mapping + +These VSI values can be checked with `/usr/bin/cli_client -q -c` command on IMC. This command provides VSI ID, Vport ID, and MAC addresses for all: + +- IDPF netdevs on ACC +- VFs on HOST +- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) +- Netdevs on IMC + +| Overlay VFs | Overlay VFs VSI ID | ACC port representor | ACC port representor VSI ID | +| ------------| ------------------ | -------------------- | --------------------------- | +| ens802f0v0 | (0x1b) 27 | enp0s1f0d1 | (0x09) 9 | +| ens802f0v1 | (0x1c) 28 | enp0s1f0d2 | (0x0a) 10 | + +| Physical port | Physical port ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| Phy port 0 | (0x0) 0 | enp0s1f0d9 | (0x11) 17 | +| Phy port 1 | (0x1) 1 | enp0s1f0d11 | (0x13) 19 | + +| APF netdev | APF netdev VSI ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| ens802f0d1 | (0x18) 24 | enp0s1f0d10 | (0x12) 18 | +| ens802f0d2 | (0x19) 25 | enp0s1f0d12 | (0x14) 20 | + +(NOTE: Port names and their VSI IDs may differ from setup to setup. Configure accordingly.) + +### Set the forwarding pipeline + +Once the application is started, set the forwarding pipeline config using +P4Runtime Client `p4rt-ctl` set-pipe command + +```bash +$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/fxp-net_linux-networking-v2.pb.bin \ + $OUTPUT_DIR/p4info.txt +``` + +Note: Assumes that `fxp-net_linux-networking-v2.pb.bin`, `p4info.txt` and other P4 artifacts, are created by following the steps in the previous section. + +### Configure VSI Group and add a netdev + +Add all ACC port representors to VSI group 1. VSI group 1 is dedicated for this configuration. +Execute the following devmem commands on IMC. + +```bash +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0x8000050000000009 + +# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi +# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-1. +devmem 0x2029200388 64 0x1 + +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0xA000050000000009 +``` + +Note: Here VSI 9 has been used as one of the ACC port representors and added to VSI group 1. For this use case, add all 6 IDPF interfaces created on ACC. Modify this VSI based on your configuration. + +### Start OvS as a separate process + +Enhanced OvS is used as a control plane for source MAC learning of overlay VMs. This OvS binary is available as part of ACC build and should be started as a separate process. + +```bash +export RUN_OVS=/opt/p4/p4-cp-nws + +rm -rf $RUN_OVS/etc/openvswitch +rm -rf $RUN_OVS/var/run/openvswitch +mkdir -p $RUN_OVS/etc/openvswitch/ +mkdir -p $RUN_OVS/var/run/openvswitch + + +ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ + $RUN_OVS/share/openvswitch/vswitch.ovsschema + +ovsdb-server \ + --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ + --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ + --pidfile --detach + +ovs-vsctl --no-wait init + +mkdir -p /tmp/logs +ovs-vswitchd --pidfile --detach --mlockall \ + --log-file=/tmp/logs/ovs-vswitchd.log + +ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 +ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 + +ovs-vsctl show +``` + +### Create Overlay network + +Option 1: Create VFs on HOST and spawn VMs on top of those VFs. +Example: Below config is provided for one VM, and considering each VM is in one VLAN. Extend this to other VMs. + +```bash +# VM1 configuration +telnet +ip link add link name .10 type vlan id 10 +ip addr add 101.0.0.1/24 dev .10 +ifconfig up +ifconfig .10 up +``` + +Option 2: If we are unable to spawn VMs on top of the VFs, we can leverage kernel network namespaces. +Move each VF to a network namespace and assign IP addresses. +Example: Below config is provided for one overlay port, and tag each port in the namespace to a single VLAN. Extend this to other namespaces. + +```bash +ip netns add VM0 +ip link set netns VM0 +ip netns exec VM0 ip link add link name .10 type vlan id 10 +ip netns exec VM0 ip addr add 101.0.0.1/24 dev .10 +ip netns exec VM0 ifconfig up +ip netns exec VM0 ifconfig .10 up +``` + +### Configure rules for mapping between Overlay VF and ACC port representor + +Configure rules to send overlay packets from a VM to its associated port representors. + +Refer to above port mapping for overlay VF to ACC port representor mapping. Here, sample commands are shown for a single overlay network. Configure similar mapping for remaining VFs. + +Example: + +- Overlay VF1 has a VSI value 27, its corresponding port representor has VSI value 9 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-27). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v4 \ + "vmeta.common.vsi=27,zero_padding=0,action=linux_networking_control.set_source_port(43)" + +# Create a mapping between overlay VF (VSI-27/source port-43) and ACC port representor (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=43,zero_padding=0,action=linux_networking_control.fwd_to_vsi(25)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=9,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(43)" + +# Create a mapping for traffic to flow between VSIs (VSI-27/source port-43) and (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=9,target_vsi=27,action=linux_networking_control.fwd_to_vsi(43)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=27,target_vsi=9,action=linux_networking_control.fwd_to_vsi(25)" + +``` + +### Configure rules for mapping between Physical port and ACC port representor + +Configure rules to send ingress packets from a physical port to its associated port representors. + +Refer to above port mapping for physical port to ACC port representor mapping. Here, sample commands are shown for a single physical port. Configure similar mapping for remaining physical ports. + +Example: + +- Physical port 0 port id is 0, its corresponding port representor has VSI value 17 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for a physical port (Phy port-0). Source port action can be any value. +# For simplicity consider the same value as phy port id. + p4rt-ctl add-entry br0 linux_networking_control.rx_source_port \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.set_source_port(0)" + +# Create a mapping between physical port (Phy port 0/src port 0) and ACC port representor (VSI-17) + p4rt-ctl add-entry br0 linux_networking_control.rx_phy_port_to_pr_map \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" +``` + +### Configure rules for mapping between APF netdev on HOST and ACC port representor + +Configure rules to send APF netdev on HOST to its associated port representors. + +Refer to above port mapping for APF netdev on HOST to ACC port representor mapping. Here, sample commands are shown for APF netdev on HOST. Configure similar mapping for remaining APF netdevs on HOST. + +Example: + +- APF netdev 1 on HOST has a VSI value 24, its corresponding port representor has VSI value 18 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-24). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v4 \ + "vmeta.common.vsi=24,zero_padding=0,action=linux_networking_control.set_source_port(40)" + + +# Create a mapping between overlay VF (VSI-24/source port-40) and ACC port representor (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=40,zero_padding=0,action=linux_networking_control.fwd_to_vsi(34)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" + +# Create a mapping for traffic to flow between VSIs (VSI-24/source port-40) and (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=18,target_vsi=24,action=linux_networking_control.fwd_to_vsi(40)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=24,target_vsi=18,action=linux_networking_control.fwd_to_vsi(34)" +``` + +### Configure supporting p4 runtime tables + +For TCAM entry configure LPM LUT table + +```bash + p4rt-ctl add-entry br0 linux_networking_control.ipv4_lpm_root_lut \ + "user_meta.cmeta.bit32_zeros=4/255.255.255.255,priority=65535,action=linux_networking_control.ipv4_lpm_root_lut_action(0)" +``` + +Create a dummy LAG bypass table for all 8 hash indexes + +```bash + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=0,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=1,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=2,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=3,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=4,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=5,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=6,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=7,action=linux_networking_control.bypass" +``` + +### Create integration bridge and add ports to the bridge + +Create OvS bridge, VxLAN tunnel and assign overlay VFs port representor to individual bridges. +Reference provided for single overlay network, repeat similar steps for other VFs. + +Each bridge has: + +- One overlay PR which is Native-tagged to a specific VLAN +- One VxLAN port which is Native-untagged to the VLAN and with different remote TEP and VNI + +```bash +ovs-vsctl add-br br-1 +ovs-vsctl add-port br-1 enp0s1f0d1 tag=10 vlan_mode=native-tagged +ovs-vsctl add-port br-1 vxlan1 tag=10 vlan_mode=native-untagged -- set interface vxlan1 type=vxlan \ + options:local_ip=10.1.1.1 options:remote_ip=20.1.1.1 options:key=10 options:dst_port=4789 +``` + +Note: Here we are creating a VxLAN tunnel with VNI 10, you can create any VNI for tunneling. + +### Underlay configuration + +Create a dummy interface which is used for TEP termination and create underlay bridge, add physical port's port representor and APF netdev port representor. +Reference provided for two multipath underlay network, repeat similar steps for multiple underlay networks. + +Option 1: Statically configure underlay ECMP routes to reach link partner (or) \ +Option 2: Use BGP protocol with FRR, for ECMP route redistribution to reach link partner. + +Below configuration assumes + +- `br-tun-1` OvS bridge with physical port representor `enp0s1f0d9` as first ECMP member +- `br-tun-2` OvS bridge with physical port representor `enp0s1f0d11` as second ECMP member + +```bash +ovs-vsctl add-br br-tun-1 +ovs-vsctl add-port br-tun-1 enp0s1f0d9 +ovs-vsctl add-port br-tun-1 enp0s1f0d10 + +ovs-vsctl add-br br-tun-2 +ovs-vsctl add-port br-tun-2 enp0s1f0d11 +ovs-vsctl add-port br-tun-2 enp0s1f0d12 +``` + +Option 1: Static configuration + +Configure underlay IP address on the TEP termination port, route to reach remote IP is on termination bridge, and add change routes to reach remote IP. + +```bash +# Create a dummy port and add TEP local IP +ip link add dev TEP0 type dummy +ifconfig TEP0 10.1.1.1/24 up + +# On tunnel bridge, configure an IP in the same network of remote underlay +ifconfig br-tun-1 50.1.1.1/24 up +ifconfig br-tun-2 60.1.1.1/24 up + +# Add multipath route to reach remote TEP +ip route add 20.1.1.1 nexthop via 50.1.1.2 dev br-tun-1 \ + weight 1 nexthop via 60.1.1.2 dev br-tun-2 weight 1 +ip route show +``` + +Sample link partner underlay configuration. + +```bash +ip link add dev TEP0 type dummy +ifconfig TEP0 20.1.1.1/24 up +ifconfig 50.1.1.2/24 up +ifconfig 60.1.1.2/24 up + +ip route add 10.1.1.1 nexthop via 50.1.1.1 dev \ + weight 1 nexthop via 60.1.1.1 dev weight 1 +ip route show + +``` + +Option 2: FRR running configuration + +```bash +# +# + +interface TEP0 +ip address 10.1.1.1/24 +exit +! +interface br-tun-1 +ip address 50.1.1.1/24 +exit +! +interface br-tun-2 +ip address 60.1.1.1/24 +exit +! +router bgp 65000 +bgp router-id 10.1.1.1 +neighbor 50.1.1.2 remote-as 65000 +neighbor 60.1.1.2 remote-as 65000 +! +address-family ipv4 unicast + network 10.1.1.0/24 +exit-address-family +``` + +Sample link partner FRR VTYSH configuration. + +```bash +interface TEP0 +ip address 20.1.1.1/24 +exit +! +interface +ip address 50.1.1.2/24 +exit +! +interface +ip address 60.1.1.2/24 +exit +! +router bgp 65000 +bgp router-id 20.1.1.1 +neighbor 50.1.1.1 remote-as 65000 +neighbor 60.1.1.1 remote-as 65000 +! +address-family ipv4 unicast + network 20.1.1.0/24 +exit-address-family +``` + +### Test the ping scenarios + +- Underlay ping from each tunnel bridge (`br-tun-1` and `br-tun-2`) +- Ping to remote tunnel IP from TEP interface +- Overlay ping: Ping between VMs on different hosts diff --git a/docs/apps/lnw/es2k/es2k-lnw-underlay-frr.md b/docs/apps/lnw/es2k/es2k-lnw-underlay-frr.md new file mode 100644 index 00000000..7c82c776 --- /dev/null +++ b/docs/apps/lnw/es2k/es2k-lnw-underlay-frr.md @@ -0,0 +1,403 @@ + + +# Linux Networking with FRR (ES2K) + +This document explains how to run the Linux networking scenario on ES2K. + +## Topology + +![Linux Networking Topology](es2k-lnw-topology.png) + +See [Linux Networking for ES2K](es2k-linux-networking.md) +for more details on this feature. + +Prerequisites: + +- Download `hw-p4-programs` TAR file specific to the build and extract it to get `fxp-net_linux-networking-v2` p4 artifacts. Go through `Limitations` specified in `README` and bring up the setup accordingly. +- Follow steps mentioned in [Deploying P4 Programs for E2100](/guides/es2k/deploying-p4-programs) for bringing up IPU with a custom P4 package. +Modify `load_custom_pkg.sh` with following parameters for linux_networking package: + +```text + sed -i 's/sem_num_pages = 1;/sem_num_pages = 25;/g' $CP_INIT_CFG + sed -i 's/lem_num_pages = 1;/lem_num_pages = 10;/g' $CP_INIT_CFG + sed -i 's/acc_apf = 4;/acc_apf = 8;/g' $CP_INIT_CFG +``` + +- Download `IPU_Documentation` TAR file specific to the build and refer to `Getting Started Guide` on how to install compatible `IDPF driver` on host. Once an IDPF driver is installed, bring up SRIOV VF by modifying the `sriov_numvfs` file present under one of the IDPF network devices. Example as below + + ```bash + echo 1 > /sys/class/net/ens802f0/device/sriov_numvfs + ``` + +Notes about topology: + +- VMs are spawned on top of each VF. Each VF will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a port representor in ACC. P4 runtime rules are configured to map VFs and their corresponding port representors. +- Each physical port will have a corresponding APF netdev on HOST. Create port representors in ACC for each HOST APF netdev. These APF netdevs on HOST will receive unknown traffic for applications to act on. +- All port representors should be part of an OvS bridge. Based on topology, this OvS bridge will just perform bridging or TEP termination on a bridge which is used to enable underlay connectivity for VxLAN traffic. +- OvS bridges and VxLAN ports are created using ovs-vsctl command (provided by the networking recipe). +- All port representors are attached to OvS bridge using ovs-vsctl command. +- This config has: + - 1 Overlay VF + - 1 Port representors in ACC for the 2 Overlay VF + - 2 physical ports + - 2 Port representors in ACC for the 2 physical ports + - 2 APF netdevs on HOST + - 2 Port representors in ACC for the 2 HOST APF netdevs + - TEP termination dummy interface + +System under test will have above topology running the networking recipe. Link Partner can have the networking recipe or legacy OvS or kernel VxLAN. Refer to the Limitations section in [Linux Networking for E2100](es2k-linux-networking.md) before setting up the topology. + +## Creating the topology + +Follow steps mentioned in [Running Infrap4d on Intel E2100](/guides/es2k/running-infrap4d.md) for starting `infrap4d` process and creating protobuf binary for `fxp-net_linux-networking-v2` p4 program. + +### Port mapping + +These VSI values can be checked with `/usr/bin/cli_client -q -c` command on IMC. This command provides VSI ID, Vport ID, and MAC addresses for all: + +- IDPF netdevs on ACC +- VFs on HOST +- IDPF netdevs on HOST (if IDPF driver loaded by you on HOST) +- Netdevs on IMC + +| Overlay VFs | Overlay VFs VSI ID | ACC port representor | ACC port representor VSI ID | +| ------------| ------------------ | -------------------- | --------------------------- | +| ens802f0v0 | (0x1b) 27 | enp0s1f0d1 | (0x09) 9 | + +| Physical port | Physical port ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| Phy port 0 | (0x0) 0 | enp0s1f0d9 | (0x11) 17 | +| Phy port 1 | (0x1) 1 | enp0s1f0d11 | (0x13) 19 | + +| APF netdev | APF netdev VSI ID | ACC Port presenter | ACC Port presenter VSI ID | +| ------------- | ----------------- | -------------------- | ------------------------- | +| ens802f0d1 | (0x18) 24 | enp0s1f0d10 | (0x12) 18 | +| ens802f0d2 | (0x19) 25 | enp0s1f0d12 | (0x14) 20 | + +(NOTE: Port names and their VSI IDs may differ from setup to setup. Configure accordingly.) + +### Set the forwarding pipeline + +Once the application is started, set the forwarding pipeline config using +P4Runtime Client `p4rt-ctl` set-pipe command + +```bash +$P4CP_INSTALL/bin/p4rt-ctl set-pipe br0 $OUTPUT_DIR/fxp-net_linux-networking-v2.pb.bin \ + $OUTPUT_DIR/p4info.txt +``` + +Note: Assumes that `fxp-net_linux-networking-v2.pb.bin`, `p4info.txt` and other P4 artifacts, are created by following the steps in the previous section. + +### Configure VSI Group and add a netdev + +Add all ACC port representors to VSI group 1. VSI group 1 is dedicated for this configuration, +execute below devmem commands on IMC. + +```bash +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0x8000050000000009 + +# SEM_DIRECT_MAP_PGEN_DATA_VSI_GROUP : This will set vsi +# (set in SEM_DIRECT_MAP_PGEN_CTRL register LSB) into VSIG-1. +devmem 0x2029200388 64 0x1 + +# SEM_DIRECT_MAP_PGEN_CTRL: LSB 11-bit is for vsi which needs to map into vsig +devmem 0x20292002a0 64 0xA000050000000009 +``` + +Note: Here VSI 9 has been used as one of the ACC port representors and added to VSI group 1. For this use case, add all 5 IDPF interfaces created on ACC. Modify this VSI based on your configuration. + +### Start OvS as a separate process + +Enhanced OvS is used as a control plane for source MAC learning of overlay VMs. This OvS binary is available as part of ACC build and should be started as a separate process. + +```bash +export RUN_OVS=/opt/p4/p4-cp-nws + +rm -rf $RUN_OVS/etc/openvswitch +rm -rf $RUN_OVS/var/run/openvswitch +mkdir -p $RUN_OVS/etc/openvswitch/ +mkdir -p $RUN_OVS/var/run/openvswitch + + +ovsdb-tool create $RUN_OVS/etc/openvswitch/conf.db \ + $RUN_OVS/share/openvswitch/vswitch.ovsschema + +ovsdb-server \ + --remote=punix:$RUN_OVS/var/run/openvswitch/db.sock \ + --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ + --pidfile --detach + +ovs-vsctl --no-wait init + +mkdir -p /tmp/logs +ovs-vswitchd --pidfile --detach --mlockall \ + --log-file=/tmp/logs/ovs-vswitchd.log + +ovs-vsctl set Open_vSwitch . other_config:n-revalidator-threads=1 +ovs-vsctl set Open_vSwitch . other_config:n-handler-threads=1 + +ovs-vsctl show +``` + +### Create Overlay network + +Option 1: Create VFs on HOST and spawn VMs on top of those VFs. +Example: Below config is provided for one VM, and considering each VM is in one VLAN. Extend this to other VMs. + +```bash +# VM1 configuration +telnet +ip link add link name .10 type vlan id 10 +ip addr add 101.0.0.1/24 dev .10 +ifconfig up +ifconfig .10 up +``` + +Option 2: If we are unable to spawn VMs on top of the VFs, we can leverage kernel network namespaces. +Move each VF to a network namespace and assign IP addresses. +Example: Below config is provided for one overlay port, and tag each port in the namespace to a single VLAN. Extend this to other namespaces. + +```bash +ip netns add VM0 +ip link set netns VM0 +ip netns exec VM0 ip link add link name .10 type vlan id 10 +ip netns exec VM0 ip addr add 101.0.0.1/24 dev .10 +ip netns exec VM0 ifconfig up +ip netns exec VM0 ifconfig .10 up +``` + +### Configure rules for mapping between Overlay VF and ACC port representor + +Configure rules to send overlay packets from a VM to its respective port representors. + +Refer to above port mapping for overlay VF to ACC port representor mapping. Here, sample commands are shown for a single overlay network. Configure similar mapping for remaining VFs. + +Example: + +- Overlay VF1 has a VSI value 27, its corresponding port representor has VSI value 9 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-27). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v4 \ + "vmeta.common.vsi=27,zero_padding=0,action=linux_networking_control.set_source_port(43)" + +# Create a mapping between overlay VF (VSI-27/source port-43) and ACC port representor (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=43,zero_padding=0,action=linux_networking_control.fwd_to_vsi(25)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=9,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(43)" + +# Create a mapping for traffic to flow between VSIs (VSI-27/source port-43) and (VSI-9) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=9,target_vsi=27,action=linux_networking_control.fwd_to_vsi(43)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=27,target_vsi=9,action=linux_networking_control.fwd_to_vsi(25)" + +``` + +### Configure rules for mapping between Physical port and ACC port representor + +Configure rules to send ingress packets from a physical port to its associated port representors. + +Refer to above port mapping for physical port to ACC port representor mapping. Here, sample commands are shown for a single physical port. Configure similar mapping for remaining physical ports. + +Example: + +- Physical port 0 port id is 0, its corresponding port representor has VSI value 17 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for a physical port (Phy port-0). Source port action can be any value. +# For simplicity consider the same value as phy port id. + p4rt-ctl add-entry br0 linux_networking_control.rx_source_port \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.set_source_port(0)" + +# Create a mapping between physical port (Phy port 0/src port 0) and ACC port representor (VSI-17) + p4rt-ctl add-entry br0 linux_networking_control.rx_phy_port_to_pr_map \ + "vmeta.common.port_id=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=0,zero_padding=0,action=linux_networking_control.fwd_to_vsi(33)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" +``` + +### Configure rules for mapping between APF netdev on HOST and ACC port representor + +Configure rules to send APF netdev on HOST to its associated port representors. + +Refer to above port mapping for APF netdev on HOST to ACC port representor mapping. Here, sample commands are shown for APF netdev on HOST. Configure similar mapping for remaining APF netdevs on HOST. + +Example: + +- APF netdev 1 on HOST has a VSI value 24, its corresponding port representor has VSI value 18 +- If a VSI is used as an action, add an offset of 16 to the VSI value + +```bash +# Create a source port for an overlay VF (VSI-24). Source port action can be any value. +# For simplicity add 16 to VSI ID. + p4rt-ctl add-entry br0 linux_networking_control.tx_source_port_v4 \ + "vmeta.common.vsi=24,zero_padding=0,action=linux_networking_control.set_source_port(40)" + + +# Create a mapping between overlay VF (VSI-24/source port-40) and ACC port representor (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.source_port_to_pr_map \ + "user_meta.cmeta.source_port=40,zero_padding=0,action=linux_networking_control.fwd_to_vsi(34)" + + p4rt-ctl add-entry br0 linux_networking_control.tx_acc_vsi \ + "vmeta.common.vsi=17,zero_padding=0,action=linux_networking_control.l2_fwd_and_bypass_bridge(0)" + +# Create a mapping for traffic to flow between VSIs (VSI-24/source port-40) and (VSI-18) + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=18,target_vsi=24,action=linux_networking_control.fwd_to_vsi(40)" + + p4rt-ctl add-entry br0 linux_networking_control.vsi_to_vsi_loopback \ + "vmeta.common.vsi=24,target_vsi=18,action=linux_networking_control.fwd_to_vsi(34)" +``` + +### Configure supporting p4 runtime tables + +For TCAM entry configure LPM LUT table + +```bash + p4rt-ctl add-entry br0 linux_networking_control.ipv4_lpm_root_lut \ + "user_meta.cmeta.bit32_zeros=4/255.255.255.255,priority=65535,action=linux_networking_control.ipv4_lpm_root_lut_action(0)" +``` + +Create a dummy LAG bypass table for all 8 hash indexes + +```bash + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=0,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=1,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=2,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=3,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=4,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=5,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=6,action=linux_networking_control.bypass" + + p4rt-ctl add-entry br0 linux_networking_control.tx_lag_table \ + "user_meta.cmeta.lag_group_id=0,hash=7,action=linux_networking_control.bypass" +``` + +### Create integration bridge and add ports to the bridge + +Create OvS bridge, VxLAN tunnel and assign overlay VFs port representor to individual bridges. +Reference provided for single overlay network, repeat similar steps for other VFs. + +Each bridge has: + +- One overlay PR which is Native-tagged to a specific VLAN +- One VxLAN port which is Native-untagged to the VLAN and with different remote TEP and VNI + +```bash +ovs-vsctl add-br br-1 +ovs-vsctl add-port br-1 enp0s1f0d1 tag=10 vlan_mode=native-tagged +ovs-vsctl add-port br-1 vxlan1 tag=10 vlan_mode=native-untagged -- set interface vxlan1 type=vxlan \ + options:local_ip=10.1.1.1 options:remote_ip=20.1.1.1 options:key=10 options:dst_port=4789 +``` + +Note: Here we are creating a VxLAN tunnel with VNI 10, you can create any VNI for tunneling. + +### Underlay configuration + +Create a dummy interface which is used for TEP termination and create underlay bridge, add physical port's port representor and APF netdev port representor. Use BGP protocol with FRR, for route redistribution. +Reference provided for single underlay network, repeat similar steps for multiple underlay networks. + +Below configuration assumes + +- `br-tun-1` OvS bridge with physical port representor `enp0s1f0d9` as port to reach remote underlay network + +```bash +ip link add dev TEP0 type dummy + +ovs-vsctl add-br br-tun-1 +ovs-vsctl add-port br-tun-1 enp0s1f0d9 +ovs-vsctl add-port br-tun-1 enp0s1f0d10 +``` + +FRR running configuration + +```bash +# +# + +interface TEP0 +ip address 10.1.1.1/24 +exit +! +interface br-tun-1 +ip address 70.1.1.1/24 +exit +! +router bgp 65000 +bgp router-id 10.1.1.1 +neighbor 70.1.1.1 remote-as 65000 +! +address-family ipv4 unicast +network 10.1.1.0/24 +exit-address-family +``` + +Sample link partner FRR VTYSH configuration. + +```bash +interface TEP0 +ip address 20.1.1.1/24 +exit +! +interface +ip address 70.1.1.2/24 +exit +! +router bgp 65000 +bgp router-id 20.1.1.1 +neighbor 70.1.1.2 remote-as 65000 +! +address-family ipv4 unicast + network 20.1.1.0/24 +exit-address-family +``` + +### Test the ping scenarios + +- Underlay ping from tunnel bridge (`br-tun-1`) +- Ping to remote tunnel IP from TEP interface +- Overlay ping: Ping between VMs on different hosts diff --git a/docs/apps/lnw/lnw-index.rst b/docs/apps/lnw/lnw-index.rst index 68392f8a..5d28ab91 100644 --- a/docs/apps/lnw/lnw-index.rst +++ b/docs/apps/lnw/lnw-index.rst @@ -1,4 +1,4 @@ -.. Copyright 2023 Intel Corporation +.. Copyright 2023-2024 Intel Corporation SPDX-License-Identifier: Apache-2.0 ================ @@ -22,8 +22,8 @@ ES2K es2k/es2k-linux-networking es2k/es2k-lnw-overlay-vms - es2k/es2k-linux-networking-ipv6 - es2k/es2k-linux-networking-ecmp - es2k/es2k-linux-networking-frr + es2k/es2k-lnw-overlay-ipv6 + es2k/es2k-lnw-underlay-ecmp + es2k/es2k-lnw-underlay-frr es2k/es2k-linux-networking-lag