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

Reconfigure proxy on network interface delete events from kernel #518

Merged
merged 3 commits into from
Apr 22, 2024

Conversation

zolug
Copy link
Collaborator

@zolug zolug commented Apr 16, 2024

Description

The so called nsm interfaceMonitor that is used by the Proxy for both its NSC and NSE connections from now on
forwards kernel originated interface delete events. This allows the Proxy to clean-up even if the network interface was no longer available by the time the associated NSM connection got closed.
(Thus, nexthop routes towards LBs can be removed in such cases.)

Note: Order of IP addresses in the IPContext might change between periodic NSM connection refreshes. Therefore, networking.Iface items must be compared by taking the above into consideration.

Issue link

#517

Checklist

  • Purpose
    • Bug fix
    • New functionality
    • Documentation
    • Refactoring
    • CI
  • Test
    • Unit test
    • E2E Test
    • Tested manually
  • Introduce a breaking change
    • Yes (description required)
    • No

InterfaceMonitor from now on sends on netlink events when an
NSM inteface was deleted. Thus, proxy can reconfigure its
nexthop routes (towards LBs) if the interface is known to it.

Hence, nexthop routes won't linger on if the network inteface
was removed from the kernel before the associated NSM connection
could have been closed.
@zolug
Copy link
Collaborator Author

zolug commented Apr 17, 2024

/reverify

@zolug zolug requested a review from LionelJouin April 17, 2024 07:44
Comment on lines 157 to 158
copy(tmpa, tmpa)
copy(tmpb, tmpb)
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
copy(tmpa, tmpa)
copy(tmpb, tmpb)
copy(tmpa, a)
copy(tmpb, b)

?

@@ -136,7 +136,35 @@ func (intf *Interface) RemoveLocalPrefix(prefix string) error {
}

func (intf *Interface) Equals(iface networking.Iface) bool {
return reflect.DeepEqual(intf, iface)
if intf.index != iface.GetIndex() {
Copy link
Member

Choose a reason for hiding this comment

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

Both conditions (Index and type) could be combined. Maybe the name should be added?

@zolug zolug merged commit a591d73 into master Apr 22, 2024
13 checks passed
@zolug zolug deleted the proxy-interface-delete branch May 14, 2024 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants