拓扑发现核心算法执行完毕以后,拓扑数据就可以获得,这些数据需要以一定 的形式存储于拓扑数据库卩刀中.拓扑发现的过程将网络抽象为图模型,但是图是一 非线性结构,本身不能作为一个整体存储,可以用两个dbf文件来分别表示.其中 vertex.dbf用于存储顶点信息,一个顶点是一条记录,字段可有顶点名称、顶点类 型和顶点的度,arcptr.dbf用于存贮每一条弧的信息,有向图中每条弧作为库中一条 记录,字段可有弧头、弧尾名称和权值.本文设计了两张数据表来存储拓扑数据, vertex.dbf和arcptr.dbf的库结构如下,
Structure for database:
Number of data records:
Data of last update:
Field |
Field Name |
Type |
Width |
1 |
archead |
Numeric |
5 |
2 |
style |
Character |
10 |
3 |
degree |
Numeric |
5 |
其中archead表示顶点ID, style表示顶点类型,degree表示顶点的度.
Structure fbr database;
Number of data records:
Data of last update: _______________
Field |
Field Name |
Type |
Width |
1 |
archead |
Numeric |
5 |
2 |
arctail |
Numeric |
5 |
3 |
weight |
Numeric |
5 |
其中字段archead, arctail和weight分别代表弧头、弧尾的ID和权值.
3.5.2拓扑数据存储方式
根据拓扑数据库的内容,可以确定拓扑数据的存储方式.数据存储的步骤为:
(1) 首先査询vertex.dbf,找出网络上的各个路由器并记录它们的archead,再 査询arcptr.dbf,找到这些路由器之间的物理连接关系,并将它们的互连关系存储在 邻接矩阵中.
(2) 构造邻接矩阵.当网络中存在n个路由器时,构造nxn阶矩阵An,.,元素
"对应于第i个路由器到第j个路由器之间的依赖值.若两个路由器之间没有连接, 则對取o. / I I I ■ vZ vx I I
(3) 确定每条边的“权二它对应于两个直接物理相连设备之间的依赖关系, 需要实时采集。
(4) 接着继续査询vertex.dbf,找出每个路由器连接的自治域内的交换机及主 机设•备等链路层设备,并査询arcptr.dbf,找到这些设备之间的物理连接关系,并将 它们的互连关系存储在邻接矩阵中・
(5) 构造邻接矩阵。当网络中存在n个链路层设备时,构造nw阶矩阵A0-tt , 元素/对应于第i个设备到第j个设备的依赖值.若两个设备之间没有连接,则/ 取0。
3.5.3创建关联关系
关联关系是根据拓扑数据库中的信息,建立的网络设备之间的依赖关系.通过 关联关系的创建,网络拓扑变成一个有向图,图中的有向边代表网络设备之间的依 赖关系.根据有向图的特征,存储顶点信息的vertex.dbf文件库结构中结点度变为 结点的出度和入度,这样就可以更直观的了解各结点的属性。vertex.dbf的库结构如 T:
Structure for database:
Number of data records:
在故障定位阶段,需要同时对每一个结点的前一个结点和后一个结点进行査 找,因此需要将设备之间的关联关系用一疋的形式存储.十字燄表是有向图的J种 链式存储结构,是将有向图的邻接表和逆邻接表结合起来的一种链表,恰好符合査 找的需要,因此采用十字链表存储网络拓扑的关联关系有向图.在十字链表中,头 结点和链结点的存储结构如表3-
其中链结点结构由五个域组成,具体表示为:
(1) tail和head分别是弧的尾结点j和头结点k;
(2) weight域是弧的权值;
(3) hlink域链接的是以k为头的另一条弧;
(4) tlink域链接的是以j为尾的另一条弧.
hlink indegree tlink hlink outdegree tlink
其中头结点结构由三个域构成,具体表示为:
(1)indegree和outdegree表示结点的入度和出度;
<2) hlink域链接的是以k为头的另一条弧;
(3) tlink域链接的是以j为尾的另一条弧。
参考:http://cdmd.cnki.com.cn/Article/CDMD-10079-2008073368.htm