Create a new flow if a packet hits a delete marked flow
When Agent deletes a flow, the flow entry is not immediately deleted in
Vrouter. Vrouter uses work queues and rcu callbacks to streamline the
deletion. After these asynchronous callbacks, flow entry is treated as
deleted. If there are any packets hitting this flow entry before marking
as "not active" those packets are dropped. On a loaded system with huge
number of flows, these call backs take a considerable time(in the worst
case as much as 30 ms). Packets hitting this flow entry will be dropped
for all this time.
To avoid this issue, when Agent deletes the flow entry, entry is "marked
deleted". A delete marked entry is no more treated as active entry,
hence flow lookup does not return this entry. As a result, a new flow
entry gets created. All the subsequent packets hit the new entry. "flow"
utility displays this particular entry as "Dm".
Reviewed: https:/ /review. opencontrail. org/19573 github. org/Juniper/ contrail- vrouter/ commit/ b62fa8d8d73f22f 9f6ecde2d84711f fa91888e4b
Committed: http://
Submitter: Zuul
Branch: R2.22.x
commit b62fa8d8d73f22f 9f6ecde2d84711f fa91888e4b
Author: Divakar <email address hidden>
Date: Wed Apr 13 15:06:30 2016 +0530
Create a new flow if a packet hits a delete marked flow
When Agent deletes a flow, the flow entry is not immediately deleted in
Vrouter. Vrouter uses work queues and rcu callbacks to streamline the
deletion. After these asynchronous callbacks, flow entry is treated as
deleted. If there are any packets hitting this flow entry before marking
as "not active" those packets are dropped. On a loaded system with huge
number of flows, these call backs take a considerable time(in the worst
case as much as 30 ms). Packets hitting this flow entry will be dropped
for all this time.
To avoid this issue, when Agent deletes the flow entry, entry is "marked
deleted". A delete marked entry is no more treated as active entry,
hence flow lookup does not return this entry. As a result, a new flow
entry gets created. All the subsequent packets hit the new entry. "flow"
utility displays this particular entry as "Dm".
closes-bug: #1569786
Conflicts:
dp-core/vr_flow.c
utils/flow.c
Change-Id: I0e150bbeb4b3fe 3bf3fa1f367e074 586363786f2