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.
Reviewed: https:/ /review. opencontrail. org/36232 github. com/Juniper/ contrail- vrouter/ commit/ 06100923ed760df d60aee5087e6f2a e71b23fea7
Committed: http://
Submitter: Zuul (<email address hidden>)
Branch: R4.0
commit 06100923ed760df d60aee5087e6f2a e71b23fea7
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: Ia5a488e07e4cb8 14cb917138218c8 56ca56c3512
closes-bug: #1716308