2025/09/24 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/netcompx/2025/#10-1
ホスト OS とゲスト OS (Debian GNU/Linux) を行き来すると非常に面倒なので、 ゲスト OS だけですべての作業を行うこと (日本語入力の設定がやや複雑なので、 日本語入力のみ当面はホスト OS で行う)。
Web ブラウザ (qutebrowser)、 PDF ビューア (mupdf) をインストールしておく。
> sudo apt update
> sudo apt install qutebrowser libjs-pdf mupdf uim-skk skk skkdic-cdb
Alt + Ctrl + 3 で qutebrowser が起動できる。 もしくは以下のように起動してもよい。
> qutebrowser &
qutebrowser の最低限のコマンド (vi エディタの操作体系を真似ている)。
ヘルプを表示 :help<RET>
新しいタブを開く C-t
タブを閉じる C-w
「キーワード」を検索 oキーワード<RET>
qutebrowser を終了 C-q
入力モードへ i
入力モードを抜ける ESC, C-[
ヒントを表示 f, F (新規にタブを開く場合)
quickmarkを保存 m
quickmarkを開く o
スクロール h, j, k, l
ページの先頭に移動 gg
ページの末尾に移動 G
日本語の PDF ファイルは文字化けするので、 「Download」でダウンロードし、 mupdf で表示する。
C-SPC (Ctrl + スペースキー) で日本語入力 (uim-skk) の ON/OFF が切り替えられる。 SKK による漢字の入力方法は特殊なので、 しばらくはひらがなの入力に使ってください。
SKK による入力方法をマスターしたい場合は、 Emacs 上で M-x skk-tutorial とすれば SKK のチュートリアルが実行できます。
- 「シミュレータ」および「エミュレータ」が何かを他人に説明できるようになる。
- 「エピデミックブロードキャスト」とは何かを他人に説明できるようになる。
- DTN シミュレータ (dtnsim) をインストールできるようになる。
- シミュレーション条件を変えて dtnsim を実行できるようになる。
https://lsnl.jp/~ohsaki/lecture/netcompx/2025/priv/04.pdf
「シミュレータ」および「エミュレータ」とは何かを、 それぞれの違いがわかるように説明せよ。
世の中にある○○シミュレータや○○エミュレータについて、 (1) それは本当にシミュレータ/エミュレータか、 (2) もしそうならそれはなぜか、 を考えて議論せよ。
「エピデミックブロードキャスト」とは何かを説明せよ。
エピデミックブロードキャストがどういうものかを理解した後、 「エピデミックブロードキャストを使うと何ができそうか? (どんなアプリや用途に使えそうか?)」 を議論せよ。
dtnsim をインストールせよ。
dtnsim におけるエージェントの移動モデルを「グラフの CRWP」から「グラフ上のランダムウォーク」に変更してシミュレーションを実行せよ。
→ テキスト参照
→ テキスト参照
> sudo PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install -U dtnsim
> dtnsim | cellx
> dtnsim -h
option -h not recognized
usage: dtnsim [-v] [-s #] [-n #] [-r range] [-I id[,id]...] [-m mobility] [-p path] [-a agent] [-M monitor]
-v verbose mode
-s # seed of random number generator
-n # number of agents
-r range communication range [m]
-I id[,id...] initial infected nodes
-m mobility name of mobility class (Fixed/FullMixed/LevyWalk/LimitedRandomWaypoint/RandomWalk/RandomWaypoint/graph.Fixed/graph.Sequential/graph.RandomWalk/grpah.CRWP)
-p path name of path class (NONE/Line/Grid/Voronoi)
-a agent name of agent class (CarryOnly/Random/Epidemic/P_BCAST/SA_BCAST/HP_BCAST/ProPHET)
-M monitor name of monitor class (Null/Log/Cell)
> dtnsim -m graph.RandomWalk | cellx
- 「シミュレータ」という名称が付いたシステムやソフトウェアにどのようなものがあるか調べてみよ。それぞれについて、それらが本当にシミュレータの一種であるかを確認せよ。
- 「エミュレータ」という名称が付いたシステムやソフトウェアにどのようなものがあるか調べてみよ。それぞれについて、それらが本当にエミュレータの一種であるかを確認せよ。
- TCP/IP が、本当に通信網の分断に対して耐性がないかを実験で確認せよ。例えば、ISO イメージのような巨大なファイルのダウンロード中に Wi-Fi ルータの電源を ON/OFF してみよ。どのくらいの通信回線断であれば正常にダウンロードできるか調査してみよ。
- epidemic という英単語の意味を英英辞書で調べよ。
- 自身が使っている PC やスマートフォンで、ユニキャスト、マルチキャスト、ブロードキャストのどれが、どの程度使用されているかを調査せよ。
- 「which dtnsim」を実行することにより、dtnsim プログラムがどこにインストールされているかを調査せよ。
- 「sudo PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install -U dtnsim」によって、ファイルがどこにインストールされたかを調査せよ。
- pip3 コマンドを用いて dtnsim をアンインストールせよ。アンインストールされたことを確認した後、pip3 コマンドを用いて dtnsim を再度インストールせよ。
- エージェントの移動モデルをさまざまに変化させてシミュレーションを実行してみよ。それぞれの移動モデルにおいて、エージェントの移動パターンがどのように変化するかを観察せよ。グラフ上の移動モデルを使用する場合は、-p オプションによって経路もあわせて指定する必要があることに注意せよ。
- エージェントの通信プロトコルをさまざまに変化させてシミュレーションを実行してみよ。それぞれの通信プロトコルにおいて、通信特性がどのように変化するかを観察せよ。
- cellx ではオプションを指定することで、可視化方法をさまざまに変化させられる。以下のオプションを試してみよ。どのような目的の可視化の時に、どのようなオプションを指定すると望ましいかを考察せよ。
> cellx -h
option -h not recognized
usage: /usr/local/bin/cellx [-E] [-c #] [-M class] [-F rate] [-L rate] [-A alpha] [-m #] [file...]
-E enable macro expansion with cpp
-c # select color scheme
-M class monitor class (Null/SDL/SDL_Filter/PostScript) (default: SDL)
-F rate the number of frames per animation/fading
-L rate limit the frame rate (default: infinity)
-A alpha alpha for filtering effect (0 <= alpha <= 255)
-m # the number of frames to render (default: infinity)
-c 0〜7: カラースキームの変更
例: カラースキームを 1 番に変更
> dtnsim | cellx -c 1
-M class: モニターモジュールの指定
-A alpha: フィルタ効果の強さ (小さいほど残像が残る)
例: 残像を残すフィルタを有効にする
> dtnsim | cellx -M SDL_Filter -A 40
-L rate: フレームレートの上限
例: フレームレートを 30 フレーム/秒に抑える
> dtnsim | cellx -L 30
例: 上記の組み合せ
> dtnsim | -M SDL_Filter -A40 -L30
「レポート課題 2025/09/24」と同じ。
https://lsnl.jp/~ohsaki/lecture/netcompx/2025/#10-7
- 講義ありがとうございました。-aオプションで指定できるEpidemic、P_BCAST、ProPHET などの通信プロトコルは、それぞれ具体的にどのようなアルゴリズムで動作しているのか知りたいです。
P-BCAST、SA-BCAST、HP-BCAST は Gamberini らの論文を、ProPHET は RFC を見てく
ださい。
Impact of history on epidemic broadcast in DTNs
https://ieeexplore.ieee.org/document/4812838
Probabilistic Routing Protocol for Intermittently Connected Networks
https://www.rfc-editor.org/rfc/rfc6693
[<15. エディタ (Emacs チュートリアル)] [>17. Python 言語 (1) (名前、変数、式)]