サウス IDC
PRACTICAL FIELD SOP · TUTORIAL

Rocky Linux 9におけるFRRouting 9.xを用いたOSPFv3とBGPデュアルスタック構築――ECMP負荷分散の実務設計

2026-11-05 | サウス IDC インフラ運用チーム
要旨:エンタープライズIDC内の閉域網および上流対外接続において、オープンソースルーティングスイート「FRRouting(FRR)9.x」の採用が急速に進んでいる。本稿では、Rocky Linux 9環境におけるFRR 9.1の導入から、IPv4/IPv6デュアルスタック環境でのOSPFv3 IGPルーティング、上流IX/トランジットとのBGPピアリング、そしてLinuxカーネルにおけるEqual-Cost Multi-Path(ECMP)ルーティングの最適化パラメータ調律までを現場視点で具体的に解説する。

1. FRRouting 9.xのアーキテクチャ刷新とLinuxカーネル連携

FRR(FRRouting)は、Quaggaからフォークした極めてアクティブなルーティングデーモン群であり、最新の9.x系ではマルチスレッド化が進展し、100万経路を超えるフルルートBGPテーブルの収容時でもBGPテーブル計算の遅延が劇的に短縮されている。また、LinuxカーネルのNetlinkインターフェース(FPM: Forwarding Plane Manager)との連携が強化され、ハードウェアオフロード(SwitchDev)やeBPF/XDPとの親和性が格段に向上している。

Rocky Linux 9(RHEL 9クローン)では、デフォルトでsystemdおよびNetworkManagerと統合されており、ルーティングプロトコルデーモン(zebra、bgpd、ospf6dなど)を安全かつ堅牢に分離実行することが可能である。

2. インストールとデーモン有効化手順

Rocky Linux 9公式リポジトリまたはFRR公式RPMリポジトリから最新の安定板パッケージを導入する。インストール後、/etc/frr/daemons を編集し、必要なデーモンを有効化する。

# FRRのインストール
dnf install -y frr frr-pythontools

# /etc/frr/daemons の編集
zebra=yes
bgpd=yes
ospfd=no
ospf6d=yes
bfdd=yes

設定保存後、systemctl enable --now frr を実行してサービスを起動する。管理CLIツールである vtysh を通じて、シスコライクな単一シェルから全ルーティングデーモンを一元制御できる。

3. OSPFv3による内部IGP基盤とIPv4/IPv6デュアルスタック

データセンター内のFabricネットワークにおいて、Leaf-Spine間のLoopback到達性を担保するためにOSPFv3を採用する。OSPFv3(RFC 5838)は単一のプロトコルインスタンス上でIPv4およびIPv6アドレスファミリを同時に広告可能であり、設定の重複とプロトコルオーバーヘッドを最小限に抑制できる。

router ospf6
 router-id 10.254.0.11
 address-family ipv6 unicast
  redistribute connected
 exit-address-family
 address-family ipv4 unicast
  redistribute connected
 exit-address-family
interface vlan100
 ipv6 ospf6 network point-to-point
 ipv6 ospf6 instance-id 0

4. BGPマルチホーム接続とECMP(等コストマルチパス)の実務調律

対外トランジット回線およびIX接続において、2系統以上の上流回線へトラフィックを均等に分散するために、BGPマルチパス(ECMP)を設定する。FRRでは maximum-paths 4 を指定することで、同一ASパス長・同一MEDの経路に対して等コストマルチパスルーティングを適用できる。

router bgp 65001
 bgp router-id 10.254.0.11
 no bgp default ipv4-unicast
 neighbor 192.0.2.1 remote-as 64512
 neighbor 192.0.2.1 description UPSTREAM_CARRIER_A
 neighbor 198.51.100.1 remote-as 64513
 neighbor 198.51.100.1 description UPSTREAM_CARRIER_B
 !
 address-family ipv4 unicast
  neighbor 192.0.2.1 activate
  neighbor 198.51.100.1 activate
  maximum-paths 4
 exit-address-family

同時に、Linuxカーネル側のsysctlパラメータにおいて net.ipv4.fib_multipath_hash_policy=1(L4ポート番号を含むハッシュ計算)を設定し、フロー単位での均等なパケット分散を実現することが必須となる。

← 実践チュートリアル一覧に戻る