f9231723f9
For multiasic, the back end asics use ip addresss of Loopback4096 for BGP router id. In VOQ multi-asic chassis there are no back end asics. All the asics are front end and the iBGP connections are established via Ethernet-IB of asics. Since these asics are not designated as BackEnd, the ip address of interface Loopback0 is used as BGP router id. Since the ip address of Loopback0 is same for all the asics in the line card, same router id is used for voq iBGP configurations and hence the iBGP connections are not established. Changes are done to fix this
127 lines
4.7 KiB
Django/Jinja
127 lines
4.7 KiB
Django/Jinja
{% from "common/functions.conf.j2" import get_ipv4_loopback_address, get_ipv6_loopback_address, get_vnet_interfaces %}
|
|
!
|
|
! template: bgpd/bgpd.main.conf.j2
|
|
!
|
|
! bgp multiple-instance
|
|
!
|
|
! BGP configuration
|
|
!
|
|
! TSA configuration
|
|
!
|
|
ip prefix-list PL_LoopbackV4 permit {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32
|
|
!
|
|
{% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") != 'None' %}
|
|
ipv6 prefix-list PL_LoopbackV6 permit {{ get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | replace('/128', '/64') | ip_network }}/64
|
|
{% endif %}
|
|
!
|
|
{% if VLAN_INTERFACE is defined %}
|
|
{% set vnet_intfs = get_vnet_interfaces(VLAN_INTERFACE) %}
|
|
{% endif %}
|
|
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
|
{% if prefix | ipv4 and name not in vnet_intfs %}
|
|
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq {{ loop.index * 5 }} permit {{ prefix | ip_network }}/{{ prefix | prefixlen }}
|
|
!
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
|
{% if prefix | ipv6 and name not in vnet_intfs %}
|
|
ipv6 prefix-list LOCAL_VLAN_IPV6_PREFIX seq {{ loop.index * 5 }} permit {{ prefix | ip_network }}/{{ prefix | prefixlen }}
|
|
!
|
|
{% endif %}
|
|
{% endfor %}
|
|
!
|
|
{% 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' %}
|
|
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 %}
|
|
on-match next
|
|
route-map HIDE_INTERNAL permit 20
|
|
set community {{ constants.bgp.peers.internal.community }} additive
|
|
{% endif %}
|
|
!
|
|
{% endif %}
|
|
!
|
|
router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }}
|
|
!
|
|
{% block bgp_init %}
|
|
bgp log-neighbor-changes
|
|
no bgp default ipv4-unicast
|
|
no bgp ebgp-requires-policy
|
|
!
|
|
{% if constants.bgp.multipath_relax.enabled is defined and constants.bgp.multipath_relax.enabled %}
|
|
bgp bestpath as-path multipath-relax
|
|
{% endif %}
|
|
!
|
|
{% if constants.bgp.graceful_restart.enabled is defined and constants.bgp.graceful_restart.enabled %}
|
|
bgp graceful-restart restart-time {{ constants.bgp.graceful_restart.restart_time | default(240) }}
|
|
bgp graceful-restart
|
|
bgp graceful-restart preserve-fw-state
|
|
bgp graceful-restart select-defer-time {{ constants.bgp.graceful_restart.select_defer_time | default(45) }}
|
|
{% endif %}
|
|
!
|
|
{# set router-id #}
|
|
{% if DEVICE_METADATA['localhost']['sub_role'] == 'BackEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %}
|
|
bgp router-id {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}
|
|
{% else %}
|
|
bgp router-id {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}
|
|
{% endif %}
|
|
!
|
|
{# advertise loopback #}
|
|
network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback0") | ip }}/32
|
|
{% if multi_asic is defined or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %}
|
|
network {{ get_ipv4_loopback_address(LOOPBACK_INTERFACE, "Loopback4096") | ip }}/32 route-map HIDE_INTERNAL
|
|
{% endif %}
|
|
!
|
|
{% if get_ipv6_loopback_address(LOOPBACK_INTERFACE, "Loopback0") != 'None' %}
|
|
address-family ipv6
|
|
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 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
|
|
exit-address-family
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endblock bgp_init %}
|
|
!
|
|
{% block vlan_advertisement %}
|
|
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
|
{% if prefix | ipv4 and name not in vnet_intfs %}
|
|
network {{ prefix }}
|
|
{% elif prefix | ipv6 and name not in vnet_intfs %}
|
|
address-family ipv6
|
|
network {{ prefix }}
|
|
exit-address-family
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endblock vlan_advertisement %}
|
|
!
|
|
!
|
|
{% if DEVICE_METADATA['localhost']['sub_role'] == 'FrontEnd' or DEVICE_METADATA['localhost']['switch_type'] == 'voq' %}
|
|
address-family ipv4
|
|
redistribute connected route-map HIDE_INTERNAL
|
|
exit-address-family
|
|
address-family ipv6
|
|
redistribute connected route-map HIDE_INTERNAL
|
|
exit-address-family
|
|
{% endif %}
|
|
!
|
|
{% if constants.bgp.maximum_paths.enabled is defined and constants.bgp.maximum_paths.enabled %}
|
|
{% block maximum_paths %}
|
|
address-family ipv4
|
|
maximum-paths {{ constants.bgp.maximum_paths.ipv4 | default(64) }}
|
|
exit-address-family
|
|
address-family ipv6
|
|
maximum-paths {{ constants.bgp.maximum_paths.ipv6 | default(64) }}
|
|
exit-address-family
|
|
{% endblock maximum_paths %}
|
|
{% endif %}
|
|
!
|
|
! end of template: bgpd/bgpd.main.conf.j2
|
|
!
|