一种网络通信方法及系统技术方案

技术编号:21278113 阅读:38 留言:0更新日期:2019-06-06 10:40
本申请公开了一种网络通信方法及系统;上述网络通信方法包括:确定Docker容器内的数据转发规则;根据数据转发规则,将通过第一端口接收的数据包转发给Docker容器内部署的应用,或者,将Docker容器内部署的应用发送的数据包通过第一端口转发给外部设备;其中,Docker容器的一对第一端口映射到所在主机的端口上。本申请可以降低Docker容器的端口管理复杂度,并提高数据传输效率。

A Network Communication Method and System

This application discloses a network communication method and system. The above network communication method includes: determining the data forwarding rules in the Docker container; forwarding the data packets received through the first port to the application deployed in the Docker container according to the data forwarding rules; or forwarding the data packets sent by the application deployed in the Docker container to the external device through the first port; A pair of first ports of the Docker container are mapped to the port of the host. This application can reduce the port management complexity of Docker container and improve data transmission efficiency.

【技术实现步骤摘要】
一种网络通信方法及系统
本申请涉及但不限于通信
,尤指一种网络通信方法及系统。
技术介绍
微服务架构已经成为软件系统开发和部署的主流模式之一。在微服务应用场景下,通常采用Docker容器部署服务,以便实现服务的快速部署和实例的动态伸缩。Docker是一个开源的应用容器引擎,允许开发者打包应用到容器中。在一般场景下,通常由Kubernetes来实现容器集群的管理和调度,同时结合Flannel等网络插件来实现Docker容器之间的网络互联互通。然而,在很多面向中小企业的应用场景中,应用的服务功能相对比较单一,整体容量要求不高,这时如果再通过Kubernetes和Flannel来做Docker容器的集群管理和网络互联互通,在加大系统整体工作负载的同时,也会使得整个系统变得比较复杂,进一步增大了整个系统运维管理的难度和成本。因此,在这种应用场景下,通常只使用Docker基础服务来部署应用微服务,并利用Docker基础服务所提供的容器管理接口来实施容器的管理。Docker容器网络通常使用桥接(bridge)模式来构建。当Docker容器需要对外暴露服务的端口时,在Docker容器启动时采用端口映射的方式将Docker容器内的端口映射到主机端口上暴露出去。这种端口映射的实现机理是通过在iptables(IP信息包过滤系统)中增加规则链来实现的。然而,在Docker容器内需要多端口暴露的情况下,特别是一些数据传输的场景下,比如视频会议、视频分析、媒体服务器等应用,数据基于UDP(UserDatagramProtocol,用户数据报协议)传输,通常一路数据就需要暴露一对或者多对端口;如果继续使用端口映射方式,一来端口管理变得复杂,二来实际验证测试发现:基于iptables的端口映射和数据包转发,效率极其低下,时延加大,严重影响容器内应用的业务功能。另外,Docker容器自身也提供了docker-proxy来实现容器应用的数据包转发,但是它的实现机制是为每个做端口映射的容器端口都提供一个docker-proxy进程来进行数据包的转发,当存在大量的端口映射时,就需要开启大量的docker-proxy进程,同样存在效率低、运维管理难度大的问题。
技术实现思路
本申请实施例提供一种网络通信方法及系统,可以降低Docker容器的端口管理复杂度,并提高数据传输效率。一方面,本申请实施例提供一种网络通信方法,包括:确定Docker容器内的数据转发规则,所述Docker容器的一对第一端口映射到所在主机的端口上;根据所述数据转发规则,将通过所述第一端口接收的数据包转发给所述Docker容器内部署的应用,或者,将所述Docker容器内部署的应用发送的数据包通过所述第一端口转发给外部设备。另一方面,本申请实施例提供一种网络通信系统,包括:部署在Docker容器内的数据分发单元以及网络应用单元;所述Docker容器的一对第一端口映射到所在主机的端口上;所述网络应用单元包括一个或多个应用;所述数据分发单元,适于确定所述Docker容器内的数据转发规则;根据所述数据转发规则,将通过所述第一端口接收的数据包转发给所述网络应用单元内的应用,或者,将所述网络应用单元内的应用发送的数据包通过所述第一端口转发给外部设备。另一方面,本申请实施例提供一种网络设备,包括:处理器和存储器;所述存储器适于存储网络通信程序,所述网络通信程序被所述处理器执行时实现上述网络通信方法的步骤。另一方面,本申请实施例提供一种计算机可读介质,存储有网络通信程序,所述网络通信程序被处理器执行时实现上述网络通信方法的步骤。在本申请实施例中,Docker容器的一对第一端口映射到所在主机的端口上;根据Docker容器内的数据转发规则,将通过第一端口接收的数据包转发给Docker容器内部署的应用,或者,将Docker容器内部署的应用发送的数据包通过第一端口转发给外部设备。在本实施例中,Docker容器只需在主机上暴露一对第一端口用于传输数据包,不仅降低了端口管理复杂度,而且提高了数据传输效率。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。图1为本申请实施例提供的网络通信系统的示意图;图2为本申请实施例提供的网络通信系统的实施流程示意图;图3为本申请实施例提供的网络通信方法的流程图;图4为本申请实施例提供的网络通信方法的一种示例流程图;图5为本申请实施例提供的网络通信方法的另一种示例流程图;图6为本申请实施例提供的网络通信方法的再一种示例流程图;图7为本申请实施例提供的网络通信方法的再一种示例流程图;图8为本申请实施例提供的网络设备的示意图。具体实施方式下面将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。需要说明的是,本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。图1为本申请实施例提供的网络通信系统的示意图。图2为本申请实施例提供的网络通信系统的实施流程示意图。如图1和图2所示,本实施例提供的网络通信系统,包括:部署在Docker容器11内的数据分发单元112以及网络应用单元114。其中,Docker容器11可以部署在一台网络设备(可以称为主机)上,每台网络设备上可以同时部署多个Docker容器。Docker容器11上可以部署一个或多个应用,比如,可以根据不同的业务场景实例化得到不同的网络应用。如图2所示,网络应用单元114内可以包括一个或多个应用,比如图2中的应用1、应用2及应用n,其中,应用1绑定端口a,应用2绑定端口b,应用n绑定端口n。在本实施例中,Docker容器11的一对第一端口(在图2中采用端口B示意)映射到所在主机的端口上。其中,一对第一端口可以包括一个RTP(RealtimeTransportProtocol,实时传输协议)端口和一个RTCP(RealtimeTransportControlProtocol,实时传输控制协议)端口,用于传输数据。示例性地,Docker容器11可以在启动时采用端口映射方式在所在主机上暴露一对第一端口,用于接收来自外部设备10的数据包,或者,向外部设备10发送数据包。需要说明的是,Docker容器11在启动时会初始化Docker容器地址与所在主机的网络协议(IP,InternetProtocol)地址的对应关系,以及第一端口与所在主机上端口的映射关系。基于此,Docker容器11可以实现与外部设备10的数据交互。在本实施例中,数据分发单元112适于确定Docker容器11内的数据转发规则,以及根据数据转发规则,将通过第一端口(比如,图2中的端口B)接收的数本文档来自技高网
...

【技术保护点】
1.一种网络通信方法,包括:确定Docker容器内的数据转发规则;其中,所述Docker容器的一对第一端口映射到所在主机的端口上;根据所述数据转发规则,将通过所述第一端口接收的数据包转发给所述Docker容器内部署的应用,或者,将所述Docker容器内部署的应用发送的数据包通过所述第一端口转发给外部设备。

【技术特征摘要】
1.一种网络通信方法,包括:确定Docker容器内的数据转发规则;其中,所述Docker容器的一对第一端口映射到所在主机的端口上;根据所述数据转发规则,将通过所述第一端口接收的数据包转发给所述Docker容器内部署的应用,或者,将所述Docker容器内部署的应用发送的数据包通过所述第一端口转发给外部设备。2.根据权利要求1所述的方法,其特征在于,所述数据转发规则用于记录每路数据的数据源和数据目的地的信息,其中,所述数据源或所述数据目的地为所述Docker容器内部署的应用。3.根据权利要求2所述的方法,其特征在于,所述数据源的信息包括:源地址以及源端口;所述数据目的地的信息包括:目的地址以及目的端口,其中,所述源端口或目的端口为所述Docker容器内部署的应用绑定的端口。4.根据权利要求3所述的方法,其特征在于,所述根据所述数据转发规则,将通过所述第一端口接收的数据包转发给所述Docker容器内部署的应用,包括:通过查询所述数据转发规则,确定从所述第一端口接收到的数据包携带的源地址和源端口所对应的目的端口;将所述数据包转发给所述Docker容器内绑定所述目的端口的应用。5.根据权利要求3所述的方法,其特征在于,所述根据所述数据转发规则,将所述Docker容器内部署的应用发送的数据包通过所述第一端口转发给外部设备,包括:通过查询所述数据转发规则,确定所述Docker容器内发送所述数据包的应用所绑定的端口对应的外部设备的网络协议IP地址和端口;通过所述第一端口将所述数据包转发至所述外部设备。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取每路数据的通信链路信息;其中,所述确定Docker容器内的数据转发规则,包括:根据每路数据的通信链路信息,确定所述Docker容器内的数据转发规则。7.根据权利要求6所述的方法,其特征在于,所述Docker容器的一个第二端口映射到所述主机的端口上;所述获取每路数据的通信链路信息,包括:通过所述第二端口与所述外部设备进行信令交互,确定待通过所述第一端口接收的任一路数据的源地址和源端口;从待接收该路数据的应用获取所述应用绑定的Docker容器地址和端口;根据该路数据的源地址、源端口、所述应用所绑定的Docker容器地址和端口,确定该路数据的通信链路信息;或者,通过所述第二端口接收所述外部设备发送的请求消息,从所述请求消息中解析出待通过所述第一端口发送的任一路数据的目的地址和目的端口、待发送该路数据的应用;从所述待发送该路数据的应用获取所述应用绑定的Docker容器地址和端口;根据该路数据的目的地址...

【专利技术属性】
技术研发人员:刘勇
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1