I have been working with BMv2 for a year now. I am trying to implement a time-sensitive synchronization protocol on BMv2. I understand that BMv2 is not a production-level switch with low delay. However, I prefer to minimize the delay so I can verify my algorithm.
I’m having trouble sending a packet to two switches simultaneously.
Both switches are identical and connected to the same veth.
However, there is a large difference between the time they receive the packet. (I use OS timestamps. Switches are identical)
I am using Ubuntu on a virtual machine. I have tried allocating one CPU core to each switch. I have also increased the priority of each switch process using the OS scheduler. Both were ineffective. I am still observing differences in the time that two switches receive the packet (random value between a couple of microseconds up to a couple of milliseconds).
What is the cause of this inconsistency?
Is BMv2 put to sleep when it’s not receiving any packets?
How can I minimize this time difference?
I would appreciate it if you share your experiences.