Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

praveen-li
Copy link

@praveen-li praveen-li commented Dec 18, 2020

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

torvalds/linux@6b2e04b

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

@prsunny
Copy link

prsunny commented Dec 19, 2020

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

@praveen-li
Copy link
Author

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

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

@lguohan
Copy link
Contributor

lguohan commented Dec 19, 2020

you can convert to draft pr.

@praveen-li praveen-li marked this pull request as draft December 19, 2020 03:07
@praveen-li
Copy link
Author

you can convert to draft pr.

Okies, did it. Thx.

@lguohan
Copy link
Contributor

lguohan commented Dec 23, 2020

is this back port fix?

@praveen-li
Copy link
Author

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.

Copy link
Contributor

@paulmenzel paulmenzel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the patch.

  1. Please follow the Linux kernel coding style.
  2. Please develop against Linux master, and submit the patch upstream as early as possible – even as RFC (request for comments) – so the Linux network developers can review the idea as early as possible.
  3. Please extend the commit messages, and even give an explanation, why this feature is a good idea, and add performance numbers without and with this feature enabled.

patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
patch/msft-kernel-ipv6-ra-metric-sysctl.patch Outdated Show resolved Hide resolved
@praveen-li praveen-li changed the title ip6 ra [patch]: Allow user to set metric on default route learned via Router Advertisement. Jan 6, 2021
@praveen-li praveen-li force-pushed the ip6_ra_msft branch 3 times, most recently from e24b267 to a3bcfed Compare January 19, 2021 18:29
Signed-off-by: Praveen Chaudhary<[email protected]>
@praveen-li praveen-li marked this pull request as ready for review March 1, 2021 19:45
@lguohan
Copy link
Contributor

lguohan commented Mar 17, 2021

can you add commit message in the patch?

@jarias-lfx
Copy link

/easycla

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants