Skip to content

Commit

Permalink
Merge branch 'main' into removeMatchCommSet
Browse files Browse the repository at this point in the history
  • Loading branch information
self-maurya authored Sep 3, 2024
2 parents ff2a0ad + 2f7bcca commit d172dc9
Show file tree
Hide file tree
Showing 84 changed files with 4,622 additions and 2,062 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ platform_exceptions: {
deviations: {
bgp_conditions_match_community_set_unsupported: true
skip_setting_statement_for_policy: true
default_import_export_policy: true
default_import_export_policy_unsupported: true
community_member_regex_unsupported: true
default_route_policy_unsupported: true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ func configureImportRoutingPolicy(t *testing.T, dut *ondatra.DUTDevice, operatio
dni := deviations.DefaultNetworkInstance(dut)
path := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort1.IPv4).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy()
policy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort1.IPv4).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicy(dut) {
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
policy.SetDefaultImportPolicy(oc.RoutingPolicy_DefaultPolicyType_REJECT_ROUTE)
}
policy.SetImportPolicy([]string{v4PrefixPolicy, v4LPPolicy})
Expand Down Expand Up @@ -380,21 +380,34 @@ func configureExportRoutingPolicy(t *testing.T, dut *ondatra.DUTDevice, operatio
dni := deviations.DefaultNetworkInstance(dut)
path := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort1.IPv4).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy()
policy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort1.IPv4).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicy(dut) {
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
policy.SetDefaultExportPolicy(oc.RoutingPolicy_DefaultPolicyType_REJECT_ROUTE)
}

// As Per RFC 8212, Routes contained in an Adj-RIB-In associated with an EBGP peer
// SHALL NOT be considered eligible in the Decision Process if no
// explicit Import Policy has been applied.
importPolPath := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort2.IPv4).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).ApplyPolicy()
eBGPPeerPolicy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort2.IPv4).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
eBGPPeerPolicy.SetDefaultImportPolicy(oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE)
}

if deviations.FlattenPolicyWithMultipleStatements(dut) {
policy.SetExportPolicy([]string{v4ASPPolicy})
} else {
policy.SetExportPolicy([]string{v4ASPPolicy, v4MedPolicy})
}
if deviations.SkipSettingStatementForPolicy(dut) {
gnmi.Update(t, dut, path.Config(), policy)
gnmi.Update(t, dut, importPolPath.Config(), eBGPPeerPolicy)
} else {
if operation == "set" {
gnmi.BatchReplace(batch, path.Config(), policy)
gnmi.BatchReplace(batch, importPolPath.Config(), eBGPPeerPolicy)
} else if operation == "delete" {
gnmi.BatchDelete(batch, path.Config())
gnmi.BatchDelete(batch, importPolPath.Config())
}
batch.Set(t, dut)
}
Expand Down Expand Up @@ -482,9 +495,10 @@ func configureImportRoutingPolicyV6(t *testing.T, dut *ondatra.DUTDevice, operat
dni := deviations.DefaultNetworkInstance(dut)
path := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort1.IPv6).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy()
policy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort1.IPv6).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicy(dut) {
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
policy.SetDefaultImportPolicy(oc.RoutingPolicy_DefaultPolicyType_REJECT_ROUTE)
}

policy.SetImportPolicy([]string{v6PrefixPolicy, v6LPPolicy})
if deviations.SkipSettingStatementForPolicy(dut) {
gnmi.Update(t, dut, path.Config(), policy)
Expand Down Expand Up @@ -586,21 +600,34 @@ func configureExportRoutingPolicyV6(t *testing.T, dut *ondatra.DUTDevice, operat
dni := deviations.DefaultNetworkInstance(dut)
path := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort1.IPv6).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy()
policy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort1.IPv6).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicy(dut) {
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
policy.SetDefaultExportPolicy(oc.RoutingPolicy_DefaultPolicyType_REJECT_ROUTE)
}

// As Per RFC 8212, Routes contained in an Adj-RIB-In associated with an EBGP peer
// SHALL NOT be considered eligible in the Decision Process if no
// explicit Import Policy has been applied.
importPolPath := gnmi.OC().NetworkInstance(dni).Protocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).Bgp().Neighbor(atePort2.IPv6).AfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).ApplyPolicy()
eBGPPeerPolicy := root.GetOrCreateNetworkInstance(dni).GetOrCreateProtocol(oc.PolicyTypes_INSTALL_PROTOCOL_TYPE_BGP, bgpName).GetOrCreateBgp().GetOrCreateNeighbor(atePort2.IPv6).GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).GetOrCreateApplyPolicy()
if !deviations.DefaultImportExportPolicyUnsupported(dut) {
eBGPPeerPolicy.SetDefaultImportPolicy(oc.RoutingPolicy_DefaultPolicyType_ACCEPT_ROUTE)
}

if deviations.FlattenPolicyWithMultipleStatements(dut) {
policy.SetExportPolicy([]string{v6ASPPolicy})
} else {
policy.SetExportPolicy([]string{v6ASPPolicy, v6MedPolicy})
}
if deviations.SkipSettingStatementForPolicy(dut) {
gnmi.Update(t, dut, path.Config(), policy)
gnmi.Update(t, dut, importPolPath.Config(), eBGPPeerPolicy)
} else {
if operation == "set" {
gnmi.BatchReplace(batch, path.Config(), policy)
gnmi.BatchReplace(batch, importPolPath.Config(), eBGPPeerPolicy)
} else if operation == "delete" {
gnmi.BatchDelete(batch, path.Config())
gnmi.BatchDelete(batch, importPolPath.Config())
}
batch.Set(t, dut)
}
Expand Down Expand Up @@ -730,7 +757,7 @@ func (td *testData) advertiseRoutesWithEBGP(t *testing.T) {
g.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).Enabled = ygot.Bool(true)
g.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).Enabled = ygot.Bool(true)

if deviations.DefaultImportExportPolicy(td.dut) {
if deviations.DefaultImportExportPolicyUnsupported(td.dut) {
t.Logf("Configuring default route-policy for BGP on DUT")
rp := root.GetOrCreateRoutingPolicy()
pdef := rp.GetOrCreatePolicyDefinition("PERMIT-ALL")
Expand All @@ -752,7 +779,7 @@ func (td *testData) advertiseRoutesWithEBGP(t *testing.T) {
nV41.SetPeerAs(ateAS1)
nV41.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).Enabled = ygot.Bool(true)
nV41.PeerGroup = ygot.String(peerGrpNamev4)
if deviations.DefaultImportExportPolicy(td.dut) {
if deviations.DefaultImportExportPolicyUnsupported(td.dut) {
afisafiv41 := nV41.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST)
afisafiv41.GetOrCreateApplyPolicy().SetImportPolicy([]string{"PERMIT-ALL"})
afisafiv41.GetOrCreateApplyPolicy().SetExportPolicy([]string{"PERMIT-ALL"})
Expand All @@ -761,7 +788,7 @@ func (td *testData) advertiseRoutesWithEBGP(t *testing.T) {
nV42.SetPeerAs(ateAS2)
nV42.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST).Enabled = ygot.Bool(true)
nV42.PeerGroup = ygot.String(peerGrpNamev4)
if deviations.DefaultImportExportPolicy(td.dut) {
if deviations.DefaultImportExportPolicyUnsupported(td.dut) {
afisafiv42 := nV42.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV4_UNICAST)
afisafiv42.GetOrCreateApplyPolicy().SetImportPolicy([]string{"PERMIT-ALL"})
afisafiv42.GetOrCreateApplyPolicy().SetExportPolicy([]string{"PERMIT-ALL"})
Expand All @@ -770,7 +797,7 @@ func (td *testData) advertiseRoutesWithEBGP(t *testing.T) {
nV61.SetPeerAs(ateAS1)
nV61.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).Enabled = ygot.Bool(true)
nV61.PeerGroup = ygot.String(peerGrpNamev6)
if deviations.DefaultImportExportPolicy(td.dut) {
if deviations.DefaultImportExportPolicyUnsupported(td.dut) {
afisafiv61 := nV61.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST)
afisafiv61.GetOrCreateApplyPolicy().SetImportPolicy([]string{"PERMIT-ALL"})
afisafiv61.GetOrCreateApplyPolicy().SetExportPolicy([]string{"PERMIT-ALL"})
Expand All @@ -779,7 +806,7 @@ func (td *testData) advertiseRoutesWithEBGP(t *testing.T) {
nV62.SetPeerAs(ateAS2)
nV62.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST).Enabled = ygot.Bool(true)
nV62.PeerGroup = ygot.String(peerGrpNamev6)
if deviations.DefaultImportExportPolicy(td.dut) {
if deviations.DefaultImportExportPolicyUnsupported(td.dut) {
afisafiv62 := nV62.GetOrCreateAfiSafi(oc.BgpTypes_AFI_SAFI_TYPE_IPV6_UNICAST)
afisafiv62.GetOrCreateApplyPolicy().SetImportPolicy([]string{"PERMIT-ALL"})
afisafiv62.GetOrCreateApplyPolicy().SetExportPolicy([]string{"PERMIT-ALL"})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ platform_exceptions: {
default_network_instance: "default"
missing_value_for_defaults: true
skip_set_rp_match_set_options: true
default_import_export_policy: false
default_import_export_policy_unsupported: false
skip_setting_statement_for_policy: true
}
}
Expand All @@ -33,7 +33,7 @@ platform_exceptions: {
}
deviations: {
bgp_rib_oc_path_unsupported: true
default_import_export_policy: true
default_import_export_policy_unsupported: true
skip_setting_statement_for_policy: true
skip_checking_attribute_index: true
flatten_policy_with_multiple_statements: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,16 @@ func TestMain(m *testing.M) {
}

const (
trafficDuration = 1 * time.Minute
tolerancePct = 2
peerGrpName = "BGP-PEER-GROUP"
dutAS = 65501
ateAS = 65502
plenIPv4 = 30
plenIPv6 = 126
acceptPolicy = "PERMIT-ALL"
trafficDuration = 1 * time.Minute
tolerancePct = 2
peerGrpName = "BGP-PEER-GROUP"
dutAS = 65501
ateAS = 65502
plenIPv4 = 30
plenIPv6 = 126
acceptPolicy = "PERMIT-ALL"
matchStdCommunitySet = "match_std_comms"
addStdCommunitySet = "add_std_comms"
)

var (
Expand Down Expand Up @@ -119,11 +121,11 @@ var (

communitySets = []communitySet{
{
name: "match_std_comms",
name: matchStdCommunitySet,
members: []string{"5:5"},
},
{
name: "add_std_comms",
name: addStdCommunitySet,
members: []string{"10:10", "20:20", "30:30"},
},
}
Expand Down Expand Up @@ -269,18 +271,22 @@ func configureCommunitySet(t *testing.T, dut *ondatra.DUTDevice, communitySet co
}

func configureRoutingPolicy(t *testing.T, dut *ondatra.DUTDevice, policyName string, nbr *bgpNeighbor, pgName string) {
addStdCommunitySetRefs := []string{addStdCommunitySet}
d := &oc.Root{}
rp := d.GetOrCreateRoutingPolicy()
batchConfig := &gnmi.SetBatch{}

var pdef *oc.RoutingPolicy_PolicyDefinition

switch policyName {
case "add_std_comms":
pdef = rp.GetOrCreatePolicyDefinition(policyName)
stmt1, _ := pdef.AppendNewStatement("add_std_comms")
sc := stmt1.GetOrCreateActions().GetOrCreateBgpActions().GetOrCreateSetCommunity()
sc.GetOrCreateReference().SetCommunitySetRef("add_std_comms")
if deviations.BgpCommunitySetRefsUnsupported(dut) {
sc.GetOrCreateReference().SetCommunitySetRef(addStdCommunitySet)
} else {
sc.GetOrCreateReference().SetCommunitySetRefs(addStdCommunitySetRefs)
}
sc.SetOptions(oc.BgpPolicy_BgpSetCommunityOptionType_ADD)
if !deviations.BgpActionsSetCommunityMethodUnsupported(dut) {
sc.SetMethod(oc.SetCommunity_Method_REFERENCE)
Expand All @@ -292,18 +298,22 @@ func configureRoutingPolicy(t *testing.T, dut *ondatra.DUTDevice, policyName str
pdef = rp.GetOrCreatePolicyDefinition(policyName)
stmt1, _ := pdef.AppendNewStatement("match_and_add_std_comms")
if deviations.BGPConditionsMatchCommunitySetUnsupported(dut) {
stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().SetCommunitySet("match_std_comms")
stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().SetCommunitySet(matchStdCommunitySet)
ds := rp.GetOrCreateDefinedSets()
cs := ds.GetOrCreateBgpDefinedSets().GetOrCreateCommunitySet("match_std_comms")
cs := ds.GetOrCreateBgpDefinedSets().GetOrCreateCommunitySet(matchStdCommunitySet)
cs.SetMatchSetOptions(oc.BgpPolicy_MatchSetOptionsType_ANY)
gnmi.BatchUpdate(batchConfig, gnmi.OC().RoutingPolicy().DefinedSets().Config(), ds)
} else {
cs := stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().GetOrCreateMatchCommunitySet()
cs.SetCommunitySet("match_std_comms")
cs.SetCommunitySet(matchStdCommunitySet)
cs.SetMatchSetOptions(oc.RoutingPolicy_MatchSetOptionsType_ANY)
}
sc := stmt1.GetOrCreateActions().GetOrCreateBgpActions().GetOrCreateSetCommunity()
sc.GetOrCreateReference().SetCommunitySetRef("add_std_comms")
if deviations.BgpCommunitySetRefsUnsupported(dut) {
sc.GetOrCreateReference().SetCommunitySetRef(addStdCommunitySet)
} else {
sc.GetOrCreateReference().SetCommunitySetRefs(addStdCommunitySetRefs)
}
sc.SetOptions(oc.BgpPolicy_BgpSetCommunityOptionType_ADD)
if !deviations.BgpActionsSetCommunityMethodUnsupported(dut) {
sc.SetMethod(oc.SetCommunity_Method_REFERENCE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ platform_exceptions: {
bgp_conditions_match_community_set_unsupported: true
bgp_actions_set_community_method_unsupported: true
skip_bgp_send_community_type: true
bgp_community_set_refs_unsupported: true
}
}
platform_exceptions: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ func configureImportBGPPolicy(t *testing.T, dut *ondatra.DUTDevice, ipv4 string,
if deviations.BGPConditionsMatchCommunitySetUnsupported(dut) {
stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().SetCommunitySet(communitySetName)
} else {
stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().GetOrCreateMatchCommunitySet().SetCommunitySet(communitySetName)
communitySet := stmt1.GetOrCreateConditions().GetOrCreateBgpConditions().GetOrCreateMatchCommunitySet()
communitySet.SetCommunitySet(communitySetName)
communitySet.SetMatchSetOptions(oc.E_RoutingPolicy_MatchSetOptionsType(matchSetOptions))
}

if deviations.CommunityMemberRegexUnsupported(dut) && communitySetName == comunitySetNameRegex {
Expand Down Expand Up @@ -285,6 +287,10 @@ func TestCommunitySet(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {

if tc.desc == "Testing with no_3_comms" && deviations.CommunityInvertAnyUnsupported(bs.DUT) {
t.Skip("Skipping community match invert testcase")
}

configureImportBGPPolicy(t, bs.DUT, ipv4, ipv6, tc.communitySetName, tc.communityMatch, tc.matchSetOptions)
sleepTime := time.Duration(totalPackets/trafficPps) + 2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,12 @@ platform_exceptions: {
bgp_conditions_match_community_set_unsupported: true
}
}
platform_exceptions: {
platform: {
vendor: JUNIPER
}
deviations: {
community_invert_any_unsupported: true
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -962,7 +962,7 @@ func TestBGPDefaultPolicies(t *testing.T) {
})

t.Run("Verify prefix telemetry on DUT for all iBGP and eBGP peers", func(t *testing.T) {
if deviations.DefaultImportExportPolicy(dut) {
if deviations.DefaultImportExportPolicyUnsupported(dut) {
verifyPrefixesTelemetry(t, dut, atePort1.IPv4, 3, 3, 3, v4Prefixes)
verifyPrefixesTelemetry(t, dut, otgIsisPort2LoopV4, 3, 3, 3, v4Prefixes)
verifyPrefixesTelemetry(t, dut, atePort1.IPv6, 3, 3, 3, !v4Prefixes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ platform_exceptions: {
deviations: {
isis_level_enabled: true
skip_non_bgp_route_export_check: true
default_import_export_policy: true
}
}
platform_exceptions: {
Expand All @@ -25,7 +24,7 @@ platform_exceptions: {
missing_isis_interface_afi_safi_enable: true
isis_interface_afi_unsupported: true
isis_instance_enabled_required: true
default_import_export_policy: true
default_import_export_policy_unsupported: true
bgp_default_policy_unsupported: true
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ platform_exceptions: {
missing_value_for_defaults: true
skip_set_rp_match_set_options: true
bgp_community_set_refs_unsupported: true
skip_prefix_set_mode: true
bgp_community_member_is_a_string: true
skip_bgp_send_community_type: true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,12 @@ platform_exceptions: {
skip_checking_attribute_index: true
}
}
platform_exceptions: {
platform: {
vendor: JUNIPER
}
deviations: {
bgp_rib_oc_path_unsupported: true
}
}

Loading

0 comments on commit d172dc9

Please sign in to comment.