Uploaded image for project: 'vpp'
  1. vpp
  2. VPP-1992

ping returns - failed: no source address for egress interface

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Medium Medium
    • None
    • None
    • None
    • None

      Hello,

      Found a problem with some types of vpp interfaces.
      When I created an interface and run ping I see:

      vpp# ping x.x.x.x
      Failed: no source address for egress interface
      Failed: no source address for egress interface
      Failed: no source address for egress interface
      Failed: no source address for egress interface
      Failed: no source address for egress interface
      Statistics: 0 sent, 0 received, 0% packet loss
      

      Found a similar issue: https://jira.fd.io/browse/VPP-1970
      and similar topic here: https://lists.fd.io/g/vpp-dev/topic/84038840

      Memif

      IP mode

      IP mode works fine with patches:
      1. https://gerrit.fd.io/r/c/vpp/+/32801
      2. https://gerrit.fd.io/r/c/vpp/+/33303
      It works, because memif IP is P2P - https://github.com/FDio/vpp/blob/master/src/plugins/memif/memif.c#L841-L845

      Ethernet mode

      But Ethernet mode doesn't work. Because memif Ethernet is NOT P2P (see here) and this patch doesn't work.

      Config example:
      If I change /32 mask to any other, it works fine.
      vpp1:

      DBGvpp# create interface memif id 0 master
      DBGvpp# set int ip address memif0/0 10.10.2.0/32
      DBGvpp# set int state memif0/0 up
      DBGvpp# ip route add 10.10.2.1/32 via 10.10.2.0 memif0/0
      

      vpp2:

      DBGvpp# create interface memif id 0 slave
      DBGvpp# set int ip address memif0/0 10.10.2.1/32
      DBGvpp# set int state memif0/0 up
      DBGvpp# ip route add 10.10.2.0/32 via 10.10.2.1 memif0/0
      

      VxLAN

      Same problem with VxLAN

      Config example:
      If I change /32 mask to any other, it works fine.
      vpp1:

      DBGvpp# create interface memif id 0 master
      DBGvpp# set int ip address memif0/0 10.10.2.1/24
      DBGvpp# set int state memif0/0 up
      DBGvpp# 
      DBGvpp# create vxlan tunnel src 10.10.2.1 dst 10.10.2.2 vni 13 decap-next node ethernet-input
      vxlan_tunnel0
      DBGvpp# set int ip address vxlan_tunnel0 10.10.3.1/32
      DBGvpp# ip route add 10.10.3.2/32 via 10.10.3.1 vxlan_tunnel0
      

      vpp2:

      DBGvpp# create interface memif id 0 slave
      DBGvpp# set int ip address memif0/0 10.10.2.2/24
      DBGvpp# set int state memif0/0 up
      DBGvpp# 
      DBGvpp# create vxlan tunnel src 10.10.2.2 dst 10.10.2.1 vni 13 decap-next node ethernet-input
      vxlan_tunnel0
      DBGvpp# set int ip address vxlan_tunnel0 10.10.3.2/32
      DBGvpp# ip route add 10.10.3.1/32 via 10.10.3.2 vxlan_tunnel0
      

      Wireguard

      There is a similar problem with wireguard.
      Because wireguard is NBMA

      Possible solution:
      Add to this patch - https://gerrit.fd.io/r/c/vpp/+/32801 - NBMA checking also:

      ...
      if (vnet_sw_interface_is_p2p(vnet_get_main(), sw_if_index) || vnet_sw_interface_is_nbma(vnet_get_main(), sw_if_index))
      {
      ...
      

      Additional information

      DBGvpp# show version 
      vpp v21.10-rc0~218-gfdcbd38dc built by art on art-c at 2021-08-02T13:39:08

            Unassigned Unassigned
            ArtemGlazychev Artem Glazychev
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: