预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于VxWorks生成树协议的实现 0引言 生成树协议的英文全称是SpanningTreeProtocol,简称STP,在IEEE802.1D介质访问控制网桥标准(MediaAccessControlBridges)中有比较 完整的介绍说明。简单地说STP就是用于解决网络环路问题的一种智能算法。在交换网络的可靠性设计中,希望通过在各交换节点之间构建多条 物理链路来提供冗余,这样就可以充分利用现有的资源提高整个网络的可靠性。在局域网中,简单的物理冗余会造成回路,若无正确的备份策 略,将形成广播风暴而影响整个网络性能,严重情况下甚至会造成整个网络的瘫痪。基于图论的生成树算法就是通过禁止多余的链路将环路结构转 换为逻辑上的树形拓扑结构,这样保证互连的网络中任意节点到其他所有节点均有唯一的路径,而且是最优路径,以止由此产生的局域网广播风 暴。同时,生成树协议负责监测拓扑结构的变化,并能在拓扑结构发生变化之后重构新的生成树拓扑结构。例如当一个交换机发生故障或某一条数 据通路断开,生成树协议将启动备份链路,重新构建生成树的拓扑结构,实现网络容错功能。 简单来讲,生成树协议就是通过交换机间互相交换BPDU(BridgeProtocolDataUnits)包,实现在整个局域网中构建一个无环路的逻辑交换拓扑结 构。它首先通过生成树算法选举一个交换机作为根交换机,然后通过计算网络中各个交换机到达根交换机的路径开销,选择各交换节点到达根交换 机的最优路径,同时阻断其他的次优路径(即冗余链路)而形成逻辑上无环路的树形拓扑结构;一旦网络发生链路或交换机故障,交换机之间相互 发送控制信息(拓扑变化通知BPDU包)重新构建协议信息,再次形成无环路的交换拓扑结构。然后各交换机就在此拓扑结构上高速转发数据包。 Vxworks嵌入式操作系统是一种实时的操作系统,具有很好性能的内核及良好的开发环境,在嵌入式领域占有很重要的地位。Vxworks嵌入式操 作系统包括微内核WIND、TCP/IP网络支持、强大的文件系统和I/O功能,VxWorks操作系统提供的标准函数库等核心功能。在VxWorks中的网络 支持中,提供MUX层,方便用户添加自己的协议。本文中就是使用MUX层添加STP协议。 1VxWorks网络驱动修改与协议添加 1.1MUX接口 在传统的嵌入式系统中底层网络驱动和协议是紧密相关的。当协议改变时,网络驱动也要进行修改。这给系统的开发和维护增加了很多的难度。 在VxWorks中,WINDRIVER提供了一个MUX层。MUX层的特点是:它可以完全屏蔽嵌入式系统的底层网络驱动和上层协议的关联,使网络驱动 程序和协议之间没有内部交换数据,它们只能通过MUX间接相互作用。展示了协议、MUX、网络驱动之间的关系。由此可以看出MUX的目的是 分解协议和网络驱动,从而使它们几乎独立彼此。这种使增加新的网络驱动和协议变得简单。如想添加一个新的END(网络驱动),所以现有基 于MUX的协议可使用新的网络驱动。相同的,如想增加一个新的基于MUX的协议,任何现有的END均可通过MUX来访问新的协议。 MUX是数据链路层和协议之间的接口。不过MUX并不是一个新的层。在两台主机之间并不存在所谓的MUX层协议来实现通信。MUX接口只关心 自身与所在协议栈的协议层和数据链路层之间的标准的通信。由于MUX接口的存在,协议和网络驱动程序无需了解相互之间的内部机制。 1.2协议层与MUX接口 协议或服务程序可以通过调用函数muxBind()或着muxTkBind()来实现与MUX接口通信。这些函数将协议或服务通过MUX接口绑定一个网络驱动 程序。在绑定的动用中,网络协议或服务程序提供其函数指针给MUX接口,使得MUX可以进行: -关闭服务程序; -传送一条错误信息给服务程序; -传送一个数据报信息给服务程序; -重启服务程序。 当协议或服务程序已经通过MUX接口绑定了驱动程序,则可以调用MUX支持的函数muxSend()或者muxTkSend()传送数据报,也可以调用其他 的函数请求MUX服务。比如在STP中用到函数muxIoctl()获取驱动设备的MAC地址和给驱动设备添加多播地址等。 1.3数据链路层与MUX接口 当设备添加到MUX接口时,调用函数muxDevLoad()来实现。在endDevTbl[]中命名了驱动装载函数,网络初始化代码会自动网络初始化代码自动 完成上述的设备添加。协议栈初始化代码将会使用命名的网络驱动程序装载函数作为函数muxDevLoad()的输入参数。 在程序中,驱动程序装载函数必须分配数据结构END_OBJ和NET_FUNCS。数据结构END_OBJ为MUX接口提供了对设备的描