具体实施方式
图1为本发明邻居表项释放方法一个实施例的流程图,如图1所示,该邻居表项释放方法可以包括:
步骤101,网关设备确定终端设备的MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值时,网关设备向终端设备发送探测请求报文。
其中,该探测请求报文携带上述MAC地址、上述MAC地址对应的第一IPv6地址和用于指示上述终端设备检测该第一IPv6地址是否有业务在线的指示信息;该第一IPv6地址为上述MAC地址对应的定时器最老的IPv6地址。
其中,第一阈值为单个MAC地址在网关设备保存的邻居表项中同时存储的IPv6地址的数量的上限阈值,即在上述邻居表项中一个MAC地址对应的IPv6地址的个数的最大值。上述第一阈值的大小可以根据网络用户规模灵活设置,本发明实施例对第一阈值的大小不作限定,举例来说,该第一阈值可以为3。
步骤102,如果网关设备接收到终端设备发送的探测响应报文,并且该探测响应报文中携带第一IPv6地址无业务在线的信息,则网关设备释放第一IPv6地址对应的邻居表项。
进一步地,如果网关设备接收到终端设备发送的探测响应报文,并且上述探测响应报文中携带第一IPv6地址有业务在线的信息,并且网关设备中已使用的IPv6邻居表项的个数小于预先设置的第二阈值,则网关设备判断待回收队列中已有的邻居表项的总数是否小于预先设置的第三阈值;如果是,则网关设备将第一IPv6地址对应的邻居表项存入待回收队列;如果网关设备确定待回收队列中已有的邻居表项的总数等于上述第三阈值,则网关设备释放上述待回收队列中已有的邻居表项,将第一IPv6地址对应的邻居表项存入上述待回收队列。
其中,第二阈值为网关设备上整机表项容量的上限告警阈值,可以根据一定的风险规则设置网关设备上整机支持的邻居表项容量的一定百分比值作为告警阈值,本发明实施例对第二阈值的大小不作限定,举例来说,可以设置第二阈值为网关设备上整机支持的邻居表项容量的80%。
第三阈值为待回收队列中邻居表项容量的上限阈值,第三阈值小于第二阈值,第三阈值的大小可以根据网络用户规模和网关设备的硬件表项容量自行设置,本实施例对第三阈值的大小不作限定,只要第三阈值小于第二阈值即可,举例来说,第三阈值可以为网关设备上整机支持的邻居表项容量的10%。
进一步地,将第一IPv6地址对应的邻居表项存入待回收队列之后,网关设备还可以继续向终端设备发送探测请求报文,上述探测请求报文携带上述MAC地址、第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息;然后网关设备接收终端设备发送的探测响应报文,以获知第一IPv6地址是否仍有业务在线;当网关设备确定该网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,如果上述第一IPv6地址已无业务在线,则网关设备释放第一IPv6地址对应的邻居表项;而如果第一IPv6地址仍有业务在线,则网关设备指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线;接下来,网关设备接收终端设备反馈的上述其他IPv6地址是否有业务在线的信息;如果上述其他IPv6地址中存在无业务在线的IPv6地址,则网关设备释放其他IPv6地址中无业务在线且定时器最老的IPv6地址对应的邻居表项;如果上述其他IPv6地址均有业务在线,则网关设备释放第一IPv6地址对应的邻居表项。
其中,网关设备释放上述待回收队列中已有的邻居表项可以为:网关设备释放上述待回收队列已有的邻居表项中定时器最老的邻居表项;或者,网关设备按照定时器由老至新的顺序,释放上述待回收队列已有的邻居表项中预定数量的邻居表项,该预定数量可以在具体实现时根据网关设备的硬件表项容量和用户规模等自行设定,本实施例对该预定数量的大小不作限定,举例来说,该预定数量可以为2。
另外,本实施例中,网关设备还可以定时或周期性对上述待回收队列进行轮询,如果检测到待回收队列中与上述MAC地址对应的IPv6地址的个数大于预设的第四阈值,则上述网关设备按照定时器由老至新的顺序,释放上述待回收队列与上述MAC地址对应的IPv6地址中的至少一个IPv6地址对应的邻居表项,以使上述待回收队列中与上述MAC地址对应的IPv6地址的个数小于或等于第四阈值,从而可以防止IPv6邻居表项遭受有意或无意地耗尽攻击。
其中,上述第四阈值为单个MAC地址在待回收队列中同时存储的IPv6地址的数量的上限阈值,即在待回收队列中一个MAC地址对应的IPv6地址的个数的最大值。上述第四阈值的大小可以根据网络用户规模灵活设置,本发明实施例对第四阈值的大小不作限定,举例来说,该第四阈值可以为5。
另外,需要说明的是,如果将第四阈值设置为∞或者不设置第四阈值的大小,则表示不设定单个MAC地址在待回收队列中同时存储的IPv6地址的数量的上限阈值,这是为了满足单用户不给于设定上限的需求,即最大限度地允许在未超过整机阈值的情况下单用户可以拥有多个IPv6地址,而如果将第四阈值设置为具体数值,则表示用户默认单个MAC地址对应的IPv6地址的个数的上限被控制为第一阈值与第四阈值之和,这是在整机容量与单用户数量可控之间的一次博弈抉择。
本实施例中,如果网关设备接收到终端设备发送的探测响应报文,并且该探测响应报文中携带第一IPv6地址有业务在线的信息,并且上述网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值,则网关设备指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线;然后网关设备接收终端设备反馈的上述其他IPv6地址是否有业务在线的信息;如果上述其他IPv6地址中存在无业务在线的IPv6地址,则网关设备释放上述其他IPv6地址中无业务在线且定时器最老的IPv6地址对应的邻居表项;如果上述其他IPv6地址均有业务在线,则网关设备释放上述第一IPv6地址对应的邻居表项。
本实施例,步骤101中,网关设备向上述终端设备发送探测请求报文可以为:网关设备在预定的时间长度内周期性向上述终端设备发送探测请求报文;步骤102中,网关设备接收到上述终端设备发送的探测响应报文可以为:网关设备在上述预定的时间长度内接收到该终端设备发送的探测响应报文。
其中,上述预定的时间长度的长短可以在具体实现时,根据网关设备的性能和终端设备的数量等自行设定,本实施例对上述预定的时间长度的长短不作限定,举例来说,上述预定的时间长度可以为5秒。
进一步地,本实施例中,如果上述网关设备在上述预定时间长度内未接收到上述终端设备发送的探测响应报文,当该网关设备中已使用的IPv6邻居表项的个数小于预先设置的第二阈值时,网关设备允许该MAC地址继续安装新的第二IPv6地址,并保留第一IPv6地址的邻居表项;当网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,网关设备释放第一IPv6地址对应的邻居表项。
具体地,本实施例中,网关设备释放第一IPv6地址对应的邻居表项可以为:网关设备释放第一IPv6地址对应的硬件表项,保留第一IPv6地址对应的软件表项,以便当第一IPv6地址再次有业务在线时,网关设备根据第一IPv6地址对应的软件表项直接生成第一IPv6地址对应的硬件表项;或者,网关设备释放上述第一IPv6地址对应的硬件表项和软件表项。
同样地,本实施例中,网关设备释放IPv6地址对应的邻居表项均可以采用与释放第一IPv6地址对应的邻居表项相同的方式,在此不再赘述。
本实施例中,探测请求消息可以为邻居请求报文,该探测请求报文携带上述MAC地址、上述MAC地址对应的第一IPv6地址和用于指示上述终端设备检测该第一IPv6地址是否有业务在线的指示信息可以为:
在上述邻居请求报文中扩展一个选项(Options)属性,该属性信息包含上述MAC地址、上述MAC地址对应的第一IPv6地址和用于指示上述终端设备检测该第一IPv6地址是否有业务在线的指示信息。其中,上述MAC地址对应的第一IPv6地址可以为该第一IPv6地址去除IPv6前缀后的接口标识信息。
具体地,扩展Options属性后的邻居请求报文的格式可以如图2所示,图2为本发明邻居请求报文的格式一个实施例的示意图。
对应地,本实施例中的探测响应报文可以为邻居通告报文,同样,探测响应报文中携带IPv6地址有无业务在线的信息可以为:在邻居通告报文中扩展一个选项(Options)属性,该属性信息包含IPv6地址是否有业务在线的信息。具体地,可以通过“1”来表示IPv6地址有业务在线,通过“0”来表示IPv6地址无业务在线。
上述实施例中,网关设备确定终端设备的MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值时,向上述终端设备发送探测请求报文,该探测请求报文携带上述MAC地址、上述MAC地址对应的定时器最老的第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息;然后,网关设备接收终端设备发送的探测响应报文,如果该探测响应报文中携带第一IPv6地址无业务在线的信息,则网关设备释放上述第一IPv6地址对应的邻居表项;从而可以加快空闲的IPv6邻居表项的释放速度,使得整机容量与终端数之间的关系可确定,并可以准确控制单个终端设备的IPv6地址的数量,不需额外增加硬件表项容量即可满足大多数不是爆发性增加终端设备的场景,还可有效防止无意或是恶意地对网关设备邻居表项的攻击。
图3为本发明邻居表项释放方法另一个实施例的流程图,如图3所示,该邻居表项释放方法可以包括:
步骤301,网关设备确定终端设备的MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值时,网关设备在预定的时间长度内周期性向终端设备发送邻居请求报文。
其中,该邻居请求报文携带上述MAC地址、上述MAC地址对应的第一IPv6地址和用于指示上述终端设备检测该第一IPv6地址是否有业务在线的指示信息;该第一IPv6地址为上述MAC地址对应的定时器最老的IPv6地址。该邻居请求报文的格式可以如图2所示。
其中,第一阈值为单个MAC地址在网关设备保存的邻居表项中同时存储的IPv6地址的数量的上限阈值,即在上述邻居表项中一个MAC地址对应的IPv6地址的个数的最大值。上述第一阈值的大小可以根据网络用户规模灵活设置,本发明实施例对第一阈值的大小不作限定,举例来说,该第一阈值可以为3。
步骤302,网关设备判断在上述预定的时间长度内是否接收到终端设备发送的邻居通告报文;如果是,则执行步骤303;如果在上述预定的时间长度内未接收到终端设备发送的邻居通告报文,则执行步骤318。
步骤303,网关设备判断邻居通告报文中携带的是第一IPv6地址无业务在线的信息,还是第一IPv6地址有业务在线的信息。如果上述邻居通告报文中携带的是第一IPv6地址无业务在线的信息,则执行步骤304;如果上述邻居通告报文中携带的是第一IPv6地址有业务在线的信息,则执行步骤305。
步骤304,网关设备释放第一IPv6地址对应的邻居表项。本次流程结束。
步骤305,网关设备判断该网关设备中已使用的IPv6邻居表项的个数是否小于预先设置的第二阈值。如果是,则执行步骤306;如果否,即该网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值,则执行步骤313。
其中,第二阈值为网关设备上整机表项容量的上限告警阈值,可以根据一定的风险规则设置网关设备上整机支持的邻居表项容量的一定百分比值作为告警阈值,本发明实施例对第二阈值的大小不作限定,举例来说,可以设置第二阈值为网关设备上整机支持的邻居表项容量的80%。
步骤306,网关设备判断待回收队列中已有的邻居表项的总数是否小于预先设置的第三阈值;如果是,则执行步骤307;如果否,这里“否”的分支是指待回收队列中已有的邻居表项的总数等于第三阈值,则执行步骤308。
其中,第三阈值为待回收队列中邻居表项容量的上限阈值,第三阈值小于第二阈值,第三阈值的大小可以根据网络用户规模和网关设备的硬件表项容量自行设置,本实施例对第三阈值的大小不作限定,只要第三阈值小于第二阈值即可,举例来说,第三阈值可以为网关设备上整机支持的邻居表项容量的10%。
步骤307,网关设备将第一IPv6地址对应的邻居表项存入待回收队列。然后执行步骤309。
步骤308,网关设备释放上述待回收队列中已有的邻居表项,将第一IPv6地址对应的邻居表项存入上述待回收队列。然后执行步骤309。
具体地,网关设备释放上述待回收队列中已有的邻居表项可以为:网关设备释放上述待回收队列已有的邻居表项中定时器最老的邻居表项;或者,网关设备按照定时器由老至新的顺序,释放上述待回收队列已有的邻居表项中预定数量的邻居表项,该预定数量可以在具体实现时根据网关设备的硬件表项容量和用户规模等自行设定,本实施例对该预定数量的大小不作限定,举例来说,该预定数量可以为2。
步骤309,网关设备继续向终端设备发送探测请求报文,上述探测请求报文携带上述MAC地址、第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息。
步骤310,网关设备接收终端设备发送的探测响应报文,以获知第一IPv6地址是否仍有业务在线。
步骤311,当网关设备确定该网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,网关设备确定第一IPv6地址是否已无业务在线,如果是,则执行步骤312;如果否,即第一IPv6地址仍有业务在线,则执行步骤313。
步骤312,网关设备释放第一IPv6地址对应的邻居表项。本次流程结束。
步骤313,网关设备指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线。
具体地,网关设备指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线可以为:网关设备向终端设备发送邻居请求报文,该邻居请求报文携带上述MAC地址、上述其他IPv6地址中需要探测的IPv6地址以及用于指示终端设备检测上述需要探测的IPv6地址是否有业务在线的指示信息。
步骤314,网关设备接收终端设备反馈的上述其他IPv6地址是否有业务在线的信息。
具体地,终端设备反馈的上述其他IPv6地址是否有业务在线的信息可以为:终端设备向网关设备发送邻居通告报文,该邻居通告报文中携带上述其他IPv6地址是否有业务在线的信息。
步骤315,网关设备判断上述其他IPv6地址中是否存在无业务在线的IPv6地址;如果是,则执行步骤316;如果否,即网关设备确定上述其他IPv6地址均有业务在线,则执行步骤317。
步骤316,网关设备释放其他IPv6地址中无业务在线且定时器最老的IPv6地址对应的邻居表项。本次流程结束。
步骤317,网关设备释放第一IPv6地址对应的邻居表项。本次流程结束。
其中,步骤313~步骤317所述的过程,可能涉及一次或多次报文交互,也就是说,网关设备可以通过一个邻居请求报文一次性指示终端设备探测上述其他IPv6地址中的至少一个IPv6地址是否有业务在线,相应地,终端设备也可以在一个邻居通告报文中一次性反馈上述其他IPv6地址中的至少一个IPv6地址是否有业务在线的信息,本实施例对此不作限定。
步骤318,网关设备判断该网关设备中已使用的IPv6邻居表项的个数是否小于预先设置的第二阈值。如果是,则执行步骤319;如果网关设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值,则执行步骤320。
步骤319,网关设备允许该MAC地址继续安装新的第二IPv6地址,并保留第一IPv6地址的邻居表项。本次流程结束。
步骤320,网关设备释放第一IPv6地址对应的邻居表项。本次流程结束。
需要说明的是,本实施例中,网关设备释放IPv6地址对应的邻居表项可以为:网关设备释放IPv6地址对应的硬件表项,保留IPv6地址对应的软件表项,以便当IPv6地址再次有业务在线时,网关设备根据IPv6地址对应的软件表项直接生成IPv6地址对应的硬件表项;或者,网关设备直接释放上述IPv6地址对应的硬件表项和软件表项。
也就是说,一种实现方式中,网关设备虽然释放了IPv6地址对应的硬件表项资源,但不直接释放网关设备的管理板中保存的IPv6地址对应的软件表项,特别是在内存资源允许的情况下。便于一旦该IPv6地址再次有业务流经过,即该IPv6地址再次有业务在线时,网关设备可以快速根据保存的该IPv6地址对应的软件表项直接生成该IPv6地址对应的硬件表项,而减少需要再次通告邻居通告消息交互获取IPv6邻居表项信息,从而缩短业务交互的收敛时延。
特别对于网关设备冗余的场景,还需要主备网关之间定时备份IPv6邻居表项资源,以便主备切换时,新的主网关可以通过把定时同步的原主网关的IPv6邻居表项资源快速同步下发到本地硬件表项资源指导业务流快速转发。
另一种实现方式中,网关设备可以在删除IPv6地址对应的硬件表项的同时删除该IPv6地址对应的软件表项,以释放内存资源。
上述实施例可以加快空闲的IPv6邻居表项的释放速度,使得整机容量与终端数之间的关系可确定,并可以准确控制单个终端设备的IPv6地址的数量,不需额外增加硬件表项容量即可满足大多数不是爆发性增加终端设备的场景,还可有效防止无意或是恶意地对网关设备邻居表项的攻击。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图4为本发明邻居表项释放装置一个实施例的结构示意图,本实施例中的邻居表项释放装置可以设置在网络设备中,实现本发明图1所示实施例的流程,如图4所示,该邻居表项释放装置可以包括:确定模块41、发送模块42、接收模块43和释放模块44;
其中,确定模块41,用于确定终端设备的MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值;其中,第一阈值为单个MAC地址在网络设备保存的邻居表项中同时存储的IPv6地址的数量的上限阈值,即在上述邻居表项中一个MAC地址对应的IPv6地址的个数的最大值。上述第一阈值的大小可以根据网络用户规模灵活设置,本发明实施例对第一阈值的大小不作限定,举例来说,该第一阈值可以为3。
发送模块42,用于当确定模块41确定上述MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值时,向终端设备发送探测请求报文,该探测请求报文携带上述MAC地址、上述MAC地址对应的第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息;上述第一IPv6地址为上述MAC地址对应的定时器最老的IPv6地址。
接收模块43,用于接收上述终端设备发送的探测响应报文。
释放模块44,用于当接收模块43接收到终端设备发送的探测响应报文,并且上述探测响应报文中携带第一IPv6地址无业务在线的指示信息时,释放第一IPv6地址对应的邻居表项。
上述邻居表项释放装置中,确定模块41确定终端设备的MAC地址对应的IPv6地址的个数大于或等于预设的第一阈值时,发送模块42向上述终端设备发送探测请求报文,该探测请求报文携带上述MAC地址、上述MAC地址对应的定时器最老的第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息;然后,接收模块43接收终端设备发送的探测响应报文,如果该探测响应报文中携带第一IPv6地址无业务在线的信息,则释放模块44释放上述第一IPv6地址对应的邻居表项;从而可以加快空闲的IPv6邻居表项的释放速度,使得整机容量与终端数之间的关系可确定,并可以准确控制单个终端设备的IPv6地址的数量,不需额外增加硬件表项容量即可满足大多数不是爆发性增加终端设备的场景,还可有效防止无意或是恶意地对网络设备邻居表项的攻击。
图5为本发明邻居表项释放装置另一个实施例的结构示意图,与图4所示的邻居表项释放装置相比,不同之处在于,图5所示的邻居表项释放装置还可以包括:存入模块45;
其中,确定模块41,还用于当接收模块43接收到终端设备发送的探测响应报文,并且上述探测响应报文中携带第一IPv6地址有业务在线的信息,并且上述网络设备中已使用的IPv6邻居表项的个数小于预先设置的第二阈值时,判断待回收队列中已有的邻居表项的总数是否小于预先设置的第三阈值;
存入模块45,用于当确定模块41确定待回收队列中已有的邻居表项的总数小于第三阈值时,将第一IPv6地址对应的邻居表项存入待回收队列;
释放模块44,还用于当确定模块41确定上述待回收队列中已有的邻居表项的总数等于第三阈值时,释放上述待回收队列中已有的邻居表项;
存入模块45,还用于在释放模块44释放上述待回收队列中已有的邻居表项之后,将第一IPv6地址对应的邻居表项存入上述待回收队列。
其中,第二阈值为网络设备上整机表项容量的上限告警阈值,可以根据一定的风险规则设置网络设备上整机支持的邻居表项容量的一定百分比值作为告警阈值,本发明实施例对第二阈值的大小不作限定,举例来说,可以设置第二阈值为网络设备上整机支持的邻居表项容量的80%。
第三阈值为待回收队列中邻居表项容量的上限阈值,第三阈值小于第二阈值,第三阈值的大小可以根据网络用户规模和网络设备的硬件表项容量自行设置,本实施例对第三阈值的大小不作限定,只要第三阈值小于第二阈值即可,举例来说,第三阈值可以为网络设备上整机支持的邻居表项容量的10%。
进一步地,上述邻居表项释放装置还可以包括:第一指示模块46;
发送模块42,还用于在存入模块45将第一IPv6地址对应的邻居表项存入待回收队列之后,继续向终端设备发送探测请求报文,该探测请求报文携带上述MAC地址、上述第一IPv6地址和用于指示终端设备检测第一IPv6地址是否有业务在线的指示信息;
接收模块43,还用于接收终端设备发送的探测响应报文,以获知第一IPv6地址是否仍有业务在线;
释放模块44,还用于当确定模块41确定上述网络设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,如果第一IPv6地址已无业务在线,则释放第一IPv6地址对应的邻居表项;
第一指示模块46,用于当确定模块41确定网络设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,如果第一IPv6地址仍有业务在线,则指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线。
接收模块43,还用于接收终端设备反馈的上述其他IPv6地址是否有业务在线的信息;
释放模块44,还用于当上述其他IPv6地址中存在无业务在线的IPv6地址时,释放上述其他IPv6地址中无业务在线且定时器最老的IPv6地址对应的邻居表项;当其他IPv6地址均有业务在线时,释放上述第一IPv6地址对应的邻居表项。
其中,释放模块44用于释放上述待回收队列中已有的邻居表项可以为:释放模块44,具体用于释放上述待回收队列已有的邻居表项中定时器最老的邻居表项;或者,按照定时器由老至新的顺序,释放上述待回收队列已有的邻居表项中预定数量的邻居表项。
进一步地,上述邻居表项释放装置还可以包括:第二指示模块47;
第二指示模块47,用于当接收模块43接收到终端设备发送的探测响应报文,并且上述探测响应报文中携带第一IPv6地址有业务在线的信息,并且网络设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,指示终端设备探测上述MAC地址对应的IPv6地址中除第一IPv6地址之外的其他IPv6地址是否有业务在线;
接收模块43,还用于接收终端设备反馈的上述其他IPv6地址是否有业务在线的信息;
释放模块44,还用于当上述其他IPv6地址中存在无业务在线的IPv6地址时,释放上述其他IPv6地址中无业务在线且定时器最老的IPv6地址对应的邻居表项;当上述其他IPv6地址均有业务在线时,释放第一IPv6地址对应的邻居表项。
本实施例中,发送模块42用于向终端设备发送探测请求报文可以为:发送模块42,具体用于在预定的时间长度内周期性向终端设备发送探测请求报文;接收模块43接收到上述终端设备发送的探测响应报文可以为:接收模块43在上述预定的时间长度内接收到终端设备发送的探测响应报文。其中,上述预定的时间长度的长短可以在具体实现时,根据网络设备的性能和终端设备的数量等自行设定,本实施例对上述预定的时间长度的长短不作限定,举例来说,上述预定的时间长度可以为5秒。
进一步地,上述邻居表项释放装置还可以包括:保留模块48;
保留模块48,用于当接收模块43在上述预定时间长度内未接收到终端设备发送的探测响应报文,并且上述网络设备中已使用的IPv6邻居表项的个数小于预先设置的第二阈值时,允许上述MAC地址继续安装新的第二IPv6地址,并保留第一IPv6地址的邻居表项;
释放模块44,还用于当接收模块43在上述预定时间长度内未接收到上述终端设备发送的探测响应报文,并且上述网络设备中已使用的IPv6邻居表项的个数大于或等于预先设置的第二阈值时,释放第一IPv6地址对应的邻居表项。
具体地,本实施例中,释放模块44,具体用于释放上述第一IPv6地址对应的硬件表项,保留第一IPv6地址对应的软件表项,以便当第一IPv6地址再次有业务在线时,根据第一IPv6地址对应的软件表项直接生成第一IPv6地址对应的硬件表项;或者,释放上述第一IPv6地址对应的硬件表项和软件表项。
同样地,本实施例中,释放模块44释放IPv6地址对应的邻居表项均可以采用与释放第一IPv6地址对应的邻居表项相同的方式,在此不再赘述。
另外,本实施例中,上述邻居表项释放装置还可以包括:轮询模块(图5中未示出);
轮询模块,用于定时或周期性对上述待回收队列进行轮询;
释放模块44,还用于当上述轮询模块检测到待回收队列中与上述MAC地址对应的IPv6地址的个数大于预设的第四阈值时,按照定时器由老至新的顺序,释放上述待回收队列与上述MAC地址对应的IPv6地址中的至少一个IPv6地址对应的邻居表项,以使上述待回收队列中与上述MAC地址对应的IPv6地址的个数小于或等于第四阈值,从而可以防止IPv6邻居表项遭受有意或无意地耗尽攻击。
其中,上述第四阈值为单个MAC地址在待回收队列中同时存储的IPv6地址的数量的上限阈值,即在待回收队列中一个MAC地址对应的IPv6地址的个数的最大值。上述第四阈值的大小可以根据网络用户规模灵活设置,本发明实施例对第四阈值的大小不作限定,举例来说,该第四阈值可以为5。
上述邻居表项释放装置可以加快空闲的IPv6邻居表项的释放速度,使得整机容量与终端数之间的关系可确定,并可以准确控制单个终端设备的IPv6地址的数量,不需额外增加硬件表项容量即可满足大多数不是爆发性增加终端设备的场景,还可有效防止无意或是恶意地对网络设备邻居表项的攻击。
本发明还提供一种网络设备,该网络设备可以包括本发明图4或图5所示实施例提供的邻居表项释放装置。本发明中,该网络设备可以为网关,当然也可以为其他网络设备,本发明对该网络设备的具体形态不作限定。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。