コンテンツにスキップ

ROUTE_MAP テーブル

概要

ルーティングポリシー (route-map) の statement 単位の定義テーブル。BGP neighbor / peer-group や redistribute から名前で参照される。frr-mgmt-framework (DEVICE_METADATA.frr_mgmt_framework_config = true) が CONFIG_DB を購読し FRR route-map コマンドに変換する1

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

flowchart LR
  CDB[("CONFIG_DB<br/>ROUTE_MAP")]
  DM["bgpcfgd"]
  CDB --> DM

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

ROUTE_MAP|<name>|<stmt_name>

<stmt_name> は uint16 (1..65535)。同一 <name> で複数の statement を順序づけて評価する。 名前の一覧は別テーブル ROUTE_MAP_SET|<name> で管理する。

主要フィールド

フィールド 説明
route_operation enum (PERMIT/DENY) permit/deny
match_interface union leafref PORT/PORTCHANNEL/LOOPBACK_INTERFACE/Vlan pattern interface match
match_prefix_set leafref PREFIX_SET.name IPv4 prefix list match
match_ipv6_prefix_set leafref PREFIX_SET.name IPv6 prefix list match
match_protocol string bgp/connected/ospf/ospf3/static
match_next_hop_set leafref PREFIX_SET.name next-hop match
match_src_vrf union (default/leafref VRF.name) source VRF match
match_neighbor leaf-list union IP / interface match
match_tag leaf-list uint32 tag match
match_med / match_origin / match_local_pref numeric / string / uint32 BGP attribute match
match_community leafref COMMUNITY_SET.name BGP community match
match_ext_community leafref EXTENDED_COMMUNITY_SET.name extended community match
match_as_path leafref AS_PATH_SET.name AS-path match
call_route_map leafref ROUTE_MAP_SET.name 別の route-map 呼出し
set_origin string BGP origin set
set_local_pref uint32 local-pref set
set_med uint32 MED set
set_metric_action enum metric-action-type metric 操作種別
set_metric uint32 metric 値
set_next_hop string IP nexthop set
set_ipv6_next_hop_global / set_ipv6_next_hop_prefer_global string / boolean IPv6 nexthop 操作
set_repeat_asn / set_asn / set_asn_list numeric / string AS prepend
set_community_inline / set_community_ref leaf-list / leafref community 設定
set_ext_community_inline / set_ext_community_ref leaf-list / leafref ext community 設定
set_tag uint32 tag 設定

metric-action-type: METRIC_SET_VALUE, METRIC_ADD_VALUE, METRIC_SUBTRACT_VALUE, METRIC_SET_RTT, METRIC_ADD_RTT, METRIC_SUBTRACT_RTT

購読者

  • frr-mgmt-framework: CONFIG_DBvtysh route-map コマンド
  • bgpcfgd (テンプレ経路): 簡易な BGP テンプレ展開時に間接利用

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: ROUTE_MAP_SET (名前一覧)、PREFIX_SETCOMMUNITY_SETAS_PATH_SETBGP_NEIGHBOR_AFBGP_PEER_GROUP_AF
  • 関連 CLI: config route_mapvtysh -c "show route-map"
  • 関連 YANG: sonic-route-mapsonic-routing-policy-sets

関連リファレンス

引用元

運用ヒント

典型値

  • key 形式: ROUTE_MAP|<name>|<seq>
  • route_operation: permitmatch_* で条件、set_* で属性変更。BGP で in/out に適用。

よくある誤設定

  • 末尾の暗黙 deny を忘れて意図せず全 prefix を drop する。

確認コマンド

sonic-db-cli CONFIG_DB keys 'ROUTE_MAP|*'
vtysh -c 'show route-map'

値依存挙動マトリクス

route_operation 値別挙動

挙動
PERMIT match した経路を許可し、set_* アクションを適用。
DENY match した経路を拒否(DROP)。set_* アクションは無視される。

set_metric_action 値別挙動

挙動
METRIC_SET_VALUE MED を set_metric の値に設定。
METRIC_ADD_VALUE MED に set_metric を加算。
METRIC_SUBTRACT_VALUE MED から set_metric を減算。
METRIC_SET_RTT MED を RTT 値に設定。
METRIC_ADD_RTT MED に RTT を加算。
METRIC_SUBTRACT_RTT MED から RTT を減算。

BGPRouteMapMgr が処理する key 値別挙動

key 値 挙動
FROM_SDN_SLB_ROUTES 有効(SDN SLB ユースケース専用)。
FROM_SDN_APPLIANCE_ROUTES 有効(SDN Appliance ユースケース専用)。
その他 log_err("BGPRouteMapMgr:: Invalid key for route-map %s") → 拒否。汎用 route-map は bgpcfgd テンプレート経由で管理。

例外条件・特殊挙動

  • BGPRouteMapMgr は固定 2 キーのみ処理: FROM_SDN_SLB_ROUTES / FROM_SDN_APPLIANCE_ROUTES 以外の key は log_err("BGPRouteMapMgr:: Invalid key for route-map %s") で拒否される。これらは SDN ユースケース専用であり、汎用 route-map の CONFIG_DB 管理は bgpcfgd の ROUTE_MAP テーブル consumer ではなく bgpcfgd テンプレートが担う。2
  • community_id 形式不正: <0-65535>:<0-65535> 形式でない場合 log_err してスキップ。2
  • BGP ASN 未設定 (constants): deployment_id_asn_map が constants に存在しないか、deployment_id=2 のエントリがない場合は route-map の更新をスキップする(既存 route-map は残る)。2
  • シーケンス番号枯渇: managers_allow_list.py との連携でシーケンス番号が不足した場合 RuntimeError("No free sequence numbers") で追加が失敗する。2