nsg-ethz/p4-utils

Problem with the “sudo p4run --config p4app.json” command regarding ping between hosts

Ga-Correia opened this issue · 3 comments

I'm new to P4 and I'm trying to run the Mininet-PINT repository, dependent on p4utils, in which the network topology in mininet is built and initialized through the command “sudo p4run --config p4app.json”, but I noticed that when the topology is initialized it is not possible to execute the “ping” command between two hosts, but only between a host and a switch or between two switches.

I would like to know how to fix this problem, because creating a simple topology using the “sudo mn” command, ping works normally for both cases and I believe that perhaps this is the problem I am having when running the repository because the recipient hosts do not receive the packets sent by the sending host.

Hi @Ga-Correia,

I am not sure if I understand your problem. But you should be able to ping between two hosts. For example by:

h1 ping h2

If the ping does not work, then the problem resides in the application you are running. You should debug the issue a bit more.

Yes, I did it as you showed, but between 2 hosts, ping only sent packets, but all were lost. Between 1 host and 1 switch, ping worked without problems. During the execution of the application, 5000 packets are being sent on the sender side, however on the receiving side there is a queue where the header decapsulation of these packets was supposed to be done, but it is always empty, indicating that nothing was received.

I don't know the details of that mininet-PINT project. But it looks like the problem is in the switch code. You should first debug why packets are dropped at the switch, otherwise, we have no idea if this is a logical issue in the p4 program or something external.