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

daemon: Remove defunct --single-cluster-route flag #18426

Closed

Conversation

gandro
Copy link
Member

@gandro gandro commented Jan 10, 2022

The single-cluster-route flag was intended to instruct Cilium to use a
single route covering the entire cluster CIDR to point to the
cilium_host interface in tunnel mode, instead of per-host or
per-endpoint routes.

However, the underlying concept of a cluster prefix used for routing was
removed in PR #10194. It seems the single-cluster-route
flag was likely even broken prior to that and accidentally used the
per-node mask instead of the per-cluster mask for the route. In summary,
this flag has not been functional for almost two years. As no one seems
to have noticed, it should be safe to remove this defunct flag without a
deprecation period.

@gandro gandro added sig/datapath Impacts bpf/ or low-level forwarding details, including map management and monitor messages. release-note/minor This PR changes functionality that users may find relevant to operating Cilium. kind/cleanup This includes no functional changes. labels Jan 10, 2022
@gandro gandro force-pushed the pr/gandro/remove-single-cluster-route branch from 406c3ea to 1845b41 Compare January 10, 2022 15:09
The `single-cluster-route` flag was intended to instruct Cilium to use a
single route covering the entire cluster CIDR to point to the
`cilium_host` interface in tunnel mode, instead of per-host or
per-endpoint routes.

However, the underlying concept of a cluster prefix used for routing was
removed in PR cilium#10194. It seems the `single-cluster-route`
flag was likely even broken prior to that and accidentally used the
per-node mask instead of the per-cluster mask for the route. In summary,
this flag has not been functional for almost two years. As no one seems
to have noticed, it should be safe to remove this defunct flag without a
deprecation period.

Signed-off-by: Sebastian Wicki <sebastian@isovalent.com>
@gandro gandro force-pushed the pr/gandro/remove-single-cluster-route branch from 1845b41 to 6ea28d4 Compare January 10, 2022 15:12
@gandro gandro changed the title daemon: Remove defuct --single-cluster-route flag daemon: Remove defunct --single-cluster-route flag Jan 10, 2022
@gandro
Copy link
Member Author

gandro commented Jan 11, 2022

Apparently, the implementation always used the node-local allocation CIDR. So it is not technically defunct and works as originally intended, even though that behavior is not what I expect given its description which clearly talks about a cluster CIDR.

Closing this for now, as I still don't fully understand it's intended usage. Might remove it later.

@gandro gandro closed this Jan 11, 2022
gandro added a commit to gandro/cilium that referenced this pull request Nov 16, 2023
This commit removes the ``single-cluster-route` flag. Contrary to it's
description, it never [1] installed a cluster-wide route for
`cilium_host`. Instead, it installed a route for the local alloc CIDR
(aka local PodCIDR), virtually identical to the (enabled by default)
`enable-local-node-route`. The only difference being that
`single-cluster-route` sets the MTU. This means that the flag (which has
not been referenced anywhere in the last four years) likely never worked
as described.

Marco Iorio recently tested the flag and found that the flag (when
enabled) breaks node-to-pod and nodeport traffic. In addition, since the
route conflicts with the local node route, we also found that the
"single cluster route" was in fact overwritten by the "local node
route". The only other effect the flag has is that it disables per-node
routes, but those are needed for node-to-pod traffic.

Removal has already been discussed two years ago [1]. Given that the
flag has remained broken ever since and there have not been any bug
reports at all, it is assumed that no one is actually using it. It is
also not documented anywhere outside of the cmdref. Therefore, it is
removed without prior deprecation.

[1] cilium#18426

Signed-off-by: Sebastian Wicki <sebastian@isovalent.com>
gandro added a commit to gandro/cilium that referenced this pull request Nov 16, 2023
This commit removes the `single-cluster-route` flag. Contrary to it's
description, it never [1] installed a cluster-wide route for
`cilium_host`. Instead, it installed a route for the local alloc CIDR
(aka local PodCIDR), virtually identical to the (enabled by default)
`enable-local-node-route`. The only difference being that
`single-cluster-route` sets the MTU. This means that the flag (which has
not been referenced anywhere in the last four years) likely never worked
as described.

Marco Iorio recently tested the flag and found that the flag (when
enabled) breaks node-to-pod and nodeport traffic. In addition, since the
route conflicts with the local node route, we also found that the
"single cluster route" was in fact overwritten by the "local node
route". The only other effect the flag has is that it disables per-node
routes, but those are needed for node-to-pod traffic.

Removal has already been discussed two years ago [1]. Given that the
flag has remained broken ever since and there have not been any bug
reports at all, it is assumed that no one is actually using it. It is
also not documented anywhere outside of the cmdref. Therefore, it is
removed without prior deprecation.

[1] cilium#18426

Signed-off-by: Sebastian Wicki <sebastian@isovalent.com>
gandro added a commit that referenced this pull request Nov 20, 2023
This commit removes the `single-cluster-route` flag. Contrary to it's
description, it never [1] installed a cluster-wide route for
`cilium_host`. Instead, it installed a route for the local alloc CIDR
(aka local PodCIDR), virtually identical to the (enabled by default)
`enable-local-node-route`. The only difference being that
`single-cluster-route` sets the MTU. This means that the flag (which has
not been referenced anywhere in the last four years) likely never worked
as described.

Marco Iorio recently tested the flag and found that the flag (when
enabled) breaks node-to-pod and nodeport traffic. In addition, since the
route conflicts with the local node route, we also found that the
"single cluster route" was in fact overwritten by the "local node
route". The only other effect the flag has is that it disables per-node
routes, but those are needed for node-to-pod traffic.

Removal has already been discussed two years ago [1]. Given that the
flag has remained broken ever since and there have not been any bug
reports at all, it is assumed that no one is actually using it. It is
also not documented anywhere outside of the cmdref. Therefore, it is
removed without prior deprecation.

[1] #18426

Signed-off-by: Sebastian Wicki <sebastian@isovalent.com>
pjablonski123 pushed a commit to pjablonski123/cilium that referenced this pull request Dec 15, 2023
This commit removes the `single-cluster-route` flag. Contrary to it's
description, it never [1] installed a cluster-wide route for
`cilium_host`. Instead, it installed a route for the local alloc CIDR
(aka local PodCIDR), virtually identical to the (enabled by default)
`enable-local-node-route`. The only difference being that
`single-cluster-route` sets the MTU. This means that the flag (which has
not been referenced anywhere in the last four years) likely never worked
as described.

Marco Iorio recently tested the flag and found that the flag (when
enabled) breaks node-to-pod and nodeport traffic. In addition, since the
route conflicts with the local node route, we also found that the
"single cluster route" was in fact overwritten by the "local node
route". The only other effect the flag has is that it disables per-node
routes, but those are needed for node-to-pod traffic.

Removal has already been discussed two years ago [1]. Given that the
flag has remained broken ever since and there have not been any bug
reports at all, it is assumed that no one is actually using it. It is
also not documented anywhere outside of the cmdref. Therefore, it is
removed without prior deprecation.

[1] cilium#18426

Signed-off-by: Sebastian Wicki <sebastian@isovalent.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/cleanup This includes no functional changes. release-note/minor This PR changes functionality that users may find relevant to operating Cilium. sig/datapath Impacts bpf/ or low-level forwarding details, including map management and monitor messages.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant