下行流量、上行流量、双向流量限制方法和装置与流程

文档序号:13627571阅读:4977来源:国知局
下行流量、上行流量、双向流量限制方法和装置与流程

本发明涉及计算机领域,尤其涉及一种下行流量、上行流量、双向流量限制方法和装置。



背景技术:

linux操作系统中的流量控制器tc(trafficcontrol)用于linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。tc限制出口(egress)流量很出色,但是限制入口(ingress)流量差强人意。

在docker集群中,开发者把他们的应用以及依赖包打包到一个可移植的容器中,然后发布到linux机器上。为了防止涌入过大的流量,导致网络带宽被个别用户占用,需要根据用户的具体情况限制其创建的容器的上下行带宽。目前,对于docker容器的上行流量限制方法,需要利用openvswitch的qos(qualityofservice,服务质量)接口来实现。openvswitch简称ovs,是虚拟交换机。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

(1)openvswitch的qos接口仅能限制docker容器的上行流量,不能限制下行流量。

(2)将docker容器和openvswitch结合会增加运维成本,且网络架构复杂。



技术实现要素:

有鉴于此,本发明实施例提供一种下行流量、上行流量、双向流量限制方法和装置。本发明实施例的下行流量限制方法利用虚拟网卡对连通了物理机和虚拟设备,通过设定第一流量控制规则来限定物理机上的虚拟网卡的出口流量,进而限定了虚拟设备的虚拟网卡的入口流量。

为实现上述目的,根据本发明实施例的一个方面,提供了一种下行流量限制方法。

本发明实施例的一种下行流量限制方法,包括:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址;在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量;当网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上;按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。

可选地,在第二虚拟网卡上设定第一流量控制规则,包括:在第二虚拟网卡上添加根队列,设定所述根队列的总流量;在所述根队列下添加限速队列,设定所述限速队列的最大流量;根据所述目的地址将所述数据包划分到不同的限速队列。

可选地,所述限速队列为两个,其中一个限速队列为与所述目的地址是容器ip地址的数据包相匹配的队列,另一个限速队列为默认队列,所述虚拟设备为docker容器。

为实现上述目的,根据本发明实施例的一个方面,提供了一种上行流量限制方法。

本发明实施例的一种上行流量限制方法,包括:在网卡上设定第二流量控制规则以限定所述网卡的出口流量;当所述网卡接收到来自虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。

可选地,在网卡上设定第二流量控制规则,包括:在网卡上添加根队列,设定所述根队列的总流量;在所述根队列下添加限速队列,设定所述限速队列的最大流量;根据所述数据包的源地址将所述数据包划分到不同的限速队列。

可选地,所述限速队列为多个,其中一个限速队列为默认队列,其他限速队列为与所述源地址是容器ip地址的数据包相匹配的队列,所述虚拟设备为docker容器。

可选地,所述方法还包括:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。

为实现上述目的,根据本发明实施例的另一方面,提供了一种双向流量限制方法。

本发明实施例的一种双向流量限制方法,包括:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址;在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量,在网卡上设定第二流量控制规则以限定所述网卡的出口流量;当所述网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上,按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上;当所述网卡接收到来自所述虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。

为实现上述目的,根据本发明实施例的另一方面,提供了一种下行流量限制装置。

本发明实施例的一种下行流量限制装置,包括:创建模块,用于创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址;第一规则设定模块,用于在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量;下行转发模块,用于当网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上;下行传送模块,用于按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。

可选地,所述第一规则设定模块,还用于:在第二虚拟网卡上添加根队列,设定所述根队列的总流量;在所述根队列下添加限速队列,设定所述限速队列的最大流量;根据所述目的地址将所述数据包划分到不同的限速队列。

可选地,所述限速队列为两个,其中一个限速队列为与所述目的地址是容器ip地址的数据包相匹配的队列,另一个限速队列为默认队列,所述虚拟设备为docker容器。

为实现上述目的,根据本发明实施例的另一方面,提供了一种上行流量限制装置。

本发明实施例的一种上行流量限制装置,包括:第二规则设定模块,用于在网卡上设定第二流量控制规则以限定所述网卡的出口流量;上行输出模块,用于当所述网卡接收到来自虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。

