commit b2c608eb7228ec56843a07ed1c0191c1e9d386fb
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/36228 github. com/Juniper/ contrail- vrouter/ commit/ b2c608eb7228ec5 6843a07ed1c0191 c1e9d386fb
Committed: http://
Submitter: Zuul (<email address hidden>)
Branch: R3.0.3.x
commit b2c608eb7228ec5 6843a07ed1c0191 c1e9d386fb
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