[ovs-dev] [OVS Conntrack] ct_state flags lead to OFPT_ERRORs
Ashwin Paranjpe
ashwin1985 at gmail.com
Fri Oct 23 23:25:33 UTC 2015
Thanks Joe.
Adding more information about the kernel version requirement for the
benefit of others:
The version needs to be > 3.9.0.
>From (datapath/conntrack.h):
>
> #if IS_ENABLED(CONFIG_NF_CONNTRACK) && LINUX_VERSION_CODE >
> KERNEL_VERSION(3,9,0)
>
... snip ...
#else
... snip ...
static inline bool ovs_ct_state_supported(u32 state)
{
return false;
}
Thanks,
-Ashwin
On Fri, Oct 23, 2015 at 1:36 PM, Joe Stringer <joestringer at nicira.com>
wrote:
> On 23 October 2015 at 12:24, Ashwin Paranjpe <ashwin1985 at gmail.com> wrote:
> > Trying to execute the following commands (source: ovs-ofctl man page,
> > utilities/ovs-ofctl.8.in):
> >
> > The following flows provide an example of how to implement a simple
> >>> firewall that allows new connections from port 1 to port 2, and only
> allows
> >>> established connections to send traffic from port 2 to port 1:
> >>
> >> table=0,priority=1,action=drop
> >>
> >> table=0,priority=10,arp,action=normal
> >>
> >>
> >>> table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)
> >>
> >>
> >>> table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2
> >>
> >> table=1,in_port=1,ip,ct_state=+trk+est,action=2
> >>
> >>
> table=1,in_port=2,ip,ct_state=+trk+new,action=drop
> >>
> >> table=1,in_port=2,ip,ct_state=+trk+est,action=1
> >>
> >>
> > However, I see the following errors:
> >
> > [root at PC ~]# ovs-ofctl del-flows br-int
> >
> > [root at PC ~]# ovs-ofctl dump-flows br-int
> >
> > NXST_FLOW reply (xid=0x4):
> >
> > [root at PC ~]# ovs-ofctl add-flow br-int "table=0,priority=1,action=drop"
> >
> > [root at PC ~]# ovs-ofctl add-flow br-int
> >> "table=0,priority=10,arp,action=normal"
> >
> > [root at PC ~]# ovs-ofctl add-flow br-int
> >> "table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)"
> >
> > [root at PC ~]# *ovs-ofctl add-flow br-int
> >> "table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2"*
> >
> > *OFPT_ERROR (xid=0x6): OFPBMC_BAD_FIELD*
> >
> > NXT_FLOW_MOD (xid=0x6):
> >
> > (***truncated to 64 bytes from 104***)
> >
> > 00000000 01 04 00 68 00 00 00 06-00 00 23 20 00 00 00 0d |...h......#
> ....|
> >
> > 00000010 00 00 00 00 00 00 00 00-01 00 00 00 00 00 80 00
> |................|
> >
> > 00000020 ff ff ff ff ff ff 00 00-00 18 00 00 00 00 00 00
> |................|
> >
> > 00000030 00 00 00 02 00 01 00 00-06 02 08 00 00 01 d3 08
> |................|
> >
> > [root at PC ~]#
> >
> >
> >
> >
> > Note that the nf_conntrack_* modules are loaded:
> >
> >> [root at PC ~]# lsmod | grep "^nf_conn*"
> >>
> >> ... snip ...
> >>
> >> nf_conntrack_ipv4 10289 4
> >>
> >> nf_conntrack_ipv6 10595 3
> >>
> >>
> > Version Info:
> >
> >> [root at PC ~]# ovs-ofctl --version
> >
> > ovs-ofctl (Open vSwitch) 2.4.90
> >
> > Compiled Oct 21 2015 13:30:44
> >
> > OpenFlow versions 0x1:0x4
> >
> > [root at PC ~]#
> >
> >
> >
> >
> > It appears that any ct_state flag with a '+' prepended to it doesn't
> work.
> > Is this a known issue? Are there any workarounds at the moment?
>
> It looks like your OVS kernel module doesn't support connection
> tracking. In this case, ovs-ofctl reports back a BAD_FIELD error.
>
> If you want to use this feature at the moment, you need to get the
> latest "net" development kernel and use the OVS kernel module from
> there.
>
More information about the dev
mailing list