Hi everyone,
The general problem I have is that I'm developing a feature for OVN.
When a relevant packet arrives, I want to set some data and have that
data available the entire time that the packet is being processed. My
initial idea was to use one of reg0-reg9 for this. However, those
register values get reset to 0 when the packet changes from the ingress
to the egress pipeline and when the packet moves from one logical
datapath to another.
My question is, is it possible (or acceptable) for me to use one of
reg0-reg9 as a special purpose register and not to reset its value to 0
automatically? Or is there some other method that would be appropriate?
Here's a more detailed explanation of the problem. OpenShift is
migrating from using their own custom use of OVS to using OVN (via
ovn-kubernetes). One feature they currently offer is for any pod in a
namespace to be able to send a multicast packet and have it reach all
other pods in the same namespace. The actual multicast destination
address is not important. This is on purpose so that separate namespaces
can use the same multicast destination without the worry of collision.
They want to maintain this feature when switching to OVN.
You may recall me talking about doing something like this quite some
time ago, but the actual method has changed a bit since then.
My approach for implementing this is to create a new northbound table
for multicast groups. This table contains a list of logical switch ports
that represent members of the group. In ovn-northd, we do some magic to
ensure that if any of these logical switch ports are on separate logical
switches, then appropriate logical flows get installed so that the
multicast packet attempts to traverse the logical router(s) that
separate the logical switches.
When the packet initially arrives on a logical switch, we can use the
logical input port, coupled with the multicast destination, to determine
the multicast group that this packet should be sent to. However, once
the packet reaches a logical router, there's nothing about the packet
that we can use to determine which multicast group is the appropriate
destination. Same thing occurs when the packet arrives in a logical
switch from a logical router.
My idea for fixing this is to store the multicast group ID in a
general-purpose register. But as stated above, if I set this value in a
register, the register's value will get reset to 0 when the packet
reaches the logical router pipeline. Hence my questions from the beginning.
Thanks everyone,
Mark Michelson
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev