PeerSim 是基於 Java 的 P2P 網絡模擬框架,支援千萬節點級離散事件模擬,內建 Chord、Pastry、Kademlia 等經典覆蓋協議。本文記錄 Windows 下 JDK 配置、PeerSim 解壓、Eclipse/IDEA 導入、官方示例運行、第三方協議包編譯部署全流程。
# 系統環境變量
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_202
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH=%PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
驗證:java -version、javac -version 均顯示 1.8.x
peersim-1.0.5.zip(含 JAR、源碼、示例配置、文檔)peersim-1.0.5.jar 核心框架jep-2.3.0.jar 數學表達式解析引擎djep-1.0.0.jar 擴展數學函數example/config-example1.txt 入門示例配置src/peersim/Simulator.java 入口類
cd peersim-1.0.5
java -cp peersim-1.0.5.jar;jep-2.3.0.jar;djep-1.0.0.jar peersim.Simulator example/config-example1.txt
輸出示例:節點初始化、協議啟動、模擬步進、統計指標打印。
File → New → Project from Existing Sources 選中解壓目錄lib 目錄下三個 JAR → Add as Librarysrc 為 Sources Root,example 為 Resources Rootpeersim.Simulatorexample/config-example1.txt
# 模擬參數
simulation.endtime 100 # 模擬步數
simulation.cycles 1 # 重複運行次數
random.seed 12345 # 隨機種子
# 協議棧定義
protocol.1 peersim.core.Transport
protocol.2 peersim.cdsim.CDProtocol
protocol.3 peersim.kademlia.KademliaProtocol
# 協議參數
transport.port 9090
kademlia.k 20
kademlia.alpha 3
# 觀察器
observer.1 peersim.cdsim.CDObserver
observer.2 peersim.viz.Visualizer
核心模式:protocol.x 定義節點協議棧,observer.x 定義統計/可視化組件。
官網 Chord 項目 提供源碼,需自行編譯 JAR。
chord-src.zip 解壓ant jar 或 javac -d bin src/... && jar cf chord.jar -C bin .chord.jar
# 將 peersim 三大 JAR + chord.jar 放同一目錄
java -cp "peersim-1.0.5.jar;jep-2.3.0.jar;djep-1.0.0.jar;chord.jar" peersim.Simulator chord-example.cfg
注意:Windows 用分號 ;,Linux/Mac 用冒號 : 分隔 classpath。
jep/djep 或協議 JAR,檢查分隔符與路徑-Xmx2g -Xms2grandom.seed 保證可復現,論文實驗必備Visualizer 或降低 simulation.endtime
public class MyProtocol implements Protocol {
private final String prefix;
public MyProtocol(String prefix) { this.prefix = prefix; }
@Override public Object clone() { return new MyProtocol(prefix); }
// 每個周期調用
public void nextCycle(Node node, int protocolID) {
// 發送消息、更新狀態、選鄰居...
}
}
配置文件註冊:protocol.5 MyProtocol