sonic-linux-kernel icon indicating copy to clipboard operation
sonic-linux-kernel copied to clipboard

[patch]: Allow user to set metric on default route learned via Router Advertisement.

Open praveen-li opened this issue 5 years ago • 8 comments

This PR is merged in Linux 5.12, we can keep it as patch till we reach Linux 5.12.

https://github.com/torvalds/linux/commit/6b2e04bc240fe9be9e690059f710e9f95346d34d

Allow user to set metric on default route learned via Router Advertisement. Note: RFC 4191 does not say anything for metric for IPv6 default route.

Fix: For IPv4, default route is learned via DHCPv4 and user is allowed to change metric using config in etc/network/interfaces. But for IPv6, default route can be learned via RA, for which, currently a fixed metric value 1024 is used.

Ideally, user should be able to configure metric on default route for IPv6 similar to IPv4. This fix adds sysctl for the same.

Logs:

For IPv4:

Config in etc/network/interfaces

auto eth0
iface eth0 inet dhcp
metric 4261413864

IPv4 Kernel Route Table:

$ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.11.44.1     0.0.0.0         UG    -33553432 0        0 eth0

FRR Table, if default route is learned via routing protocol too.

Codes: K - kernel route, C - connected, S - static, R - RIP,
   O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
   T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
   > - selected route, * - FIB route

S>* 0.0.0.0/0 [20/0] is directly connected, eth0, 00:00:03
K   0.0.0.0/0 [254/1000] via 172.21.47.1, eth0, 6d08h51m

i.e. User can prefer Default Router learned via Routing Protocol, Similar behavior is not possible for IPv6, without this fix.


After fix [for IPv6]:

sudo sysctl -w net.ipv6.conf.eth0.net.ipv6.conf.eth0.ra_defrtr_metric=0x770003e9

IP monitor:

default via fe80::be16:65ff:feb3:ce8e dev eth0 proto ra metric 1996489705  pref high

Kernel IPv6 routing table

Destination                    Next Hop                   Flag Met Ref Use If
::/0                           fe80::be16:65ff:feb3:ce8e  UGDAe 1996489705 0
0 eth0

FRR Routing Table, if default route is learned via routing protocol.

Codes: K - kernel route, C - connected, S - static, R - RIPng,
   O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
   v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
   > - selected route, * - FIB route

S>* ::/0 [20/0] is directly connected, eth0, 00:00:06
K   ::/0 [119/1001] via fe80::be16:65ff:feb3:ce8e, eth0, 6d07h43m

praveen-li avatar Dec 18 '20 18:12 praveen-li

@praveen-li , you can create it as a "draft" PR :)

prsunny avatar Dec 19 '20 00:12 prsunny

@praveen-li , you can create it as a "draft" PR :)

@prsunny, Yeah, For next time, I will remember abt draft PRs :)

praveen-li avatar Dec 19 '20 01:12 praveen-li

you can convert to draft pr.

lguohan avatar Dec 19 '20 02:12 lguohan

you can convert to draft pr.

Okies, did it. Thx.

praveen-li avatar Dec 19 '20 03:12 praveen-li

is this back port fix?

lguohan avatar Dec 23 '20 23:12 lguohan

is this back port fix?

We will raise it with the Linux kernel community, if they merge, we will backport till 4.9.

Yeah this patch is applicable only till 4.9.

praveen-li avatar Dec 23 '20 23:12 praveen-li

can you add commit message in the patch?

lguohan avatar Mar 17 '21 13:03 lguohan

/easycla

jarias-lfx avatar Jul 19 '23 19:07 jarias-lfx