掌桥专利:专业的专利平台
掌桥专利
首页

一种支持动态自适应网络配置的局域网系统、方法和装置

文献发布时间:2023-06-19 11:14:36


一种支持动态自适应网络配置的局域网系统、方法和装置

技术领域

本发明涉及网络通信技术领域,特别涉及一种支持动态自适应网络配置的局域网系统、方法和装置。

背景技术

目前主流的局域网组网方式基本上都是基于一个中心节点来构建的,比如网络中存在一个或几个路由器,其他设备连接到路由器上,各个设备间的通信,通过路由器节点转发。当一个局域网需要和另外一个局域网通信时,需要通过中心节点(路由器,网关)进行转发,往往局域网的组网需要网络工程师需要预先对中心节点手动配置好各个设备的路由规则,地址转换规则等网络配置信息。主流的局域网组网方式大多类似于附图1拓扑结构。从图中可以看出基于主流的局域网组网方式和数据传输方式由于其自身特性对中心节点依赖大,当中心节点出现故障时,整个网络基本处于瘫痪状态。例如图1中的节点A,F作为路由器或网关,当他们出现故障,那整个网络将无法通信。二是处于路由器“背后”的设备对于其他设备是不可见的,外网设备无法找到路由器背后的设备,虽然可以通过NAT技术和设置路由规则来解决这一问题,但是需要预先配置好路由器,灵活性差,路由设备节点不能随着其他设备的网络状态变化而变化。例如图1中的G节点可以通过A,F节点设置NAT规则或其他路由规则如RIP、OSPF等访问到节点C节点,但是当C节点网络配置变化时,A节点不能感知到C节点的网络状态变化,此时G节点将无法再访问到C节点。再移动互联网迅速发展的今天,移动设备所处物理位置通常不固定,传统的局域网络配置方式和数据传输方式显得越来越不智能,因此,亟待一种灵活性好的、可根据网络的物理连接状态自适应地自动配置各个网络节点参数的方法,来满足拓扑结构经常变化的网络的数据交换需求。

发明内容

本发明的目的在于为了解决局域网网络配置方式不灵活的问题,提供一种支持动态自适应网络配置的局域网系统、方法和装置,可根据网络的物理连接状态,自适应地配置各个网络节点参数,动态规划数据传输的路由线路,来满足拓扑结构经常变化的网络的数据交换需求。

为了实现上述发明目的,本发明提供了以下技术方案:

一种支持动态自适应网络配置的局域网动态路由方法,源节点生成包含目的节点设备序列号信息的路由请求报文并广播,中间节点转发并查找到目的节点,建立源节点到目的节点的路由,或,

源节点生成包含目标文件标识的资源请求报文并广播,中间节点转发并查找到包含有目标文件的目的节点,建立源节点到含有目标文件的目的节点的路由,

所述中间节点为有至少两个网络接口且通过所述网络接口连接至少两个节点的节点;

当源节点和目的节点之间有多条路径可以到达时,任一节点对于同一个会话的同一个请求报文,处理先到达的报文,丢弃后到达的报文;

建立路由成功后,当构成路由的某个节点断开时,发送断开提醒并重新建立源节点和目的节点间新的路由。

进一步的,所述中间节点转发并查找到目的节点的步骤包括:

S101,中间节点接收到所述路由请求报文后,查找自身连接状态表,没有发现目的节点的,加入自身设备序列号信息并转发路由请求报文给所述中间节点连接的其他节点;如果没有其他节点连接到该节点,则发送终点报文给源节点;所述连接状态表包括当前节点各网络端口的IP地址、MAC地址、连接对方节点的设备序列号、IP地址;

S102,节点查找自身连接状态表,发现目的节点的,配置自身路由,向源节点方向的上一个中间节点发送路由确认报文;

S103,中间节点收到路由确认报文,配置自身路由,并继续转发给源节点方向的上一个中间节点;

S104,当与源节点连接的中间节点收到路由确认报文时,配置自身路由,并向源节点、目的节点方向的中间节点发送路由完成报文,中间节点进行转发,直到目的节点收到路由完成报文;

S105,源节点与目的节点收到路由完成报文后,配置自身路由;

所述中间节点转发并查找到目的节点的步骤中,如果发生错误导致路由建立失败,则产生错误的节点发送建立失败报文。

优选的,所述中间节点转发并查找到包含有目标文件的目的节点,其步骤包括:

S201,中间节点接收到所述资源请求报文后,查找自身共享资源列表,没有发现目标文件的,加入节点自身的设备序列号信息并转发资源请求报文;

S202,节点查找自身共享资源列表,发现目标文件的,则该节点为目的节点,将此目的节点、中间节点、源节点的网络信息写入路由确认报文并发送给源节点方向的上一个中间节点;

S203,中间节点收到路由确认报文,配置自身路由,并继续转发给上一个中间节点;

S204,当与源节点连接的中间节点收到路由确认报文时,配置自身路由,并向源节点、目的节点方向的中间节点发送路由完成报文,中间节点进行转发,直到目的节点收到路由完成报文;

S205,源节点与目的节点收到路由完成报文后,源节点配置自身路由,确保能和目的节点建立网络通信,获取想要的文件。

进一步的,所述共享资源列表,包含此节点通过网络共享的文件的唯一文件标识、文件路径,所述唯一文件标识为文件的哈希值,所述资源请求报文为REQ_DEVICE_BY_RES报文,内容包括口令、类型、被请求资源文件的文件标识、源节点的设备序列号、源节点的IP地址、发送此报文的设备序列号、报文通过的中间节点设备序列号;所述资源请求报文的口令生成方法为,当一个节点发起文件请求时,生成一个会话标识,所述会话标识由对用户的用户名和密码使用md5算法得到一个中间值,并将所述中间值与源节点的设备序列号、目标文件的文件标识拼接成的文本做一次哈希运算,然后对哈希运算的结果取前12位而得到,所述口令由会话标识和时间戳拼接而成,前12位是会话标识,后4位通过对时间戳做一次可逆运算得到。

优选的,发送断开提醒并重新建立源节点和目的节点间新的路由的步骤包括:

源节点通过心跳检测到目的节点不再可达,源节点主动广播发送设备断开报文,源节点按照上述方法重新建立源节点到目的节点或源节点到含有目标文件的目的节点的路由;或,

与断开的节点直接相连的节点通过心跳或硬件检测到目的节点断开时,主动广播设备断开报文,源节点收到广播后按照上述方法重新建立源节点到目的节点或源节点到含有目标文件的目的节点的路由。

进一步的,所述路由请求报文为REQ_DES_DEVICE报文,内容包括口令、类型、目的节点的设备序列号、源节点的设备序列号、源节点的IP地址、发送此报文的设备序列号、报文通过的中间节点设备序列号;

所述路由确认报文为ROUTE_CONF报文,内容包括口令、类型、目的节点的设备序列号、目的节点的IP地址、目的节点的端口号、源节点的设备序列号、源节点的IP地址、发送此报文的设备序列号;

所述路由完成报文为ROUTE_READY报文,内容包括口令、类型、目的节点的设备序列号、目的节点的IP地址、目的节点的端口号、源节点的设备序列号、源节点的IP地址、源节点的端口号、发送此报文的设备序列号;

所述设备断开报文为DEVICE_DISCONNECT报文,内容包括口令、类型、发送此报文的设备序列号、目的节点的设备序列号、目的节点的IP地址、源节点的设备序列号、源节点的IP地址;

所述终点报文为NO_REQ_ENDPOINT报文,内容包括口令、类型、发送此报文的设备序列号、目的节点的设备序列号、源节点的设备序列号;

所述建立失败报文为RESP_FAIL报文,内容包括口令、类型、发送此报文的设备序列号、失败错误码、目的节点的设备序列号、源节点的设备序列号。

进一步的,所述源节点、目的节点、中间节点,每个节点对要发出的报文生成口令,对收到的报文提取口令进行校验,所述生成口令的方法为,当一个节点发起会话时,生成一个会话标识,会话标识由对用户的用户名和密码使用md5算法得到一个中间值,并将所述中间值与源节点设备序列号、目的节点设备序列号拼接成的文本做一次哈希运算,然后对哈希运算的结果取前12位而得到,所述口令由会话标识和时间戳拼接而成,前12位是会话标识,后4位通过对时间戳做一次可逆运算得到;校验的方式包括,当设备收到报文后通过比对会话标识中的信息知道报文属于哪个会话,还通过口令中的时间戳判断报文是否超时,来判断报文的合法性。

进一步的,所述配置自身路由的方式为,到达目的节点IP网段的端口、端口的IP地址或到达目的节点IP网段的下一跳的端口、下一跳的端口IP地址,和到达源节点IP网段的端口、端口的IP地址或到达源节点IP网段的下一跳的端口、下一跳的端口IP地址;

所述连接状态表包括当前节点各网络端口的IP地址、MAC地址、各端口所连接对方节点的设备序列号、IP地址,所述连接状态表可以通过发送连接状态表报文来获取,

所述获取连接状态表报文为REQ_DIVICE_ROUTE报文,内容包括口令、类型、发送此报文的设备序列号、目的节点的设备序列号,被请求连接状态表的设备收到此报文后,发送给请求节点响应连接状态表报文,

所述响应连接状态表报文为RESP_DEVICE_ROUTE,内容包括口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP地址、源节点的设备端口号、设备网络接口列表,所述设备网络接口列表包括网络接口类型、IP地址、该网络接口所连接设备序列号、所连接设备IP地址。

基于本发明的相同构思,提供了一种支持动态自适应网络配置的局域网装置,包括物理设备和软件系统,所述物理设备支持网络接口,所述软件系统搭载操作系统,支持TCP/IP协议族,其特征在于,支持上述任意一项所述的支持动态自适应网络配置的局域网动态路由方法。

基于本发明的相同构思,提供了一种支持动态自适应网络配置的局域网系统,采用传统局域网拓扑结构连接,其特征在于,所述局域网系统中任一网络节点为上述的支持动态自适应网络配置的局域网装置。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

1. 本发明的方法可根据网络的物理连接状态,网络中各个相关节点自适应地配置网络参数、根据需要配置连接状态表、设置到达某个网段的下一跳地址,来满足拓扑结构经常变化的网络的数据交换需求,整个过程中不再需要技术人员介入对网关、路由器进行手动配置路由。

2. 由于本系统是根据实际的数据传输需求和网络设备的物理连接状态来自动配置网络的,各个相关的网络节点均会配置自身网络参数,不存在预设的中心节点,所以本系统是一种去中心化的系统,大大降低了系统对中心节点的依赖,提高了系统的稳定和可靠性。

3. 本系统可支持多种网络接口,大大提高了设备组网和接入网络的容易程度。

附图说明:

图1为一种典型的局域网拓扑结构图;

图2为实施例1的局域网拓扑结构图;

图3为实施例1中两个设备建立连接的过程图;

图4为实施例1中源节点状态机的状态流转过程图;

图5为实施例1中中间节点状态机的状态流转过程图;

图6为实施例1中目的节点状态机的状态流转过程图;

图7为实施例2的局域网拓扑结构图;

图8为实施例2中两个设备建立连接的过程图;

图9为实施例2中建立连接完成后各节点配置路由的示意图;

图10为实施例4的局域网拓扑结构图;

图11为实施例3中两个设备建立连接的过程图。

具体实施方式

下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

实施例1

一种支持动态自适应网络配置的局域网系统,所述系统基于传统局域网拓扑结构来构建,所述系统中任一网络节点为下述的支持动态自适应网络配置的局域网装置。所述系统的各网络节点间是处于物理连接状态的,比如通过网线,光缆或者同频段的无线网络。根据现有技术,节点设备的每个物理接口连接都会模拟成一个网络接口,网络接口被分配相应的IP地址,且每个网络接口都会分配一个独立的端口号用于监听命令请求。每个物理接口都会基于现有的技术来完成网卡的模拟工作,例如USB会基于RNDIS技术,蓝牙是基于BT PAN技术,WLAN和传统以太网网卡属于标准网络设备。本发明所提到的网络接口,指的是包括以太网接口、基于RNDIS等技术虚拟的USB网络接口、基于BT PAN协议虚拟出的BT网络接口、WLAN无线网络接口等在内能够提供网络连接的各种网络接口。

一种支持动态自适应网络配置的局域网装置,包括物理设备和软件系统,所述物理设备支持上述各种网络接口,所述软件系统搭载主流操作系统,支持TCP/IP协议族,支持自适应动态路由协议DRP协议,所述自适应动态路由协议DRP协议通过自适应动态路由协议组件来实现,所述局域网系统中各节点的装置在系统初始化时启动DRP Service守护进程,并创建自适应动态路由协议组件,包括:包含状态机单元、接口连接监控单元、口令管理单元,

状态机单元,负责管理节点设备的各个状态,每个状态会生成或接收解析具体的协议报文,处理网络状态变化事件,并根据节点的网络连接状态和收发的报文来切换状态,每个状态处理报文的规则是不同的。节点设备根据参与的会话来创建独立的状态机,每个状态机只处理对应会话的报文,可通过口令来判断。

口令管理单元,生成口令信息加入到发送的报文中,对接收的报文的口令进行校验;具体方法为,当一个节点发起DRP的会话过程,会随机生成一个会话标识sessionID。会话标识sessionID是通过对用户的口令信息MD5(用户名userID+密码passwd)和源节点与目的节点设备序列号src_sn和des_sn拼接成的文本做一次哈希运算,然后对哈希运算的结果取前12位而得到的。口令Token包含会话标识sessionID和时间戳拼接而成,前12位是会话标识sessionID,后4位通过对时间戳timestamp做一次可逆运算得到:

Token=substring12(MD5(MD5(userID+passwd)+src_sn+des_sn))+R(timestamp)

当设备收到报文后可比对sessionID中的命令信息知道报文属于哪个会话,通过口令还可通过比对时间戳判断报文是否超时,来判断报文是否合法。

接口连接监控单元,对该节点所有支持的网络接口状态进行管理,生成和更新连接状态表;操作系统完成生成网络接口和分配IP后,接口连接监控单元生成一个连接状态表,表中包含本节点各网络接口的IP、MAC、监听端口、设备序列号,各网络接口连接对方设备的设备序列号和IP地址。

现有技术中,在同一网段直接相连的设备在没有预先通过手动录入端口和设备序列号信息到对方节点的情况下,需要节点主动发送相关配置给对方节点,这样对方节点才能获知其设备序列号、网络接口的IP地址、MAC地址、端口号,因此这里提供一种生成和更新连接状态表的方法,即,

在同一网段直接相连的设备通过UDP广播的方式将设备本身的设备序列号、网络接口的名字、IP地址、MAC地址、端口号广播出去,广播端口为7777。节点设备根据设备网卡所在的网段监听其所在的网段的UDP广播,监听端口为7777。

例如,由于当某节点例如X节点通过某个网络接口发出路由请求报文时,不携带特定的端口信息,但与此节点该网络端口直接连接的节点例如Y节点,能够通过对方节点X节点发送的UDP广播知道与X节点相连接的网络接口的名字、IP地址、MAC地址、端口号、设备序列号,因此Y节点建立或更新连接状态表记录与之直接连接的节点X节点的连接信息,同理X节点能够通过对方节点Y节点发送的UDP广播知道与之直接连接的节点Y节点的网络接口的名字、IP地址、MAC地址、端口号、设备序列号从而建立或更新连接状态表。这是本方法的前提。

