[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0039] 下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0040] 如图1所示,一种基于流量控制器的优化方法,流量控制器提供一限速规则用以对发送的下行报文进行流量限制,包括下述步骤:
[0041] S1.流量控制器获取发送的下行报文,并将下行报文送入限速规则进行判断,并根据判断结果对下行报文进行分类标识;
[0042] S2.根据限速规则将所属网关本地地址的下行报文进行返回处理,执行步骤S3;
[0043] S3.识别下行报文是否有分类标识,若是,执行步骤S5;若否,执行步骤S4;
[0044] S4.将没有分类标识的所属网关本地地址的下行报文从流量控制器的输出接口输出,结束;
[0045] S5.将带有分类标识的下行报文进行流量限制后从输出接口输出,结束。
[0046] 作为一种优选的实施方式,上述限速规则可由POSTROUTING链中的限速规则链实现,具体的可在限速规则链头增加节点,用于判断下行报文的目标地址是否属于所属网关本地地址,在本实施例中,可将所属网关本地地址的下行报文从流量控制器的输出接口输出,无需进行流量限制,实现了在网关上通过流量控制器对客户端进行报文限速时,客户端可正常访问网关配置管理页面的目的。
[0047] 在优选的实施例中,执行完步骤S1后还包括:判断下行报文是否为所属网关本地地址的下行报文,若是,执行步骤S2;若否,根据限速规则对除所属网关本地地址的下行报文进行分类标识后,执行步骤S3。
[0048] 在本实施例中,通过对除所属网关本地地址的下行报文打分类标识(mark)的形式来进行区分,可在出口处根据分类标识的标志将具有分类标识的下行报文进行流量限制。
[0049] 如图2所示,在优选的实施例中,步骤S5的具体过程为:
[0050] S51.根据分类标识将相应的下行报文添加于预设的分类队列中;
[0051] S52.根据预设的分类队列的下行报文排列顺序将下行报文从输出接口输出,结束。
[0052] 在本实施例中,可通过在输出端口处建立一个分类队列来实现流量控制。下行报文从输入接口进来后,由输入多路分配器进行判断选择:将打有分类标识的下行报文交到转发模块处理,通过查看路由表获取下行报文的下一目的地,对下行报文进行排列以便将其输送至输出接口。
[0053] 在优选的实施例中,在根据限速规则对除所属网关本地地址的下行报文进行分类标识之前还包括:
[0054] 将不符合限速规则的下行报文丢弃。
[0055] 在本实施例中,可通过linux内核提供的流量控制器来实现,当下行报文从输入接口进来后,经过流量限制丢弃不符合规定的下行报文以实现流量限制的目的。
[0056] 如图3所示,一种流量控制器,用以对发送的下行报文进行流量限制,包括:
[0057] 一接收单元1,用以接收发送的下行报文;
[0058] 一处理单元2,连接接收单元1,提供一限速规则,处理单元2用以根据限速规则将所属网关本地地址的下行报文输出;
[0059] 一识别单元3,连接处理单元2,用以识别下行报文是否有分类标识;
[0060] 一限流单元4,连接识别单元3,用以将带有分类标识的下行报文进行流量限制;
[0061] 一输出单元5,分别连接识别单元3和限流单元4,用以输出下行报文。
[0062] 在本实施例中,可直接将没有分类标识的所属网关本地地址的下行报文从流量控制器的输出接口输出,无需进行流量限制,解决了在网关上对客户端进行报文限速后,客户端访问网关配置管理页面导致系统宕机的问题。
[0063] 如图4所示,在优选的实施例中,还包括:
[0064] 一判断单元6,分别与接收单元1和处理单元2连接,用以判断下行报文是否为所属网关本地地址的下行报文;
[0065] 处理单元2根据限速规则将所属网关本地地址的下行报文输出,以及根据限速规则对除所属网关本地地址的下行报文进行分类标识。
[0066] 在本实施例中,通过判断单元6对除所属网关本地地址的下行报文打分类标识(mark)的形式来进行区分,通过处理单元2可在出口处根据分类标识的标志将具有分类标识的下行报文进行流量限制。
[0067] 在优选的实施例中,限流单元4包括:
[0068] 一队列模块42,提供预设的分类队列,队列模块42用以根据分类标识将相应的下行报文添加于预设的分类队列中;
[0069] 输出单元5用以根据预设的分类队列的下行报文排列顺序将下行报文从输出接口输出。
[0070] 在本实施例中,可通过队列模块42建立一个分类队列来实现流量控制。下行报文从输入单元进来后,由识别单元3进行判断选择:将打有分类标识的下行报文交到转发模块处理,通过查看路由表获取下行报文的下一跳,采用限流单元4对下行报文进行排列以便将其输送至输出单元5输出。
[0071] 在优选的实施例中,处理单元2包括:
[0072] 一剔除模块21,用以剔除不符合限速规则的下行报文。
[0073] 通过将与限速规则不匹配的下行报文剔除可提高流量限制的限制效率。
[0074] 在本实施例中,可通过linux内核提供的流量控制器来实现,当下行报文从输入单元进来后,经过剔除模块21以丢弃不符合规定的下行报文以实现流量限制的目的。
[0075] 在技术方案中,当客户端访问网关管理配置页面时,会触发HTTPD进程进行处理。当网关采用了下行限速时,可以在输出数据包(POSTROUTING)链中插入第一条IP信息过滤(iptables)规则:对来自于网关本地的数据报文直接做返回(return)处理,即来自于网关本地的数据报文不会被后续规则打上分类标识,在出口处就不会进入到任何限流队列中,从而避免HTTPD进程因为长传输数据而占用过多的系统资源,导致系统宕机的现象。
[0076] 以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。