CN104104744B - 一种ip地址分配的方法和装置 - Google Patents

一种ip地址分配的方法和装置 Download PDF

Info

Publication number
CN104104744B
CN104104744B CN201410326287.7A CN201410326287A CN104104744B CN 104104744 B CN104104744 B CN 104104744B CN 201410326287 A CN201410326287 A CN 201410326287A CN 104104744 B CN104104744 B CN 104104744B
Authority
CN
China
Prior art keywords
message
dhcp
client
address
messages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410326287.7A
Other languages
English (en)
Other versions
CN104104744A (zh
Inventor
江玉八
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN201410326287.7A priority Critical patent/CN104104744B/zh
Publication of CN104104744A publication Critical patent/CN104104744A/zh
Application granted granted Critical
Publication of CN104104744B publication Critical patent/CN104104744B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供IP地址分配的方法及装置,所述方法包括:接收来自SDN交换机转发的客户端DHCP报文;根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文。应用本发明实施例可以实现为不同IP子网中的客户端分配IP地址,解决了一台DHCP服务器只能为一个子网中的客户端分配IP地址的问题。

Description

一种IP地址分配的方法和装置
技术领域
本发明涉及通信技术领域,特别是涉及一种IP地址分配的方法和装置。
背景技术
随着网络规模的扩大和网络复杂度的提高,网络配置越来越复杂,经常出现计算机位置变化(如便携机或无线网络)和计算机数量超过可分配的IP地址的情况,这时需要用到动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)为客户端分配IP地址。
发明内容
本发明提供一种IP地址分配的方法及装置,将现有的依据DHCP协议为客户端分配IP地址的过程在SDN(Software Defined Network,软件定义网络)网络中实现。
根据本发明实施例的第一方面,提供一种IP地址分配的方法,所述方法应用在SDN中的控制器上,所述方法包括:
接收来自SDN交换机转发的客户端DHCP报文;
根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文。
根据本发明实施例的第二方面,提供一种IP地址分配的方法,所述方法应用在SDN中的交换机上,所述方法包括:
接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器;
接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端。
根据本发明实施例的第三方面,提供一种IP地址分配的装置,所述装置应用在SDN中的控制器上,所述装置包括:
报文接收模块,用于接收来自SDN交换机转发的客户端DHCP报文;
报文响应模块,用于根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文。
根据本发明实施例的第四方面,提供一种IP地址分配的装置,所述装置应用在SDN中的交换机上,所述装置包括:
客户端报文处理模块,用于接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器;
控制器报文处理模块,用于接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端。
由本发明实施例可见,SDN控制器掌握着全局IP子网的配置信息,因此能够根据DHCP报文转发的路径和端口得知客户端的位置,从而能够为不同IP子网中的客户端分配正确的IP地址,解决了现有技术中一台DHCP服务器只能为一个子网中的客户端分配IP地址的问题。
附图说明
图1示出了本发明IP地址分配方法的一个实施例流程图。
图2示出了本发明IP地址分配方法的另一个实施例流程图。
图3示出了本发明IP地址分配方法的另一个实施例流程图。
图4示出了本发明IP地址分配装置所在设备的一种硬件结构图。
图5示出了本发明IP地址分配装置的一个实施例框图。
图6示出了本发明IP地址分配装置的另一个实施例框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。DHCP是一个局域网的网络协议,用于给内部网络或网络服务供应商自动分配IP地址。具体实现DHCP客户端向DHCP服务器请求分配IP地址的过程如下:
1)发现阶段,DHCP客户端发送DHCP Discover发现报文在网络上寻找DHCP服务器;
2)提供阶段,DHCP服务器向DHCP客户端发送一个包含出租的IP地址和其他设置的DHCP Offer提供报文;
3)选择阶段,如果有多台DHCP服务器向DHCP客户端发来DHCP Offer提供报文,则DHCP客户端只接受第一个接收到的DHCP Offer提供报文,然后它就以广播方式回答一个DHCP Request确认报文,该信息中包含向它所选定的DHCP服务器请求IP地址的内容;
4)确认阶段,当DHCP服务器收到DHCP客户端回答的DHCP Request确认报文之后,它便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP Ack确认响应报文,告诉DHCP客户端可以使用它所提供的IP地址。DHCP客户端在收到DHCP Ack确认响应报文后,发送ARP报文到网络上,用来确定DHCP服务器提供的IP地址是否已经被其它客户端所占用。如果已被别的客户端占用,则发送给DHCP服务器一个DHCP Decline包,重新开始DHCP过程;如果没有被占用,则DHCP过程结束,DHCP客户端正式使用该IP地址;
5)重新登陆,以后DHCP客户端每次重新登录网络时,就不需要再发送DHCPDiscover发现报文了,而是直接发送包含前一次所分配的IP地址的DHCP Request确认报文;
6)更新租约,DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。
由上述DHCP工作流程可以看出,DHCP协议基本上是一个单向驱动协议,DHCP服务器完全是被动的,其动作基本由DHCP客户端的请求行为而触发。这会带来如下三个问题:
(1)DHCP服务器不能发现网络上非DHCP客户端已经在使用的IP地址,这将可能带来二次及以上的DHCP过程。多次DHCP过程增加了网络上数据包的传送量,加重了网络的负载。
(2)DHCP服务器不具备鉴别主机身份的能力,这会带来严重的安全隐患,若恶意主机假冒DHCP服务器向网络主机提供虚假配置信息,或者恶意主机假冒客户端向DHCP服务器请求大量IP地址使IP地址池枯竭,都将带来严重的后果。
(3)DHCP的实现方式只适用于DHCP客户端和服务器处于同一个子网内的情况。
为了解决上述DHCP分配IP地址的缺点和不足,本发明利用SDN网络中控制平面和转发平面分离的架构特点。利用SDN控制平面充当DHCP服务器,同时在SDN控制平面上进一步部署经过优化的DHCP服务,使得所述SDN控制平面能够用来进行客户端IP地址分配、主机身份鉴定等功能;SDN转发平面则进行DHCP报文的监听和转发等。在实现时,SDN中的控制平面功能由控制器(Controller)实现,控制器主要通过流表项向交换机下发报文转发策略;数据转发平面的功能由交换机(Switch)实现,主要用于按照控制器下发的流表项对报文进行转发。在一种可选的实现方案中,其可以通过OpenFlow(开放流)技术将网络设备的控制面与数据面进行分离,从而实现对网络流量的灵活控制。
为了便于理解,下面首先对SDN网络中的基本概念加以说明:
SDN控制器:是SDN架构中的控制平面,通过对SDN交换机中的流表进行控制,从而实现对整个SDN网络进行集中控制。
SDN交换机:接收SDN控制器设置的流表,并根据流表进行报文转发和处理;另一方面,也会主动向SDN控制器上报本设备的状态和事件,如接口UP(可用)/DOWN(可不用)。
流表:由匹配规则(Rule)、动作(Action)和统计(Statistics)三部分组成。
匹配规则包括:SDN交换机端口(switch port)、VLAN ID(标识)、源MAC地址、目的MAC地址、以太网类型、源IP地址、目的IP地址、IP协议、TCP(Transmission ControlProtocol,传输控制协议)源端口、TCP目标端口等。
动作:每一个流表项关联一个如何处理匹配该流表项的报文的动作序列,该动作序列可以由0个或多个执行动作组成,在对报文进行转发处理时必须按照各个执行动作的顺序来处理。如果流表项没有关联任何执行动作,则丢弃匹配该流表项的报文。SDN交换机不需要支持所有的动作类型,但如果SDN交换机不支持某个动作,则必须向SDN控制器返回错误。SDN交换机与SDN控制器建立连接之后,要协商双方支持的动作类型。动作具体可以是:转发报文到一个或多个端口,封装报文并转发给SDN控制器,丢弃报文,修改报文内容等。
参见表1为流表结构的一个具体示例:
源IP 目的IP 源端口 目的端口 …… Action Statistics
* 5.6.7.8 * * * Port1 300
* * * 25 * drop 260
* 1.2.3.4 * * * All 150
表1
其中,若SDN交换机接收到的报文的目的IP地址为5.6.7.8,则匹配第一条流表项,并且按照该流表项的Action将该报文发送至SDN交换机的Port1端口。
若SDN交换机接收到的报文的目的端口为25,则匹配第二条流表项,并且按照该流表项的Action将该报文丢弃。
若SDN交换机接收到的报文目的IP地址为1.2.3.4,则匹配第三条流表项,并且按照该流表项的Action将该报文发送至SDN交换机的所有端口。
当然,这里的匹配规则和Action可以按照实际情况来定义,不仅局限于表1中的具体实例。
下面结合附图和具体实施方式对本发明作进一步详细地说明,参见图1,本发明提供了一种IP地址的分配方法,所述方法应用在SDN控制器上,包括:
步骤101,接收来自SDN交换机转发的客户端DHCP报文。
具体实现时,SDN交换机是通过将客户端报文封装为Packet in报文转发至SDN控制器。所述客户端DHCP报文可以为DHCP Discover报文、DHCP Request报文。
步骤102,根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文。
其中,所述响应报文是通过封装成Packet out报文转发至SDN交换机进行后续相应的处理动作实现本发明目的的。
具体地,若所述客户端的报文类型为DHCP Discover报文,则所述SDN控制器为该请求客户端分配一个IP地址,并生成包含该分配的IP地址的DHCP Offer响应报文。
若所述客户端的报文类型为DHCP Request报文,则所述SDN控制器为该请求客户端生成DHCP Ack或DHCP Nack报文。当SDN控制器确定当前DHCP Request报文中包括的IP地址可以使用,则回复DHCP Ack确认响应报文,以便通知该客户端可以使用所述IP地址,若确定所述IP地址不可使用,则回复DHCP Nack确认响应报文。
进一步地,为了避免现有技术经过DHCP Offer、DHCP Request、DHCP Ack几个过程之后,客户端才发现预分配的目标IP地址已经被占用,需要重新启动一次DHCP过程。在本发明的一个优选实施方式中,SDN控制器发送DHCP Offer报文之前,所述SDN控制器还需要发起对预分配的IP地址的冲突检测。只有在确定了所述IP地址没有被占用的情况下,SDN控制器才会发送DHCP Offer报文。这样,与现有技术相比,本发明不但减少了整个DHCP过程的步骤,而且只需要一次DHCP过程就可以完成IP地址的分配。减少了网络上数据包的传送量,同时也减轻了网络的负载。
在具体实现时,所述冲突检测报文可以为ARP报文,当所述控制器接收到来自客户端的DHCP Discover报文时,由SDN控制器在发送DHCP Offer报文之前发送ARP冲突检测报文向其所在网络中的客户端询问当前预分配的IP地址是否正在被使用,如果网络中存在客户端正在使用所述预分配的IP地址,则该客户端会对所述冲突检测报文回复对应的冲突响应报文,则所述SDN控制器需要重新分配IP地址并进行上述同样的步骤。如果所述IP地址未被占用,则在预设时间范围内不会接收到客户端对所述冲突检测报文回复的冲突响应报文,则所述控制器将所述预分配的IP地址生成DHCP Offer报文回复给SDN交换机,由所述SDN交换机进一步将该DHCP Offer报文转发给DHCP客户端。
另外,为了防止恶意客户端主机假冒DHCP服务器向网络主机提供虚假配置信息,在本发明的另一个优选实施例中,所述SDN控制器在为DHCP客户端分配IP地址之前,还需要对恶意主机假冒DHCP服务器的身份鉴别。
在本发明实施例中,由于SDN控制器作为网络中唯一的DHCP服务器,因此,DHCPOffer报文、DHCP Ack报文或DHCP Nack报文这类DHCP响应报文只能由SDN控制器发出,若从其它客户端主机接收到了此类报文,则无疑可以确定是来自恶意客户端主机假冒的DHCP服务器。在此情况下,所述SDN控制器将对确定来自假冒DHCP服务器的报文直接做丢弃处理。
具体地,当控制器接收到来自SDN交换机发送的Packet in消息时,如果发现所述客户端的DHCP报文是DHCP Offer、DHCP Ack、DHCP Nack报文类型时全部丢弃,并且不回复Packet out消息。
进一步地,为了减缓SDN控制器识别恶性主机身份的性能压力,所述SDN控制器还可以通过向SDN交换机下发过滤流表,以便对假冒DHCP服务器的恶意主机报文进行过滤。一般而言,客户端基于DHCP协议向DHCP服务器发送的DHCP报文的源端口号为68、目的端口号为67。而DHCP服务器向客户端发送的DHCP响应报文的源端口号为67、目的端口号为68。由于在本发明实施例中,SDN控制器充当DHCP服务器,对于来自客户端的DHCP报文,如果该DHCP报文的源端口号为67、目的端口号为68,则可确定该DHCP报文是网络中假冒DHCP服务器发出的,则可以通过SDN交换机直接进行丢弃。这样一来,减少了SDN交换机转发到SDN控制器的垃圾报文数量,降低了SDN控制器的负荷。
具体地,SDN控制器可以为SDN交换机设置该过滤规则:当接收到DHCP客户端报文的源端口号为67、目的端口号为68,则动作Action设置为丢弃当前匹配的报文。需要说明的是,在具体实施过程中,SDN控制器为SDN交换机设置并下发过滤流表并不局限在此步骤中,可以根据实际情况随时为SDN交换机下发对应的流表。
这样,当SDN交换机上的上述流表建立成功后,对于从物理端口到达的源端口是67,目的端口是68的UDP报文,匹配流表项后,通过定义Action为丢弃,这样,可以大幅减少假冒报文对SDN控制器的冲击。
进一步地,在本发明的又一实现方式中,为了防止恶意客户端主机假冒合法的DHCP客户端向DHCP服务器频繁申请IP地址可能致使IP地址池枯竭的问题,所述SDN控制器向DHCP客户端发送了DHCP Ack响应报文后,还包括:
S1,生成DHCP客户端身份识别报文,其中所述身份识别报文包括目标客户端当前使用的目标IP地址;
S2,将所述身份识别报文封装成Packet out报文发送至对应的SDN交换机;
S3,判断在预设时间范围内是否收到所述目标客户端对所述身份识别报文回复的身份响应报文,若未收到,则确定所述目标客户端为非法DHCP客户端,回收所述目标客户端的目标IP地址,并将所述目标客户端加入黑名单;
S4,向SDN交换机下发流表,设置在预设的时间范围内,对来自黑名单中客户端发送的报文进行丢弃。
其中,SDN控制器通过向SDN交换机下发流表,并设置定时器判断在预设时间范围内SDN交换机接收到的客户端报文是否来自黑名单中的客户端,若是,则SDN交换机丢弃该报文,这样一来,进一步降低了SDN控制器的负荷。
本发明提供另外一种IP地址分配方法,其中,所述方法应用于SDN交换机上,包括:
步骤201,接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器。
其中,DHCP报文通常包括:DHCP发现报文(DHCP Discover报文)、DHCP确认报文(DHCP Request报文)。具体地,DHCP Discover报文是客户端发出的IP地址请求报文;DHCPRequest报文是客户端对来自SDN控制器的DHCP Offer报文所回复的响应报文,或者是当DHCP客户端在获取IP地址之后,重新登陆网络时向SDN控制器发送的确认报文。
在本发明实施例中,虽然SDN控制器充当DHCP服务器,但是客户端并不向SDN控制器直接发送DHCP报文,而是先发送至与所述客户端相连接的SDN交换机,再由SDN交换机将其封装成输入数据包,具体地,封装为Packet in报文,然后对Packet in报文进行转发或处理。
一般而言,客户端基于DHCP协议向DHCP服务器发送的DHCP报文的源端口号为68、目的端口号为67。而DHCP服务器向客户端发送的DHCP响应报文的源端口号为67、目的端口号为68。由于在本发明实施例中,由SDN控制器充当DHCP服务器,对于来自客户端的DHCP报文,如果该DHCP报文的源端口号为67、目的端口号为68,则可确定该DHCP报文是网络中假冒DHCP服务器发出的,这样,如果在此之前,所述SDN控制器已在SDN交换机上设置了过滤流表,亦即,在SDN交换机上设置客户端发送的DHCP报文对应的流表项的源端口号为67、目的端口号为68,则设置的策略为丢弃所述客户端报文。则当SDN交换机匹配到此类报文时,直接进行丢弃。这样一来,减少了SDN交换机转发到SDN控制器的垃圾报文数量,降低了SDN控制器的负荷。
步骤202,接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端。
其中,所述SDN控制器发送的报文封装为Packet out报文,SDN交换机接收到所述Packet out报文后,按照设定的规则进行转发或者处理。
为了避免现有技术经过DHCP Offer、DHCP Request、DHCP Ack几个过程之后,客户端才发现预分配的目标IP地址已经被占用,需要重新启动一次DHCP过程。在本发明中,事先通过SDN控制器发起对IP地址的冲突检测。只有在确定了所述IP地址没有被占用的情况下,SDN控制器才会发送DHCP Offer报文。这样,与现有技术相比,本发明不但减少了整个DHCP过程的步骤,而且只需要一次DHCP过程就可以完成IP地址的分配。减少了网络上数据包的传送量,同时也减轻了网络的负载。
在具体实现时,当所述SDN交换机接收到SDN控制器发送的冲突检测报文时,向与之相连的DHCP客户端发送该冲突检测报文,询问当前预分配的IP地址是否正在被使用,如果有客户端在使用所述预分配的IP地址,则该客户端会对所述冲突检测报文回复对应的冲突响应报文。其中,所述冲突检测报文可以为ARP报文。
所述DHCP响应报文包括DHCP Offer报文、DHCP Ack/Nack报文等。当SDN控制器接收到来自客户端的DHCP Discover报文,会为该客户端确定分配的IP地址,并回复DHCPOffer响应报文,在回复的DHCP Offer报文中包括所述IP地址。当SDN控制器接收到来自客户端的DHCP Request报文,若确定当前DHCP Request报文中包括的IP地址可以使用,则回复DHCP Ack确认响应报文,以便通知该客户端可以使用所述IP地址,若确定所述IP地址不可使用,则回复DHCP Nack确认响应报文。
进一步地,为了防止恶意主机假冒DHCP客户端向DHCP服务器频繁申请IP地址可能致使IP地址池枯竭的问题,在本发明的另一优选实施例中,SDN交换机在客户端成功获取IP地址后,还包括:
步骤203,接收控制器发送的该客户端的身份识别报文,将所述身份识别报文发送至对应的客户端,并在判断出所述客户端为非法DHCP客户端时,接收控制器下发的关于该客户端的DHCP报文过滤流表,在预定时间内,对接收到该客户端发送的报文直接进行丢弃处理。
其中,身份识别报文为查询本机MAC地址的ARP请求报文,接收到此报文的合法客户端会回复包括自身MAC地址的身份响应报文,其作用是鉴别已经获取IP地址的客户端的身份。若所述客户端接收到所述身份识别报文后不做出响应,则可确定所述客户端为非法DHCP客户端。
基于此,SDN控制器能够对确定为非法的DHCP客户端回收已分配的IP地址,不仅节约了有限的IP地址资源,而且可以防止非法DHCP客户端恶意申请IP地址的情况,提高了DHCP过程的安全性,进而提高了网络的安全性。
本发明提供的IP地址分配方法不仅适用于同一子网中的IP地址分配,而且也能够为属于不同IP子网中的客户端分配IP地址。
具体地,在本发明实施例中,一个SDN控制器可以连接多个SDN交换机,其中每个SDN交换机连接各自IP子网中的客户端,接收该IP子网中各个客户端的DHCP报文,并将接收到的DHCP报文转发至SDN控制器,由SDN控制器统一进行响应处理。由于SDN控制器掌握着全局IP子网的配置信息,因此就能够根据DHCP报文转发的路径和端口得知客户端的位置,从而能够为不同IP子网中的客户端分配正确的IP地址,解决了现有技术中一台DHCP服务器只能为一个子网中的客户端分配IP地址的问题。
下面结合具体的SDN网络架构对本发明作进一步详细地说明,参见图3,图3示出的SDN网络架构中,包括一台SDN控制器Controller、两台SDN交换机OFS1和OFS2、4台DHCP客户端Client1、Client2、Client3和Client4。现以DHCP客户端Client1向SDN控制器Controller请求IP地址为例,具体说明本发明提供的IP地址分配的方法:
步骤301,Controller与OFS1和OFS2进行初始化。
其中,初始化过程具体包括:
Controller与OFS1和OFS2建立连接;
Controller向OFS1和OFS2发送Features请求,请求交换机OFS1和OFS2的信息;
OFS1和OFS2向Controller回复Features响应消息;
Controller请求OFS1和OFS2发送链路层发现协议(Link Layer DiscoveryProtocol,LLDP)数据包;
OFS1和OFS2向Controller发送收到的LLDP数据包。
步骤302,OFS1接收来自Client1的DHCP Discover报文。
具体地,在本实施例中,以Client1首次发出DHCP Discover报文为例进行描述。
步骤303,OFS1匹配DHCP Discover报文与预置的流表,由于此时OFS1中还未建立流表,因此,没有匹配的流表项,OFS1将所述DHCP Discover报文封装为Packet in报文发送至Controller。
另外,Controller对接收到来自客户端的报文还要做进一步判断:若接收到的报文是DHCP Offer报文、DHCP Ack报文或DHCP Nack报文,则丢弃该客户端报文。
步骤304,Controller为Client1确定分配的IP地址,并向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用。
具体地,Controller将ARP冲突检测报文封装为Packet out报文,并向OFS1和OFS2发送所述Packet out报文。
步骤305,OFS1将接收到的ARP冲突检测报文通过与之相连的所有端口发送至Client1和Client2;OFS2将接收到的ARP冲突检测报文通过与之相连的所有端口发送至Client3和Client4。
步骤306,Client3接收到所述ARP冲突检测报文后,回复冲突响应报文。
为了更加清楚的说明本发明的提供的IP地址分配的实现过程,假设在本实施例中,Client3已经占用了Controller准备为Client1分配的IP地址,则Client3接收到当前的ARP冲突检测报文后,会回复对应的冲突响应报文,该冲突响应报文包括Client3当前使用的IP地址和MAC地址。
步骤307,OFS2接收到所述Client3发送的冲突响应报文后,将所述冲突响应报文封装为Packet in报文发送至Controller。
步骤308,在预设时间范围内,Controller接收到来自Client3的冲突响应报文,即可得知所述目标IP地址已经被占用,则返回步骤304。
若在预设时间范围内,Controller未接收到所述冲突响应报文,则说明所述目标IP地址未被占用,接着执行步骤309。
步骤309,Controller对Client1发送的DHCP Discover报文生成DHCP Offer响应报文,所述DHCP Offer响应报文携带有Controller为Client1分配的IP地址;Controller将所述DHCP Offer响应报文封装为Packet out报文通过OFS1转发至Client1。
进一步地,在本步骤之后,还包括:
Controller为OFS1、OFS2设置并下发流表,该流表中设置有以下过滤规则:当接收到DHCP客户端报文的源端口号为67、目的端口号为68,则动作Action设置为丢弃当前匹配的报文。
需要说明的是,Controller为OFS下发流表并不限制在此步骤中,可以根据实际需要进行设定。
步骤310,Client1接收到所述DHCP Offer响应报文之后,向Controller发送DHCPRequest确认报文,以便询问能否使用当前IP地址。
步骤311,OFS1接收到所述DHCP Request确认报文,将其封装为Packet in报文发送至Controller。
步骤312,Controller接收到所述携带有DHCP Request确认报文的Packet in报文,判断所述DHCP Request确认报文包括的IP地址是否可以使用,若可以,则生成DHCP Ack确认响应报文,若不可以,则生成DHCP Nack确认响应报文。
在本发明实施例中,以所述IP地址可以使用为例,则Controller生成DHCP Ack确认响应报文并封装成Packet out报文发送至OFS1;所述DHCP Ack报文为包含Controller所提供的IP地址和其它网络设置的确认信息,如网关等。
步骤313,OFS1将所述DHCP Ack确认响应报文转发至Client1。
步骤314,Client1开始使用所述IP地址并根据DHCP Ack报文中的配置信息进行网络配置。
至此,一次完整的DHCP服务实现过程已经结束,以后Client1每次重新登录网络时,就不需要再发送DHCP Discover报文了,而是直接发送包含当前使用的IP地址的DHCPRequest报文。Controller接收到Client1发送的所述DHCP Request报文时,判断Client1是否可以继续使用该DHCP Request确认报文中包括的IP地址。若Client1可以继续使用该IP地址,则Controller生成DHCP Ack确认响应报文并封装成Packet out报文发送至OFS1;若Client1不可以继续使用该IP地址,例如该IP地址是已经到期或者已经分配给其它DHCP客户端,则Controller生成DHCP Nack确认响应报文并封装成Packet out报文发送至OFS1。
步骤315,为了验证Client1的客户端身份,Controller生成身份识别报文,将身份识别报文通过交换机OFS1转发至Client1。
在预设时间范围内,若Controller没有接收到Client1对所述身份识别报文回复的响应报文,则确定Client1为非法DHCP客户端,Controller收回为其分配的目标IP地址,并将Client1加入黑名单;
进一步地,Controller向OFS1、OFS2下发流表,设置在预设的时间范围内,对来自黑名单中客户端发送的报文进行丢弃。
与前述IP地址分配方法的实施例相对应,本发明实施例还提供了IP地址分配装置的实施例。
本发明IP地址分配装置的实施例可以分别应用在SDN中的控制器和交换机上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本发明IP地址分配装置所在设备的一种硬件结构图,除了图4所示的CPU、内存以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等;从硬件结构上来讲该设备还可能是分布式的设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
参见图5,为本发明IP地址分配装置的一个实施例框图,该实施例可以应用在SDN中的控制器上:
该装置包括:报文接收模块410、报文响应模块420。
其中,报文接收模块410,用于接收来自SDN交换机转发的客户端DHCP报文;
报文响应模块420,用于根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文。
在一个可选的实现方式中:
所述报文响应模块具体包括(图5中未示出):地址分配单元,用于判断所述DHCP报文的类型是否为DHCP Discover报文,若是,则为所述客户端分配一个IP地址,并生成包含该分配的IP地址的DHCP Offer响应报文;
地址确认单元,用于判断所述DHCP报文的类型是否为DHCP Request报文,若是,则为所述客户端生成对应的DHCP Ack或DHCP Nack报文;其中,当确定所述DHCP Request报文中包括的IP地址可以使用,则生成DHCP Ack报文,若确定所述IP地址不可使用,则生成DHCPNack报文。
在一个可选的实现方式中:
所述装置还可以包括(图5中未示出):冲突检测模块,用于向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用;判断在预设时间内是否接收到来自客户端对于所述冲突检测报文回复的冲突响应报文,若收到,则为所述客户端重新分配IP地址并重新执行上述步骤。
在一个可选的实现方式中:
所述装置还可以包括(图5中未示出):报文过滤模块,用于判断所述DHCP报文的类型是否为DHCP Offer、DHCP Ack、DHCP Nack报文,若是,则丢弃所述DHCP报文。
在一个可选的实现方式中:
所述装置还可以包括(图5中未示出):流表设置模块,用于设置流表,所述流表中设置有以下过滤规则:当接收到DHCP客户端报文的源端口号为67、目的端口号为68时,则动作Action设置为丢弃当前匹配的报文;将所述流表下发至对应的SDN交换机。
在一个可选的实现方式中:
所述装置还可以包括(图5中未示出):识别处理模块,用于生成DHCP客户端身份识别报文,其中所述身份识别报文包括目标客户端当前使用的目标IP地址;将所述身份识别报文封装成Packet out报文发送至对应的SDN交换机;判断在预设时间范围内是否收到所述目标客户端对所述身份识别报文回复的身份响应报文,若未收到,则确定所述目标客户端为非法DHCP客户端,回收所述目标客户端的目标IP地址,并将所述目标客户端加入黑名单;向SDN交换机下发流表,设置在预设的时间范围内,对来自黑名单中客户端发送的报文进行丢弃。
参见图6,为本发明IP地址分配装置的另一个实施例框图,该实施例可以应用在SDN中的交换机上:
该装置包括:客户端报文处理模块510、控制器报文处理模块520。
其中,客户端报文处理模块510,用于接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器;
控制器报文处理模块520,用于接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端。
在一个可选的实现方式中:
所述根据预设规则进行处理,具体为:若所述DHCP报文的源端口号为67、目的端口号为68,则丢弃所述DHCP报文。
在一个可选的实现方式中:
所述装置还可以包括(图6中未示出):冲突检测模块,用于判断所述控制器报文是否为预分配的IP地址的冲突检测报文,若是,则将所述冲突检测报文转发至对应的所有客户端;若接收到客户端对所述冲突检测报文回复的冲突响应报文,则将所述冲突响应报文封装为输入数据包发送至SDN控制器。
在一个可选的实现方式中:
所述装置还可以包括(图6中未示出):识别处理模块,用于接收控制器发送的身份识别报文,将所述身份识别报文发送至对应的客户端,并在判断出所述客户端为非法DHCP客户端时,接收控制器下发的关于该客户端的DHCP报文过滤流表,在预定时间内,对接收到该客户端发送的报文直接进行丢弃处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (14)

1.一种IP地址分配的方法,其特征在于,所述方法应用在软件定义网络SDN中的控制器上,所述方法包括:
接收来自SDN交换机转发的客户端DHCP报文;
根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文;
其中,若所述DHCP报文的类型为DHCP Discover报文,则为所述客户端分配一个IP地址,并生成包含该分配的IP地址的DHCP Offer响应报文;若所述DHCP报文的类型为DHCPRequest报文,则为所述客户端生成对应的DHCP Ack或DHCP Nack报文;其中,当确定所述DHCP Request报文中包括的IP地址可以使用,则生成DHCP Ack报文,若确定所述IP地址不可使用,则生成DHCP Nack报文;
在生成DHCP ACK响应报文后,生成DHCP客户端身份识别报文,其中所述身份识别报文包括目标客户端当前使用的目标IP地址;将所述身份识别报文封装成Packet out报文发送至对应的SDN交换机;判断在预设时间范围内是否收到所述目标客户端对所述身份识别报文回复的身份响应报文,若未收到,则确定所述目标客户端为非法DHCP客户端,回收所述目标客户端的目标IP地址,并将所述目标客户端加入黑名单;向SDN交换机下发流表,设置在预设的时间范围内,对来自黑名单中客户端发送的报文进行丢弃。
2.如权利要求1所述的方法,其特征在于,所述生成包含该分配的IP地址的DHCP Offer响应报文之前,还包括:
向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用;
判断在预设时间内是否接收到来自客户端对于所述冲突检测报文回复的冲突响应报文,若收到,则为所述客户端重新分配IP地址并重新向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用。
3.如权利要求1所述的方法,其特征在于,所述为所述客户端分配一个IP地址之前,还包括:
若所述DHCP报文的类型为DHCP Offer、DHCP Ack、DHCP Nack报文时,则丢弃所述DHCP报文。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
设置流表,所述流表中设置有以下过滤规则:当接收到DHCP客户端报文的源端口号为67、目的端口号为68时,则动作Action设置为丢弃当前匹配的报文;
将所述流表下发至对应的SDN交换机。
5.一种IP地址分配的方法,其特征在于,所述方法应用在软件定义网络SDN中的交换机上,所述方法包括:
接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器;
接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端;其中,若所述DHCP报文的类型为DHCP Discover报文,则所述响应报文为包含所述SDN控制器为所述客户端分配的IP地址的DHCP Offer响应报文;若所述DHCP报文的类型为DHCP Request报文且所述DHCP Request报文中包括的IP地址可以使用,则所述响应报文为DHCP Ack报文;若所述DHCP报文的类型为DHCP Request报文且所述DHCP Request报文中包括的IP地址不可使用,则所述响应报文为DHCP Nack报文;
在所述接收来自SDN控制器的报文之后,接收控制器发送的身份识别报文,将所述身份识别报文发送至对应的客户端,并在判断出所述客户端为非法DHCP客户端时,接收控制器下发的关于该客户端的DHCP报文过滤流表,在预定时间内,对接收到该客户端发送的报文直接进行丢弃处理。
6.如权利要求5所述的方法,其特征在于,所述根据预设规则进行处理,具体包括:
若所述DHCP报文的源端口号为67、目的端口号为68,则丢弃所述DHCP报文。
7.如权利要求5所述的方法,其特征在于,所述接收来自SDN控制器的报文之后,还包括:
若所述控制器报文为预分配的IP地址的冲突检测报文,则将所述冲突检测报文转发至对应的所有客户端;
若接收到客户端对所述冲突检测报文回复的冲突响应报文,则将所述冲突响应报文封装为输入数据包发送至SDN控制器。
8.一种IP地址分配的装置,其特征在于,所述装置应用在软件定义网络SDN中的控制器上,所述装置包括:
报文接收模块,用于接收来自SDN交换机转发的客户端DHCP报文;
报文响应模块,用于根据客户端发送的DHCP报文的不同类型,生成对应的不同响应报文;其中,所述报文响应模块具体包括:地址分配单元,用于判断所述DHCP报文的类型是否为DHCP Discover报文,若是,则为所述客户端分配一个IP地址,并生成包含该分配的IP地址的DHCP Offer响应报文;地址确认单元,用于判断所述DHCP报文的类型是否为DHCPRequest报文,若是,则为所述客户端生成对应的DHCP Ack或DHCP Nack报文;其中,当确定所述DHCP Request报文中包括的IP地址可以使用,则生成DHCP Ack报文,若确定所述IP地址不可使用,则生成DHCP Nack报文;
识别处理模块,用于在所述地址确认单元生成DHCP ACK响应报文后,生成DHCP客户端身份识别报文,其中所述身份识别报文包括目标客户端当前使用的目标IP地址;将所述身份识别报文封装成Packet out报文发送至对应的SDN交换机;判断在预设时间范围内是否收到所述目标客户端对所述身份识别报文回复的身份响应报文,若未收到,则确定所述目标客户端为非法DHCP客户端,回收所述目标客户端的目标IP地址,并将所述目标客户端加入黑名单;向SDN交换机下发流表,设置在预设的时间范围内,对来自黑名单中客户端发送的报文进行丢弃。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
冲突检测模块,用于向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用;判断在预设时间内是否接收到来自客户端对于所述冲突检测报文回复的冲突响应报文,若收到,则为所述客户端重新分配IP地址并重新向网络中的所有客户端发送冲突检测报文询问当前分配的IP地址是否正在被使用。
10.如权利要求8所述的装置,其特征在于,所述装置还包括:
报文过滤模块,用于判断所述DHCP报文的类型是否为DHCP Offer、DHCP Ack、DHCPNack报文,若是,则丢弃所述DHCP报文。
11.如权利要求8所述的装置,其特征在于,所述装置还包括:
流表设置模块,用于设置流表,所述流表中设置有以下过滤规则:当接收到DHCP客户端报文的源端口号为67、目的端口号为68时,则动作Action设置为丢弃当前匹配的报文;将所述流表下发至对应的SDN交换机。
12.一种IP地址分配的装置,其特征在于,所述装置应用在软件定义网络SDN中的交换机上,所述装置包括:
客户端报文处理模块,用于接收来自客户端的DHCP报文,若在预置的流表中匹配到所述DHCP报文的流表项,则根据预设规则进行处理;若在预置的流表中未匹配到所述DHCP报文的流表项,则将所述DHCP报文封装为输入数据包发送至SDN控制器;
控制器报文处理模块,用于接收来自SDN控制器的报文,若所述控制器报文为客户端的DHCP报文对应的响应报文,则将所述响应报文转发至对应的客户端;若所述DHCP报文的类型为DHCP Discover报文,则所述响应报文为包含所述SDN控制器为所述客户端分配的IP地址的DHCP Offer响应报文;若所述DHCP报文的类型为DHCP Request报文且所述DHCPRequest报文中包括的IP地址可以使用,则所述响应报文为DHCP Ack报文;若所述DHCP报文的类型为DHCP Request报文且所述DHCP Request报文中包括的IP地址不可使用,则所述响应报文为DHCP Nack报文;
识别处理模块,用于接收控制器发送的身份识别报文,将所述身份识别报文发送至对应的客户端,并在判断出所述客户端为非法DHCP客户端时,接收控制器下发的关于该客户端的DHCP报文过滤流表,在预定时间内,对接收到该客户端发送的报文直接进行丢弃处理。
13.如权利要求12所述的装置,其特征在于,所述根据预设规则进行处理,具体为:若所述DHCP报文的源端口号为67、目的端口号为68,则丢弃所述DHCP报文。
14.如权利要求12所述的装置,其特征在于,所述装置还包括:
冲突检测模块,用于判断所述控制器报文是否为预分配的IP地址的冲突检测报文,若是,则将所述冲突检测报文转发至对应的所有客户端;若接收到客户端对所述冲突检测报文回复的冲突响应报文,则将所述冲突响应报文封装为输入数据包发送至SDN控制器。
CN201410326287.7A 2014-07-09 2014-07-09 一种ip地址分配的方法和装置 Active CN104104744B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410326287.7A CN104104744B (zh) 2014-07-09 2014-07-09 一种ip地址分配的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410326287.7A CN104104744B (zh) 2014-07-09 2014-07-09 一种ip地址分配的方法和装置

Publications (2)

Publication Number Publication Date
CN104104744A CN104104744A (zh) 2014-10-15
CN104104744B true CN104104744B (zh) 2018-02-09

Family

ID=51672542

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410326287.7A Active CN104104744B (zh) 2014-07-09 2014-07-09 一种ip地址分配的方法和装置

Country Status (1)

Country Link
CN (1) CN104104744B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283983B (zh) * 2014-10-27 2018-01-09 新华三技术有限公司 一种软件定义网络中虚拟机ip地址分配方法及装置
CN104410727B (zh) * 2014-11-20 2018-03-23 中国联合网络通信集团有限公司 地址分配方法、客户端、服务器及地址分配系统
CN104580029B (zh) * 2015-01-26 2018-01-09 新华三技术有限公司 地址分配方法及装置
CN104618156B (zh) * 2015-01-26 2018-11-27 新华三技术有限公司 网络配置的方法及装置
CN104717142B (zh) * 2015-02-10 2020-01-10 国家计算机网络与信息安全管理中心 一种基于OpenFlow协议进行移动性管理的方法
WO2016130126A1 (en) * 2015-02-12 2016-08-18 Hewlett Packard Enterprise Development Lp Monitoring dynamic device configuration protocol offers to determine anomaly
CN104601414B (zh) * 2015-02-15 2018-12-11 新华三技术有限公司 一种软件定义网络中的ip地址冲突检测方法和装置
CN104821923A (zh) * 2015-05-15 2015-08-05 杭州华三通信技术有限公司 Sdn网络中发送上送控制器协议报文的方法和装置
ES2876245T3 (es) * 2016-02-18 2021-11-12 Fusionlayer Oy Redes de puesta en servicio/desmantelamiento en entornos informáticos orquestados o definidos por software
CN107295113B (zh) * 2016-03-31 2020-08-25 华为技术有限公司 一种网络配置的方法、交换机和服务器
CN107809495B (zh) * 2016-09-09 2021-06-22 华为技术有限公司 地址管理方法及装置
CN106506515B (zh) * 2016-11-22 2020-01-03 新华三技术有限公司 一种认证方法和装置
CN106657030B (zh) * 2016-12-05 2019-09-27 互联网域名系统北京市工程研究中心有限公司 一种基于dhcp服务器非法报文安全防护的方法及系统
CN106878480B (zh) * 2016-12-29 2021-04-20 新华三技术有限公司 一种dhcp服务进程共享方法及装置
CN107613044B (zh) * 2017-10-26 2021-10-01 郑州云海信息技术有限公司 一种sdn网络中更新虚拟机ip地址的方法及设备
CN111327486B (zh) * 2018-12-17 2021-10-15 中国电信股份有限公司 流表下发方法、装置、系统及计算机可读存储介质
CN111405075B (zh) * 2019-01-02 2023-03-28 中国移动通信有限公司研究院 一种网络地址分配方法、装置和存储介质
CN114143289A (zh) * 2021-10-29 2022-03-04 杭州云豆豆智能科技有限公司 一种sdn网络中ip地址分配同步方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103209225A (zh) * 2013-04-03 2013-07-17 北京邮电大学 一种基于周期触发代理的sdn广播处理方法
CN103248724A (zh) * 2013-04-19 2013-08-14 中国(南京)未来网络产业创新中心 一种基于sdn控制器的dhcp广播处理方法
CN103269278A (zh) * 2013-04-19 2013-08-28 中国(南京)未来网络产业创新中心 一种基于sdn的终端设备实时接入、离开感知方法
CN103888551A (zh) * 2012-12-19 2014-06-25 华为技术有限公司 一种网络中的因特网协议地址获取方法、中继设备及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103888551A (zh) * 2012-12-19 2014-06-25 华为技术有限公司 一种网络中的因特网协议地址获取方法、中继设备及系统
CN103209225A (zh) * 2013-04-03 2013-07-17 北京邮电大学 一种基于周期触发代理的sdn广播处理方法
CN103248724A (zh) * 2013-04-19 2013-08-14 中国(南京)未来网络产业创新中心 一种基于sdn控制器的dhcp广播处理方法
CN103269278A (zh) * 2013-04-19 2013-08-28 中国(南京)未来网络产业创新中心 一种基于sdn的终端设备实时接入、离开感知方法

Also Published As

Publication number Publication date
CN104104744A (zh) 2014-10-15

Similar Documents

Publication Publication Date Title
CN104104744B (zh) 一种ip地址分配的方法和装置
US9729501B2 (en) System and data card for stateless automatic configuration of IPv6 address and method for implementing the same
CN100527711C (zh) 包传输装置、通信网和数据包传输方法
CN107925626B (zh) 用于在网络元件中使用的方法和装置
US10931549B2 (en) Communication device of an industrial automation system and method for configurating the communication device
CN105099898B (zh) 一种pppoe报文转发方法以及bras服务器
CN106559292A (zh) 一种宽带接入方法和装置
CA2666486A1 (en) Network device location and configuration
CN105577548A (zh) 一种软件定义网络中报文处理方法和装置
CN106101617B (zh) 一种报文传输方法、装置及系统
CN104813644A (zh) 针对特定于设备的业务流导向而识别NATed设备
CN104618156A (zh) 网络配置的方法及装置
CN101873320B (zh) 一种基于DHCPv6中继的客户端信息确认方法及其装置
US11336751B2 (en) Method for operating a fieldbus system and gateway
JP5405415B2 (ja) サービス振分方法およびサービス振分装置
CN103561122B (zh) IPv6地址配置方法、IPv6客户端及服务器
CN106878481B (zh) 一种网络互连协议ip地址获取方法、装置和系统
CN104683500B (zh) 一种安全表项生成方法和装置
WO2007072245A2 (en) Dynamic firewall rule definition
CN102571592B (zh) 具有端口绑定功能的三层交换设备和数据报文转发方法
CN102480476A (zh) 一种基于dhcp协议扩展的多业务访问方法
CN107040507A (zh) 网络封锁方法及设备
CN104917687B (zh) 报文分流方法及装置
CN105847143A (zh) 基于vrrp的负载均衡方法及系统
CN106685861B (zh) 一种软件定义网络系统及其报文转发控制方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant after: Xinhua three Technology Co., Ltd.

Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant before: Huasan Communication Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant