On Tue, Sep 30, 2025 at 12:46:58PM -0400, Aaron Conole wrote: > This commit wires up support for the socket() action, which will > create a recirculation on the datapath to bypass as many extra > recirculations as possible before the output. The rough idea is > that a data packet can 'bypass' certain parts of the networking > stack and experience a faster delivery. This makes some of the > tracking features (for example, simple tcpdump type operations) > much more complicated because the underlying datapath will not > use the complete routing / sockets layer in datapath, but it > instead directly will queue the data portion of the packet to > the socket buffer. For non-data packets, the socket() action > will hit the 'else' directive and take the recirc chain. > > One area that still needs enhancement is the ct() path. The > conntrack portions are only doing the socket call after the > recirculation chain. However, the proper way to do this is > to rewrite the original recirculation state to hit the socket > path first. That will require quite a bit more context and > logic in the compose ct action, so it isn't done here, and > it isn't recommended to use this with a really complex flow > pipeline yet (since this is still a WIP). Future work will > focus on this area so that an existing flow after freezing > that looks like: > > recirc_id(0),eth(...),eth_type(...),ipv4(...), > actions=ct(commit,nat(dst=1.2.3.4)),recirc(0x1) > > would be rewritten as: > > recirc_id(0),eth(...),eth_type(...),ipv4(...),... > actions=socket(netns=...,inode=...,else(recirc(1)) > recirc_id(0x1),eth(...)... > actions=ct(commit,nat(dst=1.2.3.4)),recirc(0x2)
How would that be done? IIUC the first flow could be shared between multiple connections. Thanks. Adrián _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
