Implementation notes

  • Limitations with APPLY {OUTPUT=CTRL} + APPLY {OUTPUT=NORMAL}

    When the switch executes the output=ctrl as an apply action, any output=normal action that follows does not work if the packet is destined to the switch.

    As a work around to this limitation, the controller must use WRITE {OUTPUT=CTRL} to copy the packets to the controller.

  • When the system time is updated, the creation time of all the OpenFlow entities such as Flows, Groups, Meters, and Ports are reset to the new time. Any time based operations such as calculation of duration, idle and hard timeout are restarted based on the new time.

  • Packets with source MAC address as a multicast MAC address are not forwarded from Table 100 to Table 200, even if the specified rule has a GOTO action.

  • Rules which match on overridden protocols in the OpenFlow exclusion list do not support APPLY/WRITE {OUTPUT=NORMAL} action following er any other OUTPUT action.

  • Rules with APPLY/WRITE {OUTPUT=(FLOOD||NORMAL)} are not supported after a {OUTPUT=IN_PORT} action.

  • Rules with action combination APPLY/WRITE {SET-FIELD (ETH_DST + IP_SRC||IP_DST)} + {OUTPUT =NORMAL} do not modify the ETH_DST to the value specified in the packet.

  • OpenFlow instances running in custom pipeline model do not perform any OpenFlow lookups for packets coming from the switch CPU.

  • OpenFlow forces a fresh switch forwarding plane lookup for packets executing the action sequence APPLY/WRITE {SET-FIELD (IP_SRC||IP_DST) + [SET-FIELD …]} + {OUTPUT=NORMAL}