Comment 8 for bug 1716308

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/36232
Committed: http://github.com/Juniper/contrail-vrouter/commit/06100923ed760dfd60aee5087e6f2ae71b23fea7
Submitter: Zuul (<email address hidden>)
Branch: R4.0

commit 06100923ed760dfd60aee5087e6f2ae71b23fea7
Author: Divakar D <email address hidden>
Date: Wed Oct 4 18:24:31 2017 +0530

Intimate head fragment arrival to Fragment assembler after Agent's flow set

When the head fragment is received in the Vrouter it is enqueued to
assembler immediately upon arrival. The flow is created as hold flow and
then trapped to agent. If fragments corresponding to this head fragment
are already in assembler or if new fragments arrive immediately after
head fragment, assembler released them to flow module. If agent does not
write flow action by the time assembler releases fragments to Flow
module, fragments get enqued in hold queue. As only maximum of three
fragments are enqueued in holdq, rest of the fragments from assembler
gets dropped in flow module. This leads to whole packet getting dropped
in receive side leading to first packet loss.

As a fix, the head fragment is enqued to assembler not immediately after
flow is created, but after flow action is written by agent. If the flow
is already present in non-hold state, it is immdiately enqueued to
assembler.

Change-Id: Ia5a488e07e4cb814cb917138218c856ca56c3512
closes-bug: #1716308