-
Notifications
You must be signed in to change notification settings - Fork 708
VPP Pure_L3_Between_Namespaces_with_ 32s
Dave Wallace edited this page Apr 21, 2026
·
1 revision
INDECES=(1 2)
LOOP_INT=$(sudo vppctl create loopback interface)
LOOP_IDX=$(sudo vppctl show int | grep ${LOOP_INT} | awk '{print $2}')
sudo vppctl set interface ip address ${LOOP_INT} 10.10.1.1/24
sudo vppctl set int state ${LOOP_INT} up
sudo vppctl set ip arp proxy 10.10.1.2-10.10.1.255
for i in ${INDECES[@]}
do
INDEX=${i};HNAME=host${INDEX};IP=10.10.1.$((${INDEX}+1));IPGW=10.10.1.1
#Create namespace
sudo ip netns add ${HNAME}
# Create link and add it to namespace
sudo ip link add name vpp2${HNAME} type veth peer name ${HNAME}
sudo ip link set ${HNAME} netns ${HNAME}
sudo ip link
sudo ip netns exec ${HNAME} ip link
# Turn up link in namespace
sudo ip netns exec ${HNAME} ip link set dev ${HNAME} up
# Bring up link in root ns
sudo ip link set dev vpp2${HNAME} up
# Fire up a tcpdump on interface in namespace
sudo ip netns exec ${HNAME} tcpdump -i ${HNAME} -w /tmp/tcpdump-${HNAME}.libpcap &
# Configure IP address on interface in namspace
sudo ip netns exec ${HNAME} ip addr add ${IP}/24 dev ${HNAME}
sudo ip netns exec ${HNAME} ip addr show ${HNAME}
# Create host interface in vpp attached to other end of veth pair
sudo vppctl create host-interface name vpp2${HNAME}
sudo vppctl show hardware
# Set up as unumbered interface against LOOP_INT
INT_IDX=$(sudo vppctl show int | grep host-vpp2${HNAME} | awk '{print $2}')
echo ${INT_IDX}
echo sw_interface_set_unnumbered sw_if_index ${LOOP_IDX} unnum_if_index ${INT_IDX} | sudo vpp_api_test | grep -v "#vat"
# Setup arp proxy
sudo vppctl set interface proxy-arp host-vpp2${HNAME} enable
# Configure route in vpp to namespace /32
sudo vppctl ip route add ${IP}/32 via ${IP} host-vpp2${HNAME}
sudo vppctl show ip fib ${IP}/32
# Turn vpp side interfaces up
sudo vppctl set int state host-vpp2${HNAME} up
# Turn on trace
sudo vppctl trace add af-packet-input 100
# Configure default route in namespace to GW
sudo ip netns exec ${HNAME} ip route add default via ${IPGW} dev ${HNAME}
sudo ip netns exec ${HNAME} ip route
done
INDECES=(1 2)
for i in ${INDECES[@]}
do
INDEX=${i};HNAME=host${INDEX};IP=10.10.1.$((${INDEX}+1));IPGW=10.10.1.1
#Create namespace
sudo ip netns add ${HNAME}
# Create link and add it to namespace
sudo ip link add name vpp2${HNAME} type veth peer name ${HNAME}
sudo ip link set ${HNAME} netns ${HNAME}
sudo ip link
sudo ip netns exec ${HNAME} ip link
# Capture Namespace Mac address
MACADDR=$(sudo ip netns exec ${HNAME} ip link show dev ${HNAME} | grep link | awk '{print $2}')
echo "MACADDR: ${MACADDR}"
# Turn up link in namespace
sudo ip netns exec ${HNAME} ip link set dev ${HNAME} up
# Bring up link in root ns
sudo ip link set dev vpp2${HNAME} up
# Fire up a tcpdump on interface in namespace
sudo ip netns exec ${HNAME} tcpdump -i ${HNAME} -w /tmp/tcpdump-${HNAME}.libpcap &
# Configure IP address on interface in namspace
sudo ip netns exec ${HNAME} ip addr add ${IP}/32 dev ${HNAME}
sudo ip netns exec ${HNAME} ip addr show ${HNAME}
# Create host interface in vpp attached to other end of veth pair
sudo vppctl create host-interface name vpp2${HNAME}
sudo vppctl show hardware
# Turn on trace
sudo vppctl trace add af-packet-input 100
# Configure route in vpp to namespace /32
sudo vppctl ip route add ${IP}/32 via ${IP} host-vpp2${HNAME}
sudo vppctl show ip fib ${IP}/32
# Assign 127.0.0.* IP to vpp interface. This is done to force interface into IP mode
sudo vppctl set interface ip address host-vpp2${HNAME} 127.0.0.$((${INDEX}+1))/32
sudo vppctl set ip arp host-vpp2${HNAME} ${IP} ${MACADDR}
sudo vppctl set int state host-vpp2${HNAME} up
# Capture VPP side mac address
VPP_MACADDRESS=$(sudo vppctl show hardware host-vpp2${HNAME} | grep "Ethernet address" | awk '{print $3}')
# Staticly peg up arp entry for vpp side of interface associated to GW address
sudo ip netns exec ${HNAME} ip neigh add ${IPGW} lladdr ${VPP_MACADDRESS} dev ${HNAME}
# Configure route to GW IP in namespace
sudo ip netns exec ${HNAME} ip route add ${IPGW} dev ${HNAME} scope link
# Configure default route in namespace to GW
sudo ip netns exec ${HNAME} ip route add default via ${IPGW} dev ${HNAME}
sudo ip netns exec ${HNAME} ip route
done
for i in ${INDECES[@]}
do
INDEX=${i};HNAME=host${INDEX};IP=10.10.1.$((${INDEX}+1));IPGW=10.10.1.1
for j in ${INDECES[@]}
do
PINGIP=10.10.1.$((${j}+1))
PINGHNAME=host${j}
if [ ${PINGIP} != ${IP} ]; then
echo "Pinging from ${HNAME} to ${PINGHNAME} "
sudo ip netns exec ${HNAME} ping -c 2 10.10.1.$((${j}+1))
fi
done
done
sudo vppctl show trace
for i in ${INDECES[@]}
do
INDEX=${i};HNAME=host${INDEX};IP=10.10.1.$((${INDEX}+1));IPGW=10.10.1.1
sudo tcpdump -r /tmp/tcpdump-${HNAME}.libpcap -e
done
INDECES=(1 2)
for i in ${INDECES[@]}
do
INDEX=${i};HNAME=host${INDEX};IP=10.10.1.$((${INDEX}+1));IPGW=10.10.1.1
sudo ip netns del ${HNAME}
sudo ip link del vpp2${HNAME}
ps -ef | grep /tmp/tcpdump-${HNAME}.libpcap | awk '{print $2}' | xargs sudo kill
done
sudo service vpp restart
- VPP 2022 Make Test Use Case Poll
- VPP-AArch64
- VPP-ABF
- VPP Alternative Builds
- VPP API Concepts
- VPP API Versioning
- VPP-ApiChangeProcess
- VPP-ArtifactVersioning
- VPP-BIER
- VPP-Bihash
- VPP-BugReports
- VPP Build System Deep Dive
- VPP Build, Install, And Test Images
- VPP-BuildArtifactRetentionPolicy
- VPP-c2cpel
- VPP Code Walkthrough VoD
- VPP Code Walkthrough VoD Topic Index
- VPP Code Walkthrough VoDs
- VPP-CodeStyleConventions
- VPP-CodingTips
- VPP Command Line Arguments
- VPP Command Line Interface CLI Guide
- VPP-CommitMessages
- VPP-Committers-SMEs
- VPP-CommitterTasks-ApiFreeze
- VPP CommitterTasks Compare API Changes
- VPP-CommitterTasks-CutPointRelease
- VPP-CommitterTasks-CutRelease
- VPP-CommitterTasks-FinalReleaseCandidate
- VPP-CommitterTasks-PullThrottleBranch
- VPP-CommitterTasks-ReleasePlan
- VPP Configuration Tool
- VPP Configure An LW46 MAP E Terminator
- VPP Configure VPP As A Router Between Namespaces
- VPP Configure VPP TAP Interfaces For Container Routing
- VPP-CoreFileMismatch
- VPP-cpel
- VPP-cpeldump
- VPP-CurrentData
- VPP-DHCPKit
- VPP-DHCPv6
- VPP-DistributedOwnership
- VPP-Documentation
- VPP DPOs And Feature Arcs
- VPP EC2 Instance With SRIOV
- VPP-elog
- VPP-FAQ
- VPP Feature Arcs
- VPP-Features
- VPP-Features-IPv6
- VPP-FIB
- VPP-g2
- VPP Getting VPP 16.06
- VPP Getting VPP Release Binaries
- VPP-HA
- VPP-HostStack
- VPP-HostStack-BuiltinEchoClientServer
- VPP-HostStack-EchoClientServer
- VPP-HostStack-ExternalEchoClientServer
- VPP HostStack Hs Test
- VPP-HostStack-LDP-iperf
- VPP-HostStack-LDP-nginx
- VPP-HostStack-LDP-sshd
- VPP-HostStack-nginx
- VPP-HostStack-SessionLayerArchitecture
- VPP-HostStack-TestHttpServer
- VPP-HostStack-TestProxy
- VPP-HostStack-TLS
- VPP-HostStack-VCL
- VPP-HostStack-VclEchoClientServer
- VPP-Hotplug
- VPP How To Add A Tunnel Encapsulation
- VPP How To Build The Sample Plugin
- VPP How To Connect A PCI Interface To VPP
- VPP How To Create A VPP Binary Control Plane API
- VPP How To Deploy VPP In EC2 Instance And Use It To Connect Two Different VPCs
- VPP How To Optimize Performance %28System Tuning%29
- VPP How To Use The API Trace Tools
- VPP How To Use The C API
- VPP How To Use The Packet Generator And Packet Tracer
- VPP-Howtos
- VPP-index
- VPP Installing VPP Binaries From Packages
- VPP Interconnecting vRouters With VPP
- VPP Introduction To IP Adjacency
- VPP Introduction To N Tuple Classifiers
- VPP IP Adjacency Introduction
- VPP-IPFIX
- VPP-IPSec
- VPP IPSec And IKEv2
- VPP IPv6 SR VIRL Topology File
- VPP Java API
- VPP Java API Plugin Support
- VPP Jira Workflow
- VPP-Macswapplugin
- VPP-MakeTestFramework
- VPP-Meeting
- VPP-MFIB
- VPP Missing Prefetches
- VPP Modifying The Packet Processing Directed Graph
- VPP MPLS FIB
- VPP-NAT
- VPP Nataas Test
- VPP-OVN
- VPP Per Feature Notes
- VPP Performance Analysis Tools
- VPP-perftop
- VPP Progressive VPP Tutorial
- VPP Project Meeting Minutes
- VPP Pulling, Building, Running, Hacking And Pushing VPP Code
- VPP Pure L3 Between Namespaces With 32s
- VPP Pure L3 Container Networking
- VPP Pushing And Testing A Tag
- VPP Python API
- VPP-PythonVersionPolicy
- VPP-QuickTrexSetup
- VPP Random Hints And Kinks For KVM Usage
- VPP Release Plans Release Plan 16.09
- VPP Release Plans Release Plan 17.01
- VPP Release Plans Release Plan 17.04
- VPP Release Plans Release Plan 17.07
- VPP Release Plans Release Plan 17.10
- VPP Release Plans Release Plan 18.01
- VPP Release Plans Release Plan 18.04
- VPP Release Plans Release Plan 18.07
- VPP Release Plans Release Plan 18.10
- VPP Release Plans Release Plan 19.01
- VPP Release Plans Release Plan 19.04
- VPP Release Plans Release Plan 19.08
- VPP Release Plans Release Plan 20.01
- VPP Release Plans Release Plan 20.05
- VPP Release Plans Release Plan 20.09
- VPP Release Plans Release Plan 21.01
- VPP Release Plans Release Plan 21.06
- VPP Release Plans Release Plan 21.10
- VPP Release Plans Release Plan 22.02
- VPP Release Plans Release Plan 22.06
- VPP Release Plans Release Plan 22.10
- VPP Release Plans Release Plan 23.02
- VPP Release Plans Release Plan 23.06
- VPP Release Plans Release Plan 23.10
- VPP Release Plans Release Plan 24.02
- VPP Release Plans Release Plan 24.06
- VPP Release Plans Release Plan 24.10
- VPP Release Plans Release Plan 25.02
- VPP Release Plans Release Plan 25.06
- VPP Release Plans Release Plan 25.10
- VPP Release Plans Release Plan 26.02
- VPP Release Plans Release Plan 26.06
- VPP-RM
- VPP-SecurityGroups
- VPP Segment Routing For IPv6
- VPP Segment Routing For MPLS
- VPP Setting Up Your Dev Environment
- VPP-SNAT
- VPP Software Architecture
- VPP STN Testing
- VPP The VPP API
- VPP Training Events
- VPP-Troubleshooting
- VPP-Troubleshooting-BuildIssues
- VPP-Troubleshooting-Vagrant
- VPP Tutorial DPDK And MacSwap
- VPP Tutorial Routing And Switching
- VPP-Tutorials
- VPP Use VPP To Chain VMs Using Vhost User Interface
- VPP Use VPP To Connect VMs Using Vhost User Interface
- VPP Using mTCP User Mode TCP Stack With VPP
- VPP Using VPP As A VXLAN Tunnel Terminator
- VPP Using VPP In A Multi Thread Model
- VPP-VOM
- VPP VPP BFD Nexus
- VPP VPP Home Gateway
- VPP VPP WIKI DEPRECATED CONTENT
- VPP-VPPCommunicationsLibrary
- VPP-VPPConfig
- VPP What Is ODP4VPP
- VPP What Is VPP
- VPP Working Environments
- VPP Working With The 16.06 Throttle Branch