スケーラビリティの壁:OSPFが常に正解とは限らない理由
ネットワークエンジニアのキャリアの多くはOSPFから始まります。OSPFはどこにでもあり、ドキュメントも充実しており、標準的な企業環境ではうまく機能します。しかし、大規模なISPや高密度データセンター向けにファブリックをスケールさせていくと、OSPFの硬直したエリア構造がしばしば足かせになります。500ノードを超えるネットワークでは、絶え間ないLSAフラッディング and CPU負荷の高いSPF再計算により、OSPFの収束時間が数秒まで低下するのを私は目の当たりにしてきました。
Intermediate System to Intermediate System (IS-IS) は、こうした大規模なスケールを容易に処理します。もともとOSIプロトコルスイート用に構築されましたが、後にIP向けに調整されました。レイヤー2上で直接動作するため、IPベースのスプーフィングやDoS攻撃に対して不可視です。私の経験上、基本的なネットワークからティア1サービスプロバイダーの世界へ進みたいのであれば、IS-ISをマスターすることが最も重要なステップです。
コアコンセプト:IS-ISの考え方
OSPFのエリアで考えるのをやめ、レベルで考え始めてください。どちらのプロトコルもダイクストラアルゴリズムを使用しますが、IS-ISは階層の構築方法が異なります。
1. エリアではなくレベル
エリア0のことは忘れてください。IS-ISでは、バックボーンはレベル2ルーターの集合体です。
- レベル1 (L1): ローカルルーティング。ルーターは自エリアの情報のみを保持します。
- レベル2 (L2): バックボーン。異なるL1エリアを接続します。
- レベル1-2 (L1L2): ブリッジ。これらのルーターは境界として機能し、OSPFのABRに似ています。
2. NETアドレス
IS-ISは32ビットのルーターIDを使用しません。代わりに、Network Entity Title (NET) を使用します。典型的なNETは 49.0001.1921.6800.1001.00 のようになります。これは厳格な20バイトのロジックに従います。
49: 権限識別子(プライベート利用)。0001: エリアID。1921.6800.1001: システムID。プロのヒント:ループバックIP(192.168.0.1)を使い、ゼロ埋めして(192.168.000.001)、4桁ずつの3つのブロックにグループ化します。00: Nセレクター。ルーター自身の場合は常に00です。
ハンズオン:FRRoutingによるIS-ISのデプロイ
私はこのセットアップにFRRouting (FRR) を使用します。FRRはCiscoのようなCLI (vtysh) を提供し、Linux上のオープンソースルーティングにおけるプロダクション標準です。
ステップ1:バイナリの取得
パッケージを更新し、FRRスイートをインストールします。この例ではUbuntu 22.04を使用します。
sudo apt update && sudo apt install frr -y
IS-ISデーモンはデフォルトでオフになっています。/etc/frr/daemons で有効にする必要があります。
# isisd=no を isisd=yes に変更
sudo sed -i 's/isisd=no/isisd=yes/' /etc/frr/daemons
sudo systemctl restart frr
ステップ2:VTYSH経由での設定
私はファイルを直接編集するよりもシェルを好みます。構文エラーを即座にキャッチできるからです。
sudo vtysh
次に、IS-ISプロセスを構築します。バックボーンリンクを形成するために、これをレベル2専用ルーターとして設定します。これは、すべてのノードがバックボーンの一部であるスパインリーフアーキテクチャで一般的です。
conf t
router isis CORE
net 49.0001.0000.0000.0001.00
is-type level-2-only
topology ipv4-unicast
exit
ステップ3:インターフェースの有効化
BGPとは異なり、IPでネイバーを定義しません。インターフェースでIS-ISを有効にすると、自動的にピアを見つけます。
interface eth1
ip router isis CORE
isis network point-to-point
exit
interface lo
ip router isis CORE
exit
write memory
point-to-point コマンドに注目してください。現代のデータセンターでは、P2Pリンクを使用してDIS (Designated Intermediate System) の選出をスキップします。これにより、ネイバー形成時間を2〜3秒短縮できます。
検証:リンクの確認
2番目のノードを一意のシステムID(例:0000.0000.0002)で設定します。その後、隣接関係を確認します。
show isis neighbor
状態が “Up” であれば成功です。もし “Init” と表示される場合は、MTUを確認してください。IS-ISのHelloパケットはフルMTU(通常1500バイト)までパディングされており、リンクがそれを処理できない場合、隣接関係は失敗します。
実際のルートを確認するには:
show ip route isis
これが究極の証明です。ここにリモートのループバックが表示されていれば、SPFアルゴリズムがファブリック全体の最短パスを正常に計算できています。
結論
IS-ISを学ぶのは、新しい方言を覚えるようなものです。大規模ネットワークにおけるその優雅さは比類がありません。ルーティングロジックをIPスタックから分離することで、OSPFが大規模環境で欠いているレベルの安定性が得られます。現代的なCLOSトポロジーを構築している場合でも、地域的なバックボーンを管理している場合でも、Linux上のFRRoutingは、世界で最もスケーラブルなプロトコルを実行するための堅牢で自由な方法を提供します。
IS-ISの成功は、クリーンなNETアドレッシング計画と、P2Pリンクをいつ使用すべきかを知っているかという2点にかかっています。これらをマスターすれば、OSPFが屈服した後も、あなたのネットワークは安定し続けるでしょう。

