Network Bgp Diagnostics

affaan-m/ECC/skills/network-bgp-diagnostics

作者 affaan-mef648e01899ba3e8dc6371642deaaf64b4477775無授權條款275K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫4 天前更新

Diagnostics-only BGP troubleshooting patterns for neighbor state, route exchange, prefix policy, AS path inspection, and safe evidence collection. Use when a BGP neighbor is down, routes are missing, or prefix policy and AS path need inspection.

僅含說明DevOps & Cloud
AI 產生的概覽

針對鄰居狀態、路由交換、前綴政策與 AS 路徑檢查的唯讀 BGP 疑難排解指引。

功能
提供僅供診斷的 BGP 問題處理流程:確認鄰居、位址族與 ASN,擷取摘要狀態與最近重置原因,驗證對等端可達性,並在假設傳輸故障前檢查路由政策。內容包含狀態判讀表、唯讀命令範例、AS 路徑正規表達式注意事項,以及用來解析 BGP 摘要輸出的 Python 正規表達式解析器。也列出必須留待已核准變更窗口執行的動作與常見反模式。
適用情境
適用於 BGP 鄰居中斷、震盪、停留在 Idle、Connect、Active、OpenSent 或 OpenConfirm 狀態,或已建立但缺少或出現非預期前綴的情況。也適用於懷疑路由映射、前綴清單、最大前綴限制或 AS 路徑政策正在過濾路由,或需要為 BGP 變更留存前後證據時。
執行需求
此技能不隨附指令碼,僅為說明性指引。需要能存取網路裝置及其 BGP show 命令;若使用其中的解析器範例,還需要具備標準 re 與 typing 模組的 Python 執行環境。預期為唯讀存取;政策變更與工作階段重置須在已核准的變更窗口內進行。

Network BGP Diagnostics

Use this skill when a BGP session is down, flapping, established with missing routes, or advertising unexpected prefixes. The default workflow is read-only evidence collection; policy and reset actions belong in a reviewed change window.

When to Use

  • BGP neighbors are stuck in Idle, Connect, Active, OpenSent, or OpenConfirm.
  • A session is Established but expected prefixes are missing.
  • A route-map, prefix-list, max-prefix limit, or AS path policy may be filtering routes.
  • You need before/after evidence for a BGP change.
  • You are reviewing automation that parses BGP summary output.

Read-Only Triage Flow

  1. Identify the exact neighbor, address family, VRF, and local/remote ASNs.
  2. Capture summary state and last reset reason.
  3. Prove reachability to the peer source address.
  4. Check route policy references before assuming transport failure.
  5. Compare advertised, received, and installed routes where the platform supports those commands.
text
show bgp summaryshow bgp neighbors <peer>show ip route <peer>show tcp brief | include <peer>|:179show logging | include BGP|<peer>show running-config | section router bgpshow ip prefix-listshow route-map

Use platform-specific address-family commands when the device uses VRFs, IPv6, VPNv4, or EVPN. Do not assume global IPv4 unicast.

State Interpretation

StateFirst checks
Established with prefix countRoute exchange is up; inspect policy and table selection
Established with zero prefixesCheck inbound policy, max-prefix, advertised routes, and AFI/SAFI
ActiveTCP session is not completing; check routing, source, ACLs, and peer reachability
ConnectTCP connection is in progress; check path and remote listener
OpenSent/OpenConfirmTCP works; check ASN, authentication, timers, capabilities, and logs
IdleNeighbor may be disabled, missing config, blocked by policy, or backoff timer

Transport Checks

text
ping <peer> source <local-source>traceroute <peer> source <local-source>show ip route <peer>show bgp neighbors <peer> | include BGP state|Last reset|Local host|Foreign host

If the peer is sourced from a loopback, confirm both directions route to the loopback addresses and that the neighbor config uses the expected update source.

Avoid disabling ACLs or firewall policy as a diagnostic shortcut. Read hit counters, logs, and path state first.

Route Policy Checks

text
show bgp neighbors <peer> advertised-routesshow bgp neighbors <peer> routesshow ip prefix-list <name>show route-map <name>show bgp <prefix>

Some platforms require additional configuration before received-routes is available. Do not add that configuration during incident triage unless the operator approves the change.

AS Path And Prefix Review

text
show bgp regexp _65001_show bgp regexp ^65001$show bgp <prefix>show bgp neighbors <peer> advertised-routes | include Network|Path|<prefix>

Use AS-path regex carefully. _65001_ matches AS 65001 as a token. Plain 65001 can match longer ASNs or unrelated text.

Parser Pattern

python
import refrom typing import Any
BGP_SUMMARY_RE = re.compile(    r"^(?P<neighbor>\d{1,3}(?:\.\d{1,3}){3})\s+"    r"(?P<version>\d+)\s+"    r"(?P<remote_as>\d+)\s+"    r"(?P<msg_rcvd>\d+)\s+"    r"(?P<msg_sent>\d+)\s+"    r"(?P<table_version>\d+)\s+"    r"(?P<input_queue>\d+)\s+"    r"(?P<output_queue>\d+)\s+"    r"(?P<uptime>\S+)\s+"    r"(?P<state_or_prefixes>\S+)$",    re.M,)
def parse_bgp_summary(raw: str) -> list[dict[str, Any]]:    rows = []    for match in BGP_SUMMARY_RE.finditer(raw):        state_or_prefixes = match.group("state_or_prefixes")        if state_or_prefixes.isdigit():            state = "Established"            prefixes_received = int(state_or_prefixes)        else:            state = state_or_prefixes            prefixes_received = None        rows.append({            "neighbor": match.group("neighbor"),            "remote_as": int(match.group("remote_as")),            "state": state,            "prefixes_received": prefixes_received,            "uptime": match.group("uptime"),        })    return rows

Prefer structured parser output when available, but store raw output with the incident record because BGP summary formats vary by platform and address family.

Change-Window Only

These actions can affect routing and should not be suggested as automatic diagnostics:

  • Clearing a BGP session.
  • Changing neighbor authentication, timers, update source, route-maps, or prefix-lists.
  • Enabling additional received-route storage.
  • Relaxing firewall, ACL, or control-plane policy.

If a reset is approved, prefer the least disruptive soft or route-refresh option supported by the platform and document exactly why it is safe.

Anti-Patterns

  • Assuming Active always means the remote side is down.
  • Ignoring VRF, address family, or update-source differences.
  • Using broad AS-path regex without token boundaries.
  • Hard-resetting a peer before reading last reset reason and logs.
  • Treating missing received-routes output as proof that no routes arrived.

See Also

  • Skill: cisco-ios-patterns
  • Skill: network-config-validation
  • Skill: network-interface-health

來源與署名

來源:affaan-m/ECC位於skills/network-bgp-diagnostics提交ef648e0

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架