Cisco NX-OS: support unnumbered / interface-based eBGP peering (IPv6 link-local, `remote-as external`)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- go, grpc
- 領域
- networking
調査の方向性
api/core/v1alpha1/bgp_peer_types.go と api/cisco/nx/v1alpha1/bgpconfig_types.go から開始し、BGPPeer のリコンシリエーションを cisco-nxos-gnmi provider まで追跡します。既存の peer mapping を NX-OS PeerIf-list の例および Interface の動作と比較します。完了条件には、外部 AS の処理を伴うインターフェースベースの peer、address との相互排他、および provider の検証を含める必要があります。RA 設定はオプションの拡張です。
索引モデルが issue の本文から書いたものです。
説明
Summary
[!NOTE]
With some guidance I am happy to open a PR.
BGPPeer can only express a numbered IPv4 neighbor (spec.address is +required with +kubebuilder:validation:Format=ipv4). There is no way to configure unnumbered / interface-based BGP peering (FRR/Cumulus style: neighbor <interface> ... remote-as external, next-hops resolved over IPv6 link-local + RAs). Please add first-class support for it.
Motivation
IPv6 leaf/spine fabrics commonly run unnumbered eBGP over IPv6 link-local so that transit links need no per-link addressing (no /31s or /127s to plan/manage); peers are discovered via IPv6 link-local + Router Advertisements, and IPv6 link-local next-hops are used for both address families. This is the idiom used by FRR and Cumulus, and it's the design we want to drive through network-operator on Cisco NX-OS.
Today this is impossible to model, forcing either numbered eBGP (the addressing overhead we're trying to avoid) or out-of-band configuration.
Current limitation
api/core/v1alpha1/bgp_peer_types.go:BGPPeerSpec.Addressis+required,Format=ipv4, andASNumberis+required. No interface field; no way to expressremote-as external(dynamic AS).LocalAddress.InterfaceRefonly sets the source interface (e.g. a loopback), not an unnumbered neighbor.api/cisco/nx/v1alpha1/bgpconfig_types.go: the provider-specificBGPConfigonly carries EVPN / address-family knobs (AdvertisePIP,ExportGatewayIP) => no peer-level interface/unnumbered field, so it isn't a usable escape hatch.
NX-OS support
Verified on Nexus 9300v (n9kv) 10.3(9) driven by the cisco-nxos-gnmi provider. CLI:
interface Ethernet1/1
no switchport
ipv6 address use-link-local-only
ip forward
no ipv6 nd suppress-ra ! REQUIRED, see note below
router bgp 65010
neighbor Ethernet1/1
remote-as external
address-family ipv4 unicast
address-family ipv6 unicast
The session establishes over the peer's IPv6 link-local
(fe80::…%Ethernet1/1). In the NX-OS DME model it appears under:
System/bgp-items/inst-items/dom-items/Dom-list[name=default]/peerif-items/PeerIf-list[id=eth1/1]
asnType: external
[!IMPORTANT]
NX-OS suppresses Router Advertisements by default, so the unnumbered peers cannot discover each other's link-local untilno ipv6 nd suppress-rais set on the peering interface. (FRR enables RAs automatically for unnumbered BGP interfaces; NX-OS does not.) Without it the neighbor stays atremote AS 0and never establishes. It would be ideal for the operator to manage this automatically for interface-based peers.
Proposed change
- Allow
BGPPeerto reference an interface instead of an address, e.g. aspec.interfaceRef(mutually exclusive withspec.address), and permitasNumberto beexternal(dynamic /remote-as external). - Map the interface-peer to the NX-OS DME
peerif-items/PeerIf-list[id=<intf>](asnType: external) in thecisco-nxos-gnmiprovider. - Optionally model
ipv6 nd suppress-ra(andip forward/use-link-local-only) on theInterfacetype so an unnumbered link can be fully declared.
Environment
- network-operator provider:
cisco-nxos-gnmi - Device: Cisco Nexus 9300v (n9kv), NX-OS 10.3(9), gNMI/DME over gRPC/TLS
- 主要言語
- Go
- スター
- 12
- フォーク
- 9
- 平均マージ
- 3日 15時間
- マージ済み PR(30日)
- 46
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ironcore-dev/network-operator のほかの issue
-
area/switch-automation firmware-bug vendor/cisco
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
ironcore-dev/network-operator#282 · コメント 7 件 ·
メンテナーはふだん 1 日以内に返信
-
Introduce a generic reconciler abstraction to reduce controller boilerplate再び着手できるかも @felix-kaestner が 197 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンarea/switch-automation enhancement
ironcore-dev/network-operator#257 · コメント 3 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
area/switch-automation firmware-bug plattform/iosxr vendor/cisco
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
ironcore-dev/network-operator#178 · コメント 3 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
area/switch-automation firmware-bug platform/nx vendor/cisco
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
ironcore-dev/network-operator#171 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Cisco NX-OS: Round-trip delays for GNMI calls due to authentication/authorization/accounting (AAA)オープンarea/switch-automation firmware-bug platform/nx vendor/cisco
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
ironcore-dev/network-operator#164 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
ironcore-dev/network-operator の issue をすべて見る
似ている issue
-
agent-research agent-review-finding chore
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
jordansmall/spindrift#4922 ·
メンテナーはふだん 1 日以内に返信
-
gcsartifact: deleting a missing version returns an error対応中かも @ktsoator が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信
-
govulncheck
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
Change wording for init command success message対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
enhancement pkg:sdk
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
aws/aws-durable-execution-sdk-go#144 ·
メンテナーはふだん 1 日以内に返信