[发明专利]一种基于IP协议可选字段的容器公网带宽限制方法有效
| 申请号: | 202110178017.6 | 申请日: | 2021-02-07 |
| 公开(公告)号: | CN113067719B | 公开(公告)日: | 2021-12-07 |
| 发明(设计)人: | 叶靖 | 申请(专利权)人: | 杭州又拍云科技有限公司 |
| 主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L12/66;H04L12/833;H04L29/12;G06F9/4401 |
| 代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 陈升华 |
| 地址: | 310012 浙江省杭州市*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 ip 协议 可选 字段 容器 公网 带宽 限制 方法 | ||
1.一种基于IP协议可选字段的容器公网带宽限制方法,其特征在于,包括以下步骤:
1)在物理机架设第一Linux内核模块和第二Linux内核模块;
2)物理机上加载第一Linux内核模块,在收到容器对公网发送的数据包后,将容器的IP地址添加到数据包的IP头部options字段中;
3)容器中发送的数据包通过物理机的第一层NAT之后,数据包的源IP地址被修改为物理机的局域网地址,并被发送到网关机器;
4)网关机器加载第二Linux内核模块,在收到步骤3)的数据包后,将数据包IP头部options字段中取出容器的IP地址,将数据包打上相应的标签;
5)网关机器通过添加iptables规则,在mangle表的INPUT链中将数据包中的标签保存到数据包的连接中;
6)网关机器通过添加iptables规则,在mangle表的INPUT链中将数据包连接中的标签保存到数据包中;
7)通过TC对具有标签的数据包进行流量控制。
2.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤2)中,物理机上加载第一Linux内核模块具体包括:
调用nf_register_hook函数将第一Linux内核模块中的钩子函数挂载到内核的netfilter链中。
3.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤2)中,将容器的IP地址添加到数据包的IP头部options字段中,具体包括:
第一Linux内核模块的钩子函数通过调用setsockopt内核函数,将容器IP地址设置到IPPROTO_IP协议的IP_OPTIONS字段中,IPPROTO_IP和IP_OPTIONS为setsockopt函数的两个控制参数。
4.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤3)中,容器传输到物理机作为第一层NAT,物理机输到公网作为第二层NAT。
5.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤4)中,网关机器加载第二Linux内核模块,具体包括:
会调用nf_register_hook函数将钩子函数挂载到内核的netfilter链中。
6.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤4)中,将数据包IP头部options字段中取出容器的IP地址,具体包括:
第二Linux内核模块的钩子函数通过调用getsockopt内核函数,从IPPROTO_IP协议的IP_OPTIONS字段中获取容器的IP地址,IPPROTO_IP和IP_OPTIONS为getsockopt函数的两个控制参数。
7.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤4)中,将数据包打上相应的标签,具体包括:通过对数据包结构体的mark字段赋值进行操作,数据包结构体传给第二Linux内核模块的钩子函数,标签值为容器IP地址的32位数值。
8.根据权利要求1所述的基于IP协议可选字段的容器公网带宽限制方法,其特征在于,步骤7)中,具有标签的数据包即标记为i的数据包的带宽通过以下公式进行计算:
Q为网关的最大物理带宽值,B为所有标记的数据包的带宽期望值总和,为标记为i的数据包的带宽期望值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州又拍云科技有限公司,未经杭州又拍云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110178017.6/1.html,转载请声明来源钻瓜专利网。





