🛠️

ネットワークエミュレータ、シミュレータ

2022/06/17に公開

はじめに

ネットワーク機器やパケットの動き、プロトコル仕様を手を動かしながら学びたいときに使えるネットワークエミュレーションツール、シミュレーションツールってどんなものがあるのだろう?というのを調べてみました。

network namespace

Linuxカーネルの持つ機能のひとつで、カーネルのネットワークスタックを論理的に複数に分割する機能です。
ざっくり言うと1台のLinuxが複数のルーティングテーブルを持ち、それらがお互いに独立したVRFとして動きます。

この辺で動かし方をちょっと書いてみました。

https://zenn.dev/takai404/articles/52e75a953efe9e
https://zenn.dev/takai404/articles/9633f5aa669f32

GNS3

わりと昔からあるソフトウェアです。元々はCiscoのネットワーク機器をエミュレーションするもので、今はそれ以外の機器も使えるとのこと。

使う上で一番のハードルになるのが、GNS3はハードウェアのエミュレーションツールであり、IOSイメージは別途ゲットする必要があるということです。ファミコンのエミュレータはあるけどソフトがない、みたいな状態ですね。Ciscoとの契約がありIOSイメージを持ってこれる人はいいのですが、そうじゃない人は…

https://www.gns3.com/


(画像は公式からお借りしました)

Cisco Packet Tracer

Ciscoが出しているネットワークシミュレーションツールです。無償で使用できます。
(このページはPacket Tracerのトップページ?だと思うのですが、ダウンロードページとか詳しい説明はログインしないと出てこないです)

https://skillsforall.com/topics/cisco-packet-tracer?utm_source=netacad.com&utm_medium=referral&utm_campaign=packet-tracer&userlogin=0

ツールのダウンロード、起動にはCisco Networking AcademyかCisco Skills for Allのアカウントが必要です(無償で作成できます)。

Cisco Networking AcademyとCisco Skills for Allって何が違うんだろう?と思って調べたところ、2021年の時点で、過去23年間Networking Academyを提供していて、新しくSkils for Allを立ち上げたとのことなので、今ならSkils for Allにアカウント作成してダウンロードすればよいみたいです。
(意訳してますが)生まれや年齢、性別、受けた教育、貧富の差に関係なく学習の機会を提供しますとか、パンデミックやITの激動で変わりゆく時代にIT屋さんが必要とか、さすがネットワーク界の覇王Ciscoさんらしいかっこよさです。

https://blogs.cisco.com/csr/cisco-networking-academy-launches-free-it-education-to-empower-all-people-with-career-possibilities

調べて切れていないのですが、シミュレータの中に閉じた世界でパケットをシミュレーションしていて、現実世界とパケットをやり取りするとかWiresharkでパケットを見るとかができないのかもしれない。
今度実際に動かしてみてどんな感じか見てみたいです。

TiNET

TiNET is network emulator environment for network function developer, routing software developer and networking educator. this is very simple tool that generate just shell script to construct virtual network.

(意訳)TiNETはネットワーク関係の開発者、教育者向けのネットワークエミュレータです。仮想ネットワークを生成するシェルスクリプトを生成します。

https://github.com/tinynetwork/tinet

DockerとOpenvSwitchとGraphvizを使うみたい。

Mininet

Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native), in seconds, with a single command: sudo mn

(意訳)Mininetは仮想ネットワーク、カーネル、スイッチ、アプリをコマンド一発で作ります。VMでもクラウドでも実マシンでもOK。

http://mininet.org/

CORE (Common Open Research Emulator)

CORE (Common Open Research Emulator) is a tool for building virtual networks. As an emulator, CORE builds a representation of a real computer network that runs in real time, as opposed to simulation, where abstract models are used. The live-running emulation can be connected to physical networks and routers. It provides an environment for running real applications and protocols, taking advantage of tools provided by the Linux operating system.

(意訳)COREは仮想ネットワークを作るツールです。COREは抽象的なモデルを使うシミュレータじゃなくて、実際に動くネットワークを作るエミュレータで物理ネットワークとか物理ルータに接続できます。Linux OSが提供するツールを活用して実際のアプリとかプロトコルを動かせます。

https://coreemu.github.io/core/

networknamespaceとlinux bridgeを使うみたい。

Discussion