From: wenxu <[email protected]> A packet with first frag and execute act_ct action. The packet will stole by defrag. So the stats counter for "gact action goto chain" will always 0. The openvswitch update each action in order. So the flower stats finally alway be zero. The rule will be delete adter max-idle time even there are packet executing the action.
ovs-appctl dpctl/dump-flows recirc_id(0),in_port(1),eth_type(0x0800),ipv4(dst=11.0.0.7,frag=first), packets:0, bytes:0, used:5.390s, actions:ct(zone=1,nat),recirc(0x4) filter protocol ip pref 2 flower chain 0 handle 0x2 eth_type ipv4 dst_ip 1.1.1.1 ip_flags frag/firstfrag skip_hw not_in_hw action order 1: ct zone 1 nat pipe index 2 ref 1 bind 1 installed 11 sec used 1 sec Action statistics: Sent 15000 bytes 11 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 cookie e04106c2ac41769b278edaa9b5309960 action order 2: gact action goto chain 1 random type none pass val 0 index 2 ref 1 bind 1 installed 11 sec used 11 sec Action statistics: Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 cookie e04106c2ac41769b278edaa9b5309960 Signed-off-by: wenxu <[email protected]> --- lib/tc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/tc.c b/lib/tc.c index c2ab775..c96d095 100644 --- a/lib/tc.c +++ b/lib/tc.c @@ -1726,8 +1726,10 @@ nl_parse_single_action(struct nlattr *action, struct tc_flower *flower, } bs = nl_attr_get_unspec(stats_attrs[TCA_STATS_BASIC], sizeof *bs); - put_32aligned_u64(&stats->n_packets, bs->packets); - put_32aligned_u64(&stats->n_bytes, bs->bytes); + if (bs->packets) { + put_32aligned_u64(&stats->n_packets, bs->packets); + put_32aligned_u64(&stats->n_bytes, bs->bytes); + } return 0; } -- 1.8.3.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
