Como posso listar quais pares de ethernet virtuais estão sendo executados no host linux atual?

4

Eu tenho uma pergunta relacionada ao par veth que é usado no sistema Linux. Eu quero saber quais veth pares estão executando no host atual, o que quero dizer consultando os pares usando um comando do Linux ou encontrando a configuração relacionada em alguns arquivos.

Eu sei que, para construir veth pair, você pode simplesmente usar

ip link add name1 type veth name2

Mas não encontrei um comando ou arquivo que pudesse ser usado para consultar os pares veth em execução.

Se você conhece uma maneira de encontrar os pares veth em execução, você poderia me informar? Isso me ajudaria muito.

    
por Yang 12.07.2013 / 14:57

4 respostas

6

Você pode obter peer ifindex com o seguinte comando ethtool.

# ethtool -S veth1
NIC statistics:
     peer_ifindex: 7

ifindex é mostrado com:

# ip link

Ref: link

    
por 01.09.2013 / 01:52
1

Acabei de escrever um comando para mostrar a interface peer veth:

link

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
$
    
por 30.04.2018 / 18:15
0

Eu tenho um kernel linux mais antigo sem ip netns, então eu montei isso juntos para obter as informações necessárias. Supondo que você pode ssh em seus contêineres LXC, isso pode ser útil para você. É um hack rápido 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
    
por 21.11.2014 / 17:58
0

Com este script simples você pode encontrar os pares (para OpenStack ):

#!/bin/bash
for i in 'ifconfig -a |grep qv |awk -F: '{print $1}'' ;
   do
      echo "---------------"
      echo $i
      echo "Our ID: " 'ip link show dev $i | grep $i | awk -F: '{print $1}''
      echo "Peer ID: " 'ethtool -S $i |  grep -i peer_ifindex | awk -F: '{print $2}''
      echo "---------------"
done

Em pares OpenStack veth - os nomes da interface veth começam com qv* .

    
por 11.05.2016 / 14:41