コンテンツにスキップ

ROUTE_REDISTRIBUTE テーブル

概要

ROUTE_REDISTRIBUTEFRR ルーティングデーモン間の経路再配布ポリシーを CONFIG_DB に保持するテーブル。YANG モジュール sonic-route-common が定義し、frrcfgd が購読して vtysh コマンドへ変換する1。現在 dst_protocolbgp のみサポートされており、connectedstaticospfospf3 のいずれかのプロトコルを BGP へ再配布する用途に限定されている2

フィールドのコード由来デフォルト

デフォルト値一覧

フィールド 既定値 省略可否 コード根拠
vrf_name string (key) 必須 (key) YANG key 定義1
src_protocol string (key) 必須 (key) YANG key 定義1
dst_protocol string (key) 必須 (key) YANG key 定義1
addr_family string (key) 必須 (key) YANG key 定義1
route_map leaf-list string 省略可 (absent) 任意 YANG optional + frrcfgd L1979 +route_map2
metric uint32 省略可 (absent) 任意 YANG optional + frrcfgd L1979 ++metric2

解説

metric および route_map はどちらも YANG 上で任意フィールド(必須制約なし)。frrcfgdroute_redist_key_map では ++metric / +route_map のプレフィクス表記により「フィールドが absent の場合は FRR コマンドへの引数出力をスキップ」する実装になっている2

# frrcfgd.py L1979
route_redist_key_map = [
    (['protocol', '++metric', '+route_map'],
     '{no:no-prefix}redistribute {} {:redist-metric} {:redist-route-map}',
     hdl_route_redist_set)
]
  • metric 省略時 → FRR コマンド redistribute connected のみ(metric 句なし)
  • route_map 省略時 → FRR コマンドに route-map 句なし

テスト実例

sample_config_db.json での最小構成:

"ROUTE_REDISTRIBUTE": {
    "default|connected|bgp|ipv4": {}
}

route_mapmetric も省略した状態が有効エントリ。

key 構造

ROUTE_REDISTRIBUTE|<vrf_name>|<src_protocol>|<dst_protocol>|<addr_family>
key 要素 取りうる値
vrf_name default または Vrf... 形式の VRF 名
src_protocol connected / static / ospf / ospf3
dst_protocol bgp(現在このみ)
addr_family ipv4 / ipv6

主要フィールド

フィールド 既定値 説明
route_map string (leaf-list, max 1) 省略可 再配布時に適用する ROUTE_MAP フィルタ名
metric uint32 省略可 再配布経路に付与するメトリック値

制約

  • dst_protocolbgp のみ有効。frrcfgdbgp 以外を受け取るとエラーログを出力してスキップする2
  • route_map は最大 1 エントリ(YANG max-elements 11
  • IPv6 かつ src_protocol=ospf3 の場合、frrcfgd が FRR コマンド生成時に ospf6 へ内部変換する2
  • vrf_namedefault または VRF テーブルへの leafref。

購読者・処理フロー

frrcfgdsonic-frr-mgmt-framework)が ROUTE_REDISTRIBUTE テーブルを購読し、変更を以下のように FRR へ反映する2

  1. key を vrf_name|src_protocol|dst_protocol|addr_family の 4 要素に分解
  2. router bgp <asn> vrf <vrf>address-family <af> unicast のコンテキストに移行
  3. redistribute <src_proto> [metric <N>] [route-map <name>] を発行
  4. 削除時は事前に no redistribute <src_proto> でリセットしてから再設定

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>ROUTE_REDISTRIBUTE")]
  FRRCFGD["frrcfgd"]
  CDB --> FRRCFGD
  FRR["FRR bgpd<br/>redistribute"]
  FRRCFGD --> FRR

凡例

CONFIG_DB から FRR までの典型経路を示すミニ図。

関連 CONFIG_DB / YANG

  • 関連 CONFIG_DB: VRFROUTE_MAP
  • 関連 YANG: sonic-route-commonsonic-route-mapsonic-vrf

引用元