How can I list which virtual ethernet pairs are running in the current linux host?

15,014

Solution 1

You can get peer ifindex with the following ethtool command.

# ethtool -S veth1
NIC statistics:
     peer_ifindex: 7

ifindex is shown with:

# ip link

Ref: http://www.spinics.net/lists/netdev/msg102062.html

Solution 2

I have just written a command to show the peer veth interface:

https://github.com/hariguchi/veth-peer

Example

$ sudo ip link add foo-bar type veth peer name bar-foo
[sudo] password for XXX:
$ veth-peer foor-bar
bar-foo
$ veth-peer xxx
xxx: Link not found
$ veth-peer lo
lo is not veth.
$ sudo ip link del foo-bar
           $ veth-peer bar-foo
           bar-foo: Link not found
$

Solution 3

I have an older linux kernel without ip netns so I cobbled this together to get the needed info. Assuming you can ssh into your LXC containers, this might be of use to you. It's a quick hack 8)

MY_VMS="10.0.1.1" # etc... change as needed
for A_VM in $MY_VMS
do
  if [ ! -f $A_VM.list ]
  then
    ssh $A_VM ip link list > $A_VM.list
  fi

  for i in `ifconfig -a | grep "Link encap" | sed 's/ .*//g'`
  do
    PEER_IFINDEX=`ethtool -S $i 2>/dev/null | grep peer_ifindex | sed 's/ *peer_ifindex: *//g' `
    if [ "$PEER_IFINDEX" = "" ]
    then
      continue
    fi

    PEER_IF=`grep "^$PEER_IFINDEX:" $A_VM.list  | awk '{print $2}' | sed 's/:.*//g'`
    if [ "$PEER_IF" = "" ]
    then
      continue
    fi
    printf "%-10s is paired with %-10s on %-20s\n" $i $PEER_IF $A_VM
  done
done
Share:
15,014

Related videos on Youtube

user1984103
Author by

user1984103

I am a Computer Programmer and Software Engineer in Austin, TX. I develop web applications for a living and spend my spare time tinkering with all manner of computers and hosted servers, and playing D&D when CPUs aren't melting.

Updated on September 18, 2022

Comments

  • user1984103
    user1984103 over 1 year

    I have a question related to the veth pair that is used in Linux system. I want to know which veth pairs are running in the current host, which I mean querying the pairs by using one Linux command or finding the related configuration in some files.

    I know that to construct veth pair, you can simply by using

    ip link add name1 type veth name2
    

    But I haven't found an command or file that could be used to query the current running veth pairs.

    If you know a way that could find the current running veth pairs, could you please tell me? This would help me a lot.

  • Curtis Yallop
    Curtis Yallop about 6 years
    For me it shows the peer ifindex right in "ip link" eg veth173321d@if82 so 82 is the linked address if I type "ethtool -S veth173321d".