CN113794618B - 基于虚拟网卡的冗余网络通信方法、装置及终端设备 - Google Patents
基于虚拟网卡的冗余网络通信方法、装置及终端设备 Download PDFInfo
- Publication number
- CN113794618B CN113794618B CN202111091227.8A CN202111091227A CN113794618B CN 113794618 B CN113794618 B CN 113794618B CN 202111091227 A CN202111091227 A CN 202111091227A CN 113794618 B CN113794618 B CN 113794618B
- Authority
- CN
- China
- Prior art keywords
- network card
- data packet
- virtual network
- neighbor
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了基于虚拟网卡的冗余网络通信方法、装置及终端设备,涉及通信技术领域,包括:获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;通过连接与邻居节点通信,同步更新本地虚拟网络结构;基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送。本申请能够使上层应用程序在具有多个物理网卡的移动终端上实现网络通信,从而提高了网络服务质量和可靠性。
Description
技术领域
本申请属于通信技术领域,具体涉及基于虚拟网卡的冗余网络通信方法、装置及终端设备。
背景技术
目前,移动机器人和物联网设备大多需要连接到网络中。虽然蜂窝移动通信网络(4G、5G)普及度已经很高,但在具体场景中可能存在距离基站远、被可屏蔽信号的材料遮挡,或基站服务设备过多等情况,仍存在带宽下降、延时增大、丢包率提高,甚至连接不稳定等问题。且面对特殊的业务需求,同样存在许多无法使用移动通信网络的情况。
提高网络质量的一种可靠方式是添加冗余网络设备,也就是在终端设备上连接多个物理网卡。由于这些设备服务方式不同,就可以应对不同的网络状况。例如,利用多个不同运营商的服务;或在由于遮挡导致的移动通信网络信号弱的环境中加装WIFI;或在野外加装卫星通信网络等。通过合理的方式发现、测试和调度这些网卡,网络传输的失败概率最小可达所有设备失败概率的乘积,可用性远高于任何一台设备单独工作。由此可在网络条件变化时保证网络服务质量。
一般来说,应用程序会通过某种编程语言提供的接口收发数据包,接口又调用操作系统提供的功能,在此过程中,选择物理网卡的工作委托给了操作系统。操作系统在路由表中根据目的地址选择物理网卡。即一个常规的应用程序无法使用多个物理网卡。
发明内容
有鉴于此,本申请提供了基于虚拟网卡的冗余网络通信方法、装置及终端设备,以解决上层应用程序无法直接使用多个物理网卡进行网络通信的技术问题。
一方面,本申请实施例提供了一种基于虚拟网卡的冗余网络通信方法,应用于接入多个物理网卡的终端设备,包括:
获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;
通过连接与邻居节点通信,同步更新本地虚拟网络结构;
基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送。
进一步的,所述方法还包括:通过操作系统监听本机网络设备状态,当发现本地有新的物理网卡被插入或打开时,通过新的物理网卡与邻居建立连接;当发现本地某个物理网卡被拔出或关闭时,删除通过这个物理网卡建立的连接。
进一步的,所述发现邻居并与所有邻居创建连接,并监测连接是否可用,包括:
为本地每个物理网卡绑定一个端口,所述端口用于发送消息给邻居并接收邻居的消息;
通过用户指定邻居物理网卡地址及其绑定端口,或通过收到邻居通过一个本地物理网卡发来的消息,获取一个邻居的物理网卡:
将本地各个物理网卡和邻居各个物理网卡建立连接;
通过在每个连接上发包判断连接是否可用。
进一步的,基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送,具体包括:
根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行发送;
接收外部数据包,通过虚拟网卡将其转发至对应的应用程序。
进一步的,所述根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行转发;包括:
当接收到上层应用程序发送的数据包时,通过本机路由表,将数据包发送至虚拟网卡;
为数据包添加上一个应用层首部,应用层首部包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性;
读取数据包中的目的地址,在虚拟网络结构中查询下一跳邻居,其中下一跳邻居为所有可达的邻居或最近的邻居发送;
通过一个连接或所有连接将数据包发送至下一跳邻居。
进一步的,所述接收外部数据包,通过虚拟网卡将其转发至对应的应用程序,包括:
当接收到外部访问的消息时,检查消息的头部,如果数据包的目标地址是本地,则接收这个数据包,检查元组的唯一性并丢弃重复的数据包;否则,将该数据包转发出去;
去除数据包的应用层首部,将数据包恢复到其从源设备的应用程序中生成时的状态;
将数据包发送到虚拟网卡,监听虚拟网卡的应用程序即可接收到数据包。
另一方面,本申请实施例提供了一种基于虚拟网卡的冗余网络通信装置,包括:
启动单元,用于获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
连接建立单元,用于发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;
同步单元,用于通过连接与邻居节点通信,同步本地虚拟网络结构;
数据收发单元,用于基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送。
另一方面,本申请实施例提供了一种终端设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请实施例的基于虚拟网卡的冗余网络通信方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现本申请实施例的基于虚拟网卡的冗余网络通信方法。
与现有技术相比,本申请实施例的有益效果为:
本申请实施例能够使上层应用程序在具有多个物理网卡的移动终端上实现网络通信,从而提高了网络服务质量和可靠性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的应用场景示意图;
图2为本申请实施例提供基于虚拟网卡的冗余网络通信的流程图;
图3为本申请实施例提供的基于虚拟网卡的冗余网络通信装置的功能结构示意图;
图4为本申请实施例提供的终端设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
为便于本领域技术人员更好地理解本申请,下面先对本申请涉及的技术用语进行简单介绍。
节点:一个处于局域网中的具备多个物理网卡的移动机器人或物联网设备,也可以是其它类型的多个物理网卡的终端设备;每个节点部署了本申请实施例对应的程序产品,每个节点都是对等的。
邻居:不经其他节点转发即可直接通过物理网络通信的节点称为邻居。
连接:当描述涉及“邻居间的连接”,或“多个连接”时,连接表示两个节点各自打开的一对物理网卡之间的网络链路。例如节点1有2个网卡,节点2有3个网卡,则这两个节点之间最多建立6个连接。
中转:数据包在传输中不直接到达目标,而是经过节点的现象称为中转;非邻居节点之间传输还需要通过各自邻居节点的中转。
虚拟网络结构:指的是虚拟网络节点之间的邻居关系的总和。
在介绍了本申请涉及的技术用语后,接下来,对本申请实施例的设计思想进行简单介绍。
目前,提升网络质量的一种可靠方式是添加冗余网络设备,也就是在终端设备上连接多个物理网卡。由于这些设备服务方式不同,就可以应对不同的网络状况。例如,利用多个不同运营商的服务;或在由于遮挡导致的移动通信网络信号弱的环境中加装WIFI;或在野外加装卫星通信网络等。通过合理的方式发现、测试和调度这些网卡,网络传输的失败概率最小可达所有设备失败概率的乘积,可用性远高于任何一台设备单独工作。由此可在网络条件变化时保证网络服务质量。
但是当终端设备中设置多个物理网卡时,一般来说,上层应用程序会通过某种编程语言提供的接口收发数据包,接口又调用操作系统提供的功能,在此过程中,选择物理网卡的工作委托给了操作系统。操作系统在路由表中根据目的地址选择物理网卡。换句话说,一个常规的上层应用程序无法使用多个物理网卡。
为了解决上述技术问题,本申请实施例提出了一种基于虚拟网卡的冗余网络通信方法,应用在一个节点上,应用场景如图1所示。
初始时,获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,这个地址将作为本地虚拟网卡绑定的地址,同时也是区分于其他节点的标识。因此,用户应该在线下协商保证相连节点地址的唯一性。为了便于本机上数据包的路由,相连的节点应该具有相同的子网掩码,但通过在操作系统中配置静态路由表,也可以向任意的地址发送。
若要节点能被邻居找到,获取一个端口号并将端口号与本地一个物理网卡绑定,可从这个端口号上接收到邻居节点传递的消息。若要本地节点能找到邻居,接收一个{邻居地址:固定端口号}元组,向元组这个固定端口发送短报文,试图建立连接。
通过操作系统扫描并持续监听本机网络设备,当插入或打开网络设备时,尝试通过新网卡与邻居建立连接。当网络设备关闭或拔出时,删除通过这些网卡建立的连接。
为每一个本地物理网卡绑定一个端口,如果已指定了端口则绑定指定的端口,否则绑定随机端口。通过这些端口可以发送消息给邻居并接收到邻居的消息。
有两种方式发现一个邻居的物理网卡:
1、由用户指定邻居物理网卡的地址和绑定端口;
2、接收到邻居通过那个物理网卡发来的消息;
对所有已发现的邻居,创建所有连接,并在连接上定时发包确认连接是否可以用于通信。
程序产品启动后,可能通过下列方式发现虚拟网络结构变化:
1、连接到新的邻居;
2、邻居由于长时间无响应被判定为离线;
3、接到邻居传来的关于网络结构变化的通知,将其合并到本节点保存的网络结构时发现网络结构确已变化;
此时节点采取类似OSPF协议的方式,洪泛地将变化的虚拟网络结构发送给邻居。当接收到的多个来自不同节点的虚拟网络结构发生冲突时,对冲突的节点采信从更近的邻居同步的消息。对于多个来自相同距离的邻居,且冲突的虚拟网络结构,采信认为节点存在的结构。
节点发送数据包时,只需要向虚拟网络节点的地址发送。通过合适的本机路由表,数据包将到达本机节点创建的虚拟网卡。节点读取数据包中的目的地址,在自己保存的虚拟网络结构中查询,并向下一跳邻居发送。根据策略,可选向所有可达的邻居发送,或仅向最近的邻居发送。对于每个邻居,可选通过一个或所有连接发送。策略可由用户在启动时指定,也可由另外的网络状态判别程序自动修改。
产生数据包的节点为数据包添加上一个应用层首部,由于原本的IP首部的TTL、校验和等字段不再有意义,这个添加的应用层首部可复用这些字段以节约消息总长度。应用层首部中包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性。例如,节点1.0.0.1先向邻居1.0.0.2发2个包,再向1.0.0.2和1.0.0.3交替发包,序号如下表:
时刻 | 目的 | 序号 |
1 | 1.0.0.2 | 1 |
2 | 1.0.0.2 | 2 |
3 | 1.0.0.2 | 3 |
4 | 1.0.0.3 | 1 |
5 | 1.0.0.2 | 4 |
6 | 1.0.0.3 | 2 |
7 | 1.0.0.2 | 5 |
8 | 1.0.0.3 | 3 |
对于接收到数据包的节点来说,其看到的{发送节点,序号}可以唯一确定一个数据包。由于数据包可能通过多个连接发送到下一跳节点,节点可能多次收到同一个数据包。每个节点收到数据包时,无论目的地址是不是自己,都需要检查元组的唯一性并丢弃重复的包。因此,同一个数据包能且仅能从每个节点发送一次。
如果节点接收到消息时,检查首部发现数据包的目标地址是本节点,将接收这个数据包。接收时,将发送和转发时添加的应用层首部移除,将数据包恢复到其从源设备的应用程序中生成时的状态,并将其发送到虚拟网卡。本机上监听虚拟网卡的应用程序即可接收到数据包,如同数据包是从源设备上直接到来的一样。
在介绍了本申请实施例的应用场景和设计思想之后,下面对本申请实施例提供的技术方案进行说明。
实施例一:
如图2所示,本申请实施例提出了一种基于虚拟网卡的冗余网络通信方法,应用于一个具有多个物理网卡的终端设备,包括:
步骤101:获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
在步骤101中,这个IP地址将作为本地虚拟网卡绑定的地址,同时也是区分于其他节点的标识。因此,用户应该在线下协商保证相连节点地址的唯一性。
步骤102:发现邻居并与所有邻居创建连接,并监测连接是否可用;
在步骤102中,为本地每个物理网卡绑定一个端口,所述端口用于发送消息给邻居并接收邻居的消息;通过用户指定邻居物理网卡地址及其绑定端口,或通过收到邻居通过一个本地物理网卡发来的消息,获取一个邻居的物理网卡:将本地各个物理网卡和邻居各个物理网卡建立连接;通过在每个连接上发包判断连接是否可用。所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路。
步骤103:通过操作系统监听本机网络设备状态,当发现本地有新的物理网卡被插入或打开时,通过新的物理网卡与邻居建立连接;当发现本地某个物理网卡被拔出或关闭时,删除通过这个物理网卡建立的连接;
步骤104:通过连接与邻居节点通信,同步更新本地虚拟网络结构;
在步骤104中,通过下列方式发现虚拟网络结构变化:
1、连接到新的邻居;
2、邻居由于长时间无响应被判定为离线;
3、接到邻居传来的关于网络结构变化的通知,将其合并到本节点保存的网络结构时发现网络结构确已变化;
此时节点采取类似OSPF协议的方式,洪泛地将变化的虚拟网络结构发送给邻居。当接收到的多个来自不同节点的虚拟网络结构发生冲突时,对冲突的节点接受从更近的邻居同步的消息。对于多个来自相同距离的邻居,且冲突的虚拟网络结构,接受认为节点存在的结构。
步骤105:基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送,包括:
数据包的发送:
当接收到上层应用程序发送的数据包时,通过本机路由表,将数据包发送至虚拟网卡;
为数据包添加上一个应用层首部,应用层首部包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性;
读取数据包中的目的地址,在虚拟网络结构中查询下一跳邻居,其中下一跳邻居为所有可达的邻居或最近的邻居发送;
通过一个连接或所有连接将数据包发送至下一跳邻居。
数据包的接收:
当接收到外部访问的消息时,检查消息的头部,如果数据包的目标地址是本地,则接收这个数据包,检查元组的唯一性并丢弃重复的数据包;否则,将该数据包转发出去;
去除数据包的应用层首部,将数据包恢复到其从源设备的应用程序中生成时的状态;
将数据包发送到虚拟网卡,监听虚拟网卡的应用程序即可接收到数据包。
实施例二:
基于上述实施例,本申请实施例提供了一种基于虚拟网卡的冗余网络通信装置,参阅图3所示,本申请实施例提供的一种基于虚拟网卡的冗余网络通信装置200至少包括:
启动单元201,用于获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
连接建立单元202,用于发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;
监听单元203,用于通过操作系统监听本机网络设备状态,当发现本地有新的物理网卡被插入或打开时,通过新的物理网卡与邻居建立连接;当发现本地某个物理网卡被拔出或关闭时,删除通过这个物理网卡建立的连接;
同步单元204,用于通过连接与邻居节点通信,同步更新本地虚拟网络结构;
数据收发单元205,用于基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送。
在一种可能的实施方式中,连接建立单元202具体用于:
为本地每个物理网卡绑定一个端口,所述端口用于发送消息给邻居并接收邻居的消息;
通过用户指定邻居物理网卡地址及其绑定端口,或通过收到邻居通过一个本地物理网卡发来的消息,获取一个邻居的物理网卡:
将本地各个物理网卡和邻居各个物理网卡建立连接;
通过在每个连接上发包判断连接是否可用。
在一种可能的实施方式中,数据收发单元205包括发送子单元和接收子单元:
发送子单元,用于根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行发送;
接收子单元,用于接收外部数据包,通过虚拟网卡将其转发至对应的应用程序。
在一种可能的实施方式中,发送子单元具体用于:
当接收到上层应用程序发送的数据包时,通过本机路由表,将数据包发送至虚拟网卡;
为数据包添加上一个应用层首部,应用层首部包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性;
读取数据包中的目的地址,在虚拟网络结构中查询下一跳邻居,其中下一跳邻居为所有可达的邻居或最近的邻居发送;
通过一个连接或所有连接将数据包发送至下一跳邻居。
在一种可能的实施方式中,接收子单元具体用于:
当接收到外部访问的消息时,检查消息的头部,如果数据包的目标地址是本地,则接收这个数据包,检查元组的唯一性并丢弃重复的数据包;否则,将该数据包转发出去;
去除数据包的应用层首部,将数据包恢复到其从源设备的应用程序中生成时的状态;
将数据包发送到虚拟网卡,监听虚拟网卡的应用程序即可接收到数据包。
需要说明的是,由于本申请实施例提供的基于虚拟网卡的冗余网络通信装置200解决技术问题的原理与本申请实施例提供的基于虚拟网卡的冗余网络通信方法相似,因此,本申请实施例提供的基于虚拟网卡的冗余网络通信装置200的实施可以参见本申请实施例提供的基于虚拟网卡的冗余网络通信方法的实施,重复之处不再赘述。
实施例三:
基于上述实施例,本申请实施例还提供了一种终端设备,参阅图4所示,本申请实施例提供的终端设备300至少包括:处理器301、存储器302和存储在存储器302上并可在处理器301上运行的计算机程序,处理器301执行计算机程序时实现本申请实施例提供的导航卫星定轨方法。
本申请实施例提供的终端设备300还可以包括连接不同组件(包括处理器301和存储器302)的总线303。其中,总线303表示几类总线结构中的一种或多种,包括存储器总线、外围总线、局域总线等。
存储器302可以包括易失性存储器形式的可读介质,例如随机存储器(RandomAccess Memory,RAM)3021和/或高速缓存存储器3022,还可以进一步包括只读存储器(ReadOnly Memory,ROM)3023。
存储器302还可以包括具有一组(至少一个)程序模块3025的程序工具3024,程序模块3025包括但不限于:操作子系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
终端设备300也可以与一个或多个外部设备304(例如键盘、遥控器等)通信,还可以与一个或者多个使得用户能与终端设备300交互的设备通信(例如手机、电脑等),和/或,与使得终端设备300与一个或多个其它终端设备300进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口305进行。并且,终端设备300还可以通过网络适配器306与一个或者多个网络(例如局域网(Local AreaNetwork,LAN),广域网(Wide Area Network,WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器306通过总线303与终端设备300的其它模块通信。应当理解,尽管图4中未示出,可以结合终端设备300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of IndependentDisks,RAID)子系统、磁带驱动器以及数据备份存储子系统等。
需要说明的是,图4所示的终端设备300仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
实施例四:
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,该计算机指令被处理器执行时实现本申请实施例提供的基于虚拟网卡的冗余网络通信方法。
实施例五:
本申请实施例提供的基于虚拟网卡的冗余网络通信方法还可以实现为一种程序产品,该程序产品包括程序代码,当该程序产品可以在终端设备300上运行时,该程序代码用于使终端设备300执行本申请实施例提供的基于虚拟网卡的冗余网络通信方法。
本申请实施例提供的程序产品可以采用一个或多个可读介质的任意组合,其中,可读介质可以是可读信号介质或者可读存储介质,而可读存储介质可以是但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合,具体地,可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、RAM、ROM、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、光纤、便携式紧凑盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请实施例提供的程序产品可以采用CD-ROM并包括程序代码,还可以在计算设备上运行。然而,本申请实施例提供的程序产品不限于此,在本申请实施例中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (7)
1.一种基于虚拟网卡的冗余网络通信方法,应用于接入多个物理网卡的终端设备,其特征在于,包括:
获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;
通过连接与邻居节点通信,同步更新本地虚拟网络结构;
基于所述虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送;
其中,基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送,具体包括:
根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行发送;
接收外部数据包,通过虚拟网卡将其转发至对应的应用程序;
其中,所述根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行发送,包括:
当接收到上层应用程序发送的数据包时,通过本机路由表,将数据包发送至虚拟网卡;
为数据包添加上一个应用层首部,应用层首部包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性;其中,添加的应用层首部使用的是该数据包中IP首部的TTL字段和校验和字段;
读取数据包中的目的地址,在虚拟网络结构中查询下一跳邻居,其中下一跳邻居为所有可达的邻居或最近的邻居发送;其中,存储的虚拟网络结构是在节点能被邻居找到时获取的端口号与本地一个物理网卡绑定以及节点能找到邻居时接收的{邻居地址:固定端口号}元组后建立的;
通过一个连接或所有连接将数据包发送至下一跳邻居。
2.根据权利要求1所述的基于虚拟网卡的冗余网络通信方法,其特征在于,所述方法还包括:
通过操作系统监听本机网络设备状态,当发现本地有新的物理网卡被插入或打开时,通过新的物理网卡与邻居建立连接;当发现本地某个物理网卡被拔出或关闭时,删除通过这个物理网卡建立的连接。
3.根据权利要求1所述的基于虚拟网卡的冗余网络通信方法,其特征在于,所述发现邻居并与所有邻居创建连接,并监测连接是否可用,包括:
为本地每个物理网卡绑定一个端口,所述端口用于发送消息给邻居并接收邻居的消息;
通过用户指定邻居物理网卡地址及其绑定端口,或通过收到邻居通过一个本地物理网卡发来的消息,获取一个邻居的物理网卡:
将本地各个物理网卡和邻居各个物理网卡建立连接;
通过在每个连接上发包判断连接是否可用。
4.根据权利要求1所述的基于虚拟网卡的冗余网络通信方法,其特征在于,所述接收外部数据包,通过虚拟网卡将其转发至对应的应用程序,包括:
当接收到外部访问的消息时,检查消息的头部,如果数据包的目标地址是本地,则接收这个数据包,检查元组的唯一性并丢弃重复的数据包;否则,将该数据包转发出去;
去除数据包的应用层首部,将数据包恢复到其从源设备的应用程序中生成时的状态;
将数据包发送到虚拟网卡,监听虚拟网卡的应用程序即可接收到数据包。
5.一种基于虚拟网卡的冗余网络通信装置,其特征在于,包括:
启动单元,用于获取一个IP地址及子网掩码,在操作系统创建一个虚拟网卡,将所述IP地址与虚拟网卡进行绑定;
连接建立单元,用于发现邻居并与所有邻居创建连接,并监测连接是否可用;所述连接为本地任意一个物理网卡和邻居任意一个物理网卡之间的网络链路;
同步单元,用于通过连接与邻居节点通信,同步本地虚拟网络结构;
数据收发单元,用于基于虚拟网卡和本地虚拟网络结构,实现数据包的接收、转发和发送;
其中,所述数据收发单元,具体用于:
根据本地数据包目标地址、可用连接以及虚拟网络结构对数据包进行发送;
接收外部数据包,通过虚拟网卡将其转发至对应的应用程序;
其中,所述数据收发单元,还具体用于:
当接收到上层应用程序发送的数据包时,通过本机路由表,将数据包发送至虚拟网卡;
为数据包添加上一个应用层首部,应用层首部包括一个对于在其{源地址,目的地址}空间中唯一的序号,用于标记数据包的唯一性;其中,添加的应用层首部使用的是该数据包中IP首部的TTL字段和校验和字段;
读取数据包中的目的地址,在虚拟网络结构中查询下一跳邻居,其中下一跳邻居为所有可达的邻居或最近的邻居发送;其中,存储的虚拟网络结构是在节点能被邻居找到时获取的端口号与本地一个物理网卡绑定以及节点能找到邻居时接收的{邻居地址:固定端口号}元组后建立的;
通过一个连接或所有连接将数据包发送至下一跳邻居。
6.一种终端设备,其特征在于,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-4任一项所述的基于虚拟网卡的冗余网络通信方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-4任一项所述的基于虚拟网卡的冗余网络通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111091227.8A CN113794618B (zh) | 2021-09-17 | 2021-09-17 | 基于虚拟网卡的冗余网络通信方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111091227.8A CN113794618B (zh) | 2021-09-17 | 2021-09-17 | 基于虚拟网卡的冗余网络通信方法、装置及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113794618A CN113794618A (zh) | 2021-12-14 |
CN113794618B true CN113794618B (zh) | 2023-03-24 |
Family
ID=79183857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111091227.8A Active CN113794618B (zh) | 2021-09-17 | 2021-09-17 | 基于虚拟网卡的冗余网络通信方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113794618B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114244744B (zh) * | 2021-12-22 | 2024-04-05 | 上海摩联信息技术有限公司 | 基于物联网设备的节点发现方法和装置 |
CN114928591A (zh) * | 2022-05-31 | 2022-08-19 | 济南浪潮数据技术有限公司 | 一种虚拟机ip地址的添加方法、装置以及介质 |
CN115022217A (zh) * | 2022-06-14 | 2022-09-06 | 深信服科技股份有限公司 | 一种网卡检测方法、装置及电子设备和存储介质 |
CN118282673B (zh) * | 2024-06-04 | 2024-08-02 | 杭州宇泛智能科技股份有限公司 | 多源异构设备数据一致性处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104470A (zh) * | 2009-12-17 | 2011-06-22 | 研祥智能科技股份有限公司 | 一种VxWorks系统下的多网卡双冗余装置及系统 |
CN102368725A (zh) * | 2011-09-09 | 2012-03-07 | 北京东方网信科技股份有限公司 | 一种多网卡的数据接收方法及系统 |
CN103036728A (zh) * | 2012-12-27 | 2013-04-10 | 中国船舶重工集团公司第七二二研究所 | 一种多冗余的以太网数据传输系统及传输方法 |
CN105847053A (zh) * | 2016-03-23 | 2016-08-10 | 成都民航空管科技发展有限公司 | Linux系统下自动设置多网卡多网段任意绑定的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104883264A (zh) * | 2014-02-27 | 2015-09-02 | 中国科学院声学研究所 | 一种虚拟化网络处理平台上网卡的方法及系统 |
-
2021
- 2021-09-17 CN CN202111091227.8A patent/CN113794618B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104470A (zh) * | 2009-12-17 | 2011-06-22 | 研祥智能科技股份有限公司 | 一种VxWorks系统下的多网卡双冗余装置及系统 |
CN102368725A (zh) * | 2011-09-09 | 2012-03-07 | 北京东方网信科技股份有限公司 | 一种多网卡的数据接收方法及系统 |
CN103036728A (zh) * | 2012-12-27 | 2013-04-10 | 中国船舶重工集团公司第七二二研究所 | 一种多冗余的以太网数据传输系统及传输方法 |
CN105847053A (zh) * | 2016-03-23 | 2016-08-10 | 成都民航空管科技发展有限公司 | Linux系统下自动设置多网卡多网段任意绑定的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113794618A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113794618B (zh) | 基于虚拟网卡的冗余网络通信方法、装置及终端设备 | |
US8656017B2 (en) | Peer-to-peer collaboration system with edge routing | |
US20030198214A1 (en) | Method for sharing network information and a router apparatus | |
KR100693320B1 (ko) | 소스 어드레스 선택시스템, 라우터장치, 라우터장치로서 컴퓨터를 기능시키기 위한 프로그램을 기록한 컴퓨터 독출가능한 기록매체, 통신노드 및 소스 어드레스 선택방법 | |
US10582020B2 (en) | Method for multipath TCP communication between two terminals | |
US11800587B2 (en) | Method for establishing subflow of multipath connection, apparatus, and system | |
JP4789425B2 (ja) | 経路テーブル同期方法、ネットワーク機器および経路テーブル同期プログラム | |
US20180241695A1 (en) | Direct replying actions in sdn switches | |
CN113839862B (zh) | Mclag邻居之间同步arp信息的方法、系统、终端及存储介质 | |
CN112968965B (zh) | Nfv网络节点的元数据服务方法、服务器及存储介质 | |
CN112887209B (zh) | 关于数据传输的表项建立方法及相关设备 | |
CN113162779B (zh) | 一种多云互联的方法及设备 | |
CN115225634A (zh) | 虚拟网络下的数据转发方法、装置及计算机程序产品 | |
CN112564983A (zh) | 数据传输方法、装置、计算机系统和介质 | |
CN109873764B (zh) | 建立定向ospf邻居关系的方法、装置、电子设备 | |
CN109981315B (zh) | 一种anima网络的信息处理方法、设备及系统 | |
CN112887201A (zh) | 基于vrrp的接口更新方法、装置及存储介质 | |
CN113918326B (zh) | 一种处理请求的方法及装置 | |
CN113438159B (zh) | 分段路由策略的传输方法及装置、网络传输系统 | |
EP4184822A1 (en) | Method and apparatus for keeping user terminal alive | |
US20150156164A1 (en) | Communication system, communication control method, communication relay system, and communication relay control method | |
JP7502083B2 (ja) | 通信システム及び通信制御方法 | |
CN113765783B (zh) | 通信方法及装置 | |
CN115955433B (zh) | 一种数据传输方法、装置及电子设备 | |
US20240333647A1 (en) | Container network communication system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |