Skip to content

flyby-yunakayama/network-simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

702 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

network-simulator

このリポジトリは、Python で実装された学習用のネットワークシミュレータです。ノードやリンクを組み合わせてネットワークを構築し、パケット転送や各種プロトコルの動作を体験することを目的としています。

基本構造

  • ルート直下には scenario1.py から scenario15a.py まで多数の シナリオスクリプト があり、対応する sec* ディレクトリのモジュールを使って実験を行います。
  • sec1, sec2, ... sec15a の各ディレクトリには、章ごとに機能を拡張したネットワーク部品 (Node, Link, Router, Switch など) が実装されています。
  • doc/ には第1章から第16章までの日本語 Jupyter Notebook が収録され、理論と実装手順がまとめられています。
  • data/ にはサンプル画像 cat.jpg が置かれており、ファイル転送のシナリオで使用します。

重要なポイント

  • 段階的な学習: sec1 ではごくシンプルな構成から始まり、セクションが進むにつれて DHCP や TCP、HTTPS まで機能を追加していきます。
  • シナリオ実行: 各シナリオではネットワークトポロジを描画し、パケットログを記録できます。シナリオが参照する sec* ディレクトリに注意してください。
  • 必要なライブラリ: networkx, matplotlib, numpy など一般的な Python パッケージを使用します。requirements.txt は用意されていないため手動でインストールしてください。
  • コードの重複: セクションごとに似たクラスが多数存在します。どのセクションのコードを使っているかを意識しながら学習を進めることが重要です。

次に学ぶための指針

  1. doc/ 以下のノートブックを順に読み、各章の目的や理論を理解します。
  2. scenario1.py から順にシナリオを実行し、出力結果を確認しながらコードとの対応を把握します。
  3. DNS/DHCP/TCP などを扱う後半のシナリオ (scenario10a.py 以降) でより高度な機能を体験します。
  4. 既存のシナリオを参考に自分のトポロジや通信パターンを組み立て、NetworkEventSchedulerschedule_event メソッドでイベントを追加してみましょう。

使い方

  1. 依存パッケージをインストールします。
    pip install networkx matplotlib numpy
  2. 実行したいシナリオを指定して Python スクリプトを起動します。例として scenario1.py を実行する場合は次の通りです。
    python scenario1.py

各シナリオではノードの追加やリンクの帯域幅設定、パケット転送の様子を確認できます。複雑な動作を試したい場合は scenario14a.py なども参考にしてください。

ライセンス

本リポジトリの内容は Creative Commons Attribution-ShareAlike 4.0 International License の下で提供されます。

About

Simple Network Simulator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages