ISC DHCP租约状态转换

租约状态转换

DHCP服务系统中的租约共有八种状态:空闲状态、预留状态、活跃状态、过期状态、释放状态、废弃状态、重置状态、备份状态。重置状态和备份状态为启动FAILOVER模块后,主从服务器通过通信设置,在此不做讨论,其它六种状态的转换如图3-6所示:

ISC DHCP租约状态转换_第1张图片

3-6 租约状态转移图

如图3-6所示,租约状态转换条件如下:

空闲状态变成预留状态:当服务器收到DHCPDISCOVER请求时,从空闲租约表中选择一个可用的空闲租约分配给客户端,设置该租约超时时间为2分钟,将该租约设置成预留状态,并放入预留租约表中,表示该租约暂时不能分配给其他客户端。

预留状态变成空闲状态:2分钟内未收到客户端的DHCPREQUEST请求,说明未收到客户端的租约确认消息,将该租约重新设置成空闲状态,并插入空闲租约表中。

预留状态变成活跃状态:2分钟内收到客户端的DHCPREQUEST请求,说明该客户端接收了服务器为其分配的租约,将该租约设置成活跃状态,并插入活跃租约表中,表示该租约正在被某个客户端使用。

活跃状态保持活跃状态:当收到客户端的续租请求,从活跃租约表中取出租约,更新租约过期时间,并按新的过期时间将租约插入活跃租期表相应位置,该租约仍然保持活跃状态。

活跃状态变成过期状态:活跃状态的租约会连成一个活跃租期表,且按租约到期的先后顺序排序,服务器每隔20s会检查活跃租期表中的第一个租期是否到期,若到期将该租约设置成过期状态,且放入过期租约表中。

过期状态变成活跃状态:当收到客户端DHCPREQUEST请求时,所请求的租约在过期租约表中,则将该租约从过期租约表中取出,更新租约状态为活跃状态,并将租约插入活跃租期表中。

活跃状态变成释放状态:当收到客户端的DHCPRELEASE请求时,将相应的活跃租期从活跃租期表取出,更新该租约为释放状态,并插入释放租约表中。

释放状态变成活跃状态:当收到客户端DHCPREQUEST请求时,所请求的租约在释放租约表中,则将该租约从释放租约表中取出,更新租约状态为活跃状态,并将租约插入活跃租期表中。

释放状态/过期状态变成空闲状态:当释放租约表/空闲租约表中的租约超过阈值时,将该租约表中一半的租约从该表中取出,将它们更新为空闲状态,并插入空闲租约表中。

空闲状态变成废弃状态:当将一个空闲租约分配给客户端前,服务器发送ping包检测该IP是否已被使用,若收到ping应答包,说明该租约已被使用,于是将该租约设置成废弃状态,并插入废弃租约表中。

废弃状态变成空闲状态:当空闲租约表的租约不够用时,服务器向废弃租约表中的每个IP发送ping包,若未收到某个IP地址的应答包,则说明该IP已未被使用,将该IP所对应的租约设置成空闲状态,并插入空闲租约表中。

你可能感兴趣的:(开源代码解析)