-
Notifications
You must be signed in to change notification settings - Fork 160
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update RT-2.13: Weighted-ECMP for IS-IS to not also use BGP #3316
base: main
Are you sure you want to change the base?
Update RT-2.13: Weighted-ECMP for IS-IS to not also use BGP #3316
Conversation
Pull Request Functional Test Report for #3316 / 71ab261Virtual Devices
Hardware Devices
|
Pull Request Test Coverage Report for Build 13581367786Details
💛 - Coveralls |
@@ -249,17 +220,13 @@ func TestWeightedECMPForISIS(t *testing.T) { | |||
} | |||
|
|||
top.Flows().Clear() | |||
if deviations.ISISLoopbackRequired(dut) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ANISH-GOTTAPU , i see this deviation is removed from the code. Can you give reason for this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have updated the test not to use BGP anymore, so the deviation "ISISLoopbackRequired" is not needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did this test pass at least in the KNE environment?
d := &oc.Root{} | ||
p1 := dut.Port(t, "port1") | ||
|
||
i := d.GetOrCreateInterface(p1.Name()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here interface leaf is mandatory to be added. Use NewOCInterface for creating the new interface which would configure the right way. Similarly for other aggregate interfaces too.
// NewOCInterface returns a new *oc.Interface configured with these attributes.
func (a *Attributes) NewOCInterface(name string, dut *ondatra.DUTDevice) *oc.Interface {
return a.ConfigOCInterface(&oc.Interface{Name: ygot.String(name)}, dut)
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the code to use NewOCInterface
@@ -503,8 +461,8 @@ func configureDUT(t *testing.T, dut *ondatra.DUTDevice) []string { | |||
gnmi.BatchDelete(b, gnmi.OC().Interface(aggID).Aggregation().MinLinks().Config()) | |||
gnmi.BatchReplace(b, gnmi.OC().Interface(aggID).Config(), agg) | |||
|
|||
p1 := dut.Port(t, fmt.Sprintf("port%d", (aggIdx*2)+1)) | |||
p2 := dut.Port(t, fmt.Sprintf("port%d", (aggIdx*2)+2)) | |||
p1 := dut.Port(t, fmt.Sprintf("port%d", (aggIdx*2)+2)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p1 is already used in this function above. Please use a different variable name here instead of reusing the same variable under the same function.
Instead of p1, p2 you could use something meaningful here above too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the code accordingly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/fptest virtual
The test is passing with KNE environment but had to reduce the traffic rate and adjust tolerance accordingly. Attaching the log for your reference. |
I validated this PR on 2 vendors and somehow the test is picking the TESTBED_DUT_ATE_4LINKS instead of TESTBED_DUT_ATE_9LINKS_LAG and the test fails due to the port issues. argv[20]: '--testbed=../../../../../../../ops/netops/lab/wbb/testbeds/testbed_dut_ate_4links_lag.textproto' Here is the failurePort(t, port5) on dut(xxx.xxxx): port ID "port5" not found in reserved device "xxx.xxxx" |
I see in the logs that the UECMP traffic is failing. Can you give details on why it is failing?
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the original metadata.textproto, we had TESTBED_DUT_ATE_8LINKS and now this is changed to TESTBED_DUT_ATE_9LINKS_LAG
Do we need to change the testbed? Can't we keep the same testbed to work with?
Even if we change in the metada.textproto, i see that the README.md still reflects the atedut_8 links testbed.
TESTBED_DUT_ATE_8LINKS
The DUT image I was using is not supporting UECMP, but same was checked by @MarcCharlebois and the test worked for Marc, @MarcCharlebois Can you please share the logs with your DUT. |
For the test to work with KNE, we have to use this textproto https://github.com/openconfig/featureprofiles/blob/main/topologies/kne/arista/ceos/dutate_lag.textproto. |
I have some additional local changes required for a pass, so I don't think it's fair representation of the test in it's current state. In the even that this PR is merged, I'll write another PR on top of it and share my logs via b/. |
Currently, OTG does not support IBGP with the same NextHOP across multiple devices. As a result, the DUT will only consider one neighborship. To address this, the test has been modified to use only ISIS, advertising the same route from three ISIS neighbors. The expected behavior is that traffic will load balance based on weights.
I've updated the test to use only the interface on the transmit end, ensuring compatibility with both HW and KNE (SW), as we lack a proto file that supports KNE with LAG on transmit. This change will not affect the weighted-ECMP since the receiving end is LAG only.