模拟开始,前面都是一些无关紧要的系统的初始化,如设置随机种子等,直至进入EDSimulator引擎的nextExperiment() 方法才算正是开始仿真的进行。仿真共分为好几个步骤,首先要进行的就是overlay网络的初始化。
runInitializers()方法
ED引擎声明一些用于记录的对象之后,便进行网络参数的初始化。这些初始化由runInitializers() 方法进行。
首先,PeerSim读取配置文件获取进行初始化的类—— peersim.bittorrent.NetworkInitializer。
进入之后首先初始化Tracker(BitTorrent协议中的服务器)。
- 1、新建一个cache[]数组,并将元素声明为Neighbor类型,数组的容量是 maxNodes + maxGrowth。
- 2、Tracker将所有的Node加入neighbor列表中(addNeighbor(Node neighbor))。
其次,初始化Node节点,进入NodeInitializer.java的init.inital(Network.get(i))方法。
- 1、将Tracker设为本节点的tracker。
- 2、设置节点id。
- 3、setFileStatus(),设置本节点获取的文件状态(随机)。
- 4、setBandwidth(),设置本节点的带宽。
随后,遍历每个Node添加基础事件。
- 1、获取与Tracker之间的时延;
- 2、将SimpleMsg添加进事件调度器;
- 3、将CHOKE_TIME、OPTUNCHK_TIME、ANTISNUB_TIME、CHECKALIVE