一种软件定义网络的域内源地址的验证方法与流程

文档序号:16515086发布日期:2019-01-05 09:34阅读:170来源:国知局
一种软件定义网络的域内源地址的验证方法与流程

本发明涉及软件定义网络领域,尤其是涉及一种软件定义网络的域内源地址的验证方法。



背景技术:

由于现行的tcp/ip协议在转发报文时对其源地址不进行检查,因此报文的源地址很容易被伪造。目前互联网上存在大量的伪造源地址攻击,很多种网络攻击都会利用到伪造源地址技术。因此,无论是在网络安全方面,还是网路管理和计量方面,伪造源地址都带来严重的问题。

为了避免源地址伪造攻击并保证网络中源地址信息的可靠性,学术界和工业界提出了一系列源地址验证的方法。2008年清华大学提出了一种“基于真实ipv6的网络寻址体系结构”(sourceaddressvalidationarchitecture,简称sava),该体系结构根据网络各层不同特点,将源地址验证工作自底向上分为三个层次:接入子网,域内,域间,并分别针对这三个层次提出了轻量级的源地址验证解决方案。其中,sava在域内层采用了一种基于集中计算路径的域内源地址验证方法(calculatingpathforwarding,简称cpf)。cpf可以克服目前广泛应用的预先过滤类的源地址验证方法中由于非对称性造成的假阳性问题。

但是,由于cpf中使用到的各种协议不统一,不规范,导致对其进行开发的难度大,导致cpf兼容性差。



技术实现要素:

有鉴于此,本发明的目的在于提供一种软件定义网络的域内源地址的验证方法,将cpf移植到一个融入了软件定义网络体系结构思想的网络环境中以解决现有技术中cpf兼容性差的技术问题。

本发明提供了一种软件定义网络的域内源地址的验证方法,该验证方法包括:

路由器采集待发送数据,所述待发送数据包括域内源地址;

所述路由器基于预设置的传输协议,将待发送数据封装为所述传输协议对应的格式,得到封装数据;

所述路由器基于所述传输协议,传输所述封装数据;

网络控制器接收所述封装数据,解封并进行相应处理,将处理后的数据向上层的网络应用程序推送;

上层的网络应用程序验证所接收到的数据中的域内源地址。

优选的,所述待发送数据包括接口信息、接口地址信息、路由信息和采样数据。

优选的,所述域内源地址包含在所述接口地址信息、所述路由信息和所述采样数据中。

优选的,在网络控制器接收所述封装数据,解封并进行相应处理,将处理后的数据向上层的网络应用程序推送之前,还包括:

建立所述网络控制器与上层的网络应用程序之间的连接。

优选的,建立所述网络控制器与上层的网络应用程序之间的连接包括:

上层的网络应用程序使用注册信息,通过所述网络控制器的接口向所述网络控制器申请注册推送信息服务;

所述网络控制器接收到所述注册信息后,在本地注册推送信息服务。

优选的,网络控制器接收所述封装数据,解封并进行相应处理,将处理后的数据向上层的网络应用程序推送包括:

所述网络控制器接收到所述封装数据;

针对所述封装数据中的采样数据,所述网络控制器将所述采样数据提取,将一个或多个采样数据封装为向上层的网络应用程序推送的采样报文数据;

针对所述封装数据中的接口信息、接口地址信息和路由信息,所述网络控制器检测是否有更新,若有则将更新的信息封装入路由接口表更新数据,更新完整路由接口表数据,向上层的网络应用程序推送所述路由接口表更新数据和所述完整路由接口表数据。

优选的,上层的网络应用程序验证所接收到的数据中的域内源地址之前,还包括:

上层的网络应用程序向所述网络控制器发出路由器信息请求消息,获取域内全部路由器的路由表和接口表;

上层的网络应用程序基于各接口表信息,建立子网前缀表、邻居表和连接表;

上层的网络应用程序基于所述子网前缀表、所述邻居表和所述连接表,计算出过滤表,所述过滤表包括源地址前缀。

优选的,上层的网络应用程序验证所接收到的数据中的域内源地址包括:

上层的网络应用程序提取采样报文数据中的域内源地址;

上层的网络应用程序基于过滤表中的源地址前缀,验证采样报文数据中的域内源地址。

优选的,与所述传输协议对应的格式为类型长度值格式。

优选的,所述网络控制器与上层的网络应用程序之间通过端口通信。