可选地,所述第二规则设定模块,还用于:在网卡上添加根队列,设定所述根队列的总流量;在所述根队列下添加限速队列,设定所述限速队列的最大流量;根据所述数据包的源地址将所述数据包划分到不同的限速队列。

可选地,所述限速队列为多个,其中一个限速队列为默认队列,其他限速队列为与所述源地址是容器ip地址的数据包相匹配的队列,所述虚拟设备为docker容器。

可选地,所述装置还包括:创建模块,用于创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。

为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。

本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种下行流量限制方法、上行流量限制或者双向流量限制方法。

为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。

本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种下行流量限制方法、上行流量限制或者双向流量限制方法。

上述发明中的一个实施例具有如下优点或有益效果:利用虚拟网卡对连通了物理机和虚拟设备,不需要使用桥接接口,数据包就可以从网卡直接转发到容器内部;通过设定tc规则,将tc规则用于虚拟设备中来对虚拟设备的上、下行流量分别进行限制,实现了上、下行两个方向的限流;tc规则中通过目的地址或者源地址,将数据包划分到不同限速队列,实现了上、下行两个方向的精准限流,增强了流量控制的灵活性,并且便于设置和管理;通过在网卡和第二虚拟网卡分别设定tc规则,将虚拟设备限速与物理机出口限速向分离,充分利用硬件资源。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的下行流量限制方法的主要步骤示意图;

图2是根据本发明实施例的下行流量限制原理示意图;

图3是根据本发明实施例的下行流量限制方法的流程图;

图4是根据本发明实施例的上行流量限制方法的主要步骤示意图;

图5是根据本发明实施例的上行流量限制原理示意图;

图6是根据本发明实施例的上行流量限制方法的流程图;

图7是根据本发明实施例的双向流量限制方法的主要步骤示意图;

图8是根据本发明实施例的下行流量限制装置的主要模块示意图;

图9是根据本发明实施例的上行流量限制装置的主要模块示意图;

图10是根据本发明实施例的双向流量限制装置的主要模块示意图;

图11是本发明实施例可以应用于其中的示例性系统架构图;

图12是适用于来实现本发明实施例的电子设备的计算机装置的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

linux系统的tc是一个限出不限入的框架,本发明实施例的流量限制方法利用虚拟网卡对(virtualethernetpair,简称veth-pair)连通了物理机和虚拟设备,这个虚拟网卡对中的其中一个虚拟网卡netxb在虚拟设备内部,作为虚拟设备的网卡,在该网卡上配置虚拟设备的ip地址;另一个虚拟网卡netxa在物理机上。虚拟网卡netxa和虚拟网卡netxb构成了一条端到端的通路,限制虚拟网卡netxa的出口流量就相当于限制了虚拟网卡netxb的入口流量,其中,x代表虚拟网卡的编号。通过上述方案实现了下行流量的限制。这里的虚拟设备可以是docker容器、lxc容器(linuxcontainer)或者虚拟机。

图1是根据本发明实施例的流量限制方法的主要步骤示意图。如图1所示,本发明实施例的流量限制方法,主要包括如下步骤:

步骤s101:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。在创建虚拟设备时创建虚拟网卡对,使数据包从网卡直接转发到虚拟设备内部。在转发过程中,需要在物理机上添加路由以使数据包发送到对应的第二虚拟网卡,让后通过虚拟网卡对直接到达虚拟设备内部。

步骤s102:在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量。第一流量控制规则的设定过程见后面的详细说明,通过限定第二虚拟网卡的出口流量进而限制第一虚拟网卡的入口流量。

步骤s103:当网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上。物理机解析数据包获取目的地址,找到与该目的地址相同的ip地址所对应的虚拟设备,将该数据包转发到该虚拟设备对应的虚拟网卡对的一端即第二虚拟网卡上。

步骤s104:按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。数据包到达虚拟网卡对的另一端即第一虚拟网卡上,此时数据包就到达了虚拟设备内部。

图2是根据本发明实施例的下行流量限制原理示意图。如图2所示,实施例中虚拟设备为docker容器,在创建容器0、容器1和容器2时,在物理机上创建三个veth-pair,将veth-pair中的虚拟网卡net0b、虚拟网卡net1b和虚拟网卡net2b对应发送到容器0、容器1和容器2的内部作为容器的网卡。在虚拟网卡net0a、虚拟网卡net1a和虚拟网卡net2a上分别设定第一流量控制规则,即第一tc规则。从外网发来的数据包首先到达网卡ethx,物理机解析该数据包获取数据包的目的地址。假设解析出的目的地址是容器1的ip地址,通过路由把该数据包转发到虚拟网卡net1a。根据设在虚拟网卡net1a上的第一tc规则将该数据包传送到虚拟网卡net1b上,此时数据包就到达了容器1内部。这样就实现了下行流量的限制。

图2示出的下行流量限制原理示意图也是下行数据传输的网络模型,该网络模型仅为示意,如果不同网络间的设备通过网桥(bridge)连接,则可以把物理机上的虚拟网卡netxa放到网桥里面。一个网桥中可以有多个虚拟网卡。

下面详细介绍第一tc规则的设定过程:

(1)在虚拟网卡netxa上添加一个根队列,并设定该根队列的总流量。在添加队列之前,先把网卡ethx上的队列清空。根队列用来加载后续添加的限速队列,根队列的总流量一般为网卡的最大吞吐量。

(2)在该根队列下添加限速队列,并设定限速队列的最大流量。该限速队列的个数可以是一个,也可以是两个,当为一个限速队列时,该限速队列是与目的地址是容器ip地址的数据包相匹配的队列。实施例中添加的限速队列为两个,其中一个限速队列是与目的地址是容器ip地址的数据包相匹配的队列;另一个限速队列为默认队列,当数据包不匹配其他任何队列时就通过该默认队列进行通信,这是习惯做法。每个限速队列对应一个tc分类,为每个tc分类设定允许的最大流量、可用的最小流量和优先级等。

(3)根据所述目的地址将所述数据包划分到不同的限速队列。根据目的地址指定限速队列,目的地址不同走的限速队列也不相同。数据包从虚拟网卡netxa出来时已经被分流,因此从虚拟网卡netxb进入容器时也依然按照设定的流量进行通信。

图3是根据本发明实施例的下行流量限制方法的流程图。假设容器0、容器1和容器2的ip地址分别为172.30.100.1、172.30.100.2和172.30.100.3,如图3所示,本发明实施例的下行流量限制方法的具体实现过程为:

步骤s301:在物理机上创建三个虚拟网卡对netxa(net0a、net1a和net2a)和netxb(net0b、net1b和net2b),将虚拟网卡netxb发送到对应容器(容器0、容器1和容器2)的内部作为容器的网卡,在虚拟网卡netxb上配置该容器的ip地址。这样到达虚拟网卡netxa的数据包就会自动到达虚拟网卡netxb,即数据包只要到达了虚拟网卡netxa就相当于到达了容器。

步骤s302:在虚拟网卡netxa上设定第一tc规则以限定该虚拟网卡netxa的出口流量。比如,第一tc规则设定:在虚拟网卡net0a上设定的根队列的总流量为1000mbit/s,限速队列1允许的最大流量是50mbit/s,默认队列允许的最大流量是100mbit/s;在虚拟网卡net1a上设定的根队列的总流量为1000mbit/s,限速队列2允许的最大流量是80mbit/s,默认队列允许的最大流量是100mbit/s;在虚拟网卡net2a上设定的根队列的总流量为1000mbit/s,限速队列3允许的最大流量是60mbit/s,默认队列允许的最大流量是100mbit/s。

步骤s303:当网卡ethx接收到来自外网的数据包后,物理机解析该数据包获取目的地址(假设数据包的目的地址为172.30.100.2,是容器1的ip地址),通过路由把该数据包转发到虚拟网卡net1a。

步骤s304:按照所述第一tc规则将该数据包传送到虚拟网卡net1b上。数据包的目的地址为172.30.100.2,说明使用限速队列2进行通信,最大流量是80mbit/s。

图4是根据本发明实施例的上行流量限制方法的主要步骤示意图。如图4所示,本发明实施例的上行流量限制方法,主要包括步骤:

步骤s401:在网卡上设定第二流量控制规则以限定所述网卡的出口流量。该网卡为物理机的真实网卡,连通外网,在该网卡上设定第二流量控制规则,使得出网卡的流量分为大小不同的几个队列,第二流量控制规则的设定过程见后面的详细说明。

步骤s402:当所述网卡接收到来自虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。第二流量控制规则为数据包指定了限速队列,而限速队里又设定了最大流量,数据包只能在设定的最大流量限制下进行传输,从而完成上行流量的限制。

图5是根据本发明实施例的上行流量限制原理示意图。如图5所示,实施例中虚拟设备为docker容器,在创建容器0、容器1和容器2时,在物理机上创建三个veth-pair,将veth-pair中的虚拟网卡net0b、虚拟网卡net1b和虚拟网卡net2b对应发送到容器0、容器1和容器2的内部作为容器的网卡。到达虚拟网卡net0b、虚拟网卡net1b和虚拟网卡net2b的数据包会自动对应传送到虚拟网卡net0a、虚拟网卡net1a和虚拟网卡net2a。在网卡ethx上设定第二流量控制规则,即第二tc规则。当从容器发来的数据包到达通往外网的网卡ethx时,物理机解析该数据包获取数据包的源地址。假设解析出的源地址是容器1的ip地址,通过路由把该数据包转发到网卡ethx上。根据设在网卡ethx上的第二tc规则将该数据包传送到外网。这样就实现了上行流量的限制。

图5示出的上行流量限制原理示意图也是上行数据传输的网络模型,该网络模型仅为示意,如果不同网络间的设备通过bridge连接,则可以把物理机上的虚拟网卡netxa放到网桥里面。一个网桥中可以有多个虚拟网卡。

下面详细介绍第二tc规则的设定过程:

(1)在网卡ethx上添加一个根队列,并设定该根队列的总流量。在添加队列之前,先把网卡ethx上的队列清空。根队列用来加载后续添加的限速队列,根队列的总流量一般为网卡的最大吞吐量。

(2)在该根队列下添加限速队列,并设定限速队列的最大流量。根据业务需求,该限速队列的个数可以是一个,也可以是多个。当为一个限速队列时,所有数据包都通过该队列输出到外网。实施例中添加的限速队列为四个,其中一个限速队列为默认队列,当数据包不匹配其他任何队列时就通过该默认队列进行通信,这是习惯做法;其余三个限速队列为与源地址是容器的ip地址的数据包相匹配的队列,每个限速队列对应的不同的带宽。每个限速队列对应一个tc分类,为每个tc分类设定允许的最大流量、可用的最小流量和优先级等。

(3)根据所述源地址将所述数据包划分到不同的限速队列。根据源地址将流量导向指定限速队列,实施例中通过添加tcfilter(过滤器)的方式将数据包划分到不同的限速队列,tcfilter负责把符合条件的数据包放到相对应的限速队列中,再由网卡ethx送到外网。

创建容器时,通过调用容器网络接口(conteinrenetworkinterface,cni)的cmdadd方法来实现定制化创建。当容器删除时,通过调用cni的cmddel得到来实现定制化删除,并且需要删除以该容器的ip地址作为匹配规则的tcfilter,与该容器对应的tc规则和tc分类。cni是一种操作容器网络规范,包含方法规范、参数规范等,其只关心容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。

图6是根据本发明实施例的上行流量限制方法的流程图。假设容器0、容器1和容器2的ip地址分别为172.30.100.1、172.30.100.2和172.30.100.3,如图3所示,本发明实施例的上行流量限制方法的具体实现过程为:

步骤s601:在物理机上创建三个虚拟网卡对netxa(net0a、net1a和net2a)和netxb(net0b、net1b和net2b),将虚拟网卡netxb发送到对应容器(容器0、容器1和容器2)的内部作为容器的网卡,在虚拟网卡netxb上配置该容器的ip地址。这样到达虚拟网卡netxb的数据包就会自动到达虚拟网卡netxa,然后在再匹配路由进行下一跳。

步骤s602:在网卡ethx上设定第二tc规则以限定该网卡ethx的出口流量。比如,第二tc规则设定:在网卡ethx上设定的根队列的总流量为1000mbit/s,限速队列1允许的最大流量是50mbit/s,限速队列2允许的最大流量是80mbit/s,限速队列3允许的最大流量是60mbit/s,默认队列的最大流量是100mbit/s;通过网卡ethx出去的数据包,如果源地址是172.30.100.1,则通过限速队列1输出;如果源地址是172.30.100.2,则通过限速队列2输出;如果源地址是172.30.100.3,则通过限速队列2输出。

步骤s603:当虚拟网卡netxa接收到来自容器的数据包后,物理机解析该数据包获取源地址(假设数据包的源地址为172.30.100.2,是容器1的ip地址),通过路由把该数据包转发到网卡ethx上。

步骤s604:按照所述第二tc规则将该数据包传送到外网。数据包的源地址为172.30.100.2,说明使用限速队列2进行通信,最大流量是80mbit/s。

图7是根据本发明实施例的双向流量限制方法的主要步骤示意图。如图7所示,本发明实施例的双向流量限制方法,主要包括步骤:

步骤s701:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。虚拟网卡对的两个虚拟网卡构成了一条端到端的通路,到达一端的数据包会自动传送到另一端。

步骤s702:在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量,在网卡上设定第二流量控制规则以限定所述网卡的出口流量。第一tc规则和第二tc规则的设定过程同前文描述。

步骤s703:当所述网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上,按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。如果收到的数据包是从外网发到虚拟设备的,按照该步骤执行。

步骤s704:当所述网卡接收到来自所述虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。如果收到的数据包是从虚拟设备发到外网的,则按照该步骤执行。

通过本发明实施例的下行流量、上行流量、双向流量限制方法可以看出,利用虚拟网卡对连通了物理机和虚拟设备,不需要使用桥接接口,数据包就可以从网卡直接转发到容器内部;通过设定tc规则,将tc规则用于虚拟设备中来对虚拟设备的上、下行流量分别进行限制,实现了上、下行两个方向的限流;tc规则中通过目的地址或者源地址,将数据包划分到不同限速队列,实现了上、下行两个方向的精准限流,增强了流量控制的灵活性,并且便于设置和管理;通过在网卡和第二虚拟网卡分别设定tc规则,将虚拟设备限速与物理机出口限速向分离,充分利用硬件资源。

图8是根据本发明实施例的下行流量限制装置的主要模块示意图。如图8所示,本发明实施例的下行流量限制装置800,主要包括:

创建模块801,用于创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。在创建虚拟设备时创建虚拟网卡对,使数据包从网卡直接转发到虚拟设备内部。

第一规则设定模块802,用于在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量。下行流量限制装置的第一流量控制规则的设定过程与下行流量限制方法的第一流量控制规则的设定过程相同。

下行转发模块803,用于当网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上。物理机解析数据包获取目的地址,找到与该目的地址相同的ip地址所对应的虚拟设备,将该数据包转发到该虚拟设备对应的虚拟网卡对的一端即第二虚拟网卡上。

下行传送模块804,用于按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。数据包到达虚拟网卡对的另一端即第一虚拟网卡上,此时数据包就到达了虚拟设备内部。

图9是根据本发明实施例的上行流量限制装置的主要模块示意图。如图9所示,本发明实施例的上行流量限制装置900,主要包括:

第二规则设定模块901,用于在网卡上设定第二流量控制规则以限定所述网卡的出口流量。上行流量限制装置的第二流量控制规则的设定过程与上行流量限制方法的第二流量控制规则的设定过程相同。

上行输出模块902,用于当所述网卡接收到来自虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。第二流量控制规则为数据包指定了限速队列,而限速队里又设定了最大流量,数据包只能在设定的最大流量限制下进行传输,从而完成上行流量的限制。

本发明实施例的上行流量限制装置还包括:创建模块,用于创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。

图10是根据本发明实施例的双向流量限制装置的主要模块示意图。如图10所示,本发明实施例的双向流量限制装置100,主要包括:

创建模块101,用于创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址。虚拟网卡对的两个虚拟网卡构成了一条端到端的通路,到达一端的数据包会自动传送到另一端。

规则设定模块102,用于在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量,在网卡上设定第二流量控制规则以限定所述网卡的出口流量。第一tc规则和第二tc规则的设定过程同前文描述。

下行转发传送模块103,用于当所述网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上,按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。如果收到的数据包是从外网发到虚拟设备的,则执行该模块的处理过程。

上行输出模块104,用于当所述网卡接收到来自所述虚拟设备的数据包后,按照所述第二流量控制规则将所述数据包输出到外网。如果收到的数据包是从虚拟设备发到外网的,则执行该模块的处理过程。

从以上描述可以看出,利用虚拟网卡对连通了物理机和虚拟设备,不需要使用桥接接口,数据包就可以从网卡直接转发到容器内部;通过设定tc规则,将tc规则用于虚拟设备中来对虚拟设备的上、下行流量分别进行限制,实现了上、下行两个方向的限流;tc规则中通过目的地址或者源地址,将数据包划分到不同限速队列,实现了上、下行两个方向的精准限流,增强了流量控制的灵活性,并且便于设置和管理;通过在网卡和第二虚拟网卡分别设定tc规则,将虚拟设备限速与物理机出口限速向分离,充分利用硬件资源。

图11示出了可以应用本发明实施例的流量限制方法或流量限制装置的示例性系统架构110。

如图11所示,系统架构110可以包括终端设备111、112、113,网络114和服务器115。网络114用以在终端设备111、112、113和服务器115之间提供通信链路的介质。网络114可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备111、112、113通过网络114与服务器115交互,以接收或发送消息等。终端设备111、112、113上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。

终端设备111、112、113可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器115可以是提供各种服务的服务器,例如对用户利用终端设备111、112、113所产生的点击事件提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的点击数据、文本内容等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。

需要说明的是,本申请实施例所提供的上行流量限制方法、下行流量限制方法、双向流量限制方法一般由服务器115执行,相应地,上行流量限制装置、下行流量限制装置、双向流量限制装置一般设置于服务器115中。

应该理解,图11中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。

本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种下行流量限制方法。

本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种下行流量限制方法。

根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。

本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种上行流量限制方法。

本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种上行流量限制方法。

根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。

本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种双向流量限制方法。

本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种双向流量限制方法。

下面参考图12,其示出了适用于来实现本发明实施例的电子设备的计算机系统120的结构示意图。图12示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图12所示,计算机系统120包括中央处理单元(cpu)121,其可以根据存储在只读存储器(rom)122中的程序或者从存储部分128加载到随机访问存储器(ram)123中的程序而执行各种适当的动作和处理。在ram123中,还存储有计算机系统120操作所需的各种程序和数据。cpu121、rom122以及ram123通过总线124彼此相连。输入/输出(i/o)接口125也连接至总线124。

以下部件连接至i/o接口125:包括键盘、鼠标等的输入部分126;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分127;包括硬盘等的存储部分128;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分129。通信部分129经由诸如因特网的网络执行通信处理。驱动器130也根据需要连接至i/o接口125。可拆卸介质131,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器130上,以便于从其上读出的计算机程序根据需要被安装入存储部分128。

特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分129从网络上被下载和安装,和/或从可拆卸介质131被安装。在该计算机程序被中央处理单元(cpu)121执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括创建模块、第一规则设定模块、下行转发模块和下行传送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,创建模块还可以被描述为“创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:创建虚拟网卡对,将所述虚拟网卡对的第一虚拟网卡发送到虚拟设备内部,在所述第一虚拟网卡上配置所述虚拟设备的ip地址;在第二虚拟网卡上设定第一流量控制规则以限定所述第二虚拟网卡的出口流量;当网卡接收到来自外网的数据包后,根据所述数据包的目的地址和所述虚拟设备的ip地址将所述数据包转发到相应的第二虚拟网卡上;按照所述第一流量控制规则将所述数据包传送到与所述第二虚拟网卡相应的第一虚拟网卡上。

根据本发明的技术方案,利用虚拟网卡对连通了物理机和虚拟设备,不需要使用桥接接口,数据包就可以从网卡直接转发到容器内部;通过设定tc规则,将tc规则用于虚拟设备中来对虚拟设备的上、下行流量分别进行限制,实现了上、下行两个方向的限流;tc规则中通过目的地址或者源地址,将数据包划分到不同限速队列,实现了上、下行两个方向的精准限流,增强了流量控制的灵活性,并且便于设置和管理;通过在网卡和第二虚拟网卡分别设定tc规则,将虚拟设备限速与物理机出口限速向分离,充分利用硬件资源。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1