Skip to content

Commit 38c5e68

Browse files
authored
Fix can't access IPV6 address via management interface because 'default' route table does not add to route lookup issue. (sonic-net#17281) (sonic-net#17676)
1 parent 76d8ff0 commit 38c5e68

File tree

5 files changed

+30
-4
lines changed

5 files changed

+30
-4
lines changed

files/image_config/interfaces/interfaces.j2

+12-4
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,29 @@ iface {{ name }} {{ 'inet' if prefix | ipv4 else 'inet6' }} static
7979
{% set vrf_table = '5000' %}
8080
vrf mgmt
8181
{% endif %}
82+
{% set force_mgmt_route_priority = 32764 %}
8283
########## management network policy routing rules
8384
# management port up rules
8485
up ip {{ '-4' if prefix | ipv4 else '-6' }} route add default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev {{ name }} table {{ vrf_table }} metric 201
8586
up ip {{ '-4' if prefix | ipv4 else '-6' }} route add {{ prefix | network }}/{{ prefix | prefixlen }} dev {{ name }} table {{ vrf_table }}
86-
up ip {{ '-4' if prefix | ipv4 else '-6' }} rule add pref 32765 from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }}
87+
up ip {{ '-4' if prefix | ipv4 else '-6' }} rule add pref {{ force_mgmt_route_priority + 1 }} from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }}
8788
{% for route in MGMT_INTERFACE[(name, prefix)]['forced_mgmt_routes'] %}
88-
up ip rule add pref 32764 to {{ route }} table {{ vrf_table }}
89+
up ip rule add pref {{ force_mgmt_route_priority }} to {{ route }} table {{ vrf_table }}
8990
{% endfor %}
91+
{% if prefix | ipv6 and vrf_table == 'default'%}
92+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
93+
up ip -6 rule add pref {{ force_mgmt_route_priority + 3 }} lookup {{ vrf_table }}
94+
{% endif %}
9095
# management port down rules
9196
pre-down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete default via {{ MGMT_INTERFACE[(name, prefix)]['gwaddr'] }} dev {{ name }} table {{ vrf_table }}
9297
pre-down ip {{ '-4' if prefix | ipv4 else '-6' }} route delete {{ prefix | network }}/{{ prefix | prefixlen }} dev {{ name }} table {{ vrf_table }}
93-
pre-down ip {{ '-4' if prefix | ipv4 else '-6' }} rule delete pref 32765 from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }}
98+
pre-down ip {{ '-4' if prefix | ipv4 else '-6' }} rule delete pref {{ force_mgmt_route_priority + 1 }} from {{ prefix | ip }}/{{ '32' if prefix | ipv4 else '128' }} table {{ vrf_table }}
9499
{% for route in MGMT_INTERFACE[(name, prefix)]['forced_mgmt_routes'] %}
95-
pre-down ip rule delete pref 32764 to {{ route }} table {{ vrf_table }}
100+
pre-down ip rule delete pref {{ force_mgmt_route_priority }} to {{ route }} table {{ vrf_table }}
96101
{% endfor %}
102+
{% if prefix | ipv6 and vrf_table == 'default'%}
103+
pre-down ip -6 rule delete pref {{ force_mgmt_route_priority + 3 }} lookup {{ vrf_table }}
104+
{% endif %}
97105
{# TODO: COPP policy type rules #}
98106
{% endfor %}
99107
{% else %}

src/sonic-config-engine/tests/sample_output/py2/interfaces

+3
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,13 @@ iface eth0 inet6 static
3838
up ip -6 route add default via 2603:10e2:0:2902::1 dev eth0 table default metric 201
3939
up ip -6 route add 2603:10e2:0:2902::/64 dev eth0 table default
4040
up ip -6 rule add pref 32765 from 2603:10e2:0:2902::8/128 table default
41+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
42+
up ip -6 rule add pref 32767 lookup default
4143
# management port down rules
4244
pre-down ip -6 route delete default via 2603:10e2:0:2902::1 dev eth0 table default
4345
pre-down ip -6 route delete 2603:10e2:0:2902::/64 dev eth0 table default
4446
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:2902::8/128 table default
47+
pre-down ip -6 rule delete pref 32767 lookup default
4548
#
4649
source /etc/network/interfaces.d/*
4750
#

src/sonic-config-engine/tests/sample_output/py2/two_mgmt_interfaces

+6
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,13 @@ iface eth1 inet6 static
5353
up ip -6 route add default via 2603:10e2:0:abcd::1 dev eth1 table default metric 201
5454
up ip -6 route add 2603:10e2:0:abcd::/64 dev eth1 table default
5555
up ip -6 rule add pref 32765 from 2603:10e2:0:abcd::8/128 table default
56+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
57+
up ip -6 rule add pref 32767 lookup default
5658
# management port down rules
5759
pre-down ip -6 route delete default via 2603:10e2:0:abcd::1 dev eth1 table default
5860
pre-down ip -6 route delete 2603:10e2:0:abcd::/64 dev eth1 table default
5961
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:abcd::8/128 table default
62+
pre-down ip -6 rule delete pref 32767 lookup default
6063
iface eth0 inet6 static
6164
address 2603:10e2:0:2902::8
6265
netmask 64
@@ -67,10 +70,13 @@ iface eth0 inet6 static
6770
up ip -6 route add default via 2603:10e2:0:2902::1 dev eth0 table default metric 201
6871
up ip -6 route add 2603:10e2:0:2902::/64 dev eth0 table default
6972
up ip -6 rule add pref 32765 from 2603:10e2:0:2902::8/128 table default
73+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
74+
up ip -6 rule add pref 32767 lookup default
7075
# management port down rules
7176
pre-down ip -6 route delete default via 2603:10e2:0:2902::1 dev eth0 table default
7277
pre-down ip -6 route delete 2603:10e2:0:2902::/64 dev eth0 table default
7378
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:2902::8/128 table default
79+
pre-down ip -6 rule delete pref 32767 lookup default
7480
#
7581
source /etc/network/interfaces.d/*
7682
#

src/sonic-config-engine/tests/sample_output/py3/interfaces

+3
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,13 @@ iface eth0 inet6 static
3838
up ip -6 route add default via 2603:10e2:0:2902::1 dev eth0 table default metric 201
3939
up ip -6 route add 2603:10e2:0:2902::/64 dev eth0 table default
4040
up ip -6 rule add pref 32765 from 2603:10e2:0:2902::8/128 table default
41+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
42+
up ip -6 rule add pref 32767 lookup default
4143
# management port down rules
4244
pre-down ip -6 route delete default via 2603:10e2:0:2902::1 dev eth0 table default
4345
pre-down ip -6 route delete 2603:10e2:0:2902::/64 dev eth0 table default
4446
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:2902::8/128 table default
47+
pre-down ip -6 rule delete pref 32767 lookup default
4548
#
4649
source /etc/network/interfaces.d/*
4750
#

src/sonic-config-engine/tests/sample_output/py3/two_mgmt_interfaces

+6
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@ iface eth0 inet6 static
3939
up ip -6 route add default via 2603:10e2:0:2902::1 dev eth0 table default metric 201
4040
up ip -6 route add 2603:10e2:0:2902::/64 dev eth0 table default
4141
up ip -6 rule add pref 32765 from 2603:10e2:0:2902::8/128 table default
42+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
43+
up ip -6 rule add pref 32767 lookup default
4244
# management port down rules
4345
pre-down ip -6 route delete default via 2603:10e2:0:2902::1 dev eth0 table default
4446
pre-down ip -6 route delete 2603:10e2:0:2902::/64 dev eth0 table default
4547
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:2902::8/128 table default
48+
pre-down ip -6 rule delete pref 32767 lookup default
4649
iface eth1 inet static
4750
address 10.0.10.100
4851
netmask 255.255.255.0
@@ -67,10 +70,13 @@ iface eth1 inet6 static
6770
up ip -6 route add default via 2603:10e2:0:abcd::1 dev eth1 table default metric 201
6871
up ip -6 route add 2603:10e2:0:abcd::/64 dev eth1 table default
6972
up ip -6 rule add pref 32765 from 2603:10e2:0:abcd::8/128 table default
73+
# IPV6 default table not add to lookup by default, management server need this to access IPV6 address when BGP shutdown
74+
up ip -6 rule add pref 32767 lookup default
7075
# management port down rules
7176
pre-down ip -6 route delete default via 2603:10e2:0:abcd::1 dev eth1 table default
7277
pre-down ip -6 route delete 2603:10e2:0:abcd::/64 dev eth1 table default
7378
pre-down ip -6 rule delete pref 32765 from 2603:10e2:0:abcd::8/128 table default
79+
pre-down ip -6 rule delete pref 32767 lookup default
7480
#
7581
source /etc/network/interfaces.d/*
7682
#

0 commit comments

Comments
 (0)