vRouter: support for ECMP without policy

Bug #1566650 reported by Anand H. Krishnan on 2016-04-06
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
R3.1
Fix Committed
High
Anand H. Krishnan
Trunk
Fix Committed
High
Anand H. Krishnan

Bug Description

Currently ECMP does not work if the packets do not transit the flow table (i.e.: if there is no policy that guides the packet). The requirement for flow lookup comes from the fact that flows need to follow the same path regardless of destinations leaving and new destinations entering, which affects the list of ECMP destinations, and hence an index is associated with the flow.

For non-policy looked up packets, requirement of following the same path in case of transitions is dropped.

Changed in juniperopenstack:
assignee: nobody → Anand H. Krishnan (anandhk)
tags: added: vrouter

Review in progress for https://review.opencontrail.org/19100
Submitter: Anand H. Krishnan (<email address hidden>)

Reviewed: https://review.opencontrail.org/19100
Committed: http://github.org/Juniper/contrail-vrouter/commit/5ee57ac18e896711de0f256348eaacfeb402c374
Submitter: Zuul
Branch: master

commit 5ee57ac18e896711de0f256348eaacfeb402c374
Author: Anand H. Krishnan <email address hidden>
Date: Wed Apr 6 11:27:31 2016 +0530

ECMP without flow

Currently ECMP does not work if the packets do not transit the flow table
(i.e.: if there is no policy that guides the packet). The requirement for
flow lookup comes from the fact that flows need to follow the same path
(also called flow stickiness) regardless of existing destinations leaving
and new destinations entering, which affects the list of ECMP destinations,
and thus the distribution. To workaround that problem, we maintain an index
in the flow entry that points to the correct end point in the distribution
list.

For non-policy looked up packets, requirement of following the same path in
case of transitions is dropped.

Change-Id: Ib7688c9dcac522025196334f469844c79ebdf095
Partial-BUG: #1566650

Review in progress for https://review.opencontrail.org/20929
Submitter: Ashok Singh (<email address hidden>)

Reviewed: https://review.opencontrail.org/20929
Committed: http://github.org/Juniper/contrail-controller/commit/3bcbc7784a6a247da7911e5ff7d219ec5c44261b
Submitter: Zuul
Branch: master

commit 3bcbc7784a6a247da7911e5ff7d219ec5c44261b
Author: ashoksingh <email address hidden>
Date: Fri Jun 3 22:57:49 2016 +0530

Disable policy on ECMP nexthops

To support requirement of ECMP without policy, disable policy on ECMP nexthops.
Also separate out ECMP NH test-cases and make them non-flaky. Also update these
UT to verify that policy is disabled for ECMP Nexthop

Change-Id: Ida1b7cf65ba6145031530effa4f442de11a41ff1
Closes-Bug: #1566650

Review in progress for https://review.opencontrail.org/21170
Submitter: Anand H. Krishnan (<email address hidden>)

Reviewed: https://review.opencontrail.org/21170
Committed: http://github.org/Juniper/contrail-vrouter/commit/b505605ae13c344dcd9716c1960b884311d37922
Submitter: Zuul
Branch: master

commit b505605ae13c344dcd9716c1960b884311d37922
Author: Anand H. Krishnan <email address hidden>
Date: Wed Jun 15 15:54:24 2016 +0530

For mirroring, ECMP index should not come from parent flow

In the case of mirror to an ECMP destination, we can not take the
ECMP index that is set in the flow of the parent (the flow/packet
that is mirrored). Hence, set the ECMP index to -1.

Also, there isn't a flow that maps to the mirror packet. So,
extract all the information that is needed from the parent flow and
set the flow index in the forrwarding metadata to -1.

Change-Id: Ib3a0f77490153fbe69c35eaa201fbf40b6897d4d
Closes-BUG: #1566650

Review in progress for https://review.opencontrail.org/22030
Submitter: Anand H. Krishnan (<email address hidden>)

Reviewed: https://review.opencontrail.org/22030
Committed: http://github.org/Juniper/contrail-vrouter/commit/b4980e5c9bb4bcddafa0d747bee72dba5856c496
Submitter: Zuul
Branch: master

commit b4980e5c9bb4bcddafa0d747bee72dba5856c496
Author: Anand H. Krishnan <email address hidden>
Date: Fri Jul 15 10:09:55 2016 +0530

If NH doesn't have policy, do not create flows even if the source is an
ECMP

For providing stickiness in the case of ECMP, vRouter explicitly used to
create flows even if the corresponding NextHop didn't have the policy bit
set. This now is a wrong behavior when we are supporting ECMP without
flows. Hence, do not create such flows, if the nexthop doesn't have
policy enabled.

Change-Id: I48c28150b75e7c78d4d093de327caf98a19ff420
Partial-BUG: #1566650

Review in progress for https://review.opencontrail.org/22142
Submitter: Anand H. Krishnan (<email address hidden>)

Reviewed: https://review.opencontrail.org/22142
Committed: http://github.org/Juniper/contrail-vrouter/commit/75f51c86ac7634169696f44231b842b26a476191
Submitter: Zuul
Branch: R3.1

commit 75f51c86ac7634169696f44231b842b26a476191
Author: Anand H. Krishnan <email address hidden>
Date: Fri Jul 15 10:09:55 2016 +0530

If NH doesn't have policy, do not create flows even if the source is an
ECMP

For providing stickiness in the case of ECMP, vRouter explicitly used to
create flows even if the corresponding NextHop didn't have the policy bit
set. This now is a wrong behavior when we are supporting ECMP without
flows. Hence, do not create such flows, if the nexthop doesn't have
policy enabled.

Change-Id: I48c28150b75e7c78d4d093de327caf98a19ff420
Partial-BUG: #1566650

Review in progress for https://review.opencontrail.org/22370
Submitter: Anand H. Krishnan (<email address hidden>)

Review in progress for https://review.opencontrail.org/22371
Submitter: Anand H. Krishnan (<email address hidden>)

Reviewed: https://review.opencontrail.org/22370
Committed: http://github.org/Juniper/contrail-vrouter/commit/65202330346ae2dde9a30b2b6069c8036ff23ef2
Submitter: Zuul
Branch: R3.1

commit 65202330346ae2dde9a30b2b6069c8036ff23ef2
Author: Anand H. Krishnan <email address hidden>
Date: Thu Jul 21 10:19:18 2016 +0530

Do not overwrite packet type, now that ipv6 ECMP is supported

Change-Id: I71365b111b714bfa2d8c2b34b33a3473f2e6ff4e
Closes-Bug: #1566650

Reviewed: https://review.opencontrail.org/22371
Committed: http://github.org/Juniper/contrail-vrouter/commit/851e6fca770b69facea6cebe6f3748e12aeaac7b
Submitter: Zuul
Branch: master

commit 851e6fca770b69facea6cebe6f3748e12aeaac7b
Author: Anand H. Krishnan <email address hidden>
Date: Thu Jul 21 10:19:18 2016 +0530

Do not overwrite packet type, now that ipv6 ECMP is supported

Change-Id: I71365b111b714bfa2d8c2b34b33a3473f2e6ff4e
Closes-Bug: #1566650

Review in progress for https://review.opencontrail.org/22930
Submitter: Ashok Singh (<email address hidden>)

Review in progress for https://review.opencontrail.org/22932
Submitter: Ashok Singh (<email address hidden>)

Reviewed: https://review.opencontrail.org/22930
Committed: http://github.org/Juniper/contrail-controller/commit/40ace4bd44e37a8e39497b7afcce192f92e63785
Submitter: Zuul
Branch: R3.1

commit 40ace4bd44e37a8e39497b7afcce192f92e63785
Author: ashoksingh <email address hidden>
Date: Fri Aug 5 10:16:46 2016 +0530

Enable policy on ECMP Nexthops when any of component interfaces have policy
enabled

Update UT.

Change-Id: I105ffc23c37f4d55bfa0bdaa39e3b034d9bca7d5
Closes-Bug: #1566650

Vinay Mahuli (vmahuli) wrote :

As discussed with Hari, we are reverting review 22930 before build 17

Reviewed: https://review.opencontrail.org/#/c/22949/
Committed: https://github.com/Juniper/contrail-controller/commit/165de0ead9f3e3af5ec4e72a94d804beb6514f71
Submitter: Zuul
Branch: R3.1

commit 165de0ead9f3e3af5ec4e72a94d804beb6514f71
Author: Vinay Mahuli

Revert "Enable policy on ECMP Nexthops when any of component interfaces have policy"
enabled

Update UT.

Change-Id: I165de0ead9f3e3af5ec4e72a94d804beb6514f71

Review in progress for https://review.opencontrail.org/23018
Submitter: Ashok Singh (<email address hidden>)

Review in progress for https://review.opencontrail.org/23019
Submitter: Ashok Singh (<email address hidden>)

Reviewed: https://review.opencontrail.org/23019
Committed: http://github.org/Juniper/contrail-controller/commit/d8de52a3e501abd4f1a5001062c3a7bb292ee1ab
Submitter: Zuul
Branch: master

commit d8de52a3e501abd4f1a5001062c3a7bb292ee1ab
Author: ashoksingh <email address hidden>
Date: Sun Aug 7 23:23:20 2016 +0530

Enable policy on ECMP NH when any of component interfaces have policy
enabled

Handle the following cases
1. When policy status of one of the component NH changes.
2. When a new ComponentNH is added
3. When an existing ComponentNH is removed
4. When ECMP route is added by BGP

Change-Id: Id8d8b871bd34639abf8f4d23f18b83e0b992a70e
Closes-Bug: #1566650
(cherry picked from commit 0e7d51b4aa5fc2e87e16977af7fcb9788c0e75a8)

Reviewed: https://review.opencontrail.org/23018
Committed: http://github.org/Juniper/contrail-controller/commit/0e7d51b4aa5fc2e87e16977af7fcb9788c0e75a8
Submitter: Zuul
Branch: R3.1

commit 0e7d51b4aa5fc2e87e16977af7fcb9788c0e75a8
Author: ashoksingh <email address hidden>
Date: Sun Aug 7 23:23:20 2016 +0530

Enable policy on ECMP NH when any of component interfaces have policy
enabled

Handle the following cases
1. When policy status of one of the component NH changes.
2. When a new ComponentNH is added
3. When an existing ComponentNH is removed
4. When ECMP route is added by BGP

Change-Id: Id8d8b871bd34639abf8f4d23f18b83e0b992a70e
Closes-Bug: #1566650

Jim Reilly (jpreilly) on 2016-08-18
information type: Proprietary → Public
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers