首页> 中国专利> 基于WINDOWS和LINUX平台的网关批量升级方法及系统

基于WINDOWS和LINUX平台的网关批量升级方法及系统

摘要

本发明公开了一种基于WINDOWS和LINUX平台的网关批量升级方法及系统,涉及跨平台的设备间通信领域。该方法包括以下步骤:服务端通过原始套接字,建立跨平台的服务端‑客户端的双向通信,服务端采用WINDOWS系统,客户端采用Linux嵌入式系统;服务端给发现的客户端动态分配唯一IP地址,建立传输控制协议TCP连接;服务端校验客户端是否需要升级,如果不需要升级,则结束;如果需要升级,客户端重写Linux系统内核TCP/IP协议中定义的文件传输协议,将文件分片拼接成块后,直接保存在内存中。本发明能保证网关客户端接收文件的完整和正确性,节省内存空间,降低升级失败的概率,清晰确认升级的开始和结束标识。

著录项

  • 公开/公告号CN106301959A

    专利类型发明专利

  • 公开/公告日2017-01-04

    原文格式PDF

  • 申请/专利权人 烽火通信科技股份有限公司;

    申请/专利号CN201610883713.6

  • 发明设计人 郭娟;徐会宾;李铿;

    申请日2016-10-10

  • 分类号H04L12/24(20060101);H04L29/06(20060101);

  • 代理机构42225 武汉智权专利代理事务所(特殊普通合伙);

  • 代理人沈林华

  • 地址 430074 湖北省武汉市东湖开发区光谷创业街67号

  • 入库时间 2023-06-19 01:21:28

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-30

    授权

    授权

  • 2017-02-01

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20161010

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本发明涉及跨平台的设备间通信领域,具体是涉及一种基于WINDOWS和LINUX平台的网关批量升级方法及系统。

背景技术

Linux系统是一种基于POSIX(Porttable Operation System Interface of Unix,可移植操作系统Unix)和Unix的多用户、多任务、多线程和多CPU的操作系统。如今,已经有许多硬件设备安装了完整版本或裁剪版本的Linux系统,例如:家庭网关、手机、平板电脑、计算机、大型服务器等。

基于Linux的家庭网关作为一款三网融合的用户侧终端产品,应用越来越广泛,需求也越来越多。工程在外经常遇到有大批量(一万台或更多台)新设备,由于某种原因,设备存储在仓库中时,在应用于家庭用户之前,需要重新升级版本或配置。在不具备EMS(Element Management System,图形网管系统)平台或RMS(Remote Management System,远程管理系统)平台,唯一具备WINDOWS操作系统的PC的条件下,需要人工对每台设备进行升级,既耗费时间也耗费人力。

目前已公开的Linux系统的网关设备批量升级方案有:基于组播的批量升级或基于UDP(User Datagram Protocol,用户数据报协议)的广播升级。这两种方案主要存在以下三点缺陷:

(1)存在网关客户端文件接收不完整的问题。

基于UDP协议的升级不支持分片重传和校验,所以不能保证PC发送的每个数据分片,网关都能正确接收,难以保证网关客户端接收文件的完整和正确性。

(2)存在占用更大空间、升级失败的概率较大。

传统的两种升级方式:第一种,通过FTP命令将升级文件传输到设备FLASH分区,并将FLASH中文件读取到内存中,继而通过调用升级接口完成升级过程,且升级接口在升级过程中需要分配相应内存完成用户态及内核态的交互处理,因此此方案需要一倍升级文件大小的FLASH空间及两倍升级文件大小的DDR空间,较耗FLASH及DDR资源;第二种,通过FTP命令将升级文件传输到设备DDR空间,并将DDR空间中文件读取,此方案需要三倍升级文件大小的DDR空间,对DDR资源需求较大;

传统的两种升级方式需要至少2倍以上镜像大小的剩余空间供升级,受嵌入式系统FLASH大小限制,导致升级失败的概率较大。

(3)传统的升级过程没有校验机制,导致升级过程不智能,升级开始和结束标识无法确认。

发明内容

