[ovs-discuss] Recirculation context in dpdk-ovs
Lam, Tiago
tiago.lam at intel.com
Tue Nov 27 17:44:45 UTC 2018
Hi,
A few comments in-line.
On 27/11/2018 13:20, 张萌 wrote:
> Hi,
>
> I`m using “ovs-appctl ofproto/trace “ to trace the flows in ovs-dpdk.
>
> When integrated with conntrack, the ovs rule ended in the
> table=10, which will record the ct as the flowing flow:
>
>
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
> [root at zm ~]# ovs-ofctl dump-flows br0 -O openflow15 table=10
>
> OFPST_FLOW reply (OF1.5) (xid=0x2):
>
> cookie=0x156ad2f7efd2d389, duration=15058.242s, table=10, n_packets=0,
> n_bytes=0, priority=3000,ip,nw_frag=later actions=goto_table:20
>
> cookie=0x156ad2f7efd2d333, duration=15058.249s, table=10, n_packets=737,
> n_bytes=72226, priority=2000,icmp
> actions=ct(table=15,zone=NXM_NX_REG6[0..15])
>
> cookie=0x156ad2f7efd2d337, duration=15058.249s, table=10,
> n_packets=4992, n_bytes=380540, priority=2000,udp
> actions=ct(table=15,zone=NXM_NX_REG6[0..15])
>
> cookie=0x156ad2f7efd2d367, duration=15058.245s, table=10,
> n_packets=2028037440, n_bytes=183176086711, priority=2000,tcp
> actions=ct(table=15,zone=NXM_NX_REG6[0..15])
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
>
>
>
>
>
> And when I mock a packet using ofproto/trace, ovs recorded the
> contrack, and prints:
>
>
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
> [root@ zm ~]# ovs-appctl ofproto/trace br0
> tcp,in_port=25,nw_dst=172.19.11.6,tp_dst=320,dl_dst=fa:16:3e:03:39:5f,dl_src=fa:16:3e:e5:cb:2c
>
>
> Flow:
> tcp,in_port=25,vlan_tci=0x0000,dl_src=fa:16:3e:e5:cb:2c,dl_dst=fa:16:3e:03:39:5f,nw_src=0.0.0.0,nw_dst=172.19.11.6,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=0,tp_dst=320,tcp_flags=0
>
>
>
> bridge("br0")
>
> -------------
>
> 0. in_port=25, priority 100, cookie 0x156ad2f7efd2d4fb
>
> set_field:0x29->reg5
>
> set_field:0x19->reg6
>
> write_metadata:0x2900000001
>
> goto_table:5
>
> 5. ip,in_port=25,dl_src=fa:16:3e:e5:cb:2c, priority 100, cookie
> 0x156ad2f7efd2d51f
>
> goto_table:10
>
> 10. tcp, priority 2000, cookie 0x156ad2f7efd2d367
>
> ct(table=15,zone=NXM_NX_REG6[0..15])
>
> drop
>
>
>
> Final flow:
> tcp,reg5=0x29,reg6=0x19,metadata=0x2900000001,in_port=25,vlan_tci=0x0000,dl_src=fa:16:3e:e5:cb:2c,dl_dst=fa:16:3e:03:39:5f,nw_src=0.0.0.0,nw_dst=172.19.11.6,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=0,tp_dst=320,tcp_flags=0
>
> Megaflow:
> recirc_id=0,tcp,in_port=25,dl_src=fa:16:3e:e5:cb:2c,nw_dst=172.0.0.0/6,nw_frag=no
>
> Datapath actions: ct(zone=25),recirc(0x4123)
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> Bug when I set the recirc_id in the flow, ovs puts:
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
> [root at zm ~]# ovs-appctl ofproto/trace br0
> recirc_id=0x4123,ct_state=new,tcp,in_port=25,nw_dst=172.19.11.6,tp_dst=320,dl_dst=fa:16:3e:03:39:5f,dl_src=fa:16:3e:e5:cb:2c
>
> Flow:
> recirc_id=0x4123,ct_state=new,tcp,in_port=25,vlan_tci=0x0000,dl_src=fa:16:3e:e5:cb:2c,dl_dst=fa:16:3e:03:39:5f,nw_src=0.0.0.0,nw_dst=172.19.11.6,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=0,tp_dst=320,tcp_flags=0
>
>
>
> bridge("br0")
>
> -------------
>
> >>>> Recirculation context not found for ID 4123 <<<<
>
>
>
> Final flow: unchanged
>
> Megaflow: recirc_id=0x4123,ip,in_port=25,nw_frag=no
>
> Datapath actions: drop
>
> Translation failed (No recirculation context), packet is dropped.
>
I believe you're getting the above message because by the time you issue
the command the re-circulation context is already gone.
>
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> And when dump the contracks in ovs:
>
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> [root at A04-R08-I137-204-9320C72 ~]# ovs-dpctl dump-conntrack ovs-netdev
>
> 2018-11-27T05:01:30Z|00001|dpif_netlink|WARN|Generic Netlink family
> 'ovs_datapath' does not exist. The Open vSwitch kernel module is
> probably not loaded.
>
> ovs-dpctl: opening datapath (No such file or directory)
>
Use the one below instead. That should give you more information
$ovs-appctl dpctl/dump-conntrack
> -------------------------------------------------------------------------------------------------------------------------------------
>
>
>
> Can anyone tells how to mock a packet can pass the ct in dpdk-ovs
>
What are you trying to do? Your first mocked packet above is already
passing into the ct() action and being dropped. Your flow above:
> priority=2000,tcp actions=ct(table=15,zone=NXM_NX_REG6[0..15])
Is saying that the traffic, in order to be allowed in, must match the
zone defined in "NXM_NX_REG6[0..15]" (according to ofproto/trace that
seems to be 25). Is reg6 being set to 25 before hand?
The following guide is a good one to get started on such issues:
https://docs.openstack.org/neutron/pike/contributor/internals/openvswitch_firewall.html#rules-example-with-explanation
Hope this helps,
Tiago.
More information about the discuss
mailing list