2025/09/24 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/netcompx/2025/#10-1
学生番号の末尾が 3 および 8 の人は、 以下から質問を一つ記入してください。 学生番号の末尾がそれ以外の人も記入してもらって構いません。
[授業中に使用] クリッカー (パスワードが必要です)
https://lsnl.jp/app/lecture/clicker/show/netcompx
- シミュレーション条件を変えて dtnsim を実行できるようになる。
- エージェントの 2 つの通信方式 (CarryOnly と Epidemic) の違いを他人に説明できるようになる。
- 実行ファイルや Python のモジュールがどこに格納されているかを確認できるようになる。
- Python モジュールに動作確認のための print を埋め込めるようになる。
https://lsnl.jp/~ohsaki/lecture/netcompx/2025/priv/08.pdf
Debian のパッケージおよび dtnsim シミュレータ等をアップデートしておく。
> sudo apt update
> sudo apt upgrade
> sudo PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install -U dtnsim
dtnsim を以下の条件で実行せよ。 (1) エージェント数は 10、 (2) 移動モデルは RandomWaypoint、 (3) 経路制約なし、 (4) エージェントは CarryOnly。
メッセージ保有ノードが、 宛先ノードに直接接触した時にメッセージが中継されることを確認せよ。
課題 1 において、 エージェントのクラスを Epidemic に変更してシミュレーションを実行せよ。 CarryOnly と Epidemic の違いによって、 メッセージの中継がどのように変化するかを確認せよ。
プログラム dtnsim および Agent.CarryOnly クラスを定義している agent/carryonly.py がインストールされている場所を特定し、 それぞれのファイルの中身を確認せよ。
課題 1 のシミュレーション実行中に、 各エージェントの情報を標準エラー出力にダンプせよ。
> dtnsim -n 10 -m RandomWaypoint -p NONE -a CarryOnly | cellx -L30
末尾の -L30 を変えると描画されるスピードを調整できる (-L30 で 30 フレーム/秒)
> dtnsim -n 10 -m RandomWaypoint -p NONE -a Epidemic | cellx -L30
> which dtnsim
/usr/local/bin/dtnsim
> python3
Python 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/ohsaki/lib/python', '/usr/lib/python313.zip', '/usr/lib/python3.13', '/usr/lib/python3.13/lib-dynload', '/usr/local/lib/python3.13/dist-packages', '/usr/lib/python3/dist-packages']
>>> import dtnsim.agent.carryonly
>>> dtnsim.agent.carryonly.__file__
'/usr/local/lib/python3.13/dist-packages/dtnsim/agent/carryonly.py'
>>> (Ctrl-D で終了)
> less /usr/local/bin/dtnsim
> less /usr/local/lib/python3.13/dist-packages/dtnsim/agent/carryonly.py
例えば、 /usr/local/lib/python3.13/dist-packages/dtnsim/agent/carryonly.py に以下のような変更を加えればよい。
--- carryonly.py.orig 2021-11-29 15:25:46.432520640 +0900
+++ carryonly.py 2021-11-29 15:24:30.312284452 +0900
@@ -190,6 +190,8 @@
self.mobility.move(self.scheduler.delta)
self.monitor.move_agent(self)
self.forward()
+ import sys
+ print(self, file=sys.stderr)
def flush(self):
"""Merge all newly-received messages with existing ones."""
> cd /usr/local/lib/python3.13/dist-packages/dtnsim/agent
> sudo cp carryonly.py carryonly.py.orig ← 元のファイルを別名で保存
> sudo chmod 666 carryonly.py ← 一般ユーザで書き込めるように
> emacs carryonly.py ← ファイルを編集
「レポート課題 2025/09/25」と同じ。
[<20. 最終レポート課題 (実施報告書)] [>22. シミュレータ解説 (2) (モビリティ、可視化)]