本发明的目的是为了克服上述背景技术的不足,提供一种基于WINDOWS和LINUX平台的网关批量升级方法及系统,能够保证网关客户端接收文件的完整和正确性,节省内存空间,降低升级失败的概率,能够清晰确认升级的开始和结束标识。

本发明提供一种基于WINDOWS和LINUX平台的网关批量升级方法,包括以下步骤:

S1、服务端通过原始套接字,建立跨平台的服务端-客户端的双向通信,服务端采用WINDOWS系统,客户端采用Linux嵌入式系统;

S2、服务端给发现的客户端动态分配唯一IP地址,建立传输控制协议TCP连接;

S3、服务端校验客户端是否需要升级,如果不需要升级,则结束;如果需要升级,客户端重写Linux系统内核TCP/IP协议中定义的文件传输协议,将文件分片拼接成块后,直接保存在内存中。

在上述技术方案的基础上,步骤S1中,通过原始套接字,自定义消息格式,扩展TCP/IP协议的第五层应用层通信交互报文,建立跨平台的服务端-客户端的双向通信。

在上述技术方案的基础上,步骤S2中,服务端给发现的客户端动态分配唯一IP地址、建立TCP连接的过程如下:

服务端启动自动发现线程,循环发送广播UDP协议的发现报文,并在数据字段携带服务端介质访问控制MAC地址;

客户端接收到服务端发送的发现报文时,上报自己的MAC地址,请求分配IP地址;

服务端采用循环分配算法,给发现的不同MAC地址的客户端动态分配唯一IP地址;

客户端根据分配的IP地址和指定端口号,与服务端建立TCP连接。

在上述技术方案的基础上,所述服务端采用循环分配算法,给发现的不同MAC地址的客户端动态分配唯一IP地址的过程如下:

服务端对所有连接的客户端,维护一个设备信息链表,若在设备信息链表中找到客户端的MAC地址,且IP地址池中有对应的IP地址,则将该IP地址分配给客户端;否则,在IP地址池中分配新的IP地址给客户端,并在IP地址池中标记该IP地址已占用。

在上述技术方案的基础上,步骤S3中,校验客户端是否需要升级的过程如下:

建立TCP连接后,在服务端输入校验信息,服务端开启文件传输协议服务,客户端上报镜像编译时间和配置版本号,客户端等待服务器回复是否升级,如果在规定时间之内没有回复,则超时,如果超时达到一定次数,客户端循环上报信息并等待一段时间;服务端判断是否需要升级客户端,如果不需要升级,服务端通过点灯进行标识;如果需要升级,服务端向客户端下发升级URL、文件名,客户端进行升级;最后,客户端向服务端上报状态信息。

本发明还提供一种基于WINDOWS和LINUX平台的网关批量升级系统,该系统包括服务端和客户端,

所述服务端采用WINDOWS系统,客户端采用Linux嵌入式系统;服务端通过原始套接字,建立跨平台的服务端-客户端的双向通信;服务端给发现的客户端动态分配唯一IP地址,建立传输控制协议TCP连接;

服务端校验客户端是否需要升级,如果不需要升级,则结束;如果需要升级,客户端重写Linux系统内核TCP/IP协议中定义的文件传输协议,将文件分片拼接成块后,直接保存在内存中。

在上述技术方案的基础上,所述服务端通过原始套接字,自定义消息格式,扩展TCP/IP协议的第五层应用层通信交互报文,建立跨平台的服务端-客户端的双向通信。

在上述技术方案的基础上,所述服务端给发现的客户端动态分配唯一IP地址、建立TCP连接的过程如下:

服务端启动自动发现线程,循环发送广播UDP协议的发现报文,并在数据字段携带服务端介质访问控制MAC地址;

客户端接收到服务端发送的发现报文时,上报自己的MAC地址,请求分配IP地址;

服务端采用循环分配算法,给发现的不同MAC地址的客户端动态分配唯一IP地址;

客户端根据分配的IP地址和指定端口号,与服务端建立TCP连接。

在上述技术方案的基础上,所述服务端采用循环分配算法,给发现的不同MAC地址的客户端动态分配唯一IP地址的过程如下:

服务端对所有连接的客户端,维护一个设备信息链表,若在设备信息链表中找到客户端的MAC地址,且IP地址池中有对应的IP地址,则将该IP地址分配给客户端;否则,在IP地址池中分配新的IP地址给客户端,并在IP地址池中标记该IP地址已占用。

在上述技术方案的基础上,所述服务端校验客户端是否需要升级的过程如下:

建立TCP连接后,在服务端输入校验信息,服务端开启文件传输协议服务,客户端上报镜像编译时间和配置版本号,客户端等待服务器回复是否升级,如果在规定时间之内没有回复,则超时,如果超时达到一定次数,客户端循环上报信息并等待一段时间;服务端判断是否需要升级客户端,如果不需要升级,服务端通过点灯进行标识;如果需要升级,服务端向客户端下发升级URL、文件名,客户端进行升级;最后,客户端向服务端上报状态信息。

与现有技术相比,本发明的优点如下:

(1)可扩展性。本发明通过原始套接字,自定义消息格式,扩展TCP/IP协议的第五层应用层通信交互报文,建立跨平台的服务端-客户端的双向通信,建立WINDOWS和LINUX的跨平台通信交互协议。因此当需要增加新的功能时,只需要在现有系统的基础上,增加新的定义及实现,就可以完成子功能增加,而不需要增加额外的处理流程,方便扩展并且现有功能不受影响。

(2)快速稳定。本发明基于建立TCP连接的文件传输协议传输文件,保证文件传输的稳定性,能够提高升级的成功率,避免文件传输的漏片等问题,保证网关客户端接收文件的完整和正确性。

(3)节省内存空间。本发明重写Linux系统内核wget协议,将文件分片,自己组装成一个缓冲区,节省一倍文件的内存存放空间。

(4)降低升级失败的概率。相较于以往的方法,通过文件读写接口(fopen、fread、fwrite)将文件读成缓存块供接口调用,将需要耗费2倍的升级内存空间,无额外的文件读取空间。基于嵌入式系统FLASH的大小空间限制原因,本发明能够有效降低升级失败的概率。通过改写wget命令后,升级将只需要一倍的升级文件内存空间,能够节省内存空间,使升级失败的概率进一步降低。

(5)本发明在升级过程中加入了校验机制,校验客户端是否需要升级,如果不需要升级,则结束;如果需要升级,客户端重写TCP/IP协议中定义的文件传输协议,例如:wget、FTP等命令,将文件分片拼接成块后,直接保存在内存中。这样,能够清晰确认升级的开始和结束标识。

(6)可重用性。当芯片方案进行改变时,由于上层协议是不变的,因此,通过对芯片适配部分代码的抽象和剥离,可以极大的复用原有代码,甚至可以使用同一套代码通过编译选项的控制以支持不同芯片方案的Linux嵌入式设备,达到降低维护成本的目的。

附图说明

图1是本发明实施例中基于WINDOWS和LINUX平台的网关批量升级方法的流程图。

图2是本发明实施例中服务端给发现的客户端动态分配唯一IP地址、建立TCP连接的流程图。

图3是本发明实施例中初始化的IP地址池的示意图。

图4是本发明实施例中校验客户端是否需要升级的流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

本发明实施例提供一种基于WINDOWS和LINUX平台的网关批量升级系统,该系统包括服务端和客户端,服务端采用WINDOWS系统,客户端采用Linux嵌入式系统。

参见图1所示,本发明实施例提供一种基于WINDOWS和LINUX平台的网关批量升级方法,包括以下步骤:

S1、服务端通过原始套接字,自定义消息格式,扩展TCP/IP协议的第五层应用层通信交互报文,建立跨平台的服务端-客户端的双向通信,服务端采用WINDOWS系统,客户端采用Linux嵌入式系统;

由于WINDOWS系统不允许用户发送自定义二层广播包,而Linux嵌入式系统允许用户发送自定义二层广播包,所以需要通过原始套接字建立跨平台的双向通信。

S2、服务端给发现的客户端动态分配唯一IP地址,建立TCP(Transmission Control Protocol,传输控制协议)连接;

S3、服务端校验客户端是否需要升级,如果不需要升级,则结束;如果需要升级,客户端重写Linux系统内核TCP/IP协议中定义的文件传输协议,例如:wget(WorldWideWebget)、FTP(File Transfer Protocol,文件传输协议)等命令,将文件分片拼接成块后,直接保存在内存中。wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。

参见图2所示,步骤S2中,服务端给发现的客户端动态分配唯一IP地址、建立TCP连接的过程如下:

服务端启动自动发现线程,循环发送广播UDP协议的发现报文,并在数据字段携带服务端MAC(Medium Access Control,介质访问控制)地址;

客户端接收到服务端发送的发现报文时,上报自己的MAC地址,请求分配IP地址;

服务端采用循环分配算法,给发现的不同MAC地址的客户端动态分配唯一IP地址:服务端对所有连接的客户端,维护一个设备信息链表,若在设备信息链表中找到客户端的MAC地址,且IP地址池中有对应的IP地址,则将该IP地址分配给客户端;否则,在IP地址池中分配新的IP地址给客户端,并在IP地址池中标记该IP地址已占用;

循环分配算法:假如服务端的IP地址为a.b.c.d(1≤d≤254),则分配给客户端同网段的IP地址范围为[a.b.c.1]-[a.b.c.(d-1)]及[a.b.c.(d+1)-[a.b.c.253],共有253个IP地址。初始化IP地址池数组ip_pool[index]全部为0。在IP地址池中标记服务端已经占用的IP地址为1(ip_pool[d]=1)。

例如,参见图3所示,服务端IP地址为192.168.1.100,则分配的IP地址空间段为192.168.1.1至192.168.1.253,且排除192.168.1.100这个IP地址。

客户端根据分配的IP地址和指定端口号,与服务端建立TCP连接。

本发明实施例中主要涉及以下三种交互报文:

①广播报文。服务端发送广播UDP数据报文,在UDP数据报文内容字段携带服务端MAC地址,以便客户端根据这个MAC地址回复数据报文;

②请求报文。客户端建立原始Socket套接字,组装UDP单播报文,发送的目的MAC地址为服务端MAC地址,在UDP数据报文内容字段携带自身MAC息,请求分配IP地址。

③分配IP地址报文。服务端广播发送UDP分配IP地址报文。在广播UDP报文数据报文字段,携带某客户端唯一标识的MAC信息及分配的IP地址,客户端接收到广播报文后,根据报文中携带的MAC信息校验是否是分配给自己的IP地址。

参见图4所示,步骤S3中,服务端校验客户端是否需要升级的过程如下:

建立TCP连接后,在服务端输入校验信息,如服务端URL(Uniform Resource Locator,统一资源定位符)、文件名、是否强制升级、软件版本号等信息,服务端开启FTP服务,客户端上报镜像编译时间和配置版本号,客户端等待服务器回复是否升级,如果在规定时间(例如9秒)之内没有回复,则超时,如果超时达到一定次数(例如3次),客户端循环上报信息并等待一段时间(例如3秒);服务端判断是否需要升级客户端,如果不需要升级,服务端通过点灯进行标识;如果需要升级,服务端向客户端下发升级URL、文件名等,客户端进行升级:重写TCP/IP协议中的文件传输协议:wget、ftp等命令,下载文件,将socket分片传输,拼接保存在数据块中,并调用升级接口,最后,客户端向服务端上报状态信息,例如:TCP连接失败、传输超时、接收超时、无需升级、升级成功等。

本发明实施例重写wget命令及ftp命令,通过分片传输socket到内存中,升级接口可以直接使用wget保存到文件缓存块中。相较于以往的方法,通过文件读写接口(fopen、fread、fwrite)将文件读成缓存块供接口调用,将需要耗费2倍的升级内存空间,无额外的文件读取空间。基于嵌入式系统FLASH的大小空间限制原因,本发明实施例能够有效降低升级失败的概率。通过改写wget命令后,升级将只需要一倍的升级文件内存空间,能够节省内存空间,使升级失败的概率进一步降低。

本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。

说明书中未详细描述的内容为本领域技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号