Hi Ben, I will give it a whack. Problem description: There are several service functions that are essentially bump-in-the-wire. Eg. Firewall from Palo Alto Networks, URL filter from Trend Micro, etc. With traditional hardware, this is not an issue. The setup is typically as follows
Switch/Router-------------------Internet |Service Function (SF) |Switch1| |PC1 PC2 With virtual appliances, both interfaces of the service function attach to the same virtual switch. SF | | OVS--------------------Router---- Internet| |PC1 PC2 If the interfaces of the SF are L3 interfaces, there is no issue.However, if the SF is a bump-in-the-wire, the br-int on the OVS switch will get confused when packets hit the NORMAL action. Take example of traffic from PC1 to Internet.br-int will learn the SRC MAC address of PC1. This packet will be sent to SF on its ingress interface.SF will do its work and then send the packet out on the egress interface. Since the packet comes outwith the same SRC as that of PC1, br-int will now learn that the SRC MAC PC1 is on the egress interfaceof SF. (Yes, this will only happen if the packet hits NORMAL action). Proposal:We introduce the interface keyword "learn= no".E.g. ovs-vsctl set interface foo learn=no This will instruct br-int NOT to do MAC learning on packets received on interface foo. This cannot be applied to a bonded port with 2 or more interfaces. I also have a prelimnary set of diffs which seem to be working but need more testing.I can post the diffs to the dev alias if folks are comfortable with the proposal. thanks,Farhad. On Thursday, April 14, 2016 10:53 AM, Ben Pfaff <b...@ovn.org> wrote: On Thu, Apr 14, 2016 at 05:30:20PM +0000, Farhad Sunavala wrote: > Hi, > I am aware that the MAC address gets learnt only when the packet passes > through a flow with NORMAL action.This is fine and works for some cases. > However, it seems a little too restrictive. > I am working on service function chaining and there are several network > functionsthat are implemented as bump-in-the-wire. E.g. > SRC----SF1---DST > If SF1 is a bump-in-the-wire service function, I need to disable learning on > the egress port of SF1 (towards DST). This can easily be done by > actuallyspecifying the output port to point to DST. > But, a general hook which disables learning and allows the packet to flow > through "normal"action would be great. Do you want to propose a mechanism?
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss