I am currently working on a project where we will use ONOS to control a Tofino1 switch. However, I am having problems in receiving PacketIn messages at ONOS, while adding rules to Tofino works fine.
The Tofino platform being used is Wedge100BF-32qs, SDE version is 9.7.2 and Stratum running as a docker container (stratumproject/stratum-bfrt:latest-9.7.2); while on the other side I am running ONOS 3.0.0. The Tofino switch and the PC where ONOS is running are both connected to a L2-switch. Moreover, I have another PC that that has two interfaces connected to port 7/0 (308) and 16/0 (0) of Tofino.
Following the fabric-tna tutorial, I am building the data plane code with
make fabric-tna, and then run
make pipeconf-install and
make netcfg. On the Tofino side, I am executing stratum in a container using
./start_stratum_container.sh -experimental_enable_p4runtime_translation -incompatible_enable_bfrt_legacy_bytestring_responses -bf_switchd_background=false.
Everything seems to go fine with the initialization, I can see the rules added to the switch. However, if I send some packet that is crafted with scapy, I do not see any PacketIn messages from the ONOS logs. To be sure, I also installed the “Reactive Forwarding” application in ONOS, which installs a rule that sends IPv4 packets to the CPU. Now, when I send dummy IPv4 packets, they all match with this rule (confirmed by the flow counters) but instead of the packet being sent out of CPU_PORT, it is basically flooded towards all the enabled ports of the switch.
Now, I really dont understand what is going on with my setup. I believe I have made an error in the initial configuration of the setup, because fabric-tna should have worked out-of-the-box.
Did anyone else have issues with setting up ONOS as the control plane of a Tofino switch? Did you have any similar issue with respect to PacketIn messages not being sent?