Repository navigation
Enable warm start for vlans with routing enabled - #4850
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4850 +/- ##
==========================================
+ Coverage 91.51% 91.74% +0.23%
==========================================
Files 46 46
Lines 8940 9082 +142
==========================================
+ Hits 8181 8332 +151
+ Misses 759 750 -9 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
gizmoguy
force-pushed
the
warm-vips
branch
2 times, most recently
from
September 23, 2026 04:23
5478b89 to
d90937e
Compare
anarkiwi
approved these changes
Sep 29, 2026
anarkiwi
pushed a commit
to c65sdn/faucet
that referenced
this pull request
Oct 4, 2026
Cherry-pick key upstream commits enabling warm start for routed VLANs: - PR faucetsdn#4815: Fix deleting final ACL from a port / del_vlan flowdel suppression - PR faucetsdn#4819: ACL-only VLAN warm start without cold restart - PR faucetsdn#4833: Remove static route entries from FIB for dead nexthops - PR faucetsdn#4850: Enable warm start for VLANs with routing enabled Adapted for c65of import namespace (fork divergence from os_ken). Key changes: - dp.py: separate tracking of added/changed/deleted/acl-only VLANs - valve.py: proper warm start flow with nexthop expiry for sibling routed VLANs - valve_route.py: expire nexthops, del_faucet_mac/vip flow cleanup, IPv4/IPv6 - valve_acl.py, valve_manager_base.py, valve_switch_standalone.py: signature updates - valve_of.py: make _flowmodkey tuple comparable - test infrastructure: l2_learn_host, l3_learn_host helpers, cold_start fixes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently, if a VLAN has routing enabled (i.e has at least one
faucet_vipconfigured) then any changes to this VLAN will result in a cold start when faucet is given aSIGHUPsignal. This PR changes this behaviour by adding the necessary flowdels inValveRouteManager.del_vlan()to undo all the routing flowmods added byValveRouteManager.add_vlan().Some of the routing flowmods are shared between VLANs, this PR handles those by passing the DP VLAN configuration (
dp_vlans) todel_vlan()and using this information to decide if a flowmod can be safely removed if its no longer used by any VLAN on the datapath.To handle warm start for VLANs with inter-vlan routing configured, we update the FIB and VLAN nexthop cache for VLANs in the same inter-vlan router as a VLAN that changed configuration.
This PR also updates the
Valve._apply_config_changes()logic to handle new/changed VLANs separately so that the warm reload behaviour isn't applied to new VLANs.This PR requires the fix from #4833 to correctly handle updating static routes when warm starting, and fix from #4815 to fix incorrectly suppressed overlapping flowdels