背景技术
DHCP用来为网络设备动态地分配IP地址等网络配置参数。DHCP采用客户端和服务器通信模式,由客户端向服务器提出配置申请,服务器返回为客户端分配的IP地址等相应的配置信息,以实现IP地址等信息的动态配置。参见图1,图1为DHCP的典型应用结构示意图。在图1中,包括一台DHCP服务器101和多台DHCP客户端102,如PC机和便携机。
参见图2,图2为现有技术中DHCP客户端从DHCP服务器动态获取IP地址的流程图。其具体步骤为:
步骤201,DHCP客户端以广播方式发送DHCP发现报文。
步骤202,DHCP服务器收到DHCP客户发送的DHCP发现(DHCPDISCOVER)报文时,根据IP地址分配的优先次序选择出一个IP地址。
步骤203,DHCP服务器将选出的IP地址通过DHCP提供报文发送给客户端。
DHCP提供报文的发送方式由DHCP DISCOVER报文中的flag字段决定,一般是单播。
步骤204,DHCP客户端向DHCP服务器发送DHCP请求报文。
如果DHCP客户端收到有多台DHCP服务器发来DHCP提供报文,DHCP客户端只接受第一个收到的DHCP提供报文,然后以广播方式发送DHCP请求(DHCP REQUEST)报文,该报文中包含DHCP服务器在DHCP提供报文中分配的IP地址。
步骤205,DHCP服务器收到DHCP客户端发来的DHCP请求报文后,向DHCP发送应答报文。
本步骤中,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回DHCP确认(DHCP ACK)报文;否则返回DHCP否定(DHCP NAK)报文,表明地址不能分配给该客户端。
DHCP报文侦听(DHCP Snooping)是DHCP的一种安全特性,网络中如果存在私自架设的伪DHCP服务器,则可能导致DHCP客户端获取错误的IP地址和网络配置参数,无法正常通信。为了使DHCP客户端能通过合法的DHCP服务器获取IP地址,DHCP Snooping安全机制允许将端口设置为信任端口和不信任端口。其中,信任端口正常转发接收到的DHCP报文。不信任端口接收到DHCP服务器响应的DHCP ACK和DHCP提供(DHCP OFFER)报文后,丢弃该报文。
连接DHCP服务器和其他DHCP Snooping设备的端口需要设置为信任端口,其他端口设置为不信任端口,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的伪DHCP服务器无法为DHCP客户端分配IP地址。
由上可见,DHCP的发现和请求报文都是广播发送。在TRILL网络中,广播报文沿着TRILL组播树发送到每个RB设备,在整个VLAN域内广播。参见图3,图3为现有技术中组播树组网结构示意图。
图3中,以RB301为根的组播树,其中RB301、RB302、RB303、RB304、RB305和RB306均使能VLAN200的DHCP snooping,由图中可知VLAN200内存在DHCP Client 311、未知设备312、嗅探者313、伪冒Server 314、合法DHCP Server 315。VLAN200内的DHCP Client 311发出的DHCPDISCOVER、REQUEST广播报文本来只需要转发给合法的DHCP Server312和合法DHCP Server 315,但由于沿着TRILL组播树转发,从而实际会到达未知设备312、嗅探者313、伪冒Server 314和合法DHCP Server 315,这就给嗅探者313和伪冒Server 314将来的攻击提供了机会。
综上所述,如果只针对组播树进行VLAN剪枝,将DHCP的DISCOVER和REQUEST报文沿着组播树转发,则DHCP报文在VLAN内广播,RB及下挂设备都会收到DHCP报文,因而给攻击者提供了机会。
发明内容
有鉴于此,本发明提供一种TRILL网络中DHCP报文的转发方法和路由桥,能够实现DHCP报文转发的私密性,减少网络受攻击的机会。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种TRILL网络中DHCP报文的转发方法,所述TRILL网络至少包括一个组播树,其中,该组播树包括多个路由桥RB,将连接DHCP服务器的RB的端口设置为该组播树的DHCP报文信任端口,所述方法包括:
如果所述RB本地设置该组播树的DHCP报文信任端口,该RB将使用的所述TRILL网络中的唯一虚拟组播组地址通知该网络中的其它RB,并针对组播分发树进行所述虚拟组播组剪枝;当收到其它RB发来的目的地址为所述虚拟组播组地址的请求报文时,将所述请求报文的目的MAC地址修改为广播地址发送给自身下挂的DHCP服务器;该RB收到自身下挂的DHCP服务器发来的响应报文时,转发给发来所述请求报文的RB;
如果所述RB本地未设置该组播树的DHCP报文信任端口,该RB学习到设置信任端口的RB发来的虚拟组播组地址,并针对组播分发树进行所述虚拟组播组剪枝;当收到DHCP客户端发来的请求报文时,将所述请求报文的目的MAC地址修改为所述虚拟组播组地址并沿着组播分发树转发;当收到其它RB发来的响应报文时,转发给自身下挂的DHCP客户端。
一种TRILL网络中DHCP报文的转发路由桥,所述TRILL网络至少包括一个组播树,其中,该组播树包含多个RB,所述RB包括:配置单元、第一处理单元、学习单元和第二处理单元;
所述配置单元,与所述第一处理单元和所述学习单元相连,用于将连接DHCP服务器的自身所在的RB的端口设置为该组播树的DHCP报文信任端口;
所述第一处理单元,当所述配置单元为自身所在的RB配置了DHCP报文信任端口时,用于将使用的所述TRILL网络中的唯一虚拟组播组地址通知TRILL网络中的其它RB,并针对组播分发树进行所述虚拟组播组剪枝;用于接收到其它RB发来的目的地址为所述虚拟组播组地址的请求报文时,将所述请求报文的目的MAC地址修改为广播地址发送给自身所在的RB下挂的DHCP服务器;接收到自身所在的RB下挂的DHCP服务器发来的响应报文时,转发给发来所述请求报文的RB;
所述学习单元,与所述第二处理单元相连,当所述配置单元未为所述学习单元所在的RB配置DHCP报文信任端口时,用于学习设置信任端口的RB发来的虚拟组播组地址,并针对组播分发树进行所述虚拟组播组剪枝;
所述第二处理单元,用于当收到DHCP客户端发来的请求报文时,将所述请求报文的目的MAC地址修改为所述虚拟组播组地址并沿着组播分发树转发;当收到其它RB发来的响应报文时,转发给自身所在的RB下挂的DHCP客户端。
综上所述,在TRILL组网中,使能DHCP snooping功能,设置DHCP报文信任端口;设置DHCP报文信任端口的RB将使用的唯一虚拟组播组地址发送给TRILL网络中的其他RB,TRILL网络中的所有RB针对组播分发树进行VLAN剪枝后,进行虚拟组播组剪枝;设置DHCP报文信任端口的RB收到请求报文时,将报文的目的MAC地址修改为广播地址并转发;未设置DHCP报文信任端口的RB收到请求报文时,将报文的目的MAC地址修改为虚拟组播组地址并转发。本发明将TRILL网络中的DHCP报文交互过程限制在特定的转发路径上,不进行泛洪,能够实现DHCP报文转发的私密性,减少网络受攻击的机会。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施时,预先构建配置TRILL网络,TRILL网络中至少包括一个个组播树,其中,该组播树包含多个RB。本发明中的具体实施例均针对一个组播树来进行说明和描述。
参见图4,图4为本发明TRILL网络中DHCP报文的转发流程图。具体步骤为:
步骤401,将连接DHCP服务器的RB的端口设置为该组播树的DHCP报文信任端口。
本步骤中DHCP报文信任端口通过使能DHCP snooping功能设置的。对未下挂DHCP服务器的RP本地不设置DHCP报文信任端口。如未下挂设备的RB,或则下挂主机设备但不是DHCP服务器的RB。
步骤402,如果RB本地设置该组播树的DHCP报文信任端口,该RB将使用的所述TRILL网络中的唯一虚拟组播组地址通知该网络中的其它RB,并针对组播树进行该虚拟组播组剪枝。
步骤403,当收到其它RB发来的目的地址为该虚拟组播组地址的请求报文时,将目的MAC地址修改为广播地址发送给自身下挂的DHCP服务器;该RB收到自身下挂的DHCP服务器发来的响应报文时,转发给发来请求报文的RB。
步骤404,如果RB本地未设置该组播树的DHCP报文信任端口,该RB学习到配置信任端口的RB发来的虚拟组播组地址,并针对组播树进行该虚拟组播组剪枝。
步骤405,当收到DHCP客户端发来的请求报文时,将该请求报文的目的MAC地址修改为虚拟组播组地址并沿着组播分发树转发;当收到其它RB发来的响应报文时,转发给自身下挂的DHCP客户端。
下面结合附图,以具体实施例来详细说明本发明中如何实现DHCP报文的转发。参见图5,图5为本发明具体实施例中DHCP报文转发的流程图。具体步骤为:
步骤501,构建配置TRILL网络。
参见图6,图6为本发明构建配置的TRILL网络结构示意图。图6中,以RB601为根的组播树,其中RB601、RB602、RB603、RB604、RB605、RB606和RB607皆为运行TRILL的RB,运行TRILL ISIS进程。各RB之间运行多链路透明互联中间系统之间路由协议(TRILL ISIS)协议,交互单播和组播标签转发路径(LSP)信息,网络中所有的RB之间LSP同步完成之后,每个RB进行单播拓扑,单播路由计算,组播拓扑和组播路由计算。对于组播路由计算,形成了一个组播分发树,未知单播、广播和组播报文在该分发树转发,并针对VLAN200的组播分发树进行VLAN剪枝。
图6中,RB601、RB602、RB603、RB604和RB605均使能VLAN200的DHCP snooping,VLAN200内存在DHCP Client 611、未知设备612、嗅探者613、伪冒Server 614、合法DHCP Server 615。VLAN200内的DHCP Client611发出的DHCP DISCOVER、REQUEST广播报文本来只需要转发给合法DHCP Server 615,但由于沿着TRILL组播树转发,从而实际会到达未知设备612、嗅探者613、伪冒Server 614和合法DHCP Server 615。本步骤中TRILL网络的构建配置同现有技术,这里不再赘述。
步骤502,在下挂服务器和主机设备的RB上且需要动态申请IP地址的VLAN内使能DHCP Snooping功能,运行DHCP Snooping进程,设置连接DHCP服务器的RB的端口为DHCP报文信任端口。
如图6中的RB601、RB602、RB603、RB604和RB605的VLAN200使能DHCP Snooping。对于连接了合法DHCP Server的端口,使能DHCP信任功能,即RB605连接合法DHCP Server 615的端口设置为DHCP报文信任端口。
步骤503,本地设置了DHCP报文信任端口的RB,将使用的唯一虚拟组播组地址发送给TRILL网络中的其他RB。
本步骤中的唯一虚拟组播组地址可以是该RB自身设置的,也可以是预先分配的,只要在整个TRILL网络中是唯一的即可。
RB将使用的唯一的虚拟组播组地址通知自身的TRILL ISIS进程,TRILL ISIS进程将该虚拟组播组地址作为类型长度值(TLV)封装,携带在TRILL ISIS的LSP报文中发送给TRILL网络中其他RB,在全网同步。如图6中RB605生成虚拟组播组地址为0100-0000-00EE。
参见图7,图7为报文封装格式示意图。图1中,Type表示TLV类型,为GADDR-TLV=142;Length表示该类型信息的总长度;sub-TLVs表示子tlv集合,包含虚拟组播组tlv,二层组播组tlv等信息。其定义参见图8,图8为子TLV的集合示意图。
图8中,Type表示sub-TLV Type,其值由IETF分配。Length表示该类型TLV总长度;Topology-Id/Nickname-Id表示生成该虚拟组播组tlv的RB;RESV为预留字节;VLAN-ID表示组播组所在的VLAN;Number of GroupRecords表示组播记录的项数;表示组播组记录。Group Record的定义参见图9,图9为组播记录示意图。图9中记录组播源数目和组播源地址。
步骤504,该RB进行组播分发树计算,针对组播分发树进行的VLAN剪枝后,进行虚拟组播组剪枝。
图6中带箭头的方向为DHCP请求报文转发路径;与箭头相反的方向为组播组地址发布方向。遍历分发树的每个端口,在发布携带虚拟组播组的TLV的ISIS LSP的RB的端口上生成虚拟组播组转发表项;该虚拟组播组转发表项存储组播组和未被剪掉的端口的端口号。
图6中,端口620是被剪掉的端口;端口630是虚拟组播组转发路径上的端口,即未被剪掉的端口。
步骤505,该RB的DHCP Snooping进程生成DHCP报文地址转换表项,用于将所有从TRILL隧道终结后的,且目的MAC地址为虚拟组播组地址的请求报文的目的MAC地址修改为广播地址。
本步骤中的TRILL隧道终结,是指剥掉TRILL网络隧道头,DHCP客户端发送的报文。该步骤中的DHCP报文地址转换表项记录了RB自身生成虚拟组播组地址。
步骤506,该RB收到目的MAC地址为虚拟组播组地址的请求报文时,根据DHCP报文地址转换表项,将该报文的目的MAC地址修改为广播地址,并转发给下挂的DHCP服务器。
本步骤中,如果收到目的MAC地址为组播转发表中存储虚拟组播组地址,则修改该目的MAC地址。同时将请求报文中携带的入口RB的桥标识(BRIDGE ID)号、客户端IP地址和客户端MAC地址绑定保存。
这里的请求报文包括:DHCP DISCOVER报文和DHCP REQUEST报文。其中,DHCP DISCOVER报文为DHCP客户端寻找DHCP服务器阶段发送的报文;DHCP REQUEST报文为客户端选择IP地址的阶段,如果收到多台DHCP服务器发来的DHCP OFFER报文,客户端只接受第一个收到的DHCPOFFER报文,并发送DHCP REQUEST报文。客户端收到DHCP OFFER报文,发送DHCP REQUEST报文的过程同现有技术,这里不再赘述。
步骤507,当该RB收到下挂的DHCP服务器发来的响应报文,根据请求报文的客户端MAC地址将收到的响应报文转发。
本步骤中当RB收到DHCP服务器的响应报文时,如果该响应报文的目的MAC为广播地址,则将广播地址修改为绑定保存的客户端MAC地址,并封装绑定保存的入口RB的BRIDGE ID号,转发给发来该请求报文的RB;如果该响应报文的目的MAC地址为绑定保存的客户端MAC地址,则直接封装绑定保存的入口RB的BRIDGE ID号,转发给发来请求报文的RB。
与DHCP DISCOVER报文对应的响应报文具体为DHCP OFFER报文;DHCP OFFER报文中携带了DHCP服务器为DHCP客户端配置的IP地址信息;与DHCP REQUEST报文对应的响应报文具体为DHCP ACK报文或NAK报文;DHCP ACK报文中携带了确认将IP地址分配给DHCP客户端,DHCPNAK报文中携带了确认没有将IP地址分配给DHCP客户端。
DHCP客户端收到DHCP DISCOVER报文根据IP地址分配选择一个IP地址并发送DHCP OFFER报文;以及收到DHCP REQUEST报文,并决定发DHCP ACK报文还是NAK报文的过程同现有技术,这里不再赘述。
步骤508,未地未设置DHCP报文信任端口的RB的TRILL ISIS进程学习到虚拟组播组地址,进行组播分发树计算,针对组播分发树进行VLAN剪枝后,进行虚拟组播组剪枝。
步骤509,该RB的DHCP Snooping进程生成相应的DHCP报文地址转换表项,用于将收到的请求报文的目的MAC地址修改为虚拟组播组地址。
本步骤中的DHCP报文转发表项中存储报文特征匹配字段和虚拟组播组地址。
步骤510,该RB收到下挂的DHCP客户端发来的请求报文时,根据相应的DHCP报文地址转换表项,将请求报文的目的MAC地址修改为虚拟组播组地址并沿着组播分发树转发。
当RB收到报文时,通过DHCP报文转发表中报文特征匹配字段进行匹配,如果确定报文为DHCP请求报文时,则修改该报文的目的MAC地址,同时为该请求报文封装入口RB的BRIDGE ID号,并沿着组播分发树转发。
步骤511,该RB收到其他RB发来的响应报文时,转发给自身下挂的DHCP客户端。
基于上述同样的发明构思,本发明还提出一种基于TRILL网络中DHCP报文的转发RB,该TRILL网络至少包括一个组播树,该组播树包括多个RB,该RB包括:配置单元1001、第一处理单元1002、学习单元1003和第二处理单元1004。
配置单元1001,与第一处理单元1002和学习单元1003相连,用于将连接DHCP服务器的自身所在的RB的端口设置为该组播组的DHCP报文信任端口;
第一处理单元1002,当配置单元1001为自身所在的RB配置了DHCP报文信任端口时,用于将使用的TRILL网络中的唯一虚拟组播组地址通知该网络中的其它RB,并针对组播分发树进行所述虚拟组播组剪枝;用于接收到其它RB发来的目的地址为所述虚拟组播组地址的请求报文时,将请求报文的目的MAC地址修改为广播地址发送给自身所在的RB下挂的DHCP服务器;接收到自身所在的RB下挂的DHCP服务器发来的响应报文时,转发给发来请求报文的RB;
学习单元1003,与第二处理单元1004相连,当配置单元1001未为学习单元1004所在的RB配置该组播树的DHCP报文信任端口时,用于学习设信任端口的RB发来的虚拟组播组地址,并针对组播分发树进行所述虚拟组播组剪枝;
第二处理单元1004,用于当收到DHCP客户端发来的请求报文时,将请求报文的目的MAC地址修改为虚拟组播组地址并沿着组播分发树转发;当收到其它RB发来的响应报文时,转发给自身所在的RB下挂的DHCP客户端。
较佳地,
第一处理单元1002,用于将使用的唯一虚拟组播组地址通知给自身所在RB的多链路透明互联中间系统之间路由协议TRILL ISIS进程,TRILL ISIS进程将虚拟组播组地址作为TLV封装,携带在TRILL ISIS的LSP报文中通知TRILL网络中的其他RB。
较佳地,
第一处理单元1002,在发送携带虚拟组播组的TLV的ISIS LSP的RB的端口上生成虚拟组播组转发表项;所述虚拟组播组转发表项存储组播组和未被剪掉的端口的端口号。
较佳地,该RB进一步包括:存储单元1005;
存储单元1005,与第一处理单元1002相连,用于将第一处理单元1002收到目的MAC地址为所述虚拟组播组地址的请求报文携带的入口RB的BRIDGE ID号、客户端IP地址和客户端MAC地址绑定保存;
第一处理单元1002,收到DHCP服务器发来的响应报文时,如果该响应报文的目的MAC地址为广播地址,则将广播地址修改为所述绑定保存的客户端MAC地址,并封装存储单元1005绑定保存的入口RB的BRIDGE ID号,转发给发来请求报文的RB;如果该响应报文的目的MAC地址为存储单元1005绑定保存的客户端MAC地址,则直接封装存储单元1005绑定保存的入口RB的BRIDGE ID号,转发给发来请求报文的RB。
较佳地,该RB进一步包括:生成单元1006。
生成单元1006,用于生成DHCP报文地址转换表项;该DHCP报文地址转换表项用于存储虚拟组播组地址;
第一处理单元1002,用于当收到其他RB发来的目的地址为生成单元1006生成的DHCP报文地址转换表项中存储的虚拟组播地址时,将请求报文的目的MAC地址修改为广播地址发送给自身所在的RB下挂的DHCP服务器;
学习单元1003,进一步用于生成相应的DHCP报文地址转发表项,该相应的DHCP报文地址转发表项用于存储所述虚拟组播组地址和报文特征匹配字段;其中,报文匹配字段用于匹配DHCP客户端发送的请求报文;
第二处理单元1004,用于当收到DHCP客户端发来报文,根据学习单元1004生成的相应的DHCP报文地址转发表项中保存的报文特征匹配字段,确定接收的报文为请求报文时,将请求报文的目的MAC地址修改为相应的DHCP报文地址转发表项中存储的虚拟组播组地址并沿着组播分发树转发。
较佳地,
请求报文包括:DHCP DISCOVER报文和DHCP REQUEST报文;
与DHCP DISCOVER报文对应的响应报文具体为DHCP OFFER报文;DHCP OFFER报文中携带了DHCP服务器为DHCP客户端配置的IP地址信息;
与DHCP REQUEST报文对应的响应报文具体为DHCP ACK报文或NAK报文;DHCP ACK报文中携带了确认将IP地址分配给DHCP客户端,DHCP NAK报文中携带了确认没有将IP地址分配给DHCP客户端。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明在设置了DHCP报文信任端口的RB上,使用针对到达DHCP服务器流量的唯一虚拟组播组地址,并且将该地址通过TRILL ISIS的LSP在整网泛洪到所有的RB设备。TRILL网络中所有的RB在组播分发树上针对该虚拟组播组地址进行剪枝运算,构建该虚拟组播组流量在TRILL网络的转发路径树,该转发路径树是一个以具有DHCP TRUST功能的RB为根的逆向树。
设置DHCP报文信任端口的RB收到请求报文时,将报文的目的MAC地址修改为广播地址并转发;未设置DHCP报文信任端口的RB收到请求报文时,将报文的目的MAC地址修改为虚拟组播组地址并转发。本发明将TRILL网络中的DHCP报文交互过程限制在特定的转发路径上,不进行泛洪,能够实现DHCP报文转发的私密性,减少网络受攻击的机会。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。