IP 地址的分配方法及装置 【技术领域】
本发明涉及通信领域, 具体而言, 涉及一种 IP 地址的分配方法及装置。背景技术 动态主机配置协议 (Dynamic Host Configure Protocol, 简称为 DHCP), 实现为主 机分配网络协议 (Internet Protocol, 简称为 IP) 地址及其他网络参数, 是一种动态配置 协议。
DHCP 协议采用客户主机 - 服务器 (CLIENT-SERVER) 机制, 整个配置过程自动实现, 所有配置信息在 DHCP 服务器 (DHCP Server) 集中控制。通过配置 IP 地址使用租期, 可以 达到 IP 地址复用效果。
由于默认情况下, 路由器不会将收到的广播包从一个子网发送到另一个子网。而 当 DHCP 服务器和客户主机不在同一个子网时, 充当客户主机默认网关的路由器必须将广 播包发送到 DHCP 服务器所在的子网, 这一功能就称为 DHCP 中继 (DHCP Relay)。 DHCP Relay
实现了 DHCP 客户主机 (DHCP CLIENT) 和 DHCP 服务器 (DHCP Server) 之间的透明交互。
目前, DHCP 中继网络一般采用如图 1 所示的拓扑方案。DHCP 客户主机经过若干二 层透传网络实现与 DHCP Relay 的二层互通, DHCP Relay 和 DHCP Server 实现三层路由可 达, DHCP 报文经过 DHCP Relay 时需要重新报文封装。在 DHCP Relay 的网络中, 每当一个 DHCP 客户主机上线一次, DHCP Relay 就会和 DHCP Server 完成一次 DHCP 过程。
图 2 是根据相关技术的客户主机 DHCP 报文交互的流程图, 如图 2 所示, 一个 DHCP 客户主机需要通过两次交换完成网络参数的获得, 通过一次交互完成续租过程, 通过一次 传递完成释放过程。当存在大量 DHCP 客户主机上线时, DHCP Relay 和 DHCP Server 之间 的报文数量将非常可观, 占用大量带宽, 增加不必要的网络流量, 并且给网络带来不安全因 素, 同时对 DHCP Server 的报文处理能力也是一个很大的挑战。 发明内容
针对相关技术中, 在 DHCP 中继网络中, 每当一个 DHCP 客户主机上线一次, DHCP Relay 需要与 DHCP Server 完成一次 DHCP 过程, 从而增加 DHCP Relay 和 DHCP Server 之间 的网络流量的问题, 本发明提供了一种 IP 地址的分配方法及装置, 以至少解决上述问题。
根据本发明的一个方面, 提供了一种 IP 地址的分配方法, 包括 : DHCP 中继接收到 第一动态主机配置协议 DHCP 发现消息后, 判断是否需要从 DHCP 服务器获取网络协议 IP 地 址; 在判断结果为是的情况下, 所述 DHCP 中继从所述 DHCP 服务器获取并存储多个 IP 地址 ; 从获取的所述多个 IP 地址中选择一个 IP 地址分配给发送所述第一 DHCP 发现消息的客户 主机。
优选地, 在所述判断结果为否的情况下, 所述方法还包括 : 从本地存储的 IP 地址 中选择一个 IP 地址分配给所述客户主机。
优选地, 判断是否从 DHCP 服务器获取网络协议 IP 地址包括 : 判断所述 DHCP 中继是否存储有未分配给客户主机的 IP 地址。
优选地, 在判断结果为是的情况下, 从 DHCP 服务器获取多个 IP 地址包括 : 向所述 DHCP 服务器发送第二 DHCP 发现消息 ; 从所述 DHCP 服务器发送的 DHCP 响应消息中获取请 求获取所述多个 IP 地址。
优选地, 从所述 DHCP 服务器发送的 DHCP 响应消息中获取请求获取所述多个 IP 地 址之后, 所述方法还包括 : 向所述 DHCP 服务器发送携带所述多个 IP 地址的 DHCP 请求消息 ; 在所述多个 IP 地址与所述 DHCP 发送的 IP 地址一致的情况下, 接收所述 DHCP 服务器发送 的 DHCP 确认消息。
优选地, 接收所述 DHCP 服务器发送的 DHCP 确认消息之后, 所述方法还包括 : 建立 客户主机信息表, 其中, 所述客户主机信息表用于记录客户主机与为客户主机分配的 IP 地 址的对应关系 ; 接收到客户主机发送的离开报文后, 释放为所述客户主机分配的 IP 地址, 删除所述客户主机信息表中所述客户主机的信息 ; 确定所述 DHCP 服务器为所述 DHCP 中继 分配的所述多个 IP 地址的使用时间达到第一预设租期后, 判断所述客户主机信息表中是 否还存在有客户主机的信息, 在判断结果为否的情况下, 向所述 DHCP 服务器发送 DHCP 释放 消息, 释放所述多个 IP 地址, 在判断结果为是的情况下, 向所述 DHCP 服务器续租所述多个 IP 地址。
优选地, 在从获取的所述多个 IP 地址中选择一个 IP 地址分配给发送所述第一 DHCP 发现消息的客户主机之后, 所述方法还包括 : 在第二预设租期到达时, 判断是否接收 来来自所述客户主机的离开报文, 如果没有, 则向所述客户主机发送通知, 通知所述客户主 机续租从获取的所述多个 IP 地址中选择的所述 IP 地址, 其中, 所述第一预设租期大于所述 第二预设租期。
根据本发明的另一个方面, 提供了一种 IP 地址的分配装置, 包括 : 第一判断模块, 用于接收到第一动态主机配置协议 DHCP 发现消息后, 判断是否需要从 DHCP 服务器获取网 络协议 IP 地址 ; 获取模块, 用于在判断结果为是的情况下, 从所述 DHCP 服务器获取并存储 多个 IP 地址 ; 分配模块, 用于从获取的所述多个 IP 地址中选择一个 IP 地址分配给发送所 述第一 DHCP 发现消息的客户主机。
优选地, 所述分配模块还用于 : 在所述判断结果为否的情况下, 从本地存储的 IP 地址中选择一个 IP 地址分配给所述客户主机。
优选地, 所述获取模块包括 : 发送单元, 用于向所述 DHCP 服务器发送第二 DHCP 发 现消息 ; 获取单元, 用于从所述 DHCP 服务器发送的 DHCP 响应消息中获取请求获取所述多个 IP 地址。
优选地, 所述装置还包括 : 发送模块, 用于向所述 DHCP 服务器发送携带所述多个 IP 地址的 DHCP 请求消息 ; 接收模块, 用于在所述多个 IP 地址与所述 DHCP 服务器发送的 IP 地址一致的情况下, 接收所述 DHCP 服务器发送的 DHCP 确认消息。
优选地, 所述装置还包括 : 建立模块, 用于接收到所述 DHCP 确认消息后, 建立客户 主机信息表, 其中, 所述客户主机信息表可以记录客户主机与为客户主机分配的 IP 地址的 对应关系 ; 释放模块, 用于在接收到客户主机发送的离开报文后, 释放为所述客户主机分配 的 IP 地址, 删除所述客户主机信息表中所述客户主机的信息 ; 确定模块, 用于判断 DHCP 中 继中的 IP 地址使用时间达到预设租期 ; 第二判断模块, 用于判断所述客户主机信息表中是否还存在有客户主机的信息 ; 所述发送模块, 还用于在所述第二判断模块的判断结果为否 的情况下, 向所述 DHCP 服务器发送 DHCP 释放消息, 释放本地存储的所有 IP 地址 ; 续租模 块, 用于在所述第二判断模块的判断结果为是的情况下, 向所述 DHCP 服务器续租所述多个 IP 地址。
通过本发明, DHCP Relay 可以通一次报文交互, 向 DHCP Server 申请多个 IP 地址, 实现 IP 地址及网络参数的批量申请。在客户主机上线时, DHCP Relay 可以为客户主机分 配从 DHCP Server 中获取的 IP 地址, 而不必在每一个客户主机上线时都向 DHCP Server 申 请 IP 地址, 从而降低了 DHCP Relay 与 DHCP Server 之间的网络流量。 附图说明
此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 :
图 1 是根据相关技术的 DHCP 中继网络的网络拓扑的示意图 ;
图 2 是根据相关技术的客户主机 DHCP 报文交互的流程图 ;
图 3 是根据本发明实施例的 IP 地址的分配方法的流程图 ; 图 4 是根据本发明优选实施例的 DHCP Relay 对 DHCP Discover 报文处理方法的 流程图 ;
图 5 是根据本发明优选实施例的 DHCP Server 对 DHCP Discover 报文处理方法的 流程图 ;
图 6 是根据本发明优选实施例的 DHCP Relay 对 DHCP Offer 报文处理方法的流程 图;
图 7 是根据本发明优选实施例的 DHCP Server 对 DHCP Request 报文处理方法的 流程图 ;
图 8 是根据本发明优选实施例的 DHCP Relay 对 DHCPACK 报文处理方法的流程图 ;
图 9 是根据本发明优选实施例的 DHCP Relay 对 DHCP Release 报文处理方法的流 程图 ;
图 10 是根据本发明实施例的 IP 地址的分配装置的结构框图 ;
图 11 是根据本发明实施例的一种优选的 IP 地址的分配装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是, 在不冲突的 情况下, 本申请中的实施例及实施例中的特征可以相互组合。
针对相关技术中, 在 DHCP 中继网络中, 每当一个 DHCP 客户主机上线一次, DHCP Relay 需要与 DHCP Server 完成一次 DHCP 过程, 从而增加 DHCP Relay 和 DHCP Server 之间 的网络流量的问题, 本发明实施例提供了一种 IP 地址的分配方法及装置, 在本发明实施例 中, DHCP Relay 可以通过一次报文交互, 向 DHCP Server 申请多个 IP 地址, 实现 IP 地址及 网络参数的批量申请。 在客户主机上线时, DHCP Relay 可以为客户主机分配从 DHCP Server 中获取的 IP 地址, 降低了 DHCP Relay 与 DHCP Server 之间的网络流量。
根据本发明实施例, 提供了一种 IP 地址的分配方法, 可以但不限于在如图 2 所示的 DHCP 中继网络中的 DHCP Relay 中实现 DHCP 客户主机 IP 地址及网络参数的批量申请。
图 3 是根据本发明实施例的 IP 地址的分配方法的流程图, 如图 3 所示, 该方法可 以包括以下几个步骤 ( 步骤 S302- 步骤 S306) :
步骤 S302, DHCP 中继接收到第一动态主机配置协议 (DHCP) 发现消息后, 判断是否 需要从 DHCP 服务器获取网络协议 IP 地址。
步骤 S304, 在判断结果为是的情况下, DHCP 中继从 DHCP 服务器获取并存储多个 IP 地址。
步骤 S306, 从获取的多个 IP 地址中选择一个 IP 地址分配给发送第一 DHCP 发现消 息的客户主机。
通过本发明实施例, 接收到 DHCP 发现消息后, 首先判断是否需要从 DHCP 服务器获 取 IP 地址及相应网络参数, 在判断结果为是的情况下, 从 DHCP 服务器获取多个 IP 地址, 从 获取的多个 IP 中选取一个 IP 地址及相应网络参数, 分配给请求分配 IP 地址及相应网络参 数的客户主机。同时, 可以保存 DHCP 服务器分配的多个 IP 地址, 从而当其他客户主机请求 分配 IP 地址及相应网络参数时, 可以直接从剩余的 IP 地址中为客户主机分配 IP 地址及相 应网络参数, 而无需与 DHCP Server 进行报文交互, 从而降低 DHCP Relay 与 DHCP Server 之间的网络流量, 同时降低对 DHCP Server 处理能力的要求。 下面对上述各个步骤进行描述。
目前, 在 DHCP 中继网络中, 客户主机上线时, 可以通过 DHCP 过程获取 IP 地址及 相应网络参数。客户主机向 DHCP Relay 发送 DHCP 发现消息 (DHCP Discover 报文 ), DHCP Relay 接收到 DHCP 发现消息后, 对接收到的 DHCP 发现消息进行重新封装, 并向 DHCP Server 发送重新封装后的 DHCP 发现消息, 请求 DHCP Server 分配 IP 地址及相应网络参数 ; DHCP Server 接收到重新封装的 DHCP 发现消息后, 为客户主机分配 IP 地址及相应网络参数, 并向 DHCP Relay 发送携带分配的 IP 地址及相应网络参数的 DHCP 响应消息 (DHCP OFFER) ; DHCP Relay 接收到 DHCP 响应消息后, 将 DHCP Server 分配的 IP 地址及相应网络参数发送至客户 主机, 从而客户主机通过分配的 IP 地址及相应网络参数接入网络。
然而, 当存在大量客户主机上线时, DHCP Relay 从 DHCP Server 分别为每一个上 线的客户主机获取 IP 地址及相应网络参数, 从而 DHCP Relay 和 DHCP Server 之间将产生 大量的报文交互, 从而占用网络带宽, 并且对 DHCP Server 的处理能力带来挑战。为了减少 DHCP Relay 与 DHCP Server 之间的报文交互, 以降低 DHCP Relay 与 DHCP Server 之间的网 络流量, 在本发明实施例中, DHCP Relay 可以一次向 DHCP Server 申请多个 IP 地址及相应 网络参数。客户主机上线时, DHCP Relay 将从 DHCP Server 申请的多个 IP 地址中的一个 分配给请求 IP 地址及相应网络参数的客户主机。在上述过程中, DHCP Relay 无需与 DHCP Server 进行报文交互, 从而降低 DHCP Relay 与 DHCP Server 之间的网络流量, 降低对 DHCP Server 处理能力的要求。此外, 在 DHCP Relay 和 DHCP Server 之间可以采用相关认证机 制, 提高安全性能。
客户主机上线时, 向 DHCP Relay 发送 DHCP 发现消息 ( 即第一 DHCP 发现消息 ), DHCP Relay 接收到客户主机发送的 DHCP 发现消息后, 可以判断是否需要从 DHCP 服务器获 取 IP 地址及相应网络参数, 在需要从 DHCP Server 获取 IP 地址及相应网络参数时, 从 DHCP Server 获取多个 IP 地址及相应网络参数 ; 在不需要从 DHCP 获取 IP 地址及相应网络参数
时, 从 DHCP Relay 中存储的 IP 地址中选取一个 IP 地址分配给客户主机。
在实际应用中根据需要, 可以配置 DHCP Relay 从 DHCP Server 批量申请 IP 地址 及相应网络参数的条件, DHCP Relay 根据预设条件判断是否需要从 DHCP Server 获取 IP 地址。例如, 设置在 DHCP Relay 剩余的 IP 地址数量的预设阈值, DHCP Relay 接收到客户 主机的 DHCP 发现消息后, 判断 DHCP Relay 中剩余的 IP 地址的数量是否小于预设阈值, 当 DHCP Relay 中剩余的 IP 地址的数量小于预设阈值时, DHCP Relay 从 DHCP Server 中获取 多个 IP 地址及相应网络参数 ; 当 DHCP Relay 中剩余的 IP 地址的数量大于预设阈值时, 可 以直接从 DHCP Relay 中剩余的 IP 地址中为客户主机分配 IP 地址及相应网络参数。
或者, 也可以在接收到 DHCP 发现消息后, 判断 DHCP Relay 中是否存储有 IP 地址。 如果 DHCP Relay 中存储有 IP 地址, 可以直接从 DHCP Relay 中存储的 IP 地址中选取一个 IP 地址及相应网络参数, 分配给请求网络参数的客户主机 ; 如果 DHCP Relay 中未存储可供 客户主机使用的 IP 地址及相应网络参数, DHCP Relay 可以从 DHCP Server 获取多个 IP 地 址及相应网络参数, 获取到多个 IP 地址后, DHCP Relay 从获取的多个 IP 地址中选取一个 IP 地址及相应网络参数, 分配给发送 DHCP 发现消息的客户主机, 并且 DHCP Relay 可以存储 获取的多个 IP 地址及网络参数, 在其他客户主机上线时, 分配给其他客户主机。 进一步地, 还可以设置在 DHCP Relay 在接收到 DHCP 发现消息后, 判断接收到 DHCP 发现消息是否为当前周期中第一次接收到 DHCP 发现消息, 即接收到 DHCP 发现消息后, 判 断 DHCP Relay 是否是在每一次批量释放 IP 地址之后第一次接收到 DHCP 发现消息, 当 DHCPRelay 是第一次接收到 DHCP 发现消息, DHCP Relay 从 DHCP Server 获取多个 IP 地址 及相应网络参数 ; 当 DHCP Relay 不是第一次接收到 DHCP 发现消息, 可以确定 DHCP Relay 已经从 DHCP Server 中获取到多个 IP 地址, DHCP Relay 可以从本地存储的多个 IP 地址中 选取一个 IP 地址及相应网络参数, 分配给发送 DHCP 发现消息的客户主机。
如果 DHCP Relay 需要从 DHCP Server 获取多个 IP 地址, DHCP Relay 可以对接收 到的 DHCP 发现消息进行重新封装, 并向 DHCP Server 发送重新封装后的 DHCP 发现消息 ( 第 二 DHCP 发现消息 ), 请求 DHCP Server 为 DHCP Relay 分配多个 IP 地址及相应网络参数, DHCPServer 根据实际情况为 DHCP Relay 分配 IP 地址, 并可以将分配的 IP 及相应网络参数 携带在 DHCP 响应消息中, 发送至 DHCP Relay ; DHCP Relay 接收 DHCP Server 发送的 DHCP 响应消息, 并可以从 DHCP 响应消息中获取为其分配的多个 IP 地址及相应的网络参数。
同时, DHCP Relay 可以将接收到的 IP 地址及相应网络参数发送至 DHCP Server, 例如, 将 IP 地址及相应网络参数携带在 DHCP 请求消息 (DHCP Request 报文 ) 中, DHCP Server 对分配的 IP 地址信息进行验证, 验证 DHCP Relay 接收到的 IP 地址信息与为其分配 的 IP 地址信息一致后, 向 DHCP Relay 发送 DHCP 确认消息 (DHCP ACK 报文 ), DHCP Relay 接收 DHCP Server 发送的 DHCP 确定消息, 并存储为其分配的 IP 地址及相应网络参数。
在 实 际 应 用 中, 分 配 IP 地 址 的 数 量 可 以 由 DHCP Relay 确 定, 也 可 以 由 DHCP Server 确定。在 DHCP Relay 确定分配 IP 地址的数量时, DHCP Relay 发送的 DHCP 发现消 息中可以携带申请分配 IP 地址的数量 ; 在 DHCP Server 确定分配 IP 地址的数量时, DHCP Server 可以根据 DHCP Relay 的情况确定为其分配的 IP 地址的数量, 例如, 根据 DHCP Relay 拥有的客户主机数量, 和 / 或 DHCP Relay 的 IP 地址申请历史记录, 以及 DHCP Server 中未 分配的 IP 地址的余量等, 确定为 DHCP Relay 分配 IP 地址的数量。
在本发明实施例的一个优选实施方式中, DHCP Relay 为了管理为其分配的 IP 地 址及相应网络参数, 可以建立客户主机信息表, 用来记录客户主机与为该客户主机分配的 IP 地址及相应网络参数的对应关系。客户主机在离线时, 可以向 DHCP Relay 发送离开报 文, DHCP Relay 接收到客户主机发送的离开报文后, 释放为客户主机分配的 IP 地址, 删除 客户主机信息表中相应客户主机的信息。在其他客户主机上线时, 可将 IP 地址在此分配给 请求 IP 地址及相应网络参数的主机。
为了提高 IP 地址的利用率, 可以为已分配的 IP 地址设置租期, 优选地, DHCP Server 可以为 IP 地址段分配一个较长的租期, DHCP Relay 为客户主机分配一个较短租期, 这样可以实现用户的保活, 也避免了 DHCP Relay 和 DHCP Server 之间的频繁报文交互。在 IP 地址的租期达到时, 客户主机可以向 DHCP Relay 续租 IP 地址及相应网络参数, 在 DHCP Server 为 IP 地址段分配的较长的租期到达时, DHCP Relay 也可以继续向 DHCP Server 续 租 IP 地址及网络参数。在本发明实施例中, 为了减少 DHCP 中继与 DHCP 服务器之间的信令 交互, DHCP 可以一次性释放 DHCP 服务器为该 DHCP 中继分配的多个 IP 地址, 例如, 当 DHCP 中继确定 DHCP 服务器分配的多个 IP 地址 ( 例如, 一个 IP 地址段 ) 的使用时间达到预设租 期 ( 即上述的较长的租期 ) 时, 判断客户主机信息表中是否还存在有客户主机的信息, 在判 断结果为否的情况下, 向 DHCP 服务器发送 DHCP 释放消息, 释放本地存储的所有 IP 地址, 在 判断结果为是的情况下, 向 DHCP 服务器续租为其分配的多个 IP 地址。
在本发明的一个优选实施例中, DHCP Relay 可以利用 DHCP 报文中的 Option 字段, 完成 DHCP Relay 和 DHCP Server 之间 IP 地址及相应网络参数的批量申请。
在本发明优选实施例中, 可以利用 DHCP 协议的 2 个自定义 Option 字段, 可以分 别称为 Option-A 和 Option-B。可以在 DHCP Relay 做客户主机数分配规划。例如, 规划该 DHCP Relay 下挂 100 个客户主机, 那么当该 DHCP Relay 收到第一个 DHCP 客户主机发来的 DHCP Discover 报文进行报文重新封装时, 插入 Option-A, Option-A 中含有客户主机数规 划信息 : 申请 100 个 IP 地址及相应网络参数。
如 图 4 所 示, 当 DHCP Relay 收 到 DHCP Discover 报 文 后, 可 以 判 断 发 送 DHCP Discover 报文的客户主机是否为第一个客户主机, 如果是第一个客户主机, DHCP Relay 在 对该报文进行重新封装时, 插入 Option-A 选项字段, 该字段携带总的用户规划数。如果该 客户主机不是第一个客户主机, 再判断 DHCP Relay 申请的 IP 地址段是否有剩余, 如果有, 则 DHCP Relay 执行 DHCP Server 的功能, 直接向 DHCP 客户主机分配 IP 地址及网络参数, 如果 DHCP Relay 中没有剩余 IP 地址, 则可以拒绝该客户主机接入, 并且给出告警打印。
如图 5 所示, 当 DHCP Server 收到携带 Option-A 的 DHCP Discover 报文, 判断 DHCP 服务器是否识别 Option-A, 如果该 DHCP Server 能够识别 Option-A, 可以解析 Option-A 中 携带的参数信息 ( 申请 IP 地址及相应网络地址的数量、 DHCP Relay 客户主机规划数等信 息 )。如果 DHCP Server 能够满足 Option-A 中描述的要求, 则可以一次分配 100 个 IP 地 址, 并可以将相关网络参数一起封装到 Option-B 中, 插入 DHCP Offer 报文, 发送给 DHCP Relay。如果 DHCP Server 中剩余的 IP 地址不足 100 个, 就需要特殊处理。例如, 不为该 DHCP Relay 分配 IP 地址, 认为这是不正常状态, 并且给出告警 ; 或者, 为每一次 DHCP 请求, 分配一个 IP 地址, 并给出告警 ; 或者根据 DHCP Server 中剩余的 IP 地址的数量确定为 DHCP Relay 分配的 IP 地址的数量。如果该 DHCP Server 不支持 Option-A 选项, 那么可直接忽略Option-A 选项, 进行普通流程处理, 也不会在应答报文中插入 Option-B 选项。
如图 6 所示, 当 DHCP Relay 收到 DHCP Offer 报文, 判断 DHCP Offer 报文是否携带 Option-B 选项, 如果报文携带正确的 Option-B 选项, 则建立临时用户表项, 向 DHCP Server 发送携带 Option-A 选项的 DHCP Request 报文, 将 Option-B 选项中的信息复制到 Option-A 选项并封装到 DHCP Request 报文中。如果 DHCP Relay 收到的 DHCP Offer 报文不携带 Option-B 选项, 则执行普通 DHCP 报文交互流程。
如图 7 所示, 当 DHCP Server 收到携带 Option-A 的 DHCP Request 报文, 对比接收 到的 IP 地址及相应网络参数与 DHCP Server 上建立的临时表项是否一致, 如果一致, 则建 立本地用户信息, 并发送携带 Option-B 的 DHCP ACK 报文进行确认。如果不一致则拒绝用 户接入 ; 当 DHCP Request 报文中不含有 Option-A 选项, 说明是普通 DHCP 流程, 则执行普通 DHCP 报文交互。
如图 8 所示, 当 DHCP Relay 接收到 DHCP ACK 报文, 判断是否携带 Option-B 选项, 如果携带, 则 DHCP Relay 建立用户信息表, 并向第一个客户主机发送 DHCP ACK 报文。如果 DHCP Offer 报文没有携带 Option-B 选项则进行普通报文的交互过程。当网络中的客户主 机再次发起 DHCP 过程获取 IP 地址及相应网络参数时, DHCP Relay 可以直接推送 IP 地址 及相关参数, 充当 DHCP Server 的作用, 而无需在 DHCP Relay 和 DHCP Server 之间进行报 文交互。 当已经获得 IP 及网络参数的客户主机进行续租时, 报文只需在用户和 DHCP Relay 之间完成交互即可。当 DHCP Relay 的地址段租期到期, 可以在 DHCP Relay 和 DHCP Server 之间完成一个续租流程, 与上述报文交互类似, 在此不做赘述。
如图 9 所示, 当 DHCP Relay 收到离开报文时, 可以判断是否为最后一个用户。当 该用户为最后一个离开的用户时, DHCP Relay 可以进行以下两种方式处理 : 1) 清除本地用 户信息 ; 2) 向 DHCP Server 发送 DHCP Release 消息, 将所有 IP 地址释放。当该用户不是 最后一个用户, 则 DHCP Relay 无需和 DHCP Server 进行报文交互, 只需在本地清除用户信 息即可。
在实际应用中, 还可以在 DHCP Relay 对客户主机的 MAC 和 IP 地址进行预先绑定, 只为绑定的 MAC 地址分配 IP 地址, 以提高安全性。
通过本发明优选实施例, 对 DHCP 报文交互进行优化, 克服了在大型网络拓扑中, DHCP 报文交互数据流量较大, 给 DHCP Server 带来较大负担的问题, 并且完全兼容现有协 议标准, 大幅度减少 DHCP 报文交互数量, 并在一定程度提高安全性能。
根据本发明实施例, 还提供了一种 IP 地址的分配装置, 可以位于 DHCP Relay 中在 DHCP 网络中实现为客户主机分配 IP 地址及相应网络参数。
图 10 是根据本发明实施例的 IP 地址的分配装置的结构框图, 如图 10 所示, 该装 置可以包括 : 第一判断模块 10、 获取模块 20 和分配模块 30。其中, 第一判断模块 10, 用于 接收到第一 DHCP 发现消息 ( 即客户主机发送的 DHCP 发现消息 ) 后, 判断是否需要从 DHCP 服务器 (DHCP Server) 获取 IP 地址 ; 获取模块 20, 与第一判断模块 10 相耦合, 用于在判断 结果为是的情况下, 从 DHCP 服务器获取并存储多个 IP 地址 ; 分配模块 30, 与获取模块 20 相 耦合, 用于从获取的多个 IP 地址中选择一个 IP 地址分配给发送第一 DHCP 发现消息的客户 主机。
为了避免增加 DHCP Relay 与 DHCP Server 之间的网络流量, DHCP Relay 可以一 次向 DHCP Server 申请多个 IP 地址及相应网络参数。当网络中的客户主机上线时, DHCP Relay 可以将从 DHCP Server 申请的多个 IP 地址中的一个分配给请求 IP 地址及相应网络 参数的客户主机。 在这个过程中, DHCP Relay 无需与 DHCP Server 进行报文交互, 从而能够 有效地降低 DHCP Relay 与 DHCP Server 之间的网络流量, 同时 DHCP 无需处理过多的 DHCP 报文, 从而降低对 DHCP Server 处理能力的要求。
客户主机上线时, 可以向 DHCP Relay 发送 DHCP 发现消息, DHCP Relay 接收到客 户主机发送的 DHCP 发现消息后, 第一判断模块 10 可以判断是否从 DHCP 服务器获取 IP 地 址及相应网络参数, 在需要从 DHCP 获取 IP 地址及相应网络参数时, 获取模块 20 可以从 DHCPServer 获取多个 IP 地址及相应网络参数 ; 如果 DHCP Relay 不需要从 DHCP Server 获 取 IP 地址及相应网络参数, 分配模块 30 可以从 DHCP Relay 本地存储的 IP 地址中选取一 个 IP 地址, 分配给请求 IP 地址及相应网络参数的客户主机。
在实际应用中根据需要, 可以配置 DHCP Relay 从 DHCP Server 批量申请 IP 地址 及相应网络参数的条件, DHCP Relay 根据预设条件判断是否从 DHCP Server 获取 IP 地址。 例如, 设置在 DHCP Relay 剩余的 IP 地址数量的预设阈值, 接收到客户主机的 DHCP 发现消 息后, 第一判断模块 10 可以判断 DHCP Relay 中剩余的 IP 地址的数量是否小于预设阈值, 当 DHCP Relay 中剩余的 IP 地址的数量小于预设阈值时, 获取模块 20 可以从 DHCP Server 中获取多个 IP 地址及相应网络参数 ; 当 DHCP Relay 中剩余的 IP 地址的数量大于预设阈值 时, 分配模块 30 可以从 DHCP Relay 中剩余的 IP 地址中为客户主机分配一个 IP 地址及相 应网络参数。
或者, 第一判断模块 10 也可以在接收到 DHCP 发现消息后, 判断 DHCP Relay 中是否 存储有 IP 地址。如果 DHCP Relay 中存储有可供客户主机使用的 IP 地址, 分配模块 30 可 以从 DHCP Relay 中存储的 IP 地址中选取一个 IP 地址及相应网络参数, 分配给请求网络参 数的客户主机 ; 如果 DHCP Relay 中未存储 IP 地址, 获取模块 20 可以从 DHCP Server 获取 多个 IP 地址及相应网络参数, 获取到多个 IP 地址后, 分配模块 30 从获取的 IP 地址中选取 一个 IP 地址及相应网络参数, 分配给发送 DHCP 发现消息的客户主机, 并且 DHCP Relay 可 以存储获取的多个 IP 地址及网络参数, 在其他客户主机上线时, 分配给其他客户主机。
进一步地, 还可以设置在 DHCP Relay 在接收到 DHCP 发现消息后, 第一判断模块 10 判断接收到 DHCP 发现消息是否为第一次接收到 DHCP 发现消息, 即接收到 DHCP 发现消 息后判断 DHCP Relay 是否是第一次接收到 DHCP 发现消息, 当 DHCP Relay 是第一次接收 到 DHCP 发现消息, 获取模块 20 可以从 DHCP Server 获取多个 IP 地址及相应网络参数 ; 当 DHCP Relay 不是第一次接收到 DHCP 发现消息, 可以确定 DHCP Relay 已经从 DHCP Server 中获取到多个 IP 地址, 分配模块 30 可以从已获取的多个 IP 地址中选取一个 IP 地址及相 应网络参数, 分配给相应的客户主机。
在获取模块 20 可以从 DHCP Server 获取多个 IP 地址的情况下, DHCP Relay 可以 对接收到的 DHCP 发现消息进行重新封装, 并向 DHCP Server 发送重新封装后的 DHCP 发现 消息 ( 称为第二 DHCP 发现消息 ), 请求 DHCP Server 为其分配多个 IP 地址及相应网络参 数, DHCP Server 为 DHCP Relay 分配 IP 地址, 将分配的 IP 及相应网络参数携带在 DHCP 响 应消息中发送至 DHCP Relay ; DHCP Relay 接收 DHCP Server 发送的 DHCP 响应消息, 从中获取为其分配的 IP 地址及相应的网络参数。因此, 在本发明实施例的一个优选实施方式中, 为了实现上述目的, 获取模块 20 可以包括 : 发送单元, 用于向 DHCP 服务器发送第二 DHCP 发 现消息 ( 即重新封装后的 DHCP 发现消息 ) ; 获取单元, 用于从 DHCP 服务器发送的 DHCP 响 应消息中获取请求获取多个 IP 地址及相应的网络参数。
同时, DHCP Relay 可以将接收到的 IP 地址发送至 DHCP 服务器, DHCP 对分配的 IP 地址信息进行验证, 验证通过后, 例如, 接收到的 IP 地址信息与分配的 IP 地址信息一致后, 向 DHCP Relay 发送 DHCP 确认消息, DHCP Relay 接收 DHCP 服务器发送的 DHCP 确定消息, 并 存储为其分配的 IP 地址及相应网络参数。因此, 在本发明实施例的一个优选实施方式中, 如图 11 所示, 上述装置还可以包括 : 发送模块 40, 用于向 DHCP 服务器发送携带多个 IP 地 址的 DHCP 请求消息 ; 接收模块 50, 用于在多个 IP 地址与 DHCP 服务器发送的 IP 地址一致 的情况下, 接收 DHCP 服务器发送的 DHCP 确认消息。通过本优选实施方式, 可以提高 IP 地 址分配的可靠性, 保证 IP 地址分配的准确性。
在本发明实施例的一个优选实施方式中, DHCP Relay 为了管理为其分配的 IP 地 址及相应网络参数, 可以建立客户主机信息表, 因此, 上述装置还可以包括 : 建立模块, 用于 接收到 DHCP 确认消息后, 建立客户主机信息表, 其中, 客户主机信息表可以记录客户主机 与为客户主机分配的 IP 地址的对应关系。通过本优选实施方式, DHCP Relay 可以方便的 对 IP 地址进行管理。 客户主机在离线时, 可以向 DHCP Relay 发送离开报文, DHCP Relay 接收到客户主 机发送的离开报文后, 释放为客户主机分配的 IP 地址, 删除客户主机信息表中相应客户主 机的信息。在其他客户主机上线时, 可将 IP 地址在此分配给请求 IP 地址及相应网络参数 的主机。 因此, 上述装置还可以包括 : 释放模块, 用于在接收到客户主机发送的离开报文后, 释放为客户主机分配的 IP 地址, 删除客户主机信息表中对应的客户主机的信息。
为了提高 IP 地址的利用率, 可以为已分配的 IP 地址设置租期, 优选地, DHCP Server 可以为 IP 地址段分配一个较长的租期, DHCP Relay 为客户主机分配一个较短租期, 这样可以实现用户的保活, 也避免了 DHCP Relay 和 DHCP Server 之间的频繁报文交互。在 IP 地址的租期达到时, 客户主机和 DHCP Relay 可以续租 IP 地址及相应网络参数。DHCP 中 继确定 DHCP 中继中的 IP 地址使用时间达到预设租期后, 判断客户主机信息表中是否还存 在有客户主机的信息, 在判断结果为否的情况下, 向 DHCP 服务器发送 DHCP 释放消息, 释放 本地存储的所有 IP 地址, 在判断结果为是的情况下, 向 DHCP 服务器续租为其分配的多个 IP 地址。
为了实现上述目的, 上述装置还可以包括 : 确定模块, 用于判断 DHCP 中继中的 IP 地址使用时间达到预设租期 ; 第二判断模块, 用于判断客户主机信息表中是否还存在有客 户主机的信息 ; 在判断结果为否的情况下, 发送模块还用于向 DHCP 服务器发送 DHCP 释放消 息, 释放本地存储的所有 IP 地址 ; 在判断结果为是的情况下, 续租模块用于向 DHCP 服务器 续租为期分配的 IP 地址。
从以上的描述中, 可以看出, 本发明实施例实现了如下技术效果 : DHCP Relay 可以 通过一次报文交互, 向 DHCP Server 申请多个 IP 地址, 实现 IP 地址及网络参数的批量申请。 在客户主机上线时, DHCP Relay 可以为客户主机分配从 DHCP Server 中获取的 IP 地址, 降 低了 DHCP Relay 与 DHCP Server 之间的网络流量。同时, DHCP Relay 与 DHCP Server 之
间可以采用相关认证机制, 提高安全性 ; 还可以在 DHCP Relay 对客户主机的 MAC 和 IP 地址 进行预先绑定, 只为绑定的 MAC 地址分配 IP 地址, 提高安全性。
显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 并且在某些情况下, 可以以不同于此处的顺序执行所示 出或描述的步骤, 或者将它们分别制作成各个集成电路模块, 或者将它们中的多个模块或 步骤制作成单个集成电路模块来实现。 这样, 本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。