Hello
I'm having a somewhat peculiar routing issue that I'm not sure how to move
forward with. I'm also not sure if it's an issue with our environment or if
there's something that needs to be done in VPP that I've missed.

We have a test setup with three servers directly connected to each other in
a ring:

A
| \
|  C
| /
B

A runs a packet generator on one interface and receives on the other.
Packets should be routed through VPP instances running in virtual machines
on B and C. Each pair of connected NIC's are on separate subnets. We are
using the DPDK plugin with the uio_pci_generic drivers for virtio at the
moment. On the hypervisor hosts we use KVM and OpenVSwitch, which bridges
the physical networks with Openstack provider networks.

The configuration is such that A routes packets to its "NIC 2" via B, and B
has in turn a route to that via C. And then the other way around for "NIC
1".

B and C can ping each other successfully, so that connection works fine.
But every time a packet is actually routed by VPP it seems to be silently
dropped somewhere. For example, trying to ping the second NIC on A from the
first one, the packet is routed through B. From the traces on B I can see
that the packet is rewritten for the route:

02:35:50:471696: ip4-rewrite
  tx_sw_if_index 2 dpo-idx 2 : ipv4 via 10.0.20.107 GigabitEthernet0/5/0:
fa163e6287f4fa163eb37d5a0800 flow hash: 0x00000000
  00000000: fa163e6287f4fa163eb37d5a080045000054937640003f016b690a001e660a00
  00000020: 0a6408002a61775e0004bb06cd59000000000f090000000000001011
02:35:50:471696: GigabitEthernet0/5/0-output
  GigabitEthernet0/5/0
  IP4: fa:16:3e:b3:7d:5a -> fa:16:3e:62:87:f4
  ICMP: 10.0.30.102 -> 10.0.10.100
    tos 0x00, ttl 63, length 84, checksum 0x6b69
    fragment id 0x9376, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x2a61
02:35:50:471697: GigabitEthernet0/5/0-tx
  GigabitEthernet0/5/0 tx queue 0
  buffer 0x6cc9: current data 0, length 98, free-list 0, clone-count 0,
totlen-nifb 0, trace 0x3
  IP4: fa:16:3e:b3:7d:5a -> fa:16:3e:62:87:f4
  ICMP: 10.0.30.102 -> 10.0.10.100
    tos 0x00, ttl 63, length 84, checksum 0x6b69
    fragment id 0x9376, flags DONT_FRAGMENT
  ICMP echo_request checksum 0x2a61

... but it never reaches C. tcpdump on the host interface is completely
silent so it seems like the packet either never leaves the VM or is
discarded by OVS somehow (not sure if that's something that can happen
though). But since ping between B and C works and those traces look about
the same, I don't understand why that works but not the routed packet.

What do you think? Can this be an issue with our VPP setup/configuration or
is it more likely an external issue?

/Tomas
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to