From 4766fcf100f1709dd598def1e96d74a69db12eb4 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Sat, 3 Apr 2021 01:41:30 +0000 Subject: [PATCH 01/10] [submodule update] sonic-db-syncd df46ed418e661a9bccdb2639d8873def356f8ba0 (HEAD -> master, origin/master, origin/HEAD) Fix the LLDP_LOC_CHASSIS not getting populated if no remote neighbors are present (#39) e487532e11cc0e97cfce573b6b997fdd0beeb660 [CI] Set up CI&PR with Azure Pipelines (#38) 3c9f488490a1dbded20dbf2d8a88a5ab4dbda8df Replace swsssdk's SonicV2Connector with swsscommon's implementation (#35) Signed-off-by: Abhishek Dosi --- src/sonic-dbsyncd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-dbsyncd b/src/sonic-dbsyncd index 5cc29a1b32d..df46ed418e6 160000 --- a/src/sonic-dbsyncd +++ b/src/sonic-dbsyncd @@ -1 +1 @@ -Subproject commit 5cc29a1b32d8d1f4dfbc967bfea2727c50a49c76 +Subproject commit df46ed418e661a9bccdb2639d8873def356f8ba0 From 3e7418222a9514ff8128b5f31fcac8e7da8da8c6 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 29 Sep 2021 22:16:21 +0000 Subject: [PATCH 02/10] Initial Commit for Chassis in Packet mode and multi-asic. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Internal BGP Peering between LCx-ASICy is done using Loopback4096 • Internal BGP Peer will be classified as BGP_INTERNAL_NEIGHBOR with source updated as Loopback4096 • DEVICE_METADATA will have “switch_type” define as “chassis-packet”. We already have “voq” define. This will be used in BGP template. • Static Routes are define using SONiC schema. * Fixed Vlan Sub Interface Parsing in Graph when configured on Port-Channel. * Added Unit test cases of graph and BGP template changes. Signed-off-by: Abhishek Dosi --- .../docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 10 +- .../templates/internal/peer-group.conf.j2 | 11 +- src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py | 17 +- src/sonic-bgpcfgd/bgpcfgd/template.py | 4 +- .../peer-group.conf/param_chasiss_packet.json | 13 + .../result_chasiss_packet.conf | 22 + .../bgpd.main.conf.j2/packet_chassis.conf | 67 +++ .../bgpd.main.conf.j2/packet_chassis.json | 35 ++ src/sonic-bgpcfgd/tests/test_sonic-cfggen.py | 6 + src/sonic-config-engine/minigraph.py | 37 +- .../tests/sample-chassis-packet-lc-graph.xml | 456 ++++++++++++++++++ .../sample-chassis-packet-lc-port-config.ini | 60 +++ .../tests/sample-graph-resource-type.xml | 3 +- .../tests/sample-graph-subintf.xml | 3 +- .../tests/simple-sample-graph.xml | 3 +- src/sonic-config-engine/tests/test_cfggen.py | 27 +- 16 files changed, 743 insertions(+), 31 deletions(-) create mode 100644 src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/param_chasiss_packet.json create mode 100644 src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf create mode 100644 src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json create mode 100644 src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml create mode 100644 src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index 7d6bc4ef04a..1453d6fc802 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -33,7 +33,7 @@ ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq {{ loop.index * 5 }} permit {{ prefi {% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} {% set multi_asic = True %} {% endif %} -{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %} +{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} route-map HIDE_INTERNAL permit 10 set community no-export {% if constants.bgp.peers is defined and constants.bgp.peers.internal is defined and constants.bgp.peers.internal.community is defined %} @@ -63,7 +63,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} {% endif %} ! {# set router-id #} -{% if DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %} +{% if DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} bgp router-id {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }} {% else %} bgp router-id {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }} @@ -71,7 +71,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {# advertise loopback #} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32 -{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %} +{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/32 route-map HIDE_INTERNAL {% endif %} ! @@ -80,7 +80,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/64 exit-address-family {% endif %} -{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq'%} +{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") != 'None' %} address-family ipv6 network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/128 route-map HIDE_INTERNAL @@ -102,7 +102,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} {% endblock vlan_advertisement %} ! ! -{% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %} +{% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} address-family ipv4 redistribute connected route-map HIDE_INTERNAL exit-address-family diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 index c0ee4d99b79..c5f3f0b2f3a 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 @@ -1,10 +1,15 @@ ! ! template: bgpd/templates/internal/peer-group.conf.j2 +{% from "common/functions.conf.j2" import get_ipv4_loopback_address %} +{% from "common/functions.conf.j2" import get_ipv6_loopback_address %} ! neighbor INTERNAL_PEER_V4 peer-group neighbor INTERNAL_PEER_V6 peer-group address-family ipv4 -{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} + +{% if CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} + neighbor INTERNAL_PEER_V4 update-source {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} +{% elif CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} neighbor INTERNAL_PEER_V4 route-reflector-client {% endif %} neighbor INTERNAL_PEER_V4 soft-reconfiguration inbound @@ -13,7 +18,9 @@ neighbor INTERNAL_PEER_V4 route-map TO_BGP_INTERNAL_PEER_V4 out exit-address-family address-family ipv6 -{% if CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} +{% if CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} + neighbor INTERNAL_PEER_V4 update-source {{ get_ipv6_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} +{% elif CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} neighbor INTERNAL_PEER_V6 route-reflector-client {% endif %} neighbor INTERNAL_PEER_V6 soft-reconfiguration inbound diff --git a/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py b/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py index 3ab7dba4f61..c787ae2abe6 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py +++ b/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py @@ -125,6 +125,9 @@ def __init__(self, common_objs, db_name, table_name, peer_type, check_neig_meta) if self.check_deployment_id: deps.append(("CONFIG_DB", swsscommon.CFG_DEVICE_METADATA_TABLE_NAME, "localhost/deployment_id")) + if self.peer_type == 'internal': + deps.append(("CONFIG_DB", swsscommon.CFG_LOOPBACK_INTERFACE_TABLE_NAME, "Loopback4096")) + super(BGPPeerMgrBase, self).__init__( common_objs, deps, @@ -160,11 +163,17 @@ def add_peer(self, vrf, nbr, data): print_data = vrf, nbr, data bgp_asn = self.directory.get_slot("CONFIG_DB", swsscommon.CFG_DEVICE_METADATA_TABLE_NAME)["localhost"]["bgp_asn"] # - lo0_ipv4 = self.get_lo0_ipv4() + lo0_ipv4 = self.get_lo_ipv4("Loopback0|") if lo0_ipv4 is None: log_warn("Loopback0 ipv4 address is not presented yet") return False # + if self.peer_type == 'internal': + lo4096_ipv4 = self.get_lo_ipv4("Loopback4096|") + if lo4096_ipv4 is None: + log_warn("Loopback4096 ipv4 address is not presented yet") + return False + if "local_addr" not in data: log_warn("Peer %s. Missing attribute 'local_addr'" % nbr) else: @@ -299,15 +308,15 @@ def apply_op(self, cmd, vrf): self.cfg_mgr.push(cmd) return True - def get_lo0_ipv4(self): + def get_lo_ipv4(self, loopback_str): """ Extract Loopback0 ipv4 address from the Directory :return: ipv4 address for Loopback0, None if nothing found """ loopback0_ipv4 = None for loopback in self.directory.get_slot("CONFIG_DB", swsscommon.CFG_LOOPBACK_INTERFACE_TABLE_NAME).keys(): - if loopback.startswith("Loopback0|"): - loopback0_prefix_str = loopback.replace("Loopback0|", "") + if loopback.startswith(loopback_str): + loopback0_prefix_str = loopback.replace(loopback_str, "") loopback0_ip_str = loopback0_prefix_str[:loopback0_prefix_str.find('/')] if TemplateFabric.is_ipv4(loopback0_ip_str): loopback0_ipv4 = loopback0_ip_str diff --git a/src/sonic-bgpcfgd/bgpcfgd/template.py b/src/sonic-bgpcfgd/bgpcfgd/template.py index e8807388117..a2b476e6b2c 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/template.py +++ b/src/sonic-bgpcfgd/bgpcfgd/template.py @@ -75,7 +75,7 @@ def prefix_attr(attr, value): return None else: try: - prefix = netaddr.IPNetwork(str(value)) + prefix = netaddr.IPNetwork(str(value).strip()) except (netaddr.NotRegisteredError, netaddr.AddrFormatError, netaddr.AddrConversionError): return None return str(getattr(prefix, attr)) @@ -105,4 +105,4 @@ def pfx_filter(value): log_err("'%s' is invalid ip address" % ip_address) else: table[key] = val - return table \ No newline at end of file + return table diff --git a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/param_chasiss_packet.json b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/param_chasiss_packet.json new file mode 100644 index 00000000000..956758febcf --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/param_chasiss_packet.json @@ -0,0 +1,13 @@ +{ + "CONFIG_DB__DEVICE_METADATA": { + "localhost": { + "type": "SpineRouter", + "sub_role": "BackEnd", + "switch_type": "chassis-packet" + } + }, + "CONFIG_DB__LOOPBACK_INTERFACE": { + "Loopback4096|10.10.10.10/32": {}, + "Loopback4096|2603:10e2:400::3/128": {} + } +} diff --git a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf new file mode 100644 index 00000000000..08ef259e089 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf @@ -0,0 +1,22 @@ +! +! template: bgpd/templates/internal/peer-group.conf.j2 +! + neighbor INTERNAL_PEER_V4 peer-group + neighbor INTERNAL_PEER_V6 peer-group + address-family ipv4 + neighbor INTERNAL_PEER_V4 update-source 10.10.10.10 + neighbor INTERNAL_PEER_V4 soft-reconfiguration inbound + neighbor INTERNAL_PEER_V4 allowas-in 1 + neighbor INTERNAL_PEER_V4 route-map FROM_BGP_INTERNAL_PEER_V4 in + neighbor INTERNAL_PEER_V4 route-map TO_BGP_INTERNAL_PEER_V4 out + exit-address-family + address-family ipv6 + neighbor INTERNAL_PEER_V4 update-source 2603:10e2:400::3 + neighbor INTERNAL_PEER_V6 soft-reconfiguration inbound + neighbor INTERNAL_PEER_V6 allowas-in 1 + neighbor INTERNAL_PEER_V6 route-map FROM_BGP_INTERNAL_PEER_V6 in + neighbor INTERNAL_PEER_V6 route-map TO_BGP_INTERNAL_PEER_V6 out + exit-address-family +! +! end of template: bgpd/templates/internal/peer-group.conf.j2 +! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf new file mode 100644 index 00000000000..b48617a6d84 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf @@ -0,0 +1,67 @@ +! +! template: bgpd/bgpd.main.conf.j2 +! +! bgp multiple-instance +! +! BGP configuration +! +! TSA configuration +! +ip prefix-list PL_LoopbackV4 permit 55.55.55.55/32 +! +ipv6 prefix-list PL_LoopbackV6 permit fc00::/64 +! +ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 +! +ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 +! +route-map HIDE_INTERNAL permit 10 + set community no-export +! +! +router bgp 55555 +! + bgp log-neighbor-changes + no bgp default ipv4-unicast + no bgp ebgp-requires-policy +! + bgp bestpath as-path multipath-relax +! + bgp graceful-restart restart-time 240 + bgp graceful-restart + bgp graceful-restart preserve-fw-state + bgp graceful-restart select-defer-time 45 +! + bgp router-id 55.55.55.56 +! + network 55.55.55.55/32 + network 55.55.55.56/32 route-map HIDE_INTERNAL +! + address-family ipv6 + network fc00::1/64 + exit-address-family + address-family ipv6 + network fc00::2/128 route-map HIDE_INTERNAL + exit-address-family +! + network 10.10.10.1/24 + address-family ipv6 + network fc01::1/64 + exit-address-family +! + address-family ipv4 + redistribute connected route-map HIDE_INTERNAL + exit-address-family + address-family ipv6 + redistribute connected route-map HIDE_INTERNAL + exit-address-family +! + address-family ipv4 + maximum-paths 64 + exit-address-family + address-family ipv6 + maximum-paths 64 + exit-address-family +! +! end of template: bgpd/bgpd.main.conf.j2 +! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json new file mode 100644 index 00000000000..418a62266d8 --- /dev/null +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json @@ -0,0 +1,35 @@ +{ + "DEVICE_METADATA": { + "localhost": { + "bgp_asn": "55555", + "sub_role": "FrontEnd", + "switch_type": "chassis-packet" + } + }, + "LOOPBACK_INTERFACE": { + "Loopback0|55.55.55.55/32": {}, + "Loopback0|fc00::1/128": {}, + "Loopback4096|55.55.55.56/32": {}, + "Loopback4096|fc00::2/128": {} + }, + "VLAN_INTERFACE": { + "Vlan10|10.10.10.1/24": {}, + "Vlan10|fc01::1/64": {}, + "Vlan20": {"vnet_name": "Vnet1"}, + "Vlan20|20.20.20.1/24": {}, + "Vlan20|fd01::1/64": {} + }, + "constants": { + "bgp": { + "multipath_relax": { + "enabled": true + }, + "graceful_restart": { + "enabled": true + }, + "maximum_paths": { + "enabled": true + } + } + } +} diff --git a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py index ff9b30ea390..30498001199 100644 --- a/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py +++ b/src/sonic-bgpcfgd/tests/test_sonic-cfggen.py @@ -51,6 +51,12 @@ def test_bgpd_main_conf_voq_chassis(): "bgpd.main.conf.j2/voq_chassis.json", "bgpd.main.conf.j2/voq_chassis.conf") +def test_bgpd_main_conf_packet_chassis(): + run_test("Chassi packet bgpd.main.conf.j2", + "bgpd/bgpd.main.conf.j2", + "bgpd.main.conf.j2/packet_chassis.json", + "bgpd.main.conf.j2/packet_chassis.conf") + def test_tsa_isolate(): run_test("tsa/bgpd.tsa.isolate.conf.j2", "bgpd/tsa/bgpd.tsa.isolate.conf.j2", diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index fd0012fc2f6..4e8ce22bfdc 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -497,6 +497,7 @@ def parse_dpg(dpg, hname): nhg_int = "" nhportlist = [] dpg_ecmp_content = {} + static_routes = {} ipnhs = child.find(str(QName(ns, "IPNextHops"))) if ipnhs is not None: for ipnh in ipnhs.findall(str(QName(ns, "IPNextHop"))): @@ -508,8 +509,12 @@ def parse_dpg(dpg, hname): port_nhipv4_map[ipnhfmbr] = ipnhaddr elif ":" in ipnhaddr: port_nhipv6_map[ipnhfmbr] = ipnhaddr + elif ipnh.find(str(QName(ns, "Type"))).text == 'StaticRoute': + prefix = ipnh.find(str(QName(ns, "AttachTo"))).text + nexthop = ipnh.find(str(QName(ns, "Address"))).text + static_routes[prefix] = {'nexthop': nexthop } - if port_nhipv4_map is not None and port_nhipv6_map is not None: + if port_nhipv4_map and port_nhipv6_map: subnet_check_ip = list(port_nhipv4_map.values())[0] for subnet_range in ip_intfs_map: if ("." in subnet_range): @@ -701,8 +706,10 @@ def parse_dpg(dpg, hname): if mg_key in mg_tunnel.attrib: tunnelintfs[tunnel_type][tunnel_name][table_key] = mg_tunnel.attrib[mg_key] - return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content - return None, None, None, None, None, None, None, None, None, None, None, None, None + return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content, static_routes + return None, None, None, None, None, None, None, None, None, None, None, None, None, None, None + + def parse_host_loopback(dpg, hname): for child in dpg: @@ -738,10 +745,13 @@ def parse_cpg(cpg, hname, local_devices=[]): nhopself = 1 if session.find(str(QName(ns, "NextHopSelf"))) is not None else 0 # choose the right table and admin_status for the peer - voq_chassis = session.find(str(QName(ns, "VoQChassisInternal"))) - if voq_chassis is not None and voq_chassis.text == "true": + chassis_internal_ibgp = session.find(str(QName(ns, "ChassisInternal"))) + if chassis_internal_ibgp is not None and chassis_internal_ibgp.text == "voq": table = bgp_voq_chassis_sessions admin_status = 'up' + elif chassis_internal_ibgp is not None and chassis_internal_ibgp.text == "chassis-packet": + table = bgp_internal_sessions + admin_status = 'up' elif end_router.lower() in local_devices and start_router.lower() in local_devices: table = bgp_internal_sessions admin_status = 'up' @@ -1206,6 +1216,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw is_storage_device = False local_devices = [] kube_data = {} + static_routes = {} hwsku_qn = QName(ns, "HwSku") hostname_qn = QName(ns, "Hostname") @@ -1228,7 +1239,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw for child in root: if asic_name is None: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content, static_routes) = parse_dpg(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, hostname) elif child.tag == str(QName(ns, "PngDec")): @@ -1243,7 +1254,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw (port_speeds_default, port_descriptions, sys_ports) = parse_deviceinfo(child, hwsku) else: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content, static_routes) = parse_dpg(child, asic_name) host_lo_intfs = parse_host_loopback(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, asic_name, local_devices) @@ -1394,12 +1405,12 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw } else: vlan_intfs[vlan_invert_mapping[intf[0]]] = {} - elif intf[0][0:11] == 'PortChannel': - pc_intfs[intf] = {} - pc_intfs[intf[0]] = {} elif VLAN_SUB_INTERFACE_SEPARATOR in intf[0]: vlan_sub_intfs[intf] = {} vlan_sub_intfs[intf[0]] = {'admin_status': 'up'} + elif intf[0][0:11] == 'PortChannel': + pc_intfs[intf] = {} + pc_intfs[intf[0]] = {} else: phyport_intfs[intf] = {} phyport_intfs[intf[0]] = {} @@ -1567,6 +1578,9 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['VLAN_SUB_INTERFACE'] = vlan_sub_intfs elif resource_type is not None and 'Storage' in resource_type: is_storage_device = True + elif bool(vlan_sub_intfs): + results['VLAN_SUB_INTERFACE'] = vlan_sub_intfs + if is_storage_device: results['DEVICE_METADATA']['localhost']['storage_device'] = "true" @@ -1578,6 +1592,9 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['MUX_CABLE'] = get_mux_cable_entries(mux_cable_ports, neighbors, devices) + if static_routes: + results['STATIC_ROUTE'] = static_routes + for nghbr in list(neighbors.keys()): # remove port not in port_config.ini if nghbr not in ports: diff --git a/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml b/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml new file mode 100644 index 00000000000..96726b2a3fb --- /dev/null +++ b/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml @@ -0,0 +1,456 @@ + + + + + + false + str2-8808-lc2-1 + 27.1.1.1 + IXIA-EBGP + 27.1.1.2 + 1 + 10 + 3 + + + false + ASIC1 + 27.1.1.1 + IXIA-EBGP + 27.1.1.2 + 1 + 10 + 3 + + + ASIC1 + 8.0.0.3 + str2-8808-lc0-ASIC1 + 8.0.0.1 + 1 + 0 + 0 + chassis-packet + + + + + 65100 + str2-8808-lc2-1 + + +
27.1.1.2
+ + + +
+
+ +
+ + 69007 + IXIA-EBGP + + + + 65100 + str2-8808-lc0-ASIC1 + + + + 65100 + ASIC1 + + +
27.1.1.2
+ + + +
+ +
8.0.0.1
+ + + +
+
+ +
+
+
+ + + + + + HostIP + Loopback0 + + 10.0.1.6/32 + + 10.0.1.6/32 + + + + + HostIP + eth0 + + 10.3.147.97/23 + + 10.3.147.97/23 + + + + + + + str2-88 + + + + + + Eth1/1/47 + 27.1.1.1/24 + + + + + + + + + + + + + HostIP + Loopback0 + + 10.0.1.6/32 + + 10.0.1.6/32 + + + HostIP1 + Loopback4096 + + 8.0.0.3/32 + + 8.0.0.3/32 + + + + + HostIP + eth0 + + 10.3.147.97/23 + + 10.3.147.97/23 + + + + + + + ASIC1 + + + PortChannel32 + Eth2504-ASIC1;Eth2508-ASIC1;Eth2510-ASIC1 + + + + PortChannel33 + Eth2320-ASIC1;Eth2502-ASIC1;Eth2506-ASIC1;Eth2518-ASIC1 + + + + + + + + + PortChannel32 + 2 + dot1q + 192.168.1.4/24 + + + + PortChannel33 + 2 + dot1q + 192.168.2.4/24 + 10 + + + + + + Eth1/1/47 + 27.1.1.1/24 + + + + + + + IPNextHop + + 8.0.0.1/32 +
192.168.1.2,192.168.2.2
+ StaticRoute +
+
+
+
+ + + + DeviceInterfaceLink + IXIA-EBGP + Ethernet1 + str2-8808-lc2-1 + Eth1/1/47 + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet1 + true + ASIC1 + Eth2502-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet2 + true + ASIC1 + Eth2504-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet3 + true + ASIC1 + Eth2506-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet4 + true + ASIC1 + Eth2508-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet5 + true + ASIC1 + Eth2510-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet6 + true + ASIC1 + Eth2516-ASIC1 + true + + + DeviceInterfaceLink + 100000 + true + str2-8808-sup + Ethernet7 + true + ASIC1 + Eth2320-ASIC1 + true + + + + + str2-8808-lc2-1 + 8800-LC-48H-O +
+ 10.0.1.6/32 +
+ + 10.3.147.97/23 + +
+ + IXIA-EBGP + IXIA +
+ 0.0.0.0/0 +
+ + 0.0.0.0/0 + +
+ + str2-8808-sup + 8800-RP-O +
+ 0.0.0.0/0 +
+ + 10.3.147.95/23 + +
+ + Asic +
+ 8.0.0.3/32 +
+ + + + + + + + + 0.0.0.0/0 + + + ASIC1 + 8800-LC-48H-O +
+
+
+ + + true + + + DeviceInterface + + true + true + 1 + Ethernet1/1/47 + + false + 47 + 0 + 100000 + Ethernet47 + + + true + 0 + 8800-LC-48H-O + + + + + + + str2-8808-lc2-1 + + + SwitchType + + chassis_packet + + + DeploymentId + + 1 + + + QosProfile + + Profile0 + + + DhcpResources + + 192.0.0.1;192.0.0.2;192.0.0.3;192.0.0.4;192.0.0.5;192.0.0.6;192.0.0.7;192.0.0.8;192.0.0.9;192.0.0.10;192.0.0.11;192.0.0.12;192.0.0.13;192.0.0.14;192.0.0.15;192.0.0.16;192.0.0.17;192.0.0.18;192.0.0.19;192.0.0.20;192.0.0.21;192.0.0.22;192.0.0.23;192.0.0.24;192.0.0.25;192.0.0.26;192.0.0.27;192.0.0.28;192.0.0.29;192.0.0.30;192.0.0.31;192.0.0.32;192.0.0.33;192.0.0.34;192.0.0.35;192.0.0.36;192.0.0.37;192.0.0.38;192.0.0.39;192.0.0.40;192.0.0.41;192.0.0.42;192.0.0.43;192.0.0.44;192.0.0.45;192.0.0.46;192.0.0.47;192.0.0.48 + + + NtpResources + + 10.20.8.129;10.20.8.130 + + + SnmpResources + + 10.3.145.98 + + + SyslogResources + + 10.3.145.8;100.127.20.21 + + + TacacsGroup + + Starlab + + + TacacsServer + + 100.127.20.21 + + + ForcedMgmtRoutes + + 10.3.145.98/31;10.3.145.8;100.127.20.16/28;10.3.149.170/31;40.122.216.24;13.91.48.226;10.3.145.14;10.64.246.0/24;10.3.146.0/23;10.64.5.5 + + + ErspanDestinationIpv4 + + 10.20.6.16 + + + + + ASIC1 + + + SubRole + + FrontEnd + + + SwitchType + + chassis_packet + + + + + + + str2-8808-lc2-1 + 8800-LC-48H-O +
diff --git a/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini new file mode 100644 index 00000000000..bf79ada2328 --- /dev/null +++ b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini @@ -0,0 +1,60 @@ +# name lanes alias index speed asic_port_name role source_npu target_npu +Ethernet13 1280,1281,1282,1283 Eth1/1/13 13 100000 Eth13-ASIC1 Ext LC1.NPU1 - +Ethernet14 1284,1285,1286,1287 Eth1/1/14 14 100000 Eth14-ASIC1 Ext LC1.NPU1 - +Ethernet16 1288,1289,1290,1291 Eth1/1/16 16 100000 Eth16-ASIC1 Ext LC1.NPU1 - +Ethernet17 1292,1293,1294,1295 Eth1/1/17 17 100000 Eth17-ASIC1 Ext LC1.NPU1 - +Ethernet19 1024,1025,1026,1027 Eth1/1/19 19 100000 Eth19-ASIC1 Ext LC1.NPU1 - +Ethernet20 1036,1037,1038,1039 Eth1/1/20 20 100000 Eth20-ASIC1 Ext LC1.NPU1 - +Ethernet22 1028,1029,1030,1031 Eth1/1/22 22 100000 Eth22-ASIC1 Ext LC1.NPU1 - +Ethernet23 1032,1033,1034,1035 Eth1/1/23 23 100000 Eth23-ASIC1 Ext LC1.NPU1 - +Ethernet25 768,769,770,771 Eth1/1/25 25 100000 Eth25-ASIC1 Ext LC1.NPU1 - +Ethernet26 772,773,774,775 Eth1/1/26 26 100000 Eth26-ASIC1 Ext LC1.NPU1 - +Ethernet28 776,777,778,779 Eth1/1/28 28 100000 Eth28-ASIC1 Ext LC1.NPU1 - +Ethernet29 780,781,782,783 Eth1/1/29 29 100000 Eth29-ASIC1 Ext LC1.NPU1 - +Ethernet31 512,513,514,515 Eth1/1/31 31 100000 Eth31-ASIC1 Ext LC1.NPU1 - +Ethernet32 516,517,518,519 Eth1/1/32 32 100000 Eth32-ASIC1 Ext LC1.NPU1 - +Ethernet34 520,521,522,523 Eth1/1/34 34 100000 Eth34-ASIC1 Ext LC1.NPU1 - +Ethernet35 524,525,526,527 Eth1/1/35 35 100000 Eth35-ASIC1 Ext LC1.NPU1 - +Ethernet37 256,257,258,259 Eth1/1/37 37 100000 Eth37-ASIC1 Ext LC1.NPU1 - +Ethernet38 260,261,262,263 Eth1/1/38 38 100000 Eth38-ASIC1 Ext LC1.NPU1 - +Ethernet40 268,269,270,271 Eth1/1/40 40 100000 Eth40-ASIC1 Ext LC1.NPU1 - +Ethernet41 264,265,266,267 Eth1/1/41 41 100000 Eth41-ASIC1 Ext LC1.NPU1 - +Ethernet43 12,13,14,15 Eth1/1/43 43 100000 Eth43-ASIC1 Ext LC1.NPU1 - +Ethernet44 8,9,10,11 Eth1/1/44 44 100000 Eth44-ASIC1 Ext LC1.NPU1 - +Ethernet46 4,5,6,7 Eth1/1/46 46 100000 Eth46-ASIC1 Ext LC1.NPU1 - +Ethernet47 0,1,2,3 Eth1/1/47 47 100000 Eth47-ASIC1 Ext LC1.NPU1 - +Ethernet2320 16,17 Eth1/1/2320 2320 100000 Eth2320-ASIC1 Int LC1.NPU1 FC0.NPU1 +Ethernet2452 2052,2053 Eth2452-ASIC1 2452 100000 Eth2452-ASIC1 Int LC1.NPU1 FC4.NPU0 +Ethernet2454 2054,2055 Eth2454-ASIC1 2454 100000 Eth2454-ASIC1 Int LC1.NPU1 FC4.NPU0 +Ethernet2456 2056,2057 Eth2456-ASIC1 2456 100000 Eth2456-ASIC1 Int LC1.NPU1 FC4.NPU1 +Ethernet2458 2058,2059 Eth2458-ASIC1 2458 100000 Eth2458-ASIC1 Int LC1.NPU1 FC4.NPU0 +Ethernet2460 2060,2061 Eth2460-ASIC1 2460 100000 Eth2460-ASIC1 Int LC1.NPU1 FC4.NPU1 +Ethernet2462 2062,2063 Eth2462-ASIC1 2462 100000 Eth2462-ASIC1 Int LC1.NPU1 FC4.NPU1 +Ethernet2464 2064,2065 Eth2464-ASIC1 2464 100000 Eth2464-ASIC1 Int LC1.NPU1 FC4.NPU1 +Ethernet2466 2304,2305 Eth2466-ASIC1 2466 100000 Eth2466-ASIC1 Int LC1.NPU1 FC3.NPU0 +Ethernet2468 2306,2307 Eth2468-ASIC1 2468 100000 Eth2468-ASIC1 Int LC1.NPU1 FC3.NPU0 +Ethernet2470 2308,2309 Eth2470-ASIC1 2470 100000 Eth2470-ASIC1 Int LC1.NPU1 FC3.NPU1 +Ethernet2472 2310,2311 Eth2472-ASIC1 2472 100000 Eth2472-ASIC1 Int LC1.NPU1 FC3.NPU0 +Ethernet2474 2312,2313 Eth2474-ASIC1 2474 100000 Eth2474-ASIC1 Int LC1.NPU1 FC3.NPU1 +Ethernet2476 2314,2315 Eth2476-ASIC1 2476 100000 Eth2476-ASIC1 Int LC1.NPU1 FC3.NPU1 +Ethernet2478 2316,2317 Eth2478-ASIC1 2478 100000 Eth2478-ASIC1 Int LC1.NPU1 FC3.NPU1 +Ethernet2480 2318,2319 Eth2480-ASIC1 2480 100000 Eth2480-ASIC1 Int LC1.NPU1 FC2.NPU0 +Ethernet2482 2320,2321 Eth2482-ASIC1 2482 100000 Eth2482-ASIC1 Int LC1.NPU1 FC2.NPU0 +Ethernet2484 2560,2561 Eth2484-ASIC1 2484 100000 Eth2484-ASIC1 Int LC1.NPU1 FC1.NPU0 +Ethernet2486 2562,2563 Eth2486-ASIC1 2486 100000 Eth2486-ASIC1 Int LC1.NPU1 FC1.NPU1 +Ethernet2488 2564,2565 Eth2488-ASIC1 2488 100000 Eth2488-ASIC1 Int LC1.NPU1 FC1.NPU0 +Ethernet2490 2566,2567 Eth2490-ASIC1 2490 100000 Eth2490-ASIC1 Int LC1.NPU1 FC1.NPU0 +Ethernet2492 2568,2569 Eth2492-ASIC1 2492 100000 Eth2492-ASIC1 Int LC1.NPU1 FC2.NPU1 +Ethernet2494 2570,2571 Eth2494-ASIC1 2494 100000 Eth2494-ASIC1 Int LC1.NPU1 FC2.NPU1 +Ethernet2496 2572,2573 Eth2496-ASIC1 2496 100000 Eth2496-ASIC1 Int LC1.NPU1 FC2.NPU1 +Ethernet2498 2574,2575 Eth2498-ASIC1 2498 100000 Eth2498-ASIC1 Int LC1.NPU1 FC2.NPU0 +Ethernet2500 2576,2577 Eth2500-ASIC1 2500 100000 Eth2500-ASIC1 Int LC1.NPU1 FC2.NPU1 +Ethernet2502 2816,2817 Eth2502-ASIC1 2502 100000 Eth2502-ASIC1 Int LC1.NPU1 FC0.NPU1 +Ethernet2504 2818,2819 Eth2504-ASIC1 2504 100000 Eth2504-ASIC1 Int LC1.NPU1 FC0.NPU0 +Ethernet2506 2820,2821 Eth2506-ASIC1 2506 100000 Eth2506-ASIC1 Int LC1.NPU1 FC0.NPU1 +Ethernet2508 2822,2823 Eth2508-ASIC1 2508 100000 Eth2508-ASIC1 Int LC1.NPU1 FC0.NPU0 +Ethernet2510 2824,2825 Eth2510-ASIC1 2510 100000 Eth2510-ASIC1 Int LC1.NPU1 FC0.NPU0 +Ethernet2512 2826,2827 Eth2512-ASIC1 2512 100000 Eth2512-ASIC1 Int LC1.NPU1 FC1.NPU1 +Ethernet2514 2828,2829 Eth2514-ASIC1 2514 100000 Eth2514-ASIC1 Int LC1.NPU1 FC1.NPU1 +Ethernet2516 2830,2831 Eth2516-ASIC1 2516 100000 Eth2516-ASIC1 Int LC1.NPU1 FC1.NPU1 +Ethernet2518 2832,2833 Eth2518-ASIC1 2518 100000 Eth2518-ASIC1 Int LC1.NPU1 FC0.NPU1 diff --git a/src/sonic-config-engine/tests/sample-graph-resource-type.xml b/src/sonic-config-engine/tests/sample-graph-resource-type.xml index 12961059251..ab486b51cb6 100644 --- a/src/sonic-config-engine/tests/sample-graph-resource-type.xml +++ b/src/sonic-config-engine/tests/sample-graph-resource-type.xml @@ -20,7 +20,6 @@ 1 180 60 - false switch-t0 @@ -68,7 +67,7 @@ 1 180 60 - true + voq diff --git a/src/sonic-config-engine/tests/sample-graph-subintf.xml b/src/sonic-config-engine/tests/sample-graph-subintf.xml index f487b989a13..06a6cf2fd66 100644 --- a/src/sonic-config-engine/tests/sample-graph-subintf.xml +++ b/src/sonic-config-engine/tests/sample-graph-subintf.xml @@ -20,7 +20,6 @@ 1 180 60 - false switch-t0 @@ -68,7 +67,7 @@ 1 180 60 - true + voq diff --git a/src/sonic-config-engine/tests/simple-sample-graph.xml b/src/sonic-config-engine/tests/simple-sample-graph.xml index 90abd1885bc..e1c4b87fc3a 100644 --- a/src/sonic-config-engine/tests/simple-sample-graph.xml +++ b/src/sonic-config-engine/tests/simple-sample-graph.xml @@ -20,7 +20,6 @@ 1 180 60 - false switch-t0 @@ -68,7 +67,7 @@ 1 180 60 - true + voq diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 5be4bb7b75c..46cc486ff5a 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -831,5 +831,28 @@ def test_minigraph_dhcp(self): "'Vlan2000': {'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4']}}" ) ) - - \ No newline at end of file + + def test_minigraph_bgp_packet_chassis_peer(self): + argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "BGP_INTERNAL_NEIGHBOR[\'8.0.0.1\']"' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict("{'rrclient': 0, 'name': 'str2-8808-lc0-ASIC1', 'local_addr': '8.0.0.3', 'nhopself': 0, 'admin_status': 'up', 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}") + ) + + def test_minigraph_bgp_packet_chassis_static_route(self): + argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "STATIC_ROUTE"' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict("{'8.0.0.1/32': {'nexthop': '192.168.1.2,192.168.2.2'}}") + ) + + def test_minigraph_bgp_packet_chassis_vlan_subintf(self): + argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "VLAN_SUB_INTERFACE"' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict("{('PortChannel32.2', '192.168.1.4/24'): {}, 'PortChannel32.2': {'admin_status': 'up'}, ('PortChannel33.2', '192.168.2.4/24'): {}, 'PortChannel33.2': {'admin_status': 'up'}}") + ) + From 6e2fecfa6b8be3cf2605c6673438339d20902a32 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 13 Oct 2021 14:46:37 +0000 Subject: [PATCH 03/10] Some Fixes Signed-off-by: Abhishek Dosi --- .../sample-chassis-packet-lc-port-config.ini | 118 +++++++++--------- src/sonic-config-engine/tests/test_cfggen.py | 2 + 2 files changed, 61 insertions(+), 59 deletions(-) diff --git a/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini index bf79ada2328..ed0f52a1adf 100644 --- a/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini +++ b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini @@ -1,60 +1,60 @@ # name lanes alias index speed asic_port_name role source_npu target_npu -Ethernet13 1280,1281,1282,1283 Eth1/1/13 13 100000 Eth13-ASIC1 Ext LC1.NPU1 - -Ethernet14 1284,1285,1286,1287 Eth1/1/14 14 100000 Eth14-ASIC1 Ext LC1.NPU1 - -Ethernet16 1288,1289,1290,1291 Eth1/1/16 16 100000 Eth16-ASIC1 Ext LC1.NPU1 - -Ethernet17 1292,1293,1294,1295 Eth1/1/17 17 100000 Eth17-ASIC1 Ext LC1.NPU1 - -Ethernet19 1024,1025,1026,1027 Eth1/1/19 19 100000 Eth19-ASIC1 Ext LC1.NPU1 - -Ethernet20 1036,1037,1038,1039 Eth1/1/20 20 100000 Eth20-ASIC1 Ext LC1.NPU1 - -Ethernet22 1028,1029,1030,1031 Eth1/1/22 22 100000 Eth22-ASIC1 Ext LC1.NPU1 - -Ethernet23 1032,1033,1034,1035 Eth1/1/23 23 100000 Eth23-ASIC1 Ext LC1.NPU1 - -Ethernet25 768,769,770,771 Eth1/1/25 25 100000 Eth25-ASIC1 Ext LC1.NPU1 - -Ethernet26 772,773,774,775 Eth1/1/26 26 100000 Eth26-ASIC1 Ext LC1.NPU1 - -Ethernet28 776,777,778,779 Eth1/1/28 28 100000 Eth28-ASIC1 Ext LC1.NPU1 - -Ethernet29 780,781,782,783 Eth1/1/29 29 100000 Eth29-ASIC1 Ext LC1.NPU1 - -Ethernet31 512,513,514,515 Eth1/1/31 31 100000 Eth31-ASIC1 Ext LC1.NPU1 - -Ethernet32 516,517,518,519 Eth1/1/32 32 100000 Eth32-ASIC1 Ext LC1.NPU1 - -Ethernet34 520,521,522,523 Eth1/1/34 34 100000 Eth34-ASIC1 Ext LC1.NPU1 - -Ethernet35 524,525,526,527 Eth1/1/35 35 100000 Eth35-ASIC1 Ext LC1.NPU1 - -Ethernet37 256,257,258,259 Eth1/1/37 37 100000 Eth37-ASIC1 Ext LC1.NPU1 - -Ethernet38 260,261,262,263 Eth1/1/38 38 100000 Eth38-ASIC1 Ext LC1.NPU1 - -Ethernet40 268,269,270,271 Eth1/1/40 40 100000 Eth40-ASIC1 Ext LC1.NPU1 - -Ethernet41 264,265,266,267 Eth1/1/41 41 100000 Eth41-ASIC1 Ext LC1.NPU1 - -Ethernet43 12,13,14,15 Eth1/1/43 43 100000 Eth43-ASIC1 Ext LC1.NPU1 - -Ethernet44 8,9,10,11 Eth1/1/44 44 100000 Eth44-ASIC1 Ext LC1.NPU1 - -Ethernet46 4,5,6,7 Eth1/1/46 46 100000 Eth46-ASIC1 Ext LC1.NPU1 - -Ethernet47 0,1,2,3 Eth1/1/47 47 100000 Eth47-ASIC1 Ext LC1.NPU1 - -Ethernet2320 16,17 Eth1/1/2320 2320 100000 Eth2320-ASIC1 Int LC1.NPU1 FC0.NPU1 -Ethernet2452 2052,2053 Eth2452-ASIC1 2452 100000 Eth2452-ASIC1 Int LC1.NPU1 FC4.NPU0 -Ethernet2454 2054,2055 Eth2454-ASIC1 2454 100000 Eth2454-ASIC1 Int LC1.NPU1 FC4.NPU0 -Ethernet2456 2056,2057 Eth2456-ASIC1 2456 100000 Eth2456-ASIC1 Int LC1.NPU1 FC4.NPU1 -Ethernet2458 2058,2059 Eth2458-ASIC1 2458 100000 Eth2458-ASIC1 Int LC1.NPU1 FC4.NPU0 -Ethernet2460 2060,2061 Eth2460-ASIC1 2460 100000 Eth2460-ASIC1 Int LC1.NPU1 FC4.NPU1 -Ethernet2462 2062,2063 Eth2462-ASIC1 2462 100000 Eth2462-ASIC1 Int LC1.NPU1 FC4.NPU1 -Ethernet2464 2064,2065 Eth2464-ASIC1 2464 100000 Eth2464-ASIC1 Int LC1.NPU1 FC4.NPU1 -Ethernet2466 2304,2305 Eth2466-ASIC1 2466 100000 Eth2466-ASIC1 Int LC1.NPU1 FC3.NPU0 -Ethernet2468 2306,2307 Eth2468-ASIC1 2468 100000 Eth2468-ASIC1 Int LC1.NPU1 FC3.NPU0 -Ethernet2470 2308,2309 Eth2470-ASIC1 2470 100000 Eth2470-ASIC1 Int LC1.NPU1 FC3.NPU1 -Ethernet2472 2310,2311 Eth2472-ASIC1 2472 100000 Eth2472-ASIC1 Int LC1.NPU1 FC3.NPU0 -Ethernet2474 2312,2313 Eth2474-ASIC1 2474 100000 Eth2474-ASIC1 Int LC1.NPU1 FC3.NPU1 -Ethernet2476 2314,2315 Eth2476-ASIC1 2476 100000 Eth2476-ASIC1 Int LC1.NPU1 FC3.NPU1 -Ethernet2478 2316,2317 Eth2478-ASIC1 2478 100000 Eth2478-ASIC1 Int LC1.NPU1 FC3.NPU1 -Ethernet2480 2318,2319 Eth2480-ASIC1 2480 100000 Eth2480-ASIC1 Int LC1.NPU1 FC2.NPU0 -Ethernet2482 2320,2321 Eth2482-ASIC1 2482 100000 Eth2482-ASIC1 Int LC1.NPU1 FC2.NPU0 -Ethernet2484 2560,2561 Eth2484-ASIC1 2484 100000 Eth2484-ASIC1 Int LC1.NPU1 FC1.NPU0 -Ethernet2486 2562,2563 Eth2486-ASIC1 2486 100000 Eth2486-ASIC1 Int LC1.NPU1 FC1.NPU1 -Ethernet2488 2564,2565 Eth2488-ASIC1 2488 100000 Eth2488-ASIC1 Int LC1.NPU1 FC1.NPU0 -Ethernet2490 2566,2567 Eth2490-ASIC1 2490 100000 Eth2490-ASIC1 Int LC1.NPU1 FC1.NPU0 -Ethernet2492 2568,2569 Eth2492-ASIC1 2492 100000 Eth2492-ASIC1 Int LC1.NPU1 FC2.NPU1 -Ethernet2494 2570,2571 Eth2494-ASIC1 2494 100000 Eth2494-ASIC1 Int LC1.NPU1 FC2.NPU1 -Ethernet2496 2572,2573 Eth2496-ASIC1 2496 100000 Eth2496-ASIC1 Int LC1.NPU1 FC2.NPU1 -Ethernet2498 2574,2575 Eth2498-ASIC1 2498 100000 Eth2498-ASIC1 Int LC1.NPU1 FC2.NPU0 -Ethernet2500 2576,2577 Eth2500-ASIC1 2500 100000 Eth2500-ASIC1 Int LC1.NPU1 FC2.NPU1 -Ethernet2502 2816,2817 Eth2502-ASIC1 2502 100000 Eth2502-ASIC1 Int LC1.NPU1 FC0.NPU1 -Ethernet2504 2818,2819 Eth2504-ASIC1 2504 100000 Eth2504-ASIC1 Int LC1.NPU1 FC0.NPU0 -Ethernet2506 2820,2821 Eth2506-ASIC1 2506 100000 Eth2506-ASIC1 Int LC1.NPU1 FC0.NPU1 -Ethernet2508 2822,2823 Eth2508-ASIC1 2508 100000 Eth2508-ASIC1 Int LC1.NPU1 FC0.NPU0 -Ethernet2510 2824,2825 Eth2510-ASIC1 2510 100000 Eth2510-ASIC1 Int LC1.NPU1 FC0.NPU0 -Ethernet2512 2826,2827 Eth2512-ASIC1 2512 100000 Eth2512-ASIC1 Int LC1.NPU1 FC1.NPU1 -Ethernet2514 2828,2829 Eth2514-ASIC1 2514 100000 Eth2514-ASIC1 Int LC1.NPU1 FC1.NPU1 -Ethernet2516 2830,2831 Eth2516-ASIC1 2516 100000 Eth2516-ASIC1 Int LC1.NPU1 FC1.NPU1 -Ethernet2518 2832,2833 Eth2518-ASIC1 2518 100000 Eth2518-ASIC1 Int LC1.NPU1 FC0.NPU1 +Ethernet13 1280,1281,1282,1283 Eth1/1/13 13 100000 Eth13-ASIC1 Ext +Ethernet14 1284,1285,1286,1287 Eth1/1/14 14 100000 Eth14-ASIC1 Ext +Ethernet16 1288,1289,1290,1291 Eth1/1/16 16 100000 Eth16-ASIC1 Ext +Ethernet17 1292,1293,1294,1295 Eth1/1/17 17 100000 Eth17-ASIC1 Ext +Ethernet19 1024,1025,1026,1027 Eth1/1/19 19 100000 Eth19-ASIC1 Ext +Ethernet20 1036,1037,1038,1039 Eth1/1/20 20 100000 Eth20-ASIC1 Ext +Ethernet22 1028,1029,1030,1031 Eth1/1/22 22 100000 Eth22-ASIC1 Ext +Ethernet23 1032,1033,1034,1035 Eth1/1/23 23 100000 Eth23-ASIC1 Ext +Ethernet25 768,769,770,771 Eth1/1/25 25 100000 Eth25-ASIC1 Ext +Ethernet26 772,773,774,775 Eth1/1/26 26 100000 Eth26-ASIC1 Ext +Ethernet28 776,777,778,779 Eth1/1/28 28 100000 Eth28-ASIC1 Ext +Ethernet29 780,781,782,783 Eth1/1/29 29 100000 Eth29-ASIC1 Ext +Ethernet31 512,513,514,515 Eth1/1/31 31 100000 Eth31-ASIC1 Ext +Ethernet32 516,517,518,519 Eth1/1/32 32 100000 Eth32-ASIC1 Ext +Ethernet34 520,521,522,523 Eth1/1/34 34 100000 Eth34-ASIC1 Ext +Ethernet35 524,525,526,527 Eth1/1/35 35 100000 Eth35-ASIC1 Ext +Ethernet37 256,257,258,259 Eth1/1/37 37 100000 Eth37-ASIC1 Ext +Ethernet38 260,261,262,263 Eth1/1/38 38 100000 Eth38-ASIC1 Ext +Ethernet40 268,269,270,271 Eth1/1/40 40 100000 Eth40-ASIC1 Ext +Ethernet41 264,265,266,267 Eth1/1/41 41 100000 Eth41-ASIC1 Ext +Ethernet43 12,13,14,15 Eth1/1/43 43 100000 Eth43-ASIC1 Ext +Ethernet44 8,9,10,11 Eth1/1/44 44 100000 Eth44-ASIC1 Ext +Ethernet46 4,5,6,7 Eth1/1/46 46 100000 Eth46-ASIC1 Ext +Ethernet47 0,1,2,3 Eth1/1/47 47 100000 Eth47-ASIC1 Ext +Ethernet2320 16,17 Eth2320-ASIC1 2320 100000 Eth2320-ASIC1 Int +Ethernet2452 2052,2053 Eth2452-ASIC1 2452 100000 Eth2452-ASIC1 Int +Ethernet2454 2054,2055 Eth2454-ASIC1 2454 100000 Eth2454-ASIC1 Int +Ethernet2456 2056,2057 Eth2456-ASIC1 2456 100000 Eth2456-ASIC1 Int +Ethernet2458 2058,2059 Eth2458-ASIC1 2458 100000 Eth2458-ASIC1 Int +Ethernet2460 2060,2061 Eth2460-ASIC1 2460 100000 Eth2460-ASIC1 Int +Ethernet2462 2062,2063 Eth2462-ASIC1 2462 100000 Eth2462-ASIC1 Int +Ethernet2464 2064,2065 Eth2464-ASIC1 2464 100000 Eth2464-ASIC1 Int +Ethernet2466 2304,2305 Eth2466-ASIC1 2466 100000 Eth2466-ASIC1 Int +Ethernet2468 2306,2307 Eth2468-ASIC1 2468 100000 Eth2468-ASIC1 Int +Ethernet2470 2308,2309 Eth2470-ASIC1 2470 100000 Eth2470-ASIC1 Int +Ethernet2472 2310,2311 Eth2472-ASIC1 2472 100000 Eth2472-ASIC1 Int +Ethernet2474 2312,2313 Eth2474-ASIC1 2474 100000 Eth2474-ASIC1 Int +Ethernet2476 2314,2315 Eth2476-ASIC1 2476 100000 Eth2476-ASIC1 Int +Ethernet2478 2316,2317 Eth2478-ASIC1 2478 100000 Eth2478-ASIC1 Int +Ethernet2480 2318,2319 Eth2480-ASIC1 2480 100000 Eth2480-ASIC1 Int +Ethernet2482 2320,2321 Eth2482-ASIC1 2482 100000 Eth2482-ASIC1 Int +Ethernet2484 2560,2561 Eth2484-ASIC1 2484 100000 Eth2484-ASIC1 Int +Ethernet2486 2562,2563 Eth2486-ASIC1 2486 100000 Eth2486-ASIC1 Int +Ethernet2488 2564,2565 Eth2488-ASIC1 2488 100000 Eth2488-ASIC1 Int +Ethernet2490 2566,2567 Eth2490-ASIC1 2490 100000 Eth2490-ASIC1 Int +Ethernet2492 2568,2569 Eth2492-ASIC1 2492 100000 Eth2492-ASIC1 Int +Ethernet2494 2570,2571 Eth2494-ASIC1 2494 100000 Eth2494-ASIC1 Int +Ethernet2496 2572,2573 Eth2496-ASIC1 2496 100000 Eth2496-ASIC1 Int +Ethernet2498 2574,2575 Eth2498-ASIC1 2498 100000 Eth2498-ASIC1 Int +Ethernet2500 2576,2577 Eth2500-ASIC1 2500 100000 Eth2500-ASIC1 Int +Ethernet2502 2816,2817 Eth2502-ASIC1 2502 100000 Eth2502-ASIC1 Int +Ethernet2504 2818,2819 Eth2504-ASIC1 2504 100000 Eth2504-ASIC1 Int +Ethernet2506 2820,2821 Eth2506-ASIC1 2506 100000 Eth2506-ASIC1 Int +Ethernet2508 2822,2823 Eth2508-ASIC1 2508 100000 Eth2508-ASIC1 Int +Ethernet2510 2824,2825 Eth2510-ASIC1 2510 100000 Eth2510-ASIC1 Int +Ethernet2512 2826,2827 Eth2512-ASIC1 2512 100000 Eth2512-ASIC1 Int +Ethernet2514 2828,2829 Eth2514-ASIC1 2514 100000 Eth2514-ASIC1 Int +Ethernet2516 2830,2831 Eth2516-ASIC1 2516 100000 Eth2516-ASIC1 Int +Ethernet2518 2832,2833 Eth2518-ASIC1 2518 100000 Eth2518-ASIC1 Int diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 46cc486ff5a..4f86a71fc1d 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -32,6 +32,8 @@ def setUp(self): self.sample_resource_graph = os.path.join(self.test_dir, 'sample-graph-resource-type.xml') self.sample_subintf_graph = os.path.join(self.test_dir, 'sample-graph-subintf.xml') self.voq_port_config = os.path.join(self.test_dir, 'voq-sample-port-config.ini') + self.packet_chassis_graph = os.path.join(self.test_dir, 'sample-chassis-packet-lc-graph.xml') + self.packet_chassis_port_ini = os.path.join(self.test_dir, 'sample-chassis-packet-lc-port-config.ini') # To ensure that mock config_db data is used for unit-test cases os.environ["CFGGEN_UNIT_TESTING"] = "2" From e33a1e593e6d49322e51525fee659e8bbc147458 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Thu, 28 Oct 2021 20:07:11 +0000 Subject: [PATCH 04/10] Fixed Chassis Packet Internal Template Typo for update-source. Also address review comments for PR:https://github.com/Azure/sonic-buildimage/pull/8966 Signed-off-by: Abhishek Dosi --- .../bgpd/templates/internal/peer-group.conf.j2 | 2 +- .../peer-group.conf/result_chasiss_packet.conf | 2 +- src/sonic-config-engine/minigraph.py | 2 +- .../tests/sample-chassis-packet-lc-graph.xml | 15 +++++++++++++-- .../sample-chassis-packet-lc-port-config.ini | 2 +- src/sonic-config-engine/tests/test_cfggen.py | 7 +++++++ 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 index c5f3f0b2f3a..0b15136c555 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 @@ -19,7 +19,7 @@ exit-address-family address-family ipv6 {% if CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} - neighbor INTERNAL_PEER_V4 update-source {{ get_ipv6_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} + neighbor INTERNAL_PEER_V6 update-source {{ get_ipv6_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} {% elif CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} neighbor INTERNAL_PEER_V6 route-reflector-client {% endif %} diff --git a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf index 08ef259e089..c36359de77d 100644 --- a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf +++ b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf @@ -11,7 +11,7 @@ neighbor INTERNAL_PEER_V4 route-map TO_BGP_INTERNAL_PEER_V4 out exit-address-family address-family ipv6 - neighbor INTERNAL_PEER_V4 update-source 2603:10e2:400::3 + neighbor INTERNAL_PEER_V6 update-source 2603:10e2:400::3 neighbor INTERNAL_PEER_V6 soft-reconfiguration inbound neighbor INTERNAL_PEER_V6 allowas-in 1 neighbor INTERNAL_PEER_V6 route-map FROM_BGP_INTERNAL_PEER_V6 in diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 58bc90c004a..4a60cd4edce 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -279,7 +279,7 @@ def parse_png(png, hname, dpg_ecmp_content = None): mux_cable_ports[intf_name] = "true" - if (len(dpg_ecmp_content)): + if dpg_ecmp_content and (len(dpg_ecmp_content)): for version, content in dpg_ecmp_content.items(): # version is ipv4 or ipv6 fine_grained_content = formulate_fine_grained_ecmp(version, content, port_device_map, port_alias_map) # port_alias_map FG_NHG_MEMBER.update(fine_grained_content['FG_NHG_MEMBER']) diff --git a/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml b/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml index 96726b2a3fb..26e6ccb9322 100644 --- a/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml +++ b/src/sonic-config-engine/tests/sample-chassis-packet-lc-graph.xml @@ -105,7 +105,7 @@ - str2-88 + str2-8808-lc2-1 @@ -114,7 +114,18 @@ Eth1/1/47 27.1.1.1/24 - + + + + + + IPNextHop + + 8.0.0.1/32 +
192.168.1.2,192.168.2.2
+ StaticRoute +
+
diff --git a/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini index ed0f52a1adf..52cb3360a50 100644 --- a/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini +++ b/src/sonic-config-engine/tests/sample-chassis-packet-lc-port-config.ini @@ -1,4 +1,4 @@ -# name lanes alias index speed asic_port_name role source_npu target_npu +# name lanes alias index speed asic_port_name role Ethernet13 1280,1281,1282,1283 Eth1/1/13 13 100000 Eth13-ASIC1 Ext Ethernet14 1284,1285,1286,1287 Eth1/1/14 14 100000 Eth14-ASIC1 Ext Ethernet16 1288,1289,1290,1291 Eth1/1/16 16 100000 Eth16-ASIC1 Ext diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index ba2250ac7d8..5a2250f0f90 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -898,6 +898,13 @@ def test_minigraph_bgp_packet_chassis_peer(self): ) def test_minigraph_bgp_packet_chassis_static_route(self): + argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -v "STATIC_ROUTE"' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict("{'8.0.0.1/32': {'nexthop': '192.168.1.2,192.168.2.2'}}") + ) + argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "STATIC_ROUTE"' output = self.run_script(argument) self.assertEqual( From 47a82f14e3c009c170ba46e78acb04f2405eec9a Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 3 Nov 2021 06:20:20 +0000 Subject: [PATCH 05/10] Fix Syslog for multi-asic platforms. Signed-off-by: Abhishek Dosi --- files/image_config/rsyslog/rsyslog-config.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/image_config/rsyslog/rsyslog-config.sh b/files/image_config/rsyslog/rsyslog-config.sh index f3895302e0f..83be7ab6cf7 100755 --- a/files/image_config/rsyslog/rsyslog-config.sh +++ b/files/image_config/rsyslog/rsyslog-config.sh @@ -13,7 +13,7 @@ fi # on Single NPU platforms we continue to use loopback adddres if [[ ($NUM_ASIC -gt 1) ]]; then - udp_server_ip=$(ip -j -4 addr list docker0 | jq -r -M '.[0].addr_info[0].local') + udp_server_ip=$(ip -o -4 addr list docker0 | awk '{print $4}' | cut -d/ -f1) else udp_server_ip=$(ip -j -4 addr list lo scope host | jq -r -M '.[0].addr_info[0].local') fi From c3d62dcabacb2fe5acdcb2e5bccbb8ded7f3261a Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Fri, 12 Nov 2021 23:10:06 +0000 Subject: [PATCH 06/10] Added 40G {300/40/5m} profile for 7260 100G SKU Signed-off-by: Abhishek Dosi --- .../Arista-7260CX3-C64/pg_profile_lookup.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/pg_profile_lookup.ini b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/pg_profile_lookup.ini index 254e58d3940..cbc06c81806 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/pg_profile_lookup.ini +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/pg_profile_lookup.ini @@ -3,3 +3,6 @@ 100000 5m 1248 1248 96928 -3 2496 100000 40m 1248 1248 59696 -3 2496 100000 300m 1248 1248 101088 -3 2496 + 40000 5m 1248 1248 29536 -3 2496 + 40000 40m 1248 1248 31616 -3 2496 + 40000 300m 1248 1248 48256 -3 2496 From 9a2b3d019c3d35af8f5be9415e3de00b8ce283d2 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 17 Nov 2021 19:53:28 +0000 Subject: [PATCH 07/10] Updated BGP Template for the case: 1. For Packet Chassis do not advertise Loopback4096 address into BGP as there is Static Route for same. 2. Advertise only P2P Connected IP's into BGP Signed-off-by: Abhishek Dosi --- .../docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 20 +++++++++++++++---- .../data/sonic-cfggen/bgpd.conf.j2/all.conf | 16 +++++++++++++-- .../sonic-cfggen/bgpd.main.conf.j2/all.conf | 16 +++++++++++++-- .../bgpd.main.conf.j2/defaults.conf | 16 +++++++++++++-- .../bgpd.main.conf.j2/packet_chassis.conf | 20 +++++++++++++------ .../bgpd.main.conf.j2/voq_chassis.conf | 16 +++++++++++++-- .../data/sonic-cfggen/frr.conf.j2/all.conf | 16 +++++++++++++-- .../py2/bgpd_frr_backend_asic.conf | 12 +++++++++++ .../py2/bgpd_frr_frontend_asic.conf | 16 +++++++++++++-- .../py3/bgpd_frr_backend_asic.conf | 12 +++++++++++ .../py3/bgpd_frr_frontend_asic.conf | 16 +++++++++++++-- 11 files changed, 152 insertions(+), 24 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index 1453d6fc802..c1616c043f2 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -34,6 +34,18 @@ ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq {{ loop.index * 5 }} permit {{ prefi {% set multi_asic = True %} {% endif %} {% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export {% if constants.bgp.peers is defined and constants.bgp.peers.internal is defined and constants.bgp.peers.internal.community is defined %} @@ -71,7 +83,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {# advertise loopback #} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32 -{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} +{% if ((multi_asic is defined and DEVICE_METADATA['localhost']['switch_type'] != 'chassis-packet') or (DEVICE_METADATA['localhost']['switch_type'] == 'voq')) %} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/32 route-map HIDE_INTERNAL {% endif %} ! @@ -80,7 +92,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/64 exit-address-family {% endif %} -{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} +{% if ((multi_asic is defined and DEVICE_METADATA['localhost']['switch_type'] != 'chassis-packet') or (DEVICE_METADATA['localhost']['switch_type'] == 'voq')) %} {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") != 'None' %} address-family ipv6 network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/128 route-map HIDE_INTERNAL @@ -104,10 +116,10 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family {% endif %} ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf index b6f7a668bc8..c39115706d7 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf @@ -33,6 +33,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export on-match next @@ -71,10 +83,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf index 5d09db59653..c5ba79d3439 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf @@ -15,6 +15,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -50,10 +62,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf index 14aa080efb5..00b09bd40d9 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf @@ -15,6 +15,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -50,10 +62,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf index b48617a6d84..2852ce15023 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf @@ -15,6 +15,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -35,14 +47,10 @@ router bgp 55555 bgp router-id 55.55.55.56 ! network 55.55.55.55/32 - network 55.55.55.56/32 route-map HIDE_INTERNAL ! address-family ipv6 network fc00::1/64 exit-address-family - address-family ipv6 - network fc00::2/128 route-map HIDE_INTERNAL - exit-address-family ! network 10.10.10.1/24 address-family ipv6 @@ -50,10 +58,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf index b48617a6d84..26f06d843a7 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf @@ -15,6 +15,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -50,10 +62,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf index bf01c12f275..5de40802479 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf @@ -56,6 +56,18 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -90,10 +102,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf index a4ad1c677a7..0def8a6be32 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf @@ -34,6 +34,18 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf index b49d3ddd4dc..ecdb3818ff6 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf @@ -34,6 +34,18 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -66,10 +78,10 @@ router bgp 65100 ! ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf index a4ad1c677a7..0def8a6be32 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf @@ -34,6 +34,18 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf index b49d3ddd4dc..ecdb3818ff6 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf @@ -34,6 +34,18 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! +ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 +! +ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 +! +route-map V4_CONNECTED_ROUTES permit 10 + match ip address prefix-list V4_P2P_IP + call HIDE_INTERNAL +! +route-map V6_CONNECTED_ROUTES permit 10 + match ipv6 address prefix-list V6_P2P_IP + call HIDE_INTERNAL +! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -66,10 +78,10 @@ router bgp 65100 ! ! address-family ipv4 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V4_CONNECTED_ROUTES exit-address-family address-family ipv6 - redistribute connected route-map HIDE_INTERNAL + redistribute connected route-map V6_CONNECTED_ROUTES exit-address-family ! address-family ipv4 From b0c375a0cfd2a03a20c55e22faeaf211dff8473f Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 24 Nov 2021 18:35:38 +0000 Subject: [PATCH 08/10] Revert "Updated BGP Template for the case:" This reverts commit 9a2b3d019c3d35af8f5be9415e3de00b8ce283d2. --- .../docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 20 ++++--------------- .../data/sonic-cfggen/bgpd.conf.j2/all.conf | 16 ++------------- .../sonic-cfggen/bgpd.main.conf.j2/all.conf | 16 ++------------- .../bgpd.main.conf.j2/defaults.conf | 16 ++------------- .../bgpd.main.conf.j2/packet_chassis.conf | 20 ++++++------------- .../bgpd.main.conf.j2/voq_chassis.conf | 16 ++------------- .../data/sonic-cfggen/frr.conf.j2/all.conf | 16 ++------------- .../py2/bgpd_frr_backend_asic.conf | 12 ----------- .../py2/bgpd_frr_frontend_asic.conf | 16 ++------------- .../py3/bgpd_frr_backend_asic.conf | 12 ----------- .../py3/bgpd_frr_frontend_asic.conf | 16 ++------------- 11 files changed, 24 insertions(+), 152 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index c1616c043f2..1453d6fc802 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -34,18 +34,6 @@ ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq {{ loop.index * 5 }} permit {{ prefi {% set multi_asic = True %} {% endif %} {% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export {% if constants.bgp.peers is defined and constants.bgp.peers.internal is defined and constants.bgp.peers.internal.community is defined %} @@ -83,7 +71,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {# advertise loopback #} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32 -{% if ((multi_asic is defined and DEVICE_METADATA['localhost']['switch_type'] != 'chassis-packet') or (DEVICE_METADATA['localhost']['switch_type'] == 'voq')) %} +{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/32 route-map HIDE_INTERNAL {% endif %} ! @@ -92,7 +80,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/64 exit-address-family {% endif %} -{% if ((multi_asic is defined and DEVICE_METADATA['localhost']['switch_type'] != 'chassis-packet') or (DEVICE_METADATA['localhost']['switch_type'] == 'voq')) %} +{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} {% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") != 'None' %} address-family ipv6 network {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/128 route-map HIDE_INTERNAL @@ -116,10 +104,10 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! {% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' or DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family {% endif %} ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf index c39115706d7..b6f7a668bc8 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.conf @@ -33,18 +33,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export on-match next @@ -83,10 +71,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf index c5ba79d3439..5d09db59653 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.conf @@ -15,18 +15,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -62,10 +50,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf index 00b09bd40d9..14aa080efb5 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.conf @@ -15,18 +15,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -62,10 +50,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf index 2852ce15023..b48617a6d84 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf @@ -15,18 +15,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -47,10 +35,14 @@ router bgp 55555 bgp router-id 55.55.55.56 ! network 55.55.55.55/32 + network 55.55.55.56/32 route-map HIDE_INTERNAL ! address-family ipv6 network fc00::1/64 exit-address-family + address-family ipv6 + network fc00::2/128 route-map HIDE_INTERNAL + exit-address-family ! network 10.10.10.1/24 address-family ipv6 @@ -58,10 +50,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf index 26f06d843a7..b48617a6d84 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf @@ -15,18 +15,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -62,10 +50,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf index 5de40802479..bf01c12f275 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.conf @@ -56,18 +56,6 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 10.10.10.0/24 ! ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq 10 permit fc01::/64 ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -102,10 +90,10 @@ router bgp 55555 exit-address-family ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf index 0def8a6be32..a4ad1c677a7 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf @@ -34,18 +34,6 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf index ecdb3818ff6..b49d3ddd4dc 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf @@ -34,18 +34,6 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -78,10 +66,10 @@ router bgp 65100 ! ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf index 0def8a6be32..a4ad1c677a7 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf @@ -34,18 +34,6 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf index ecdb3818ff6..b49d3ddd4dc 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf @@ -34,18 +34,6 @@ ip prefix-list PL_LoopbackV4 permit 10.1.0.32/32 ipv6 prefix-list PL_LoopbackV6 permit fc00:1::/64 ! ! -ip prefix-list V4_P2P_IP permit 0.0.0.0/0 ge 31 le 31 -! -ipv6 prefix-list V6_P2P_IP permit ::/0 ge 126 le 126 -! -route-map V4_CONNECTED_ROUTES permit 10 - match ip address prefix-list V4_P2P_IP - call HIDE_INTERNAL -! -route-map V6_CONNECTED_ROUTES permit 10 - match ipv6 address prefix-list V6_P2P_IP - call HIDE_INTERNAL -! route-map HIDE_INTERNAL permit 10 set community no-export ! @@ -78,10 +66,10 @@ router bgp 65100 ! ! address-family ipv4 - redistribute connected route-map V4_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family address-family ipv6 - redistribute connected route-map V6_CONNECTED_ROUTES + redistribute connected route-map HIDE_INTERNAL exit-address-family ! address-family ipv4 From cae358f4bcce32230ca5c6b8f09a76adb1917099 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Thu, 9 Dec 2021 20:40:13 +0000 Subject: [PATCH 09/10] Enable BGP Graceful Restart only if device Type is TorRouter. By default FRR will be in Graceful Helper mode Signed-off-by: Abhishek Dosi --- dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 2 +- .../tests/data/sonic-cfggen/bgpd.conf.j2/all.json | 3 ++- .../tests/data/sonic-cfggen/bgpd.main.conf.j2/all.json | 3 ++- .../tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.json | 3 ++- .../data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf | 4 ---- .../data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json | 3 ++- .../data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf | 4 ---- .../data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.json | 3 ++- .../tests/data/sonic-cfggen/frr.conf.j2/all.json | 3 ++- .../tests/sample_output/py2/bgpd_frr_backend_asic.conf | 4 ---- .../tests/sample_output/py2/bgpd_frr_frontend_asic.conf | 4 ---- .../tests/sample_output/py2/t2-chassis-fe-bgpd.conf | 4 ---- .../tests/sample_output/py3/bgpd_frr_backend_asic.conf | 4 ---- .../tests/sample_output/py3/bgpd_frr_frontend_asic.conf | 4 ---- .../tests/sample_output/py3/t2-chassis-fe-bgpd.conf | 4 ---- 15 files changed, 13 insertions(+), 39 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index c1616c043f2..c6643f18574 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -67,7 +67,7 @@ router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} bgp bestpath as-path multipath-relax {% endif %} ! -{% if constants.bgp.graceful_restart.enabled is defined and constants.bgp.graceful_restart.enabled %} +{% if constants.bgp.graceful_restart.enabled is defined and constants.bgp.graceful_restart.enabled and DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %} bgp graceful-restart restart-time {{ constants.bgp.graceful_restart.restart_time | default(240) }} bgp graceful-restart bgp graceful-restart preserve-fw-state diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.json index 34fdbe72448..fc5016d8536 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.conf.j2/all.json @@ -3,7 +3,8 @@ "localhost": { "hostname": "new_hostname", "bgp_asn": "55555", - "sub_role": "FrontEnd" + "sub_role": "FrontEnd", + "type": "ToRRouter" } }, "LOOPBACK_INTERFACE": { diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.json index c8f0141ec4f..47508bb3c00 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/all.json @@ -2,7 +2,8 @@ "DEVICE_METADATA": { "localhost": { "bgp_asn": "55555", - "sub_role": "FrontEnd" + "sub_role": "FrontEnd", + "type": "ToRRouter" } }, "LOOPBACK_INTERFACE": { diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.json index 5b30406668a..c1b5ae8dc44 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/defaults.json @@ -2,7 +2,8 @@ "DEVICE_METADATA": { "localhost": { "bgp_asn": "55555", - "sub_role": "FrontEnd" + "sub_role": "FrontEnd", + "type": "ToRRouter" } }, "LOOPBACK_INTERFACE": { diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf index 2852ce15023..37ac8827dc4 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.conf @@ -39,10 +39,6 @@ router bgp 55555 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 55.55.55.56 ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json index 418a62266d8..41fc9351beb 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/packet_chassis.json @@ -3,7 +3,8 @@ "localhost": { "bgp_asn": "55555", "sub_role": "FrontEnd", - "switch_type": "chassis-packet" + "switch_type": "chassis-packet", + "type": "SpineRouter" } }, "LOOPBACK_INTERFACE": { diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf index 26f06d843a7..d8ee10ada1e 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.conf @@ -39,10 +39,6 @@ router bgp 55555 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 55.55.55.56 ! diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.json index 4cbb4c0048c..00c913981a1 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/bgpd.main.conf.j2/voq_chassis.json @@ -3,7 +3,8 @@ "localhost": { "bgp_asn": "55555", "sub_role": "", - "switch_type": "voq" + "switch_type": "voq", + "type": "SpineRouter" } }, "LOOPBACK_INTERFACE": { diff --git a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.json b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.json index 92143a2a9de..9c8a34fb412 100644 --- a/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.json +++ b/src/sonic-bgpcfgd/tests/data/sonic-cfggen/frr.conf.j2/all.json @@ -3,7 +3,8 @@ "localhost": { "bgp_asn": "55555", "hostname": "test_hostname", - "sub_role": "FrontEnd" + "sub_role": "FrontEnd", + "type": "ToRRouter" } }, "INTERFACE": { diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf index 0def8a6be32..d793dfa39a9 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf @@ -58,10 +58,6 @@ router bgp 65100 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 8.0.0.5 ! diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf index ecdb3818ff6..94bd37e3b90 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf @@ -58,10 +58,6 @@ router bgp 65100 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 10.1.0.32 ! diff --git a/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf b/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf index d3b9b472c5b..20744efaa40 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf @@ -63,10 +63,6 @@ router bgp 4000 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 4.0.0.0 ! diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf index 0def8a6be32..d793dfa39a9 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf @@ -58,10 +58,6 @@ router bgp 65100 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 8.0.0.5 ! diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf index ecdb3818ff6..94bd37e3b90 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf @@ -58,10 +58,6 @@ router bgp 65100 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 10.1.0.32 ! diff --git a/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf b/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf index d3b9b472c5b..20744efaa40 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf @@ -63,10 +63,6 @@ router bgp 4000 ! bgp bestpath as-path multipath-relax ! - bgp graceful-restart restart-time 240 - bgp graceful-restart - bgp graceful-restart preserve-fw-state - bgp graceful-restart select-defer-time 45 ! bgp router-id 4.0.0.0 ! From b6f4ab63ef8822369397de122877d596a9e919b9 Mon Sep 17 00:00:00 2001 From: Abhishek Dosi Date: Wed, 5 Jan 2022 01:02:08 +0000 Subject: [PATCH 10/10] Some time jinja2 template renderation of Loopbcack4096 was not happening correctly because of timing issue where DB might not be poupulated. So Instead of using IP Address using Interface name. Fixes: https://github.com/Azure/sonic-buildimage/issues/9610 Signed-off-by: Abhishek Dosi --- .../frr/bgpd/templates/internal/peer-group.conf.j2 | 6 ++---- .../internal/peer-group.conf/result_chasiss_packet.conf | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 index 0b15136c555..e14094a652e 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/internal/peer-group.conf.j2 @@ -1,14 +1,12 @@ ! ! template: bgpd/templates/internal/peer-group.conf.j2 -{% from "common/functions.conf.j2" import get_ipv4_loopback_address %} -{% from "common/functions.conf.j2" import get_ipv6_loopback_address %} ! neighbor INTERNAL_PEER_V4 peer-group neighbor INTERNAL_PEER_V6 peer-group address-family ipv4 {% if CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} - neighbor INTERNAL_PEER_V4 update-source {{ get_ipv4_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} + neighbor INTERNAL_PEER_V4 update-source Loopback4096 {% elif CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} neighbor INTERNAL_PEER_V4 route-reflector-client {% endif %} @@ -19,7 +17,7 @@ exit-address-family address-family ipv6 {% if CONFIG_DB__DEVICE_METADATA['localhost']['switch_type'] == 'chassis-packet' %} - neighbor INTERNAL_PEER_V6 update-source {{ get_ipv6_loopback_address(CONFIG_DB__LOOPBACK_INTERFACE, "Loopback4096") | ip }} + neighbor INTERNAL_PEER_V6 update-source Loopback4096 {% elif CONFIG_DB__DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' %} neighbor INTERNAL_PEER_V6 route-reflector-client {% endif %} diff --git a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf index c36359de77d..3a6f0bad59a 100644 --- a/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf +++ b/src/sonic-bgpcfgd/tests/data/internal/peer-group.conf/result_chasiss_packet.conf @@ -4,14 +4,14 @@ neighbor INTERNAL_PEER_V4 peer-group neighbor INTERNAL_PEER_V6 peer-group address-family ipv4 - neighbor INTERNAL_PEER_V4 update-source 10.10.10.10 + neighbor INTERNAL_PEER_V4 update-source Loopback4096 neighbor INTERNAL_PEER_V4 soft-reconfiguration inbound neighbor INTERNAL_PEER_V4 allowas-in 1 neighbor INTERNAL_PEER_V4 route-map FROM_BGP_INTERNAL_PEER_V4 in neighbor INTERNAL_PEER_V4 route-map TO_BGP_INTERNAL_PEER_V4 out exit-address-family address-family ipv6 - neighbor INTERNAL_PEER_V6 update-source 2603:10e2:400::3 + neighbor INTERNAL_PEER_V6 update-source Loopback4096 neighbor INTERNAL_PEER_V6 soft-reconfiguration inbound neighbor INTERNAL_PEER_V6 allowas-in 1 neighbor INTERNAL_PEER_V6 route-map FROM_BGP_INTERNAL_PEER_V6 in