路由模拟系统 类关系总图
(本文档为草稿)
2004-3-2
说明:本文档中所有类的构造函数与析构函数省略说明。
路由模拟系统类图:
关于网络的生成
网络的生成,主要是由类Net和NetNode完成的。如下面的一个网络:
图中A、B、C、D都是路由器,由光纤连接。生成这个网络,需要如下两步:
1, 对于拓扑结构,由矩阵作为参数:
A B C D
A 1 1 1 0
B 1 1 1 0 =NetArray。
C 1 1 1 1
D 0 0 1 1
2, 对于物理结构,耗散信息由作为参数:
A B C D
A 0 5 4 -1
B 5 0 6 -1 =ValArray。
C 4 6 0 2
D -1 -1 2 0
另外需要两个向量,其一是“路由器类型向量”,上图中网络为:
R=(ra,rb,rc,rd),其中ra,rb,rc,rd都是“中心路由器”。
另一个向量是“网络线路类型向量”,上图中网络为:
L=(lab,lac,lbc,lcd),其中lab,lac,lbc,lcd都是“光纤”。
所以,在建立网络的步骤中,路由模拟系统与通信模拟的参数传递为:
NetArray,ValArray,R,L 。
建成的网络,将使用邻接表来存储。
那么,网络设备的基类在类图中有NetElement,AbsLine,AbsRout,任意复杂的网络可试图在此基础上继承创建。而我们在本系统中只模拟主干网络的路由,故另继承而得两个类Fiber,CentralRout。系统要维护一个网络设备类型表:NetElementType。
则网络生成器的类图为:
关于网络数据包(数据结构)与路由表
2004-3-3
1, 网络数据包的设计完全按照IP协议,使用IP数据包。在路由器中有数据包的队列,来模拟路由器的端口,该数据结构使用STL::list来完成。
2, 路由表的设计,单独使用一个数据结构Table。
可见于路由模拟系统的类图。
关于路由器
路由器的类型不同,一些表现为:
1, 路由器性能参数。
2, 路由器端口的组织形式。
3, 路由器的服务接口。
故AbsRout只是个纯虚类,不同的路由器可以继承实现。路由表是由路由器计算填入的,并完成其维护。路由计算与路由器本身的实现是分离的。路由计算的实现可单独调试。拥塞与数据包丢失等处理方案还要再讨论。
NetWriteData与NetReadData都是与通信模拟系统的接口,供其向路由器端口读取或写入数据包。
准备的思路为:
数据包的传输过程中,以某种概率丢失;而成功接收数据包的路由器,需要返回应答消息。数据包应在网络通信模拟中丢失,而路由器可以检测到所发送的数据包是否成功到达下一个路由器。计算由路由器来完成,但实现的时候与路由模拟系统分离。
总的来说,路由模拟与通信模拟有如下接口:
1 创建网络的时候,Net通过GetNetinfor来获得通信模拟系统提供的NetArray,
ValArray,R,L。
2 数据包传输过程中,通信模拟系统通过CentralRout的NetWriteData与NetReadData完成数据包的写与读。
更为详细的接口说明见于接口说明文档。
< 完 >