船载交换式网络使用双冗余网卡对网络性能的影响
2009-03-13
作者:朱严峰 李 峭 熊华钢1 顾
摘 要: 通过局域网技术互连各子系统,可大幅提高整个系统的信息综合与共享的程度。为保证整个系统的可靠性,通常采用冗余连接。探讨了在交换式环境下使用双冗余网卡提高系统可靠性的机理,以及由此对网络性能产生的影响,给出了一种估算网络开销的方法。
信息战作为一种新的战争模式,已成为影响舰艇作战能力提高的推动因素。在目前水面舰艇现代化过程中,人们往往偏重于电子武器设备硬件水平的提高,而忽略了对信息利用程度、资源共享角度的考虑。随着舰船等机动平台上电子设备越来越多,并且越来越复杂,将电子设备有效地综合,使之达到资源和功能共享已成为必然的要求。目前基于计算机局域网的信息共享技术完全成熟,将各舰载系统互连,能够满足上述要求。
机动平台上的联网技术不同于一般的局域网技术,它特别强调网络的可靠性与实时性。为了保证系统的可靠性,通常都采用冗余连接,即每个节点采用双网卡进行故障冗余切换,各个节点分别连接到两台交换机(其中一台交换机作为另一台的热备份),交换机之间通过级联线相接。在双冗余网卡中,主NIC(网卡)监视网络链接是否正常,而由运行在NIC上的专用驱动软件监视NIC的状态。如果由于交换机、线缆或NIC出现故障而导致链路失效,软件自动把MAC地址和所有的连接从主NIC转到备用NIC,并把这个备用NIC输出信流广播出去,通过另一台交换机重建连路,使得会话继续进行下去。在试验中发现,主NIC会定期发送心跳信号,用以确定主链路是否正常,这势必造成网络带宽的消耗,影响原网络的性能。因此,对网络性能有特殊要求的用户而言,必须确定这部分系统开销所占的比例。本文首先介绍SNMP简单网络管理协议,并在此基础上给出一种确定双冗余网卡系统开销比的方法。
1 SNMP简单网络管理协议简介
1.1 SNMP的工作原理
SNMP(简单网络管理协议)是目前在计算机网络中使用最广泛的网络管理协议,该协议是基于TCP/IP的网管标准,包括协议自身、数据库的定义和相关概念。SNMP采用的是客户/服务器模型,它分别对应管理者和代理。要使这种管理者/代理模式能够正常工作,管理者和代理必须使用相同的语言(协议)。图1显示了SNMP代理、MIB和管理者之间的关系。管理者是在管理系统中的一个软件模块,它需为用户提供一个友好界面,用以方便、直观地完成网络管理的各种应用。代理是一个在被管理的网络设备上运行的软件,在设备出厂时就已经烧制在设备上,它负责维护本地的管理信息以及通过SNMP向管理者发送相关信息。MIB(管理信息库)存放了该设备被管理网络资源的所有信息。
SNMP 使用UDP(用户数据报协议)作为第四层传输协议,管理者与代理之间以SNMP报文的形式交换信息,管理信息的交换可以由管理者以查询的方式进行或由代理发送Trap报文方式进行。SNMP有五种消息类型:
(1)Get-Request:SNMP管理者使用该消息从具有SNMP代理的网络设备中获取信息;
(2)Get-Response:SNMP代理以该消息作为对Get-Request消息的响应;
(3)Get-Next-Request:该消息用于请求表中下一个对象的值,与Get-Request结合使用可以获得表中的对象;
(4)Set-Request:管理者使用该消息对所管理的网络设备的参数进行远程配置;
(5)Trap:SNMP代理使用该消息通知管理者某些重要的事件。
在SNMPv2中,还增加了Get-Bulk-Request消息,主要用于检索大批的管理信息。
1.2 SNMP协议数据单元(PDU)的格式
在SNMP中,信息按照SNMP消息的形式在管理者与代理之间交换,每个消息包括一个指明SNMP版本的版本号,一个用于安全性的团体字,以及下面五种PDU中的一种。图2描述了SNMP的格式。
1.3 SNMP的管理信息库(MIB)
管理信息库是基于TCP/IP的网络管理系统的基础,每一个被管的资源由一个对象所代表,MIB就是由这样一些对象组成的结构化的集合。网络系统中的每个节点都包括一个MIB,它反映了该节点中被管资源的状态,网管实体可以通过读取MIB中的对象值来监视网络资源,也可通过更改这些值来控制资源。
在RFC1155中定义的SMI(管理信息结构),给出了定义MIB结构的总体框架。在这个框架下,可以进行MIB的定义和构造。SMI定义了用于MIB中的数据类型以及MIB中资源的描述和命名。由于SMI的基本原则是鼓励MIB的简单性和可扩展性,因此,MIB只存储两种简单的数据类型:标量和二维标量数组。SNMP协议只能检索标量对象实例和一个表中的单个对象实例。SMI不支持创建或检索复杂数据结构。
MIB是以树状结构组织的,每个节点包含两个内容:一个OID(对象标识符)和一个简短的文本描述。在MIB中,每个对象都有唯一的OID,它是从MIB树的根开始到此对象所对应的节点沿途路径上所有节点的数字标识,中间以“.”间隔而成。在MIB中主要有以下对象类型:
(1)NetworkAddress:从许多协议簇中选择出的一种地址格式;
(2)IpAddress:IP协议中定义的一种32比特的地址格式;
(3)Counter: 非负整数,只增不减,到达最大值后从零开始重新计算;
(4)Gauge: 非负整数,可以增加,也可减少,到达最大值后,它就保持在最大值,直至被复位;
(5)TimeTicks: 非负整数,它以百分之一秒为单位计算从某个时间点开始所经历的时间。
1.4 Windows下实现SNMP编程的方法
在Windows下,主要有两种方法可以用于SNMP编程:
(1)利用WinSNMP API函数
WinSNMP是为SNMP网管开发者提供的必须遵循的开放式单一接口规范,它定义了过程调用、数据类型、数据结构和相关的语法,以函数的形式封装了SNMP协议的各部分,并针对SNMP使用UDP的特点设置了消息重传、超时机制。
(2)利用SNMP++函数
SNMP++是HP公司为在Windows、UNIX平台下开发基于SNMP网管应用程序而提供的技术文档,采用面向对象的方法将WinSNMP的API函数封装成一个个C++类,大大简化了SNMP网管软件开发的难度、复杂性。本文采用的就是这种方法。
2 设计思路
在共享式局域网中,可以通过在网络中插入网络分析仪,便可对整个网络的通信情况有全面的了解,包括对以太网数据帧的提取。在交换式环境下,无法采用这种方法。因此,虽然前面提到过,在试验中通过其它方式获得了心跳信号的数据内容,但仍无法给出这种开销相对于有用数据传输所占比例的量的范围。在交换式网络中,无法直接获取这种开销的大小,但可以通过访问交换机的MIB库,获取每个端口的流量。如果再确知每个节点的实际传输数据,便可利用下式,间接地得到相对开销比:
图3给出了整个网络的连接情况,每个节点与交换机之间采用双冗余连接,即节点通过双冗余网卡分别与两台交换机相连,其中一条链路为主通路,交换机之间通过级联线相连。下面分别从控制台和通信节点两方面详述设计过程。
2.1 控制台程序
控制台程序是整个设计方案的关键,除了要求有友好的用户界面外,还应完成以下功能:
(1)提供由用户手工输入通信节点的接口,在接口需指定通信节点的IP地址和所连交换机的端口号;
(2)为每个通信节点提供一套网络通信方案。在通信方案中指定连接在交换机上的通信节点之间的通信内容(点对点、多播、广播)以及通信流量。所谓通信流量是指各通信节点发送的报文的长度以及循环发送的周期。这个流量是通信中的实际有用数据;
(3)控制台程序通过约定的套接字将通信方案发送给每个通信节点,同时等待各通信节点对所接收数据的反馈信息;
(4)在确知所有通信节点均加载正确的通信方案后,通过专门的信令套接字口,向各个节点计算机发布启动/停止发送的指令;
(5)各通信节点定期向控制台提供通信信息,该信息反映在两次时间间隔内此节点有用数据流量。控制台程序在获知此信息后,通过访问交换机MIB库,得到该节点当前时间间隔内的总流量,利用公式(1)可大致估计双冗余网卡当前的相对开销比。
2.2 通信节点程序
作为模拟负载,通信节点应当能够在控制台的控制下,按照各自的通信方案,与其它通信节点进行信息传输。通信方案由用户设定,在实际通信前由控制台发送给各通信节点,其内容对于双方应当是互解释的。作为一个网络应用程序,通信节点程序需要在指定的套接字口接收控制台发布的启动/停止指令,以决定当前该节点是否进行网络通信;同时分别在单播、多播、广播套接字口上按照通信方案所定义的通信内容发送和接收数据;在通信开始后,定期向控制台汇报当前时间间隔内该节点的有用数据流量。为了给用户一个良好的接口,在通信过程中,通信节点程序应能直观地反映该节点
参加的通信中信源/信宿的IP地址、传输的总流量。
上述过程的图形化解释见图4。通过这种方法,可以估算双冗余网卡系统开销的大致范围是2%~5%,并且可以根据节点的流量自适应,基本满足系统的性能要求。
随着水面舰艇现代化程度的提高,利用联网技术,将电子设备加以有效地综合,使之达到资源和功能的共享已成为必然的要求。利用现有的局域网信息共享技术,可以完全满足上述要求。为提高整个系统的可靠性,通常的做法是对原系统增加一热备份,在交换式网络环境中,通过在各节点配置双冗余网卡,分别与两台相互级联的交换机相连。但在提高系统可靠性的同时,所付出的代价是网络带宽的消耗。
参考文献
1 蒋东兴.Windows Sockets网络程序设计大全.北京:清华大 学出版社,1999
2 岑贤道,安常青.网络管理协议及应用开发.北京:清华大学出版社,1998
3 杨家海,任宪坤,王沛瑜.网络管理原理与实现技术.北京:清华大学出版社,2000