- 下載Mininet VM
- windows照助教講義下載xterm,mac OS可用xquartz,然後ssh -Y連VM link
- 下載code
- 開兩個視窗
- A 視窗 ./final_run.sh 0 跑Mininet
- B 視窗 ./final_run.sh 1 跑controller
- A: xterm h1 h2 h3
- h3: python client.py,
- h2: python server.py,server預設會架在port 6666,為簡單的echo server
- h1: python agent.py,最後跑
- 等到h2出現register和open port: 6666, 20,表示server向controller註冊成功
- h1此時應該已經有顯示solved,表示該次client puzzle已solved,press Enter
- h1連線的dst應為h2的server,press Enter
- h1連線成功後可以連上h2的echo server,exit可離開
- controller會檢查目的地為被保護server的tcp封包,若第一個封包的client puzzle通過檢查, 就新增一條rule,之後同(ip, port) -> (ip, port)的tcp封包就正常移動,不轉送controller檢查
- 由agent告知與server相關的訊息,或是刪除rule等等
- 要使用client puzzle服務的server向agent註冊,會和agent建立tcp連線管理server和client的連線狀態
- server也使用client puzzle向agent溝通
- agent會適度檢查server傳來的訊息合法性
- 有很爛的參數介紹,可以指定src, dst的ip, port,可以指定是否要用client puzzle。不用照理說會被block住
- 上述11點exit後可以再對別的server連線
- 會向agent發出註冊申請,註冊後成為被client puzzle保護的server
- 可以打指令向agent發送請求:
-
open port:X, Y
X: port number, Y: 可允許最大連線數
-
close port:X
-
df, src_ip, src_port, dst_port 向agent刪除該連線,agent檢查合法後會轉送給controller刪除該條rule
-
bug應該很多xD,要做其他功能再加,詳細敘述待補