實驗細節請參照御楷碩論程式碼手冊,此專案只基於原版程式碼重構。
test/
├── main.py # 主程式進入點
├── config/ # 設定檔目錄
│ └── configuration.json # 範例設定檔
├── src/ # 原始碼目錄
│ ├── experiment.py # 實驗執行器
│ ├── logger.py # 日誌管理模組
│ ├── topology.py # 拓撲管理模組
│ ├── algorithm.py # 演算法管理模組
│ ├── traffic.py # 流量管理模組
│ ├── config.py # 設定管理模組
│ └── failure.py # 故障管理模組
└── README.md # 說明文件
- 讀取與管理 JSON 設定檔
- 檔案操作
- 支援時間與狀態記錄
- 檔案日誌輸出
- Mininet 網路拓撲建構
- 主機與交換器管理
- 連線狀態檢查
- 故障恢復演算法
- iperf 流量產生
- 流量監控與資料收集
- 連結故障模擬
- 故障偵測與恢復
- 整合所有模組功能
- 實驗流程控制
請在 config/
目錄下建立設定檔,例如 configuration.json
:
{
"UserName": "lce",
"OutputFile": "single_link_failure_result_data.pkl",
"SaveTraceFile": "True",
"FailureMode": "single",
"Mode": "fixed",
"Algorithm": ["SDFFR_MP", "SDFFR_MP_LB"],
"Vertex": [20],
"Edge": [35],
"LinkBandwidth": [1000],
"Throughput": [10],
"TrafficModel": [1],
"ControlPlaneDelay": [20],
"FlowCount": [30],
"Trial": [1, 2],
"LinkChangeTime": [5],
"Metric": ["Throughput", "TOTALPacketLoss", "PacketLoss", "RecoveryDelay"]
}
# 執行實驗
python3 main.py run configuration1
# 清理實驗環境
python3 main.py clean configuration1
UserName
: 使用者名稱FailureMode
: 故障模式(single/multiple)Mode
: 遮擋模式 (markov/fixed)Algorithm
: 測試的演算法 ("LB","MP","MP_LB","DRAF" )Vertex
: 鏈路中 ovs 的數量Edge
: 鏈路中連結各 ovs 的邊總數LinkBandwidth
: 連結頻寬Throughput
: 每條flow的吞吐量設定TrafficModel
: 每條flow的吞吐量設定,1 == TCP 2 == UDPControlPlaneDelay
: 模擬 ovs 與 onos 之間的延遲FlowCount
: 預期加入拓樸的 flow 總數Trial
: 實驗次數範圍LinkChangeTime
: 鏈路變動時間間隔Metric
: 評估用指標
- 環境建置:初始化實驗環境與目錄結構
- 拓撲建構:建立 Mininet 網路拓撲
- 演算法部署:在 ONOS 控制器上部署故障恢復演算法
- 流量產生:使用 iperf 產生測試流量
- 故障注入:模擬連結故障與恢復
- 資料收集:收集與紀錄
- 結果分析:分析實驗結果並儲存
目前程式只能完成第1.2項