-
Notifications
You must be signed in to change notification settings - Fork 45
Move to json storage, address pblindex issue #721
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
base: master
Are you sure you want to change the base?
Conversation
6a4c197
to
3fe1285
Compare
3fe1285
to
0c31407
Compare
579cb63
to
b842c3d
Compare
4adc912
to
5d8435c
Compare
5d8435c
to
b400da8
Compare
This patch changes the way we persist the data on disk when running Calico/VPP. Instead of using struc and binary format we transition to json files. Size should not be an issue as number of pods per node are typically low (~100). This will make troubleshooting easier and errors clearer when parsing fails. We thus remove the /bin/debug troubleshooting utility as the data format is not human readable. Doing this, we address an issue where PBL indexes were reused upon dataplane restart, as they were stored in a list. We now will use a map to retain the containerIP mapping. We also split the configuration from runtime spec in LocalPodSpec and add a step to clear it when corresponding VRFs are not found in VPP. Finally we address an issue where uRPF was not properly set up for ipv6. Signed-off-by: Nathan Skrzypczak <[email protected]>
b400da8
to
f4b7b9b
Compare
@@ -39,7 +39,7 @@ func (v *VppLink) SetCustomURPF(swifindex uint32, tableID uint32) error { | |||
return nil | |||
} | |||
|
|||
func (v *VppLink) UnsetURPF(swifindex uint32) error { | |||
func (v *VppLink) UnsetURPF(swifindex uint32, ipFamily IPFamily) error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, but I think you forgot to consume this one.
} | ||
// We do not have a VRF in VPP for this pod, VPP has probably | ||
// restarted, so we clear the state we have. | ||
podSpec.LocalPodSpecStatus = *model.NewLocalPodSpecStatus() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why assume that vpp restarted in this case? That's the normal path for a freshly created pod, no ?
Amazing change, thanks Nathan ! |
This patch changes the way we persist the data on disk when running Calico/VPP. Instead of using struc and binary format we transition to json files. Size should not be an issue as number of pods per node are typically low (~100). This will make troubleshooting easier and errors clearer when parsing fails.
We thus remove the /bin/debug troubleshooting utility as the data format is not human readable.
Doing this, we address an issue where PBL indexes were reused upon dataplane restart, as they were stored in a list. We now will use a map to retain the containerIP mapping.
We also split the configuration from runtime spec in LocalPodSpec and add a step to clear it when corresponding VRFs are not found in VPP.
Finally we address an issue where uRPF was not properly set up for ipv6.