[0019] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0020] 需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0021] 本发明的路由模式下限制终端数量的方法能够使家庭网关限制同一时间接入公网的终端数量。该数量可配置,其中对于数量的限制包括以下两种情形:
[0022] 一:限制同时接入公网的终端总数;
[0023] 二:分别限制不同类型终端的数量。
[0024] 本发明的路由模式下限制终端数量的方法采用的基本算法如下:假设当前限制接入的终端数为N,那么在处理第N+1接入请求时,首先通过ARP检测当前N个终端中是否存在有不在线的终端。其中,如果某个终端连续若干次次ARP检测无响应,则认为此终端不在线。如果N个终端都在线,那么拒绝第N+1个终端的接入请求,第N+1个终端无法获取IP;如果当前在线终端的个数不足N个,那么允许第N+1个终端的接入请求,并为其分配IP。
[0025] 本发明的路由模式下限制终端数量的方法主要是利用网关中的DHCP服务器,通过在DHCP服务代码里稍作修改来实现。基本原理是:当终端连接上网关时,终端会通过DHCP客户端向网关请求IP。此时如果网关中已连接的该类型终端的个数等于限制值,则网关的DHCP服务器将不予响应,那么该终端就无法获取IP地址,从而达到限制上网终端数量的目的。
[0026] 具体地,参照图1,本发明的路由模式下限制终端数量的方法包括以下步骤:
[0027] 步骤S1、判断终端数量限制类型;
[0028] 其中,终端数量限制类型包括限制接入终端的总数量和限制不同类型终端的接入数量。即可以限制接入网关的终端的总数量,也可以针对各个类型的终端,分别限制相应的接入数量。
[0029] 步骤S2、对于当前终端数量限制类型,检测是否存在终端不在线;
[0030] 具体地,通过ARP检测当前连接的终端中是否存在有不在线的终端。如果某个终端连续若干次ARP检测无响应,则认为此终端不在线。其中,ARP检测的次数可根据实际需要来灵活确定。
[0031] 步骤S3、若存在终端不在线,则允许新的终端的接入请求,并为新的终端分配IP;
[0032] 步骤S4、若不存在终端不在线,则不响应新的终端接入请求。
[0033] 具体地,实现步骤S3和步骤S4时,主要是在DHCP服务器端程序的结构体Structserver_config_t中添加一些全局变量,以统计已连接各种类型终端的数量和连接终端的总数量,同时添加一些DHCP的配置项,表示各种类型的终端的限制数和接入终端总的限制数。这些配置项可通过串口命令和远程管理平台修改。当配置项修改时,DHCP服务器重新读取配置文件,并初始化各配置项。
[0034] 具体地,在Struct server_config_t结构体中添加如下成员变量:
[0035] Struct category_config_info catainfo[NUMOFTYPES];
[0036] Int mwmode;
[0037] Int allowed;
[0038] Int TotalTerminalNumber;
[0039] Struct category_config_info{
[0040] Int Ifrestrict;
[0041] Int RstNum;
[0042] Int Alreadlyallowed;
[0043] }
[0044] 其中,mwmode表示限制终端的策略。当mwmode值为0时,终端数量限制功能不起作用;当mwmode值为1时,只对接入终端的总数量进行限制;当mwmode值为2时,分别对不同类型的终端数量进行限制。allowed用于统计已经获取IP的终端数量,TotalTerminalNumber表示所限制的总终端数。结构体struct category_config_info是对每一类型终端的数量进行限制时用到的结构。Ifrestrict表示功能开启或关闭,RstNum表示相应类型终端的设定限制数,Alreadyallowed表示已经获取IP的该类型的终端数。
[0045] DHCP服务器同DHCP客户端交互获取IP的简单过程如图2所示。其中,关键在于:判断当前已获取IP的终端的个数,并根据条件执行不同的内容。从上面交互过程不难看出,增加的条件判断内容及处理放在sendoffer过程中比较合理。从DHCP服务器代码中可以知道sendoffer这个过程是由sendoffer()函数实现。这个函数会从地址池中得到一个未被使用的IP,并利用到客户端发过来的discover包,构造offer包的内容,再将offer包发送个客户端;然后客户端根据offer包提供的IP向服务器发送request包,完成动态IP的获取过程;最后再sendoffer函数里面进行处理。如果终端个数等于限制数,则sendoffer()函数返回出错,一般是返回-1,此时该会话交互过程就结束,而终端也就获取不到IP。
[0046] 综上所述,本发明的路由模式下限制终端数量的方法利用网关中已有的软件资源实现,实现过程比较简单,不影响路由转发的处理复杂程度;同时不会有额外的内存需求,也不会造成网关的性能降低。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0047] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。