路由器是城域网、广域网和互联网上的基本设备,它连接分布在一定地域范围内的计算机远程网络,并依据OSI参考模型第三层的IP地址来对数据包进行转发。IP技术的简单、开放和轻易扩展的特性,使它在互联网和宽带网建设领域得到了广泛的应用,这又相应地促进了IP技术的发展。但实际上,由于城域网、广域网也是在局域网的基础上发展起来的,现有的路由器生产厂商还是保留了原来连接局域网的桥接技术,而且桥接技术在一定的范围内可以根据具体情况因地制宜灵活地进行部署,满足用户上层应用的具体需求,所以桥接技术仍有存在的意义。下面就是先在Cisco 2610路由器上配置IP碰到困难后,采用透明桥接方式解决问题的实例。
直接配置IP失败
笔者所在的电力调度部门依靠能量治理系统EMS控制电网的运行,在发生事故的情况下,需要给调度员在远方提供一个备用的 EMS工作站,防止因火灾等意外事件导致调度瘫痪、电网解列的严重后果,保证电网的安全、经济、优质运行。远程备用工作站位于中心调度三公里之外,距离较长。方案决定两端用Cisco2610路由器连接,中间采用2M带宽的线路。这个构建的小型网间网结构如图。
路由器的计划配置为:型号选择Cisco 2610;一个10M以太网模块NM-1E;一个支持2M带宽的广域网模块WIC-1T。出于一般的习惯,路由的协议采用IP,不料这却使我们走了一段弯路。
我们配置的路由器A的局域网IP地址与内部C类网络地址一致:192.1.1.254,Mask 255.255.255.0,连接到调度自动化EMS主系统的Cisco 5500交换机上;广域网接口模块的IP网络地址为A类子网地址:10.0.1.1,Mask 255.255.255.252。同样,路由器B的局域网IP地址为192.1.2.254,Mask 255.255.255.0,直接连接自动化工作站;广域网接口模块的IP网络地址为10.0.1.2,Mask 255.255.255.252。配置之后,在路由器上使用Show ip route命令,可以察看路由表,使用Ping命令均可Ping通路由器间的各个端口。
此时我们以为大功告成了,在服务器和远程工作站上添加了相应的静态路由,但在远程工作站上启动系统时却出了问题。程序不停提示网络连接错误,不能从服务器上下载数据表到本地的共享内存,系统启动失败。
透明桥接实现广播
难道程序不支持TCP/IP协议么?我们感到迷惑不解。在具体地查找了系统的技术资料和向厂家技术咨询后,才知道程序虽然支持TCP/IP协议,但还有些内部进程是通过广播来传送数据包的,不能被路由。怎样通过路由器传送广播数据包呢?透明桥接此时就派上了用场。
“桥接”,是指依据OSI网络模型的链路层的地址,对网络数据包进行转发的过程。当路由器配置了桥接选项后,会处理所有接口上的所有的数据帧,并实时调查每个主机的位置。若在某个接口上收入一个帧,就会在一个桥接内置入一个条目,列出发送数据的主机和接收到数据帧的接口MAC地址,这样路由表就被不断地在通信中完善起来。透明桥接使路由器对主机来讲是透明的,其作用就相当于一个局域网交换机。若是同一个LAN内的两个主机通信,数据帧就不会被发送到其它的接口,因为在桥接表里,数据帧都来自相同的接口;若是收到一个帧,而其中的MAC地址不在自己的桥接表里,就会将这个帧扩散到所有的接口,桥接还会扩散所有的广播包,占用网络的有效带宽,造成网络的堵塞。我们知道,Cisco IOS支持多种类型的桥接,比如:透明桥接、封装桥接、源路由桥接、源路由透明桥接、源路由转换桥接。
而运行透明桥接的Cisco路由器,使用“生成树协议”(Spanning Tree Protocol)可以很好地避免桥接引起的广播风暴。生成树协议通过“桥接协议数据单元”(Bridge Protocol Data Units)定义了网络上各个桥接的通信形式,其逻辑结构就像一棵树,每个桥接就是这棵树的一个分支,拥有自己的路径值、Bridge Id和优先级。优先级最低的桥接作为根,假如优先级相同,则选择桥接ID最低的那个桥接。数据包就通过根桥接与其他桥接形成的路径进行传送,最高层的桥接就将封锁接口,只接收BPDU数据包,这样就有效地解决了广播扩散的问题。明白了生成树的道理,我们就可以有的放矢,重新配置路由器的命令如下:
DispatchA#config terminal
!选择IEEE STP生成树协议。
DispatchA(config)#bridge 1 protocol ieee
!选择主调度端的路由器作为根桥接。
DispatchA(config)#bridge 1 priority 0
DispatchA(config)#interface ethernet0/0
DispatchA(config-if)#bridge-group 1
DispatchA(config-if)#interface serial0/0
DispatchA(config-if)#bridge-group 1
DispatchA(config-if)#
在备用调度端的路由器,除了不设置优先级,其余配置同上。
经过上述的工作后,远程工作站和本地网络上的主机可以毫无障碍地连接,路由器的配置也相对简化。再把服务器端的数据库接口程序发布延时适当加长,现在远程工作站上的程序启动一切正常,实时信息的刷新虽然相对较慢,但是仍能满足应用的要求。以上的实例说明桥接技术虽然有它的局限性,但它仍然是解决一些具体的实际问题的有效的方法和手段。网络技术虽然在不断地发展,在我们追踪新技术的同时,不要忽视了老技术仍然会在某些地方会给我们喜出望外的的帮助。