linux-stable/net/openvswitch
Joe Stringer 7f8a436eaa openvswitch: Add conntrack action
Expose the kernel connection tracker via OVS. Userspace components can
make use of the CT action to populate the connection state (ct_state)
field for a flow. This state can be subsequently matched.

Exposed connection states are OVS_CS_F_*:
- NEW (0x01) - Beginning of a new connection.
- ESTABLISHED (0x02) - Part of an existing connection.
- RELATED (0x04) - Related to an established connection.
- INVALID (0x20) - Could not track the connection for this packet.
- REPLY_DIR (0x40) - This packet is in the reply direction for the flow.
- TRACKED (0x80) - This packet has been sent through conntrack.

When the CT action is executed by itself, it will send the packet
through the connection tracker and populate the ct_state field with one
or more of the connection state flags above. The CT action will always
set the TRACKED bit.

When the COMMIT flag is passed to the conntrack action, this specifies
that information about the connection should be stored. This allows
subsequent packets for the same (or related) connections to be
correlated with this connection. Sending subsequent packets for the
connection through conntrack allows the connection tracker to consider
the packets as ESTABLISHED, RELATED, and/or REPLY_DIR.

The CT action may optionally take a zone to track the flow within. This
allows connections with the same 5-tuple to be kept logically separate
from connections in other zones. If the zone is specified, then the
"ct_zone" match field will be subsequently populated with the zone id.

IP fragments are handled by transparently assembling them as part of the
CT action. The maximum received unit (MRU) size is tracked so that
refragmentation can occur during output.

IP frag handling contributed by Andy Zhou.

Based on original design by Justin Pettit.

Signed-off-by: Joe Stringer <joestringer@nicira.com>
Signed-off-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Andy Zhou <azhou@nicira.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-08-27 11:40:43 -07:00
..
actions.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
conntrack.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
conntrack.h openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
datapath.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
datapath.h openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
dp_notify.c openvswitch: Move dev pointer into vport itself 2015-07-21 10:39:07 -07:00
flow.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
flow.h openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
flow_netlink.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
flow_netlink.h openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
flow_table.c ip_tunnels: add IPv6 addresses to ip_tunnel_key 2015-08-20 15:42:36 -07:00
flow_table.h openvswitch: Add support for unique flow IDs. 2015-01-26 15:45:50 -08:00
Kconfig openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
Makefile openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
vport-geneve.c ip_tunnels: use tos and ttl fields also for IPv6 2015-08-20 15:42:36 -07:00
vport-gre.c openvswitch: Use regular GRE net_device instead of vport 2015-08-10 14:03:54 -07:00
vport-internal_dev.c openvswitch: Abstract vport name through ovs_vport_name() 2015-07-21 10:39:07 -07:00
vport-internal_dev.h openvswitch: introduce rtnl ops stub 2014-07-01 14:40:17 -07:00
vport-netdev.c route: move lwtunnel state to dst_entry 2015-08-20 15:42:36 -07:00
vport-netdev.h openvswitch: Move tunnel destroy function to oppenvswitch module. 2015-08-10 14:03:54 -07:00
vport-vxlan.c openvswitch: Move tunnel destroy function to oppenvswitch module. 2015-08-10 14:03:54 -07:00
vport.c openvswitch: Add conntrack action 2015-08-27 11:40:43 -07:00
vport.h ip_tunnels: use tos and ttl fields also for IPv6 2015-08-20 15:42:36 -07:00