Install
openclaw skills install azure-bgp-oscillation-route-leak-azure-bgpAnalyze and resolve BGP oscillation and BGP route leaks in Azure Virtual WAN–style hub-and-spoke topologies (and similar cloud-managed BGP environments). Detect preference cycles, identify valley-free violations, and propose allowed policy-level mitigations while rejecting prohibited fixes.
openclaw skills install azure-bgp-oscillation-route-leak-azure-bgpAnalyze and resolve BGP oscillation and BGP route leaks in Azure Virtual WAN–style hub-and-spoke topologies (and similar cloud-managed BGP environments).
This skill trains an agent to:
The focus is cloud-correct reasoning, not on-prem router manipulation.
Use this skill when a task involves:
An agent must internalize these constraints before reasoning:
Any solution violating these rules is invalid.
Tasks using this skill typically provide small JSON files:
| File | Meaning |
|---|---|
topology.json | Directed BGP adjacency graph |
relationships.json | Economic relationship per edge (provider, customer, peer) |
preferences.json | Per-ASN preferred next hop (may cause oscillation) |
route.json | Prefix and origin ASN |
route_leaks.json | Evidence of invalid propagation |
possible_solutions.json | Candidate fixes to classify |
topology.jsonprovider(A→B) ⇔ customer(B→A)peer must be symmetricDefinition
BGP oscillation exists if ASes form a preference cycle, often between peers.
Detection Rule
ASN → preferred next-hop ASNExample pseudocode:
pref = {asn: prefer_via_asn, ...}
def find_cycle(start):
path = []
seen = {}
cur = start
while cur in pref:
if cur in seen:
return path[seen[cur]:] # cycle found
seen[cur] = len(path)
path.append(cur)
cur = pref[cur]
return None
Valley-Free Rule
| Learned from | May export to |
|---|---|
| Customer | Anyone |
| Peer | Customers only |
| Provider | Customers only |
Leak Conditions
A route leak exists if either is true:
Applies to:
Why it works:
For oscillation:
For route leaks:
Agent reasoning: If routing intent is available, recommend it first.
For oscillation:
Example: If vhubvnet1 (ASN 65002) filters routes learned from vhubvnet2 (ASN 65003) before re-advertising, vhubvnet2 stops receiving routes via vhubvnet1, breaking the oscillation cycle.
For route leaks:
no-export) where applicableLimitation: Does not control forwarding if multiple valid paths remain.
Applies to:
Purpose: Authoritative, static routing mechanism in Azure that explicitly defines the next hop for network traffic based on destination IP prefixes, overriding Azure system routes and BGP-learned routes.
Routing Behavior: Enforces deterministic forwarding independent of BGP decision processes. UDRs operate at the data plane layer and take precedence over dynamic BGP routes.
For oscillation:
For route leaks:
Use when:
Trade-off: UDR is a data-plane fix that "masks" the control-plane issue. BGP may continue to have problems, but forwarding is stabilized. Prefer policy fixes (routing intent, export controls) when available for cleaner architecture.
These solutions are always invalid:
| Proposed Fix | Reason |
|---|---|
| Disable BGP | Not customer-controllable |
| Disable peering | prohibited operation and cannot solve the issue |
| Shutdown gateways | Breaks SLA / shared control plane |
| Restart devices | Resets symptoms only |
Required explanation:
Cloud providers separate policy control from connectivity existence to protect shared infrastructure and SLAs.
Why these are not allowed in Azure:
BGP sessions and peering connections in Azure (Virtual WAN, ExpressRoute, VPN Gateway) cannot be administratively shut down or disabled by customers. This is a fundamental architectural constraint:
Correct approach: Fix BGP issues through policy changes (route filters, preferences, export controls, communities) rather than disabling connectivity.
All are false.
A correct solution should: