基于配置与用户管理、安全管理等数据结合,对局域网进行远程管理的
交换机。有管理方案,管理程序。还需要进行集中维护。
管理方案
概述
以51Flash单片机为控制器对交换机进行远程管理的软硬件实现方案。该方案以廉价的51单片机为处理核心,管理程序存储在单片机内置的Flash中,外接小容量的SRAM缓冲数据,通过交换机固有的以太网接口实现带内网管。管理界面采用Web/Browser方式,用户通过Web浏览器查询交换机的状态,并实施配置控制,比如,查询端口的统计数据,配置交换机的VLAN,QOS,Trunking,及对端口进行启/闭控制等。经过用户的实际使用,证明该方案是一款高性价比的交换机远程管理实现方案。
硬件结构
本方案采用低电压、内置64KBFl程序存储器、主频高达40MHz的Winbond80C51兼容型单片机W78LE516作为控制器,其大多数指令的执行都能在3个机器周期完成。单片机外接32KB的SRAM作为管理帧缓冲器。另外,为了调试需要,系统还配置了一个串行控制口,将单片机的P3.0、P3.1接到RS232串口收发器上,选择单片机的Tier1作为串口的
时钟发生器。交换机的主交换处理器采用Broadcom公司的BCM53x8M芯片,其内置的PHY收发器使系统实现非常简洁、灵活,高带宽的扩展能力方便了从8口到24口的系统实现,更为重要的是,它集成了SMP(SerialManagementPort)管理模式,通过SPI(SerialPeripheralInterface)物理接口访问管理帧,这就使控制处理器不仅能够直接配置和控制交换芯片,还能使控制处理器通过SPI接口与交换结点(连接交换机的主机)进行信息交换,实现对交换机的带内管理。
软件结构
本方案将管理功能分为三个模块实现:SPI接口、网络协议处理、类CGI的交换机控制。
SPI接口模块实现控制处理器与交换芯片间的信息交换。BCM53x8M交换芯片的SPI接口是标准
SPI接口的子集,物理上共有SCK,SS#,MISO,MOSI四根信号线,单片机通过P1接口连接交换芯片的
SPI接口。SPI提供读/写/快速读/快速写四种事务处理模式,普通读/写操作一般只对单个寄存器进行,而快速读/快速写可在一次事务中访问多个(最多8个)连续地址的寄存器,提高了传输带宽。通过SPI,单片机能够读/写交换芯片的内部寄存器,并进而访问缓冲在交换芯片存储器中的管理帧。网络协议处理模块主要处理各种必须的
协议数据单元(PDU)。当一个管理帧到达后,网络协议处理模块首先检验帧的正确性,然后根据帧的内容将接收到的数据报分发到不同的协议处理例程。这些例程再根据数据报的具体内容进行相应的处理。。网络协议处理模块包含的主要协议处理例程有:ARP(地址解析协议)例程,PING(IP控制报文)例程,TCP/IP(控制传输协议)例程,以及HTTP(
超文本传输协议)例程。根据本方案中实际的需要,考虑到Flash
程序存储器的容量,以及单片机的处理能力,对以上这些网络协议进行了适当的裁剪。类CGI的交换机控制模块是实际控制交换机工作的部分,该模块以管理者指令为输入,将管理指令转换为交换机的控制逻辑。管理者的指令经过网络协议模块处理后,由类CGI模块解析其合法性,再形成交换机的目标配置,目标配置通过SPI接口读写交换芯片。
功能及实现途径
控制单片机与交换芯片间的连接通过SPI接口,这是一种简单的接口协议,数据通过主设备产生的时钟串行输入/输出,不同交换芯片以片选信号来选通。
单片机以一个个事务的形式访问交换芯片,每一次事务开始时,首先发送读/写/快速读控制命令,然后发送读/写操作的寄存器号,最后读入数据,或者向交换芯片写数据。管理帧的操作也不例外。BCM53x8M设置了连续的8个8bit寄存器用作访问管理帧的窗口,当读/写完全部8个寄存器后,芯片自动重新装入下一组8个字节,或将8个字节写入缓冲区中,直到完整的一帧数据操作结束。SPI接口只能进行轮询式的访问,无法实现中断。
单片机在SRAM中开辟了一个24KB的缓冲区,用于存储完整的一帧数据报,从SPI读入的报文,或将要输出的报文都缓冲在这个固定大小的存储区中,避免数据的拷贝。通过SPI访问的以太网帧比
IEEE802.3标准的帧增加了10个字节,用以标识帧的类型,帧的来源或出口,以及4个字节的附加帧校验。附加的帧校验将附加的字节计算在内,采用FCS-32校验多项式。在本方案中,当接收到一帧管理报文并经过校验后,还要将这些附加字节进行脱帧处理。在接收到的以太网帧中还能获取发送者的MAC地址,如果报文需要应答,这就是应答报文的目的地址。因此,在实现ARP地址解析时,我们裁剪了ARP地址解析的请求部分—既控制程序从来不发送APR地址解析请求,只应答交换结点发出的ARP请求。通常,IP报文完成数据报在网络上的各个子网间传播的寻路功能,IP报是TCP报文的载体。对本方案来讲,IP报文的解析方式相对比较单一,我们比较关心的字段是访问者的IP地址,报文长度及协议类型。IP报文提供远程管理者的IP地址,通过设置管理者地址,可将访问者的IP地址作为验证管理员身份的一种方式。
管理程序
基于Socket实现Telnet的远程交换机管理程序
工作原理
交换机(Telnet服务器)运行Telnet守护进程,等待运行在管理员机上的交换机管理进程(客户端)的请求.管理员远程登录请求服务器的服务,守护进程接收到请求后,派生出子进程、仿真终端(伪终端)与管理员Telnet进程交互.管理员输入账号和口令进行远程登录,如果登录成功,管理员在键盘上输入的每一个字符都传到远程主机服务器上.管理员输入配置交换机的终端命令,子进程接收命令,将用户输入的命令传给交换机操作系统进行处理,并将处理结果传给用户进程,用户进程将结果显示在管理员屏幕上.
利用Socket编程实现Telnet控制交换机
Socket的工作原理
Socket(套接字)是建立在传输层协议(主要是TCP和UDP)上的一种规范,它定义了一种网络上跨平台的应用程序进程间的通信规范(也是一种编程规范).有一个抽象的“通道”,这个“通道”的两端就是两个Socket.Socket为进程提供了通讯接口,它对进程屏蔽了底层通信软件和具体操作系统的差异,进程在网络上传输和接收数据都通过这个Socket接口来实现.Socket用一个五元组表征:(协议,本地IP,本地端口,远程IP,远程端口),进程只需关心协议、远程IP、远程端口.在应用程序开发中,可以像使用文件句柄一样,直接对Socket进行读写操作,就能达这里以Delphi为例,程序中需要用到Internet控件组的ClientSocket组件.ClientSocket组件有两个重要属性:Port和Address,它们决定通信的协议性质和服务器.通过对Port和Address赋值,再启动控件的连接、收发方法,就能实现相应的网络通信.Telnet服务进程的默认端口是23,若把Port的值赋为23,ClientSocket组件向服务器提交的就是Telnet请求、命令.因为程序本身只用于远程控制交换机,所以,不需要ServerSocket控件.
远程控制交换机程序的关键实现代码
Telnet远程交换机程序关键功能有:请求或断开Telnet连接、向交换机发送字串(终端命令、账号和口令)、接收交换机发来的字串并显示.下面以用Delphi实现为例,介绍这些关键功能的实现代码,而非实用程序的概貌.首先,在DelphiIDE建立项目,然后新建一个Form,在Form上添加控件.请求Telnet连接交换机
procedureTForm1.btn_connClick(Sender:TObject);
begin
∥设置socket控件属性前先断开连接clientsocket1.Active:=false;
∥指定要Telnet交换机的IP
clientsocket1.Address:=trim(edt_ip.Text);
∥Telnet端口号为23
clientsocket1.Port:=strtoint(edt_port.text);
∥开始连接,连接成功与否应做判断,但这里不再列出判断及处理代码
clientsocket1.Active:=true;
end;
断开Telnet连接
procedureTForm1.btn_disconnClick(Sender:TObject);
begin
∥断开Telnet连接
clientsocket1.Active:=false;
end;
向交换机发送字串
procedureTForm1.btn_sendClick(Sender:TObject);
begin
iflength(trim(edt_send.text))=0then
∥如果文本框为空,发送空格clientsocket1.socket.SendText(#32)
else
∥否则,发送文本框内容,并加发回车键clientsocket1.socket.SendText(trim(edt_send.
text)+#13);
end;
接收交换机发来的字串并显示
procedureTForm1.ClientSocket1Read(Sender:TObject;Socket:TCustomWinSocket);
Begin
∥从接收缓冲区读出内容,在memo1显示memo1.Lines.add(clientsocket1.Socket.
ReceiveText);end;
用户数据与交换机远程管理结合
用户数据与交换机远程管理结合的原理是:建立交换机端口表、楼幢信息插座表、楼幢房间表、用户信息表,确立交换机端口、楼幢信息插座、楼幢房间、用户之间的映射关系.当用户需要开户、停用或改变服务档次等时,系统通过上述表和映射关系,找到用户对应的交换机端口(或VLAN),然后针对此端口进行远程设置.管理员只需要修改用户的信息,就能激发系统自动去修改交换机配置.这样,就不用面向交换机层次而是管理信息层次进行工作.下面举一个实现开启/关闭用户上网端口的例子.设用户对应的交换机管理IP是192.168.1.55、端口是0槽11口,实现代码是:
∥Telnet连接192.168.1.55
clientsocket1.Active:=false;
clientsocket1.Address:=‘192.168.1.55’;clientsocket1.Port:=23;
clientsocket1.Active:=true;
∥Telnet登录
clientsocket1.socket.SendText(用户账号+#13);clientsocket1.socket.SendText(口令+#13);∥进入配置级别
clientsocket1.socket.SendText(’system’+#13);∥开启/关闭用户上网端口
clientsocket1.socket.SendText(’interfaceethernet0/11’+#13);
clientsocket1.socket.SendText(’undoshutdown’
(或clientsocket1.socket.SendText(’shutdown’+#13);)
∥断开Telnet连接
clientsocket1.Active:=false;
上述代码为讨论方便,交换机IP和端口直接使用了常量.实际编程中,应是用变量在数据库中读出相应的IP和端口值,再套入clientsocket控件的socket.sendtext方法中才行.
程序主要设计构想
交换机远程控制程序设计从以下几点着手:
(1)程序主要采用服务器/客户(server/client)
的模式,以事件驱动方式运行;
(2)服务器和客户端的连接基于TCP/IP协议;
(3)服务器端程序响应客户端的连接请求并接收其发送的指令,实现对交换机的操作;
(4)通过设置定时器定时将交换机的响应发回到客户端,并在客户端的终端上显示;
(5)为了实现对交换机操作的安全控制,服务器端要设置客户合法性验证,并记录所有连接日志
和对交换机的操作;
(6)程序应包含普通终端的常用功能(如输入指令缓存区、功能键的设置、历史记录的存档、日志
等)。
程序的具体实现
编写TCP/IP通信程序需要采用Winsock编程,可以通过调用WinsockAPIs来实现,很多程序设计语言都可以做到。现介绍一种最简单的设计方法,即采用VB中的
Winsock控件。该控件提供了访问TCP和UDP网络服务的方便途径。通过设置控件的属性并调用其方法就可轻易连接到一台远程计算机上,并且还可双向交换数据。关于该控件具体的属性、方法和事件可以参照相关的开发手册。熟悉了上述Winsock控件后,再结合MSComm控件,按照上述的设计流程,就可以设计出远程控制终端的具体程序了。在具体设计过程中,还要注意考虑以下问题:
(1)对于连接出错的处理(包括与交换机的连接和TCP网络连接)。可以针对出错类型和代码写出相应的出错处理程序。
(2)设置侦听端口时要注意端口号的范围,避免使用一些熟知端口,例如:80是用于HTTP、21是用于FTP等。建议使用2000以上的端口号,避开冲突。
(3)在服务器端,如果是无人值守机房,要考虑程序的关闭保护,确保程序始终处于正常的侦听状态。如果有必要可以设置成服务器端程序不能被关闭。
(4)在服务器端可以设置多种安全保护措施,如指定合法连接者的IP地址、设置合法客户的ID和Password,从而避免非法连接者对交换机的操作。
(5)编写终端程序时,要考虑终端窗口所能显示文本内容的最长限度,避免出现不必要的程序运行错误。
集中维护
远程交换机集中维护系统的软件设计分析
(1)系统功能设计。系统功能设计主要包括以下几个方面:①联机控制模块:此模块主要是控制接入站点
调度交换机网络连接状态,通过“连接”、“断开”具体控制每个站点网络接入情况;②系统状态模块:此模块主要是显示接入站点调度交换机的运行状态和告警信息。简洁、直观的查看运行板件情况和具体故障点;③管理设置模块:此模块主要是接入的调度交换机站点连接参数设置、修改和权限管理。通过设置接口类型、串口、速率、IP地址等参数,将站点配置到系统中;④信令分析模块:此模块主要对相应站点调度交换历史执行记录的查询、分析,通过对相应操作过程的查询,判断主机是否运行正常,及出现故障时,判断故障点;⑤数据监控模块:此模块主要进行相应站点调度交换主机内部数据的显示、修改,可以快捷定位到状态区、被叫区、性能区、呼叫类、被号指、被号区、主号区、连号区、系参表、中号表、2M区、被换号、主换号、权限区、时隙区、收数区的相应数据位置;⑥维护分析模块:此模块主要进行相应站点调度交换主机各子系统设置数据的查询、修改、比较、设置和恢复,以及相应站点调度号码数据的查询、设置和分析;⑦登入与登出模块:此模块主要使用不同用户名、密码登陆或退出系统,通过后台对使用该系统的用户进行权限划分后,不同的用户名可以查看的信息、操作的范围各不相同。
(2)远程控制软件设计。远程控制软件指的是一台计算机通过网络实现对另一台计算机设备进行远距离控制的软件,主要包括两个部分,即主控端程序、被控端程序,被控端的功能是通过屏幕、鼠标、键盘等将数据信息传送至主控端,主控端对被控端传输的数据信息进行云计算,并将数据信息展示给用户,用户通过主控端能够实现对被控端的远程控制,获得进程列表、窗口、图像等信息,通过操作键盘、移动鼠标等,对被控端程序进行中止、激活等远程操作。
远程交换机集中维护系统的硬件设计分析
(1)网络接口板设计。网络接口板控制系统主要由CPU处理器、系统总线接口、二次电源供电、网口处理器和网络接口组成,
调度交换机通过系统总线或串行接口与CPU处理器进行数据交互,CPU接收主机数据,打包成TCP/UDP数据包,经网口处理器调制后通过网络接口传输,网口处理器接收到的数据经CPU解包验证后发送给主机,完成主机与网络间的数据交互。
(2)客户端设计。调度机远端集中维护系统的客户端使用PC机,可登陆到服务器进行数据查询和修改,并可显示各个调度机的实时状态和告警信息。
(3)服务器设计。调度机远端集中维护系统的服务器采用“
双机热备”的形式搭接,确保数据实现实时备份,有效预防数据丢失,保障了数据的连续性,实现了故障点转移。
(4)接口设计。通过与TMS系统研发人员沟通,服务器使用
TCP协议向TMS系统发送配置和告警信息进行扩展呈现。接口功能包括:接入方式、接入性能、网络安全告警通知、配置同步、告警同步、历史性保留、安全管理以及用户权限认证。
远程交换机集中维护系统输入与输出系统
(1)输入系统设计。系统需要输入的内容包括调度交换机的站点接入详细信息、主机各子系统配置信息、主机内部数据状态信息、实时信令执行状态信息、网络连接状态信息、运行状态信息等,以上的数据信息输入方式如下:①键盘及鼠标点击输入:调度交换机的站点接入详细信息、网络连接状态信息;②系统采集输入:调度交换机的主机各子系统配置信息、主机内部数据状态信息、实时信令执行状态信息、运行状态信息;③Excel表格导入:调度交换机的主机各子系统初始配置信息。为了保证输入系统的安全性,应该加强对输入系统的安全性分析。电网调度指挥的主要方式为调度电话,由此可见其重要性,调度交换机远程集中维护系统输入系统的安全性分析主要包括以下几个方面:①交换设备维护密码,在所属的调度录音机上安装IXP3000、HARRIS-MAP等交换机机型的管理维护性软件,在使用管理维护软件时,需要输入用户名、密码进行认证,只有相应权限的用户才允许访问系统;②调度录音机登录密码,变电站调度录音机采用的工业级计算机操作系统,用户需要输入用户名以及密码才能够访问系统;③远程控制软件多重认证,软件多重认证方式是在主控和被控端均设置密码,为了提高信息输入的安全性,通常设定不同的加密
应用
通过“九七”网络实现控制及维护
由于利用了现有的“九七”网络设备,所以无须增加新的硬件设备,仅需要在服务器端和客户端微机上配置正确的IP地址就可以了。另外,由于服务器端程序较小,对服务器端微机配置要求也不高,基本能安装Windows95和网卡就可以了。如果微机有2个串口,还可以接上2个终端,只要配置不同的端口号就行。这种应用特别适合于各区局对无人值守机房的远程维护。
实现集中主动式停复话工作
我们使用的自动停复系统都是各机房的应用程序定时查询停复话数据库,发现有工单就提取并连接交换机运行,因此机房的前台程序长期处于查询状态,效率不高。如果采用这种远程控制终端方式,就可以实现集中主动式的停复话工作。
方便通过Internet进行远程技术支持
由于服务器和客户端是采用
TCP/IP协议建立连接,所以在需要远程技术支持时,服务器端首先通过拨号方式连入Internet,客户端远程接入Internet后,先获取服务器端动态分配的IP地址(可以通过聊天室等软件获取),然后就可以实现对交换机的远程控制。本人利用所编写的远程控制软件,采用一对14.4kbit/s的Modem通过Internet来模拟交换机的远程控制,实验结果表明完全能够做到发送完指令就立刻收到交换机的响应报告。这种应用尤其适合于跨省市的技术支持和维护,与常规的拨号方式相比,节省了大量的长途通信费用。由于在服务器端可以随时指定合法连接者的IP地址,再加上合法的客户端ID和Password的保护,这种应用就能避免非法客户对交换机终端的接入。