Integrated IS-IS の基本設定

Integrated IS-IS を検証してみました。基本的な設定をまとめます。

検証トポロジー

以下のトポロジーで Integrated IS-IS を設定しました。

f:id:naoki029:20190924072247p:plain

ルーター (RT) のパラメータは次の通りです。Area ID、System ID、Level については後述。

Area ID System ID Level
RT1 49.0001 0000.0000.0001 L1-L2
RT2 49.0001 0000.0000.0002 L1
RT3 49.0001 0000.0000.0003 L1
RT4 49.0002 0000.0000.0004 L1-L2
RT5 49.0002 0000.0000.0005 L1
RT6 49.0002 0000.0000.0006 L1

Integrated IS-IS の概要

IS-IS は OSI のルーティングプロトコルなので、IP をルーティングすることはできません。Integrated IS-IS は IS-IS で IP をルーティングするために IS-IS を機能拡張したプロトコルです。以後、Integrated IS-IS と IS-IS は区別せずに、IS-IS と記載します。

NET (≒ OSPF の Router ID)

IS-IS では Network Entity Title (NET) と呼ばれるアドレスで各ノードを識別します。NET は 8〜20 byte で、Area ID, System ID, NSEL から構成されます。アドレスは 16 進数で記載します。

f:id:naoki029:20190924072339p:plain:w400
  • Area ID : 可変長
    • IS-IS のエリア。
    • 0x49 はプライベートアドレスを表す。
  • System ID : 6 byte
    • MAC アドレスや IP アドレスが使われることが多い。
    • 本検証だと、1〜6 を指定。
  • NSEL : 1 byte

Level

IS-IS では、Area 内のルーティングを Level1 ルーティングと呼ばれ、Area 間のルーティングは Level2 ルーティングと呼ばれます。

f:id:naoki029:20190924073640p:plain

IS-IS の設定

IS-IS の設定は以下の通りです。

  • ルーター上で IS-IS の有効化
    • NET の割当
    • level の設定
  • Interface で IS-IS の有効化

f:id:naoki029:20190924073810p:plain

ルーティングテーブルの確認

Level1-2 で動作している RT1 は別エリアのルートを受け取っている一方で、Level1 の RT3 は自分のエリアのルートしか持っていないことがわかります。

f:id:naoki029:20190924073514p:plain

まとめ

基本的な IS-IS の設定と、動作確認を行った結果をまとめました。 IS-IS は実際に使われているところは見たことがありませんが、興味があったので動かしてみました。今後触ることがあれば、もっと深く勉強してみようと思います。

pyATS を使ってルーティング情報の更新を確認する

pyATS とは

pyATS は Cisco が開発している、テストフレームワークです。python で書かれており、ネットワークのテストに必要な機能が実装されています。今回は、コードを書かずに pyATS に用意されている CLI ツールを使用し、ネットワーク機器の状態が変化した際の差分を確認していきます。

続きを読む

VXLAN EVPN Fabric で仮想ネットワークの設定を Anaible を使って自動化する

VXLAN EVPN の環境で Overlay network の設定を Ansible で自動化してみました。VXLAN Fabric では、L2 ネットワークを 1つ追加するだけでも全ての Leaf スイッチに対して設定を行う必要があります。この設定を自動化する ansible playbook を書いてみました。

構成と作成する仮想ネットワークは次のようになっています。

f:id:naoki029:20190908091009p:plain

スイッチは仮想 OS の NX-OS 9000v 9.3(1) です。

続きを読む

【vPC】peer-switch 機能の役割

vPC は2台の Nexus スイッチを、外部のスイッチに対して仮想的に1つに見せる機能です。SW1 と SW2 から見ると、あたかも1台のスイッチに接続しているように見えるので、2台のスイッチにまたがるリンクを active/active で利用することができます。また、1台の Nexus に障害が発生しても転送を継続することができます。

続きを読む

Calico と MetalLB を BGP モードで共存させる環境を作ってみた【Kubernetes】

Kubernetes 環境で Calico と MetalLB を BGP モードで共存させる場合、1つの Kubernetes ノードから、外部のルーターに対して2つの BGP セッションを張る必要があります。BGP ではノード間で1つのセッションしか張ることができないため、1つの K8s ノードと1つのルーターの間で Calico と MetalLB の2つのセッションを張ることができません。

f:id:naoki029:20190818073107p:plain

これに対するワークアラウンド公式ドキュメントで紹介されています。この中で、VRF を分ける方法を試してみました。

続きを読む

ping 失敗「宛先ホストに到達できません。」から、最低限の切り分けを行う【Windows】

ping のエラーメッセージ「宛先ホストに到達できません」から、最低限の切り分けを行うために、何を見るべきかまとめていきます。

続きを読む