Using switches that support OpenFlow, is it possible to forward packets for specific flows to multiple outgoing ports, so that each port receives a copy of the packet (similar to multicasting scenario, but locally on a per-flow basis)?

I have seen something called Port Mirroring, but I assume it's a per-port thing?

Thank you.

  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you could provide and accept your own answer. – Ron Maupin Aug 15 '17 at 18:02

Yes, the openflow protocol supports the creation of flows with multiple actions, and each action can be to send a frame/packet out a certain port.

However, whether or not your openflow switch supports this is a different matter. E.g. this Cisco doc states that only "output to a single port" is supported by version 1.1.5 of their Openflow agent on Nexus switches.

In such a scenario where the switch does not support multiple output ports in a flow, you could define the flow to send the matching frames to the controller, and configure the controller to send multiple packet_out commands to the switch (with the same frame but different output port). Please note that in this case scalability may be a concern, i.e the bandwidth to/from the controller and/or the processing power of the controller may become a bottleneck.


I found that using Group Tables that is supported in OpenFlow since version 1.1 of the standard, it is possible to replicate and process a packet through multiple buckets of actions. If a group table entry is from type "ALL", then all action buckets in the group are executed which can be used to forward a packet to multiple outgoing ports.

A number of vendors that offer SDN switches provide support for Group Table ALL while some only support fast failover (forwarding to a different port in case of failure) and/or select (forwarding to different ports for applications such as load balancing).


Yes, but I don't think that TCAM rules is what it is called. TCAM behavior is usually baked into the hardware systems OS or firmware. Forwarding packets to multiple outgoing ports refers to routing behavior (not switching where datagrams are referred to as frames). Finally, to forward packets for specific flows to multiple egress ports sounds like a feature called load balancing, or Encapsulated RSPAN (ERSPAN), or maybe multicasting. The feature you would use depends on your use case.

  • Thanks Ron. In load balancing, different packets are sent to different ports. I want each packet to be sent to all ports (like multicasting as you said). Is it possible on a per-flow basis? (like for some flows send to port 1,2 and for others to 5,6) – mnmp Jan 19 '17 at 23:31
  • I think IP multicast might fit your use case. There are some specifics to it though - dense mode, sparse mode. Multicasting is typically architected in to an application whereby the participating endpoint(s) (whether clients or servers) are programmed to use the multicasting feature. Networking devices are typically required to be configured to allow multicast - whether traditionally or via OpenFlow/SDN. – Ronnie Royston Jan 20 '17 at 1:33
  • Forwarding out multiple ports is absolutely switching behaviour - obviously this is necessary for flooding and broadcast use cases in a switched environment. – Nick Bastin Nov 28 '18 at 11:00
  • "packets" vs "frames" – Ronnie Royston Nov 28 '18 at 19:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.