Created 2018年9月30日23:56
Updated 2018年10月6日13:27
Categories
Python
ns3
ネットワークの研究でns3というシミュレーションソフトを使うことになりました。
ns3は有線から無線まで、様々なネットワークのシミュレーションを書くことができるネットワークシミュレータです。
さらに、PythonのAPIを用意しており、Pythonからシミュレーションプログラムを書くことができるようです。
Python bindings provide support for importing ns-3 model libraries as Python modules. Coverage of most of the ns-3 C++ API is provided.
(誤訳してたらすみません: Python bindingsはns-3のモデルライブラリをPythonモジュールとしてimportできて、ほとんどのC++のAPIを使うことができるよ)
おぉ、これはすごい!これがあれば大好きなPythonでシミュレーションが書けそうです。
しかし、これが悪夢の始まりでした。
足りないAPI、少なすぎる(というか存在しない)ドキュメント、特殊なビルド環境、シミュレーションソフト特有の柔軟性の無さ・・・
この記事では、Pythonに入り浸り世間の厳しさを忘れた一介のプログラマーがns3という巨大シミュレーションソフトと格闘した道しるべを書いていきます(負けるかもしれない)。
本記事では具体的な事は書かず、シミュレーションを書いていて躓いたことを別記事に備忘録として列挙していこうと思います。
ns3の記事一覧はこちらをご覧ください。
まず最初に目標を書いておきます。
私がns3で書きたいのは、”CCNのシミュレーション”です。
CCNはIPアドレス形式でのネットワーク通信を置き換えるようなアーキテクチャとして考案されたもので、コンテンツへのルーティングを全て中継するルーターが行うため、DNSによる名前解決が必要ないという特徴があります。
詳しい話はネットにいくらでも転がっているのでここでは省略しますが、要するにIPアドレスを用いない通信方式でコンテンツをサーバー(的なもの)から取ってくる形になります。
一般的な通信のシミュレーションならPythonでも簡単に書けたかもしれませんが、ネットワーク通信の基礎を弄るような事しているので結構大変だったのかもしれません。
開発の大体の流れを書いておきます。
なんとなくの流れで書いてるので、記事化する項目があったりなかったりすると思います。