生成或更新后的连接状态表可以通过发送报文REQ_DIVICE_ROUTE来获取,以JSON的格式传输。设备序列号是节点设备的唯一标识,局域网中的每个设备都必须有序列号,由16位16进制数字构成。本实施例的前提是需要通信的目的节点的设备序列号已知。

上述状态机单元、接口连接监控单元、口令管理单元互相配合,以支持下述的支持动态自适应网络配置的局域网动态路由方法。

一种支持动态自适应网络配置的局域网动态路由方法,源节点通过广播发送路由请求,中间节点进行转发,查找到目的节点,各节点配置自身路由,建立源节点到目的节点的路由,如图2所示,源节点A需要和目的节点C通信,目的节点C的IP地址和连接情况未知,C的设备序列号已知,为34762ab641c347e1,其中源节点A、中间节点B、目的节点C、叶子节点D和E均为支持DRP自适应动态路由协议的PC机,源节点A的设备序列号为64672ab641c647ec,中间节点B的设备序列号为54671ad641aa58ce;

源节点A与中间节点B的USB接口均连接有USB无线网卡,通过现有技术的方法将源节点A与中间节点B之间通过无线网卡建立一条局域网连接,源节点A的USB无线网卡的IP地址为192.168.42.20,端口号6666,与之相连的中间节点B的USB无线网卡的IP为192.168.42.32,端口号6666;

中间节点B与目的节点C之间通过以太网线连接,中间节点B的以太网口的IP为192.168.43.10,端口号5555,与之相连的目的节点C的以太网口的IP为192.168.43.33,端口号5555;

源节点A与叶子节点D之间通过以太网线连接,源节点A与叶子节点E之间通过WLAN互联,源节点A的以太网口的IP为192.168.40.2,端口号5555,源节点A的WLAN口的IP为192.168.30.1,端口号4444;

源节点A到目的节点C建立路由的步骤如下:

S301,源节点A发起一个消息广播,以路由请求报文REQ_DES_DEVICE报文的形式,包含目的节点C的设备序列号、源节点A的设备序列号和IP地址,消息通过源节点A各网络接口传到和源节点A有连接的下一个节点B,D,E。

上述路由请求报文的具体内容为:

{"message":{"token": "43742a2641b347e1", "type": "REQ_DES_DEVICE",

"des_device": { "des_sn":"34762ab641c347e1"},

"src_device": {"src_sn":"64672ab641c647ec","src_ip" : "192.168.40.20"},

"sn": “64672ab641c647ec”}}。

S302,收到广播的节点B,D,E检查自己的连接状态表是否存在目的节点C。D,E节点为叶子节点,没有其他端点连接,叶子节点D、E节点向源节点A发送终点报文NO_REQ_ENDPOINT报文,叶子节点D发送的终点报文的具体内容如下,其中84672ad641ca47ed为叶子节点D的设备序列号;

{"message": {"token": "43742a2641b3472d","type": "NO_REQ_ENDPOINT",

"des_device": {"des_sn":"34762ab641c347e1"},"sn": "84672ad641ca47ed"}}。

中间节点B检查到其连接状态表中某个网络接口连接了C节点,中间节点B修改自身路由表并打开网络转发功能,配置到达目的节点C的IP网段通过的端口、IP和到达源节点A的IP网段通过的端口、IP,让中间节点B的网卡实现转发,保证源节点A和目的节点C能通过该中间节点B实现通信,然后继续执行S304。中间节点B路由配置如下:

192.168.42.0/24 via 192.168.42.32 dev usb0

192.168.43.0/24 via 192.168.43.10 dev eth0

S303,中间节点B配置成功后分别向源节点A和目的节点C发送路由完成报文ROUTE_READY报文,报文中包含源节点A的IP、端口、设备序列号,目的节点C的IP、端口、设备序列号,具体报文内容如下:

{"message": {"token": "43742a2641b34522","type": "ROUTE_READY",

, "src_device" : {"src_sn":"64672ab641c647ec", "src_ip" : "192.168.42.20", "src_port":"6666" },

"des_device": {"des_sn":"34762ab641c347e1",

"des_ip" : "192.168.43.33", "des_port":"5555"},"sn": "54671ad641aa58ce"}}

{"message": {"token": "43742a2641b34726","type": "ROUTE_READY",

"src_device" : {"src_sn":"64672ab641c647ec", "src_ip" : "192.168.42.20", "src_port":"6666" },

"des_device": {"des_sn":"34762ab641c347e1",

"des_ip" : "192.168.43.33", "des_port":"5555"}, "sn": "54671ad641aa58ce"}}。

目的节点C会根据收到的报文配置路由确保和源节点A建立网络通信,配置到达源节点A的IP网段的下一跳的IP地址、端口,具体配置为:

192.168.42.0/24 via 192.168.43.10 dev eth0

源节点A配置到达目的节点C的IP网段的下一跳的IP地址、端口,具体配置为:

192.168.43.0/24 via 192.168.42.32 dev usb0

在配置路由后可使用可使用RTSP和HTTP等现有的应用层协议与目的节点C通信。

S304,路由配置完成,源节点A和目的节点C可通过应用层协议与目的节点C通信。

自适应动态路由协议DRP协议可能涉及到的报文类型至少包括有以下几种:

REQ_DES_DEVICE,路由请求报文,由任意节点发起,查找需要通信的设备,并通知相关节点根据报文配置网络。字段包括:口令、报文类型、目的节点的设备序列号、源节点的设备序列号、源节点的设备IP、发送此报文的设备序列号、报文通过的中间节点设备序列号,所述报文通过的中间节点设备序列号可以有多个。

REQ_DIVICE_ROUTE,获取连接状态表报文,获取某个设备的端口连接状态表。字段包括:口令、报文类型、发送此报文的设备序列号、目的节点的设备序列号,所述目的节点的设备序列号可以有多个。

DEVICE_DISCONNECT,设备断开报文,可由任意节点发起,提示某个设备断开。字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、目的节点的设备序列号、目的节点的设备IP。

ROUTE_CONF,路由确认报文,可由任意节点发起,让指定设备配置自身网络和路由表,字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、目的节点的设备序列号、目的节点的设备IP、目的节点的端口号。

ROUTE_READY,路由完成报文,由转发节点发起,提示其他设备,此节点已经完成网络路由配置。字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、源节点的设备端口号、目的节点的设备序列号、目的节点的设备IP、目的节点的设备端口号。

REQ_DEVICE_BY_RES,资源请求报文,查询可以提供特定文件资源的节点。字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、文件标识、中间节点设备序列号。

RESP_DEVICE_ROUTE,响应连接状态表报文,由任意节点发起,返回相应设备的连接状态表,字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、源节点的设备端口号、设备网络接口列表,所述设备网络接口列表包括网络接口类型、IP地址、该网络接口所连接设备序列号、所连接设备IP。

NO_REQ_ENDPOINT,终点报文,由任意节点发起,提示此节点为叶子节点或终点,再无其他节点连接到此节点,字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、目的节点的设备序列号。

RESP_FAIL: 建立失败报文。字段包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、目的节点的设备序列号、失败错误码。

实施例1中源节点A与目的节点C建立连接的过程如图3所示。

由REQ_DES_DEVICE报文发起会话,源节点A状态机单元的状态流转过程如图4所示,InitState、SynSentState、PreEstablishState、EstablishedState为状态机单元几种不同的状态:初始状态、已发送请求状态、预建立状态、已建立状态,不同的状态下处理不同类型的报文。TIME_OUT、RESP_FAIL、DEVICE_DISCONNECTED为状态转换过程中的返回值,分别表示超时、建立失败、设备失联。

由REQ_DES_DEVICE报文发起会话,中间节点B状态机单元的状态流转过程如图5所示,SynRvcdState为收到请求状态。

由REQ_DES_DEVICE报文发起会话,目的节C状态机单元的状态流转过程如图6所示。

实施例2

本实施例的方法与实施例1的不同之处在于,源节点A与目的节点C之间存在两个或多个转发节点,目的节点C的设备序列号已知,为34762ab641c347e1,各节点的连接方式如图7,其中源节点A、中间节点D、E、目的节点C、叶子节点B和E均为支持DRP自适应动态路由协议的PC机,源节点A的设备序列号为64672ab641c647ec,中间节点D的设备序列号为65322ca531ca46ec,中间节点E的设备序列号为56452ba531ca4625;

源节点A与中间节点D之间通过以太网线连接,源节点A的以太网口的IP为192.168.40.2,端口号5555,与之相连的目的节点D的以太网口的IP为192.168.40.1,端口号5555;

中间节点D与中间节点E的USB接口均连接有USB无线网卡,通过现有技术的方法将中间节点D与中间节点E之间通过无线网卡建立一条局域网连接,中间节点D的USB无线网卡的IP地址为192.168.42.22,端口号6666,与之相连的中间节点D的USB无线网卡的IP为192.168.42.20,端口号6666;

中间节点E与目的节点C之间通过以太网线连接,中间节点E的以太网口的IP为192.168.43.2,端口号5555,与之相连的目的节点C的以太网口的IP为192.168.43.33,端口号5555;

源节点A与叶子节点B之间通过WLAN无线连接,源节点A与叶子节点E之间通过USB无线网卡经设置后建立局域网连接,源节点A的WLAN网络接口的IP为192.168.30.1,端口号4444,源节点A的USB无线网卡的IP为192.168.60.20,端口号6666;

源节点A到目的节点C建立路由的步骤如下:

S401,源节点A发起一个消息广播,以REQ_DES_DEVICE报文的形式,包含目的节点C的设备序列号、源节点A的设备序列号和IP地址;消息通过源节点A各网络接口传到和源节点A有连接的下一个节点B,D,F,上述REQ_DES_DEVICE报文的具体内容如下,根据广播发送出去的源节点端口不同其中src_device的src_ip也不同;

{"message" : {"token": "24853a3851b347d2", "type": "REQ_DES_DEVICE",

"des_device": { "des_sn":"34762ab641c347e1"},

"src_device": {"src_sn":"64672ab641c647ec","src_ip": "192.168.30.1"},"sn": "64672ab641c647ec"}}

{"message" :{"token": "24853a3851b368c4", "type": "REQ_DES_DEVICE",

"des_device": { "des_sn":"34762ab641c347e1"},

"src_device": {"src_sn":"64672ab641c647ec","src_ip": "192.168.40.2"}"sn": "64672ab641c647ec"}}。

S402,收到广播的节点B,D,F检查自己的连接状态表是否存在目的节点C。B,F节点为叶子节点,没有其他端点连接,叶子节点B、F节点向源节点发送终点报文NO_REQ_ENDPOINT报文,具体NO_REQ_ENDPOINT报文的内容如下,其中sn的数值根据发送此报文的设备序列号不同而不同:

{"message": {"token": "24853a3851b3472a","type": "NO_REQ_ENDPOINT",

"des_device": {"des_sn":"34762ab641c347e1"},

"src_device": {"src_sn":"64672ab641c647ec"},"sn": "43682bc522c647da"}}。

中间节点D收到路由请求报文REQ_DES_DEVICE报文后,查询自身连接状态表,发现没有目的节点C的连接,将原有REQ_DES_DEVICE报文重构,将中间节点D的设备序列号填充到报文中,再转发给中间节点D的其他网络接口连接的节点,转发的REQ_DES_DEVICE报文内容如下:

{"message":{"token": "24853a3851b3a481","type": "REQ_DES_DEVICE",

"des_device": {"des_sn":"34762ab641c347e1"},

"src_device": {"src_sn":"64672ab641c647ec","src_ip": "192.168.40.2"},"sn": "65322ca531ca46ec"}, "node1": {"node1_sn": "65322ca531ca46ec"} } }。

S403,节点E检查自身连接状态表,检查到其连接状态表中存在目的节点C的连接,节点E作为中间节点如实施例1中所述方法配置路由,配置到达目的节点C的IP网段的端口、IP,到达源节点A的IP网段的下一跳的IP、端口,使连接目的节点C和中间节点D的两个网络接口实现数据转发,中间节点E在配置路由完成后会发送路由确认报文ROUTE_CONF报文给源节点方向上的上一个中间节点D, 报文中有目的节点C的网络配置信息目的节点C的设备序列号、IP、端口号、源节点A的设备序列号、IP、发送此报文的设备序列号,上述路由确认报文ROUTE_CONF报文的具体内容如下:

{"message": {"token": "24853a3851b3d473","type": "ROUTE_CONF", "sn":"56452ba531ca4625",

"src_device": {"src_sn": "64672ab641c647ec","src_ip": "192.168.40.2"},

"des_device": {"des_sn": "34762ab641c347e1",

"des_ip": "192.168.43.33","des_port": "5555"} } } 。

S404,与源节点直接相连的中间节点D节点在收到路由确认报文ROUTE_CONF后,会如实施例1中所述方法配置路由,配置到达目的节点C的IP网段的下一跳的IP、端口,到达源节点A的端口、IP,保证源节点A能和中间节点E节点通信,在中间节点D节点完成网络配置后,中间节点D节点会发送ROUTE_READY报文给源节点A,并向目的节点方向上的中间节点E节点发送ROUTE_READY报文,ROUTE_READY报文中包含源节点A的设备序列号、IP、端口,目的节点C的设备序列号、IP、端口,ROUTE_READY报文的具体内容如下:

{"message": {"token": "24853a3851b3a481","type": "ROUTE_READY", "sn":"65322ca531ca46ec"},

"src_device": {"src_sn": "64672ab641c647ec", "src_ip": "192.168.40.2",

"port": "5555"} ,"des_device": {"des_sn": "14324ab531ba46ad",

"des_ip": "192.168.43.33","des_port": "5555"}}

{"message": {"token": "24853a3851b314a2","type": "ROUTE_READY","sn":"65322ca531ca46ec"},

"src_device": {"src_sn": "64672ab641c647ec", "src_ip": "192.168.40.2",

"port": "5555"} ,"des_device": {"des_sn": "34762ab641c347e1",

"des_ip": "192.168.43.33","des_port": "5555"}} 。

S405,源节点A根据ROUTE_READY报文中的信息配置路由,配置到达目的节点C的IP网段的下一跳的IP、端口;中间节点E在收到ROUTE_READY报文后,会把ROUTE_READY报文转发给目的节点C,报文中会包含源节点A的网络配置信息,ROUTE_READY报文的具体内容如下:

{"message": {"token": "24853a3851b3a2d1","type": "ROUTE_READY", "sn":"56452ba531ca4625"},

"src_device": {"src_sn": "64672ab641c647ec", "src_ip": "192.168.40.2", "port": "5555"} ,

"des_device": {"des_sn": "34762ab641c347e1", "des_ip": "192.168.43.33","des_port": "5555"}}。

S406,目的节点C会根据ROUTE_READY报文中的信息配置路由,配置到达源节点A的IP网段的下一跳的IP、端口,确保能和源节点A建立网络通信。

本实施例源节点A与目的节点C建立连接的过程如图8,上述各节点配置路由的方式如图9所示。

本实施例还可扩展到源节点A与目的节点C之间有2个以上中间节点的情况,建立路由的步骤类似S401~S406,

特别的,在S402中,当中间节点没有检查到目的节点的连接,将节点自身序列号填充到报文中再转发给中间节点的其他网络接口连接的节点,其他节点作为中间节点接收到该路由请求报文后,同样执行本步骤,继续转发;

特别的,在S403中,当与目的节点直接连接的中间节点检查到其连接状态表中存在目的节点的连接、配置自身路由、发送路由确认报文ROUTE_CONF报文给源节点方向上的上一个中间节点,上一个中间节点也朝源节点方向上的上一个中间节点转发,直到与源节点直接连接的中间节点收到该路由确认报文,然后执行S404;

特别的,在S404中,与源节点直接相连的中间节点配置自身路由后,发送路由完成报文ROUTE_READY报文给源节点A,并向目的节点方向上的中间节点发送ROUTE_READY报文,中间节点继续转发,直到目的节点收到该路由完成报文,然后执行S405。理论上中间节点的数量没有限制,但是根据实际情况,考虑到延时和网络的稳定情况,中间节点的数量不能太大。

实施例3

本实施例的方法与实施例1的不同之处在于,本实施例实现源节点通过广播发送文件请求,中间节点进行转发,查找到包含有目标文件的目的节点后,各节点配置自身路由,建立源节点到目的节点或含有目标文件的目的节点的路由的方法,如图2所示,源节点C请求某个文件,已知文件的文件标识,需要找到存在目标文件的目的节点A,并建立路由。

实施例1中各个节点的DRP Service守护进程,除了创建状态机单元,接口连接监控单元,口令管理单元以外,还会创建资源管理单元,资源管理单元创建并维护一个共享资源列表,保存该节点设备能通过网络共享的文件的具体信息,包括文件的唯一文件标识、文件路径等;所述唯一文件标识为文件的哈希值。

目标文件的文件标识已知,为47901c23a540a12a,其中源节点C、中间节点B、目的节点A、叶子节点B和E均为支持DRP自适应动态路由协议的PC机,源节点C的设备序列号为34762ab641c347e1,中间节点B的设备序列号为54671ad641aa58ce;

源节点C与中间节点B之间通过以太网线连接,源节点C的以太网口的IP为192.168.43.33,端口号5555,与之相连的中间节点B的以太网口的IP为192.168.43.10,端口号5555;

中间节点B与目的节点A的USB接口均连接有USB无线网卡,通过现有技术的方法将中间节点D与中间节点E之间通过无线网卡建立一条局域网连接,中间节点B的USB无线网卡的IP地址为192.168.42.32,端口号6666,与之相连的目的节点A的USB无线网卡的IP为192.168.42.20,端口号6666;

源节点C到目的节点A建立路由的过程如下:

S501,源节点C生成资源请求报文REQ_DEVICE_BY_RES并广播,报文内容如实施例1中所述,包括:口令、报文类型、发送此报文的设备序列号、源节点的设备序列号、源节点的设备IP、被请求文件的文件标识;报文口令Token中,由于还不知道目的节点的设备序列号,sessionID则是用请求的文件标识,即哈希值hasdecode(file)来替代目的节点的设备序列号,口令的计算方式如下:

Token=substring12(MD5(MD5(userID+passwd)+src_sn+hasdecode(file)))+R(timestamp)

上述资源请求报文REQ_DEVICE_BY_RES的具体内容如下:

{"message":

{"token": "64636a2442cda2e1","type": "REQ_DEVICE_BY_RES",

"sn": "34762ab641c347e1", "src_device": {"src_sn": "34762ab641c347e1",

"src_ip": "192.168.43.33"},

"res": "47901c23a540a12a"}}。

S502,中间节点B查找自身共享资源列表没有发现目标资源文件的hashcode,节点自身的设备序列号加入资源请求报文并转发资源请求报文REQ_DEVICE_BY_RES给与中间节点B连接的其他节点A;资源请求报文REQ_DEVICE_BY_RES的具体内容如下:

{"message":

{"token": "64636a2442cd12b1","type": "REQ_DEVICE_BY_RES",

"sn": "54671ad641aa58ce", "node1": {"node1_sn": "54671ad641aa58ce"}

"src_device": {"src_sn": "34762ab641c347e1",

"src_ip": "192.168.43.33"}

"res": "47901c23a540a12a"}} 。

S503,节点A查找自身共享资源列表发现目标资源文件的,将包含目标资源文件的此目的节点A的设备序列号、IP、端口,源节点C的设备序列号写入路由确认报文ROUTE_CONF并发送给源节点方向的上一个中间节点B,

上述路由确认报文ROUTE_CONF的具体内容如下:

{"message": {"token": "64636a2442cd12ed","type": "ROUTE_CONF",

"sn": "64672ab641c647ec", "src_device": {"src_sn": "34762ab641c347e1",

"src_ip": "192.168.43.33"},

"des_device": {"des_sn": "64672ab641c647ec","des_ip":"192.168.42.20","des_port":"6666"} } } 。

S504,当与源节点C连接的中间节点B收到路由确认报文ROUTE_CONF,配置自身路由,设置到达目的节点A的端口、IP,到达源节点C的端口、IP,打开网络转发功能,并向源节点C、目的节点A发送路由完成报文ROUTE_READY,报文内容包括目的节点A的设备序列号、端口、IP,源节点C的设备序列号、端口、IP;

上述路由完成报文ROUTE_READY的具体内容如下:

{"message": {"token": "64636a2442cd5625","type": "ROUTE_READY",

"src_device" : {"src_sn":"34762ab641c347e1", "src_ip" : "192.168.43.33", "src_port":"5555" },

"des_device": {"des_sn":"64672ab641c647ec", "des_ip" : "192.168.42.20", "des_port":"6666"}, "sn": "54671ad641aa58ce"}}

{"message": {"token": "64636a2442cd5d24","type": "ROUTE_READY",

"src_device" : {"src_sn":"34762ab641c347e1", "src_ip" : "192.168.43.33", "src_port":"5555" },

"des_device": {"des_sn":"64672ab641c647ec", "des_ip" : "192.168.42.20", "des_port":"6666"}, "sn": "54671ad641aa58ce"}} 。

S505,源节点C与目的节点A收到路由完成报文ROUTE_READY后,源节点C配置自身路由,配置到达目的节点A网段的下一跳的端口、IP,确保能和目的节点A建立网络通信,获取想要的文件,路由建立过程结束。

以上配置自身路由的方法可参考实施例1与2中的方法,不再赘述,建立连接的过程如图11。

实施例4

本实施例的方法与实施例1的不同之处在于,本实施例实现当源节点A与目的节点C之间有多条路径可以到达时选择路由的方法,方法即任一节点的状态机对于同一个会话的同一个请求报文,处理先到达的报文,丢弃后到达的报文,选择时间耗时最少的路径。例如图10的连接方式源节点A与目的节点C之间存在两条路径A-B-C,A-D-C。当源节点A发出REQ_DES_DEVICE报文后,中间节点B、D都收到了该报文,且中间节点B与D都检查到各自的连接状态表中有目的节点C的连接,中间节点B与D均发送ROUTE_READY报文给源节点A与目的节点C,但中间节点B发送报文的时间早于中间节点D发送10秒,源节点A和目的节点C节点收到来自中间节点B或D传来的关于同一个会话的同一个类型的请求报文ROUTE_READY时,判断报文口令中的时间戳,当报文的时间相差在规定范围内(如30s内),则处理先到达的报文即中间节点B发送的ROUTE_READY报文,丢弃后到达的报文即中间节点D发送的ROUTE_READY报文,以此建立时间耗时最少的路径A-B-C。

实施例5

本实施例是实施例4中建立路由后,如图10所示,当构成路由A-B-C的节点之一目的节点C断开,与目的节点C直接相连的节点B通过硬件检测到目的节点C断开,B节点广播发送设备断开报文DEVICE_DISCONNECT;

设备断开报文DEVICE_DISCONNECT的报文内容包括口令、报文类型、源节点的设备序列号、源节点IP,目的节点的设备序列号、目的节点IP,发送此报文的节点的设备序列号;

源节点A收到设备断开报文DEVICE_DISCONNECT后,重新按实施例1所述的方法重新建立到目的节点C的路由。

本文所述的一个或多个实施方案涉及计算机存储产品,所述计算机存储产品具有用于执行各种计算机实现的操作的指令或计算机代码的非暂时性计算机可读介质(也可称为非暂时性处理器可读介质)。计算机可读介质(或处理器可读介质)在其本身不包括暂时传播信号(例如,在诸如空间或电缆的传输介质上承载信息的传播电磁波)的意义上是非暂时性的。介质和计算机代码(也可称为代码或算法)可以是为特定目的而设计和构造的那些代码或算法。非暂时性计算机可读存储介质的实例包括但不限于:磁性介质,诸如硬盘、软盘和磁带;光学介质,诸如压缩盘/数字视频盘(CD/DVD)、压缩盘只读存储器(CD-ROM)和全息装置;磁光存储介质,诸如光盘;载波信号处理模块;以及专门被配置用于存储和执行程序代码的硬件装置,诸如专用集成电路(ASIC)、可编程逻辑装置(PLD)、只读存储器(ROM)以及随机存取存储器(RAM)装置。本文所述的其他实施方案涉及计算机程序产品,所述计算机程序产品可包括例如本文所公开的指令和/或计算机代码。

本文所述的一个或多个实施方案和/或方法可由软件(在硬件上执行)、硬件或其组合来执行。硬件模块可包括例如通用处理器(或微处理器或做控制器)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)。软件模块(在硬件上执行)可用多种软件语言(例如计算机代码)表达,包括C、C++、Java®、Ruby、Visual Basic®、和/或其他面向对象、过程或其他编程语言和开发工具。计算机代码的实例包括但不限于做代码或做指令、诸如由编译器产生的机器指令、用于产生网页服务的代码以及包含由使用解释器的计算机执行的更高级指令的文件。计算机代码的其他实例包括但不限于控制信号、加密的代码和压缩的代码。

虽然上文已经描述各种实施方案,但应了解,所述实施方案仅以举例的方式而不是以限制性的方式来呈现。虽然如上所述的方法指示某些事件以一定顺序发生,但是某些事件的排序可变化。另外,某些事件在可能的情况下可在并行过程中同时执行,以及如上所述依序执行。

相关技术
  • 一种支持动态自适应网络配置的局域网系统、方法和装置
  • 一种支持动态自适应网络配置的局域网系统、方法和装置
技术分类

06120112854606