综上,本发明提供了一种软件定义网络的域内源地址的验证方法,该验证方法中路由器采取包括域内源地址的待发送数据,并将待发送数据依据预设置的传输协议进行封装,得到封装数据,向网络控制器发送。网络控制器接收到封装数据之后进行相应处理,最终上层的网络应用程序得到来自路由器的数据,并可验证数据中的域内源地址的真伪。从而可将cpf移植入软件定义网络中,有效地解决了cpf兼容性差的技术问题,有效地运用了cpf可以克服目前广泛应用的预先过滤类的源地址验证方法中由于非对称性造成的假阳性问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚的说明本发明实施例中的技术方案,下面将对实施例描述中所需要的附图做简单的介绍:

图1为本发明实施例提供的软件定义网络的结构示意图;

图2为本发明实施例提供的软件定义网络的域内源地址的验证方法流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种软件定义网络的域内源地址的验证方法,如图1所示,该软件定义网络包括网络应用程序、网络控制器和路由器。如图2所示,该验证方法包括:

步骤s1、路由器采集待发送数据,待发送数据包括域内源地址。

本发明实施例可以在传统的商业路由器内新增加一个openflow模块,将现有的路由器进行升级。该openflow模块负责与路由器内部的其他模块例如路由协议、采样协议、访问控制列表等进行集成,采集各个来自各个模块的数据。这些来自各个模块的待发送数据大致包括接口信息、接口地址信息、路由信息,还包括采样数据。

其中,待发送数据中含有域内源地址,域内源地址本身属于接口地址信息,但是路由信息和采样数据中也会有域内源地址的存在。但是域内源地址在各信息中设置的用途不相同。

步骤s2、路由器基于预设置的传输协议,将待发送数据封装为传输协议对应的格式,得到封装数据。

路由器在采集到各个模块的数据之后,将这些数据通过封装,转化为类型长度值(type-length-value,简称tlv)格式的数据。

tlv格式是指每一个域都由类型(type)、长度(length)和数据(value)三元组组成,其中数据内又可由多个子tlv组成。这种层次化格式极其灵活,很方便进行扩展。由于本发明实施例所基于的cpf只是一个网络应用实例,实际需要的信息格式仅限于路由表、接口表等,但是由于众多的上层的网络应用程序可能需要不同的数据类型。

基于此考虑,本发明实施例采用了易于扩展的tlv格式来实现软件定义网络(softwaredefinednetwork,简称sdn)中openflow协议的扩展。在此扩展中,本发明实施例定义了cpf所需要的几类tlv:路由信息tlv,接口信息tlv,接口地址信息tlv以及采样数据tlv。

各类tlv的设计思想是相似的,以路由信息tlv为例,其用途是用来封装一条完整的路由信息,其格式如下表1所示。

表1

步骤s3、路由器基于传输协议,传输封装数据。

本发明实施例中,路由器与网络控制器之间通过扩展了的openflow协议进行传输、通信。

步骤s4、网络控制器接收封装数据,解封并进行相应处理,将处理后的数据向上层的网络应用程序推送。

为了实现网络控制器与其上层的网络应用程序之间的数据推送,首先需要建立网络控制器与上层的网络应用程序之间的连接。具体的建立连接过程包括:上层的网络应用程序使用注册信息,通过网络控制器的接口向网络控制器申请注册推送信息服务;而网络控制器接收到注册信息后,在本地注册相应的推送信息服务。在服务期间内,网络控制器一旦接收到新的相关数据(接口信息、接口地址信息、路由信息和采样数据等),立即处理并主动推送给上层的网络应用程序。

网络控制器接收到的封装数据包括接口信息、接口地址信息、路由信息和采样数据,对于不同的数据,网络控制器对应采用不同的处理方式。

针对封装数据中的采样数据,网络控制器将采样数据提取,将一个或多个采样数据封装为向上层的网络应用程序推送的采样报文数据。采样报文数据的格式也为tlv格式,具体的格式如下表2所示。

表2

表2中的tlv长度占据2字节,表示整个tlv的总长度,以字节为单位。是所有的子tlv长度的总和再加上tlv类型和tlv长度本身所占字节数之和。

而针对封装数据中的接口信息、接口地址信息和路由信息,网络控制器检测是否有更新,若有将更新的信息封装入路由接口表更新数据,更新完整路由接口表数据,向上层的网络应用程序推送路由接口表更新数据和完整路由接口表数据。上层的网络应用程序可基于路由接口表更新数据和完整路由接口表数据生成、更新过滤表,并根据过滤表验证采样数据中的域内源地址。

另外,网络控制器除了处理来自路由器一端的接口信息、接口地址信息、路由信息以及采样数据之外,网络控制器还需要处理来自上层的网络应用程序一侧的配置信息。配置信息处理则是是由网络控制器处理来自上层的网络应用程序的获取信息然后下发给路由器。具体来说,网络控制器会从来自上层的网络应用程序的获取信息中提取标志提取信息的类型的tlv,然后从中得到表示访问控制列表类型的tlv,其中数据中主要包含下发路由器的数据路径标识以及三元组:源前缀、目的前缀、入接口。网络控制器将这三元组分别映射成流表中的相应字段,建立相应的流表发送给数据路径标识对应路由器即可,其中流表可采用openflow协议中的标准格式。

步骤s5、上层的网络应用程序验证所接收到的数据中的域内源地址。

具体的,上层的网络应用程序验证的是来自网络控制器的采样报文数据中的域内源地址,是否与过滤表中的域内源地址对应。

上层的网络应用程序计算过滤表,包括初始阶段的完整计算过滤表以及运行时触发式的部分更新计算过滤表,计算过滤表算法是整个cpf的核心,计算出的过滤三元组可用于判断报文是否伪造源地址。

完全计算过滤表指cpf以网络控制器传输来的完整路由表接口表为输入,计算出完整过滤表三元组的过程。在上层的网络应用程序启动后,先发出路由器信息请求并获取域内全部路由器的路由表和接口表。当网络控制器发送完域内所有路由器的两个表后,上层的网络应用程序开始启动其内部的完全计算模块。此时假设cpf数据模块中有n个路由器对象,每个路由器对象都有完整的路由表、接口表。然后上层的网络应用程序根据接口表信息建立子网前缀表、建立邻居表、建立连接表,然后通过递归计算路径算法计算出过滤表。

部分更新计算过滤表指上层的网络应用程序在接收到网络控制器主动发送的网络更新信息时,实时地进行部分更新计算,从而得到最新过滤表的过程。由于网络控制器在新的openflow环境下提供了主动上报网络更新的功能,因此在上层的网络应用程序内增加一个部分更新计算模块来实时对网络更新进行部分计算。首先,在上层的网络应用程序启动后,向网络控制器发出路由器信息请求消息以注册网络更新推送后,一旦发生路由器变化或端口变化,路由器都会向网络控制器发送表示路由器一端发生变化的消息,然后网络控制器再通过接口协议告知上层的网络应用程序。上层的网络应用程序将解析出的路由转发表项、接口表项和接口地址表项等存储到cpf数据模块各路由器的相应数据结构内,并完成部分更新计算。

通过匹配从网络控制器获取到的采样报文数据组织成的三元组(源地址,目的地址,入接口)与计算得到的过滤表三元组(源地址前缀,目的地址前缀,入接口索引值),就能判断采样报文数据是否依照理论路径转发,即其源地址是否是伪造的,由此可以在转发路径上识别出伪造流量,管理员可依据实际情况对其采取相应措施。

另外,本发明实施例中构建的软件定义网络还提供了配置过滤表的功能,则是指当网络管理员从前台网页看到某伪造源地址的采样报文数据并决定下发针对访问控制列表以过滤掉伪造源地址报文时,上层的网络应用程序接收到命令后会将相关三元组信息组织成访问控制列表表项,上层的网络应用程序内的tlv封装模块构造获取消息,附带访问控制列表的数据,封装成tlv格式的获取信息,下发给网络控制器。

综上所述,本发明实施例提供了一种软件定义网络的域内源地址的验证方法,该验证方法中路由器采取包括域内源地址的待发送数据,并将待发送数据依据预设置的传输协议进行封装,得到封装数据,向网络控制器发送。网络控制器接收到封装数据之后进行相应处理,最终上层的网络应用程序得到来自路由器的数据,并可验证数据中的域内源地址的真伪。从而可将cpf移植入软件定义网络中,有效地解决了cpf兼容性差的技术问题,有效地运用了cpf可以克服目前广泛应用的预先过滤类的源地址验证方法中由于非对称性造成的假阳性问题。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1