GNS3 on GCP を構築してGNS3のネットワークにローカルPCからアクセスする

構築した環境

GCP Compute Engine に GNS3 と OpenVPN をデプロイして、GNS3 のネットワークにローカルから接続できるようにしました。

GNS3 on GCP のメリット

  • GNS3 を動かすインスタンスをスケールアップ可能
  • GCP では Nested KVM をサポートしているので、vEOS や Nexus 9000v を動かすことができる

“GNS3 on GCP を構築してGNS3のネットワークにローカルPCからアクセスする” の続きを読む

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

  • Area ID : 可変長
    • IS-IS のエリア。
    • 0x49 はプライベートアドレスを表す。
  • System ID : 6 byte
    • MAC アドレスや IP アドレスが使われることが多い。
    • 本検証だと、1〜6 を指定。
  • NSEL : 1 byte
    • N-Selector
    • 上位のプロトコルやデバイスを指定するために使用される。
    • デバイス自身を表す 0x00 を指定する。

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 ツールを使用し、ネットワーク機器の状態が変化した際の差分を確認していきます。

“pyATS を使ってルーティング情報の更新を確認する” の続きを読む

Anaible で VXLAN EVPN Fabric の設定を自動化する

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

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

f:id:naoki029:20190908091009p:plain

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

“Anaible で VXLAN EVPN Fabric の設定を自動化する” の続きを読む

【vPC】peer-switch 機能の役割

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

“【vPC】peer-switch 機能の役割” の続きを読む

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 を分ける方法を試してみました。

“Calico と MetalLB を BGP モードで共存させる環境を作ってみた【Kubernetes】” の続きを読む

NETCON に参加してきた【感想】

ネットワークエンジニアのためのコンテスト『NETCON』 に参加してきました。

camp-fire.jp

NETCONとは

ネットワークエンジニアのための、トラブルシューティングの技能を競うイベントです。10台程度で構成されるネットワークの物理構成、論理構成、機器へのアクセス情報が示され、そこで発生しているトラブルを解決することが求められます。

環境はクラウド上に構築されており、リモートからも参加できるようになっていました。私は実際に会場で参加させてもらいました。会場からは20人くらい参加されていたと思います。

学生向けには ICTSC
というイベントがあるようです。私は社会人になってからネットワークを触り始めたので、学生向にこのようなイベントがあることは知りませんでした。

“NETCON に参加してきた【感想】” の続きを読む

【Kubernetes】 flannel を使ったコンテナ間通信をキャプチャしてみた

Kubernetes (k8s) をデプロイして動作確認をしてみました。Container Networking Interface (CNI) として flannel と Calico の両方を試してみたので、今回は flannel を 利用した場合にノード上のコンテナ間でどのように通信が行われているのか検証した結果をまとめました。

“【Kubernetes】 flannel を使ったコンテナ間通信をキャプチャしてみた” の続きを読む