Skip to content

[BUG] pcn_pkt_redirect doesn't work in xdp cubes with transparent services attached #280

@FedeParola

Description

@FedeParola

Describe the bug

pcn_pkt_redirect doesn't work in xdp standard cubes when a transparent service is attached to the destination interface

To Reproduce

Using router and transparenthelloworld (but the same applies to other services).
Setup the router:

polycubectl router add r1 type=xdp_drv loglevel=trace
polycubectl r1 ports add p1 peer=<physical_iface> ip=10.0.0.2/24

Trying to ping 10.0.0.2 from an host connected to the router port works fine.
Add a transparent service:

polycubectl transparenthelloworld add th1 type=xdp_drv
polycubectl attach th1 r1:p1

Clear the arp cache on the source host (since the arp reply in the router is the operation that requires a pcn_pkt_redirect):
sudo ip -s -s neigh flush all
Pinging 10.0.0.2 no longer works.

Expected behavior

Ping should work normally.

Please tell us about your environment:

  1. OS details: Ubuntu 18.04.4 LTS
  2. Kernel details: 5.5.0-050500-generic

Additional context

Looking at the log of the router, instead of being sent out of the interface, the ARP Reply packet is sent back to the router dataplane code, with a nonexistent port as in port:

[2020-03-11 10:24:31.957] [Transparenthelloworld] [th1] [debug] Ingress: passing packet
[2020-03-11 10:24:31.957] [Router] [r1] [trace] in_port: 0, proto: 0x806, mac_src: 00:e0:ed:22:ee:e4 mac_dst: ff:ff:ff:ff:ff:ff
[2020-03-11 10:24:31.957] [Router] [r1] [debug] somebody is asking for my address
[2020-03-11 10:24:31.957] [Router] [r1] [trace] in_port: 3, proto: 0x806, mac_src: 00:e0:ed:22:6a:46 mac_dst: 00:e0:ed:22:ee:e4
[2020-03-11 10:24:31.957] [Router] [r1] [error] received packet from non valid port: 3
[2020-03-11 10:24:31.957] [Router] [r1] [trace] in: 3 out: -- DROP

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions