The Great Route Massacre

After upgrading from version 3.x to version 4.x of VMware SD-WAN, I observed a peculiar behavior regarding the Overlay Flow Control (OFC) table. Specifically, only static, connected, and gateway learned routes were displayed in the OFC table after the upgrade, while all dynamically learned routes were missing (23 ->8). Despite exploring various configuration items, we could not identify the root cause of this issue with the help of VMware support engineers.

However, further investigation revealed that the missing routes were available in the Edges’ local routing tables and could also be seen as learned via Cloud VPN (via Overlay). This led us to believe that the issue was not due to incorrect configuration but rather a planned behavior change or a bug.

Before version 3.4, routes from the Edge were forwarded to the Orchestrator via Gateway, and then the Orchestrator distributed the learned prefixes and metrics to the Edges via OFC table. However, with the introduction of version 3.4, routing exchange is now done directly between Edges and Gateways, with the Gateways acting as Route Reflectors (RR) and only sending a copy of the routes to the Orchestrator. This means that the Edge makes its own decisions on which route to use based on principle information regarding route preferences forwarded from the OFC part of the Orchestrator.

The documentation for version 4.2 and later has important changes regarding the detailed description of the OFC and its routes, with the older versions showing dynamic routes and a broader definition of Route Type. This led us to assume a planned behavior change by the SD-WAN developers. However, according to VMware PSC people, this was actually a bug, but…

The missing item during the Orchestrator upgrade was running a Python routine: root@vco:/opt/vc/scripts# /opt/vc/scripts/vco_schema_update.sh -e. And after calling that script and rebooting the Orchestrator, the system came up including all the missing routes in the OFC table. The only remaining open item was that I never had used any version older than 4.0 and thus never did an upgrade from 3.x to 4.x, so it is possible that this issue could also occur on other updates (in my case from version 4.2 to version 4.3).

In summary, whenever you experience missing routes in the OFC table after an Orchestrator upgrade, but those routes are visible on the Edges, run the /opt/vc/scripts/vco_schema_update.sh -e to correct and update DB schema changes. This should resolve the issue and ensure that all routes are properly reflected in the OFC table.