本发明涉及通信
技术领域:
,尤其涉及一种Flowspec路由的下发方法和装置。
背景技术:
:作为一种攻击方式,DDoS(DistributedDenialofService,分布式拒绝服务)攻击是指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或者多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。如图1所示,为防止DDoS攻击的组网示意图,假设主机2向主机1发送报文,在与主机1连接的用户侧设备上,可以接收到该报文。若该报文被识别出是攻击报文,则生成一个针对该报文的Flowspec(数据流说明)路由。用户侧设备将该Flowspec路由发送给网络设备1,网络设备1在接收到该Flowspec路由之后,将该Flowspec路由下发到转发芯片上,这样,当转发芯片再次接收到匹配该Flowspec路由的报文时,则识别该报文为攻击报文,并丢弃该报文。此外,网络设备1将该Flowspec路由发送给网络设备2和网络设备3。网络设备2/网络设备3在接收到该Flowspec路由之后,将该Flowspec路由下发到本网络设备的转发芯片上,这样,当转发芯片再次接收到匹配该Flowspec路由的报文时,则识别该报文为攻击报文,并丢弃该报文。随着技术的发展,DDoS攻击的规模越来越大,生成的Flowspec路由数量也越来越多,因此需要在每个网络设备的转发芯片上下发大量Flowspec路由,消耗大量的资源。技术实现要素:本发明提供一种Flowspec路由的下发方法,应用于运营商网络中的网络设备上,所述方法包括以下步骤:获得用于对攻击报文进行过滤的Flowspec路由;若所述Flowspec路由中包含源IP地址,则判断发布所述源IP地址的路由的邻居网络设备,是否是所述运营商网络中的网络设备;如果是,则拒绝将所述Flowspec路由下发到本网络设备的转发芯片上。本发明提供一种Flowspec路由的下发装置,应用于运营商网络中的网络设备上,所述装置具体包括:获得模块,用于获得用于对攻击报文进行过滤的Flowspec路由;判断模块,用于当所述Flowspec路由中包含源IP地址时,则判断发布所述源IP地址的路由的邻居网络设备,是否是所述运营商网络中的网络设备;处理模块,用于当判断结果为是时,则拒绝将所述Flowspec路由下发到所述网络设备的转发芯片上。基于上述技术方案,本发明实施例中,网络设备在获得Flowspec路由后,不是直接将Flowspec路由下发到转发芯片上,而是当发布源IP地址的路由的邻居网络设备不是运营商网络中的网络设备时,才将Flowspec路由下发到转发芯片上,当发布源IP地址的路由的邻居网络设备是运营商网络中的网络设备时,拒绝将Flowspec路由下发到转发芯片上,从而减少在转发芯片上下发的Flowspec路由数量,节省Flowspec路由的表项资源。而且,网络设备可以更少的向转发芯片下发Flowspec路由,从而可以减少CPU(CentralProcessingUnit,中央处理器)的调度过程,有利于提高系统的性能。附图说明为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1是防止DDoS攻击的组网示意图;图2是本发明一种实施方式中的Flowspec路由的下发方法的流程图;图3是本发明另一种实施方式中的Flowspec路由的下发方法的流程图;图4是本发明一种实施方式中的网络设备的硬件结构图;图5是本发明一种实施方式中的Flowspec路由的下发装置的结构图。具体实施方式在本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。参见图2所示,为本发明实施例中提出的一种Flowspec路由的下发方法的流程图,该方法可以应用于运营商网络中的网络设备上,该方法包括以下步骤:步骤201,获得用于对攻击报文进行过滤的Flowspec路由。在一个例子中,该Flowspec路由(即流路由)中可以携带待过滤报文的一些特征,如五元组信息、控制字段等,并用于过滤匹配到该Flowspec路由的报文。其中,该五元组信息可以包括源IP地址、源端口标识、目的IP地址、目的端口标识、协议类型标识等,该控制字段可以包括报文长度、TCP(TransmissionControlProtocol,传输控制协议)标记位、分片标识、QoS(QualityofService,服务质量)信息等。在一个例子中,运营商网络中的各网络设备之间可以建立BGP(BorderGatewayProtocol,边界网关协议)邻居,且可以在各网络设备之间传输携带Flowspec路由的BGP消息。基于此,获得Flowspec路由的过程,可以包括但不限于如下方式:在接收到BGP消息后,从该BGP消息中解析出Flowspec路由,并将该BGP消息发送给BGP邻居。其中,BGP是一种既可以用于不同AS(AutonomousSystem,自治系统)之间,又可以用于同一AS内部的动态路由协议。作为Internet外部路由的协议标准,被ISP(InternetServiceProvider,互联网服务提供商)广泛应用。步骤202,若该Flowspec路由中包含源IP地址,则判断发布该源IP地址的路由的邻居网络设备,是否是运营商网络中的网络设备。如果是,则执行步骤203;如果否,则执行步骤204。针对步骤202,在一个例子中,判断发布该源IP地址的路由的邻居网络设备,是否是运营商网络中的网络设备的过程,具体可以包括但不限于如下方式:从本地路由表中获取到与该源IP地址匹配的路由表项,并从该路由表项中获取到邻居地址,并通过该邻居地址查询预先配置的地址表。其中,该地址表中可以记录了运营商网络中的所有网络设备的IP地址。基于此,若该邻居地址在该地址表中,则可以确定出该邻居网络设备是运营商网络中的网络设备,否则,可以确定出该邻居网络设备不是运营商网络中的网络设备。例如,运营商网络中包括网络设备1、网络设备2、网络设备3时,各网络设备上均配置有地址表,且地址表中记录了网络设备1的IP地址、网络设备2的IP地址、网络设备3的IP地址。基于此,在获取到邻居地址之后,可以判断该邻居地址是否是网络设备1的IP地址、网络设备2的IP地址、网络设备3的IP地址,并根据判断结果确定邻居网络设备是否是运营商网络中的网络设备。步骤203,拒绝将该Flowspec路由下发到本网络设备的转发芯片上。步骤204,将该Flowspec路由下发到本网络设备的转发芯片上,以使该转发芯片利用该Flowspec路由对报文进行过滤,即转发芯片可以过滤匹配到该Flowspec路由的报文。在一个例子中,若Flowspec路由中包含源IP地址,但是本地路由表中没有与该源IP地址匹配的路由表项,则可以直接将该Flowspec路由下发到本网络设备的转发芯片上,以使转发芯片利用该Flowspec路由对报文进行过滤。在一个例子中,若Flowspec路由中不包含源IP地址,则可以直接将该Flowspec路由下发到本网络设备的转发芯片上,以使转发芯片利用该Flowspec路由对报文进行过滤。基于上述技术方案,本发明实施例中,网络设备在获得Flowspec路由后,不是直接将Flowspec路由下发到转发芯片上,而是当发布源IP地址的路由的邻居网络设备不是运营商网络中的网络设备时,才将Flowspec路由下发到转发芯片上,当发布源IP地址的路由的邻居网络设备是运营商网络中的网络设备时,拒绝将Flowspec路由下发到转发芯片上,从而减少在转发芯片上下发的Flowspec路由数量,节省Flowspec路由的表项资源。而且网络设备可以更少的向转发芯片下发Flowspec路由,从而可以减少CPU的调度过程,有利于提高系统的性能,对于DDoS攻击能够起到很好的防御效果。在另一个例子中,参见图3所示,该Flowspec路由的下发方法包括以下步骤:步骤301,在接收到BGP消息后,从该BGP消息中解析出Flowspec路由。步骤302,判断该Flowspec路由中是否包含源IP地址;如果是,则执行步骤303;如果否,则执行步骤307。Flowspec路由中可以包括但不限于以下内容之一或者任意组合:源IP地址、源端口标识、目的IP地址、目的端口标识、协议类型标识、报文长度、TCP标记位、分片标识、QoS信息等。因此,Flowspec路由中可能包含源IP地址,执行步骤303;Flowspec路由中也可能不包含源IP地址,执行步骤307。步骤303,判断本地路由表中是否存在与该源IP地址匹配的路由表项;如果是,则执行步骤304;如果否,则执行步骤307。其中,网络设备可以按照传统方式维护路由表,该路由表内包含多个路由表项,每个路由表项中可以包括IP地址、邻居地址、出接口等信息。若该源IP地址匹配到某个路由表项中的IP地址,则说明路由表中存在与该源IP地址匹配的路由表项;若该源IP地址未匹配到所有路由表项,则说明路由表中不存在与该源IP地址匹配的路由表项。步骤304,从该路由表项中选取该源IP地址对应的邻居地址。步骤305,判断该邻居地址是否是运营商网络中的网络设备的IP地址。如果是,则执行步骤306;如果否,则执行步骤307。其中,如果邻居地址是运营商网络中的网络设备的IP地址,则说明具有该邻居地址的邻居网络设备(即发布该源IP地址的路由的邻居网络设备)是运营商网络中的网络设备。如果邻居地址不是运营商网络中的网络设备的IP地址,则说明具有该邻居地址的邻居网络设备不是运营商网络中的网络设备。步骤306,拒绝将该Flowspec路由下发到本网络设备的转发芯片上。步骤307,将该Flowspec路由下发到本网络设备的转发芯片上,以使该转发芯片利用该Flowspec路由对报文进行过滤,即转发芯片可以过滤匹配到该Flowspec路由的报文。以下结合图1所示的应用场景,对本发明实施例进行详细说明。如图1所示,网络设备1、网络设备2、网络设备3是运营商网络中的网络设备,用户侧设备1、用户侧设备2、用户侧设备3是运营商网络外的网络设备,各网络设备均可以为路由器或者交换机等设备。此外,用户侧设备1与网络设备1建立BGP邻居,网络设备1与网络设备2建立BGP邻居,网络设备1与网络设备3建立BGP邻居,网络设备2与网络设备3建立BGP邻居,网络设备2与用户侧设备2建立BGP邻居,网络设备3与用户侧设备3建立BGP邻居。在上述应用场景下,针对主机2(2.2.2.2/32)发送给主机1(1.1.1.1/32)的报文,则相应的处理流程可以包括:主机2(2.2.2.2/32)向主机1(1.1.1.1/32)发送报文。其中,该报文的源IP地址为2.2.2.2,目的IP地址为1.1.1.1。用户侧设备2在接收到该报文后,可以利用该报文的目的IP地址转发该报文。网络设备2在接收到该报文后,可以查询本地的所有Flowspec路由,由于没有与该报文匹配的Flowspec路由,因此,将该报文转发给网络设备1。其中,网络设备2查询Flowspec路由和转发报文的过程,可以是网络设备2上的转发芯片执行的。网络设备1在接收到该报文后,查询本地的所有Flowspec路由,由于没有与该报文匹配的Flowspec路由,因此,可以利用该报文的目的IP地址转发该报文。其中,网络设备1查询Flowspec路由和转发报文的过程,是网络设备1上的转发芯片执行的。用户侧设备1在接收到该报文之后,识别该报文是攻击报文。在一个例子中,可以在用户侧设备1上预先配置识别策略,该识别策略用于识别报文是否为攻击报文,该识别策略可以根据实际需要进行配置。例如,若主机1提供HTTP(HyperTextTransferProtocol,超文本传输协议)服务,则识别策略可以为判断报文是否为HTTP报文。如果报文是HTTP报文,则识别出报文不是攻击报文,将该报文转发给主机1。如果报文不是HTTP报文,则识别出报文是攻击报文,丢弃该报文,并执行后续步骤。在实际应用中,识别策略还可以为其它类型的识别策略,本发明实施例中对此识别策略的内容不做限制。用户侧设备1生成针对该报文的Flowspec路由,该Flowspec路由可以包括但不限于以下内容之一或任意组合:源IP地址、源端口标识、目的IP地址、目的端口标识、协议类型标识、报文长度、TCP标记位、分片标识、QoS信息。为了方便描述,以Flowspec路由中包括源IP地址2.2.2.2,目的IP地址1.1.1.1为例。用户侧设备1将携带该Flowspec路由的BGP消息发送给网络设备1。网络设备1将携带该Flowspec路由的BGP消息发送给网络设备2和网络设备3,并将该Flowspec路由下发到转发芯片或者拒绝将该Flowspec路由下发到转发芯片。此外,网络设备2在接收到该BGP消息之后,可以将该Flowspec路由下发到转发芯片或者拒绝将该Flowspec路由下发到转发芯片。网络设备3在接收到该BGP消息之后,可以将该Flowspec路由下发到转发芯片或者拒绝将该Flowspec路由下发到转发芯片。其中,网络设备1、网络设备2和网络设备3均通过执行步骤301-步骤307,确定将该Flowspec路由下发到转发芯片或者拒绝将该Flowspec路由下发到转发芯片。针对网络设备1,步骤301中,网络设备1在接收到BGP消息后,从该BGP消息中解析出Flowspec路由,该Flowspec路由中包括源IP地址2.2.2.2和目的IP地址1.1.1.1。步骤302中,确定Flowspec路由中包含源IP地址。步骤303中,假设路由表如表1所示,则路由表中存在与该源IP地址2.2.2.2匹配的路由表项,由于该路由表项是从网络设备2学习的,因此邻居地址为网络设备2的IP地址2。步骤304中,从该路由表项中选取该源IP地址2.2.2.2对应的邻居地址(IP地址2)。步骤305中,由于IP地址2是网络设备2的IP地址,因此,是运营商网络中的网络设备的IP地址。步骤306中,拒绝将该Flowspec路由下发到本网络设备1的转发芯片上。表1IP地址邻居地址出接口2.2.2.2IP地址2接口A针对网络设备3,步骤301中,网络设备3在接收到BGP消息后,从该BGP消息中解析出Flowspec路由,该Flowspec路由中包括源IP地址2.2.2.2和目的IP地址1.1.1.1。步骤302中,确定Flowspec路由中包含源IP地址。步骤303中,假设路由表如表2所示,则路由表中存在与该源IP地址2.2.2.2匹配的路由表项,由于该路由表项是从网络设备2学习的,因此邻居地址为网络设备2的IP地址2。步骤304中,从该路由表项中选取该源IP地址2.2.2.2对应的邻居地址(IP地址2)。步骤305中,由于IP地址2是网络设备2的IP地址,因此,是运营商网络中的网络设备的IP地址。步骤306中,拒绝将该Flowspec路由下发到本网络设备3的转发芯片上。表2IP地址邻居地址出接口2.2.2.2IP地址2接口B针对网络设备2,步骤301中,网络设备2在接收到BGP消息后,从该BGP消息中解析出Flowspec路由,该Flowspec路由中包括源IP地址2.2.2.2和目的IP地址1.1.1.1。步骤302中,确定Flowspec路由中包含源IP地址。步骤303中,假设路由表如表3所示,则路由表中存在与源IP地址2.2.2.2匹配的路由表项,由于该路由表项是从用户侧设备2学习的,因此邻居地址为用户侧设备2的IP地址5。步骤304中,从该路由表项中选取源IP地址2.2.2.2对应的邻居地址(IP地址5)。步骤305中,由于IP地址5是用户侧设备2的IP地址,因此不是运营商网络中的网络设备的IP地址。步骤307中,将该Flowspec路由下发到本网络设备的转发芯片上。表3IP地址邻居地址出接口2.2.2.2IP地址5接口C基于上述流程,当主机2(2.2.2.2/32)再次向主机1(1.1.1.1/32)发送报文时,用户侧设备2在接收到该报文之后,将该报文转发给网络设备2。网络设备2在接收到该报文之后,查询本地的所有Flowspec路由,由于当前有与该报文匹配的Flowspec路由,因此,可以直接丢弃该报文,而不再将该报文转发给网络设备1。其中,查询Flowspec路由以及丢弃报文的过程,是网络设备2上的转发芯片执行的。通过上述流程可以看出,只要在网络设备2的转发芯片上下发包括源IP地址2.2.2.2和目的IP地址1.1.1.1的Flowspec路由,就可以在网络设备2上过滤主机2向主机1发送的攻击报文,而不用在网络设备1的转发芯片上下发包括源IP地址2.2.2.2和目的IP地址1.1.1.1的Flowspec路由,也不用在网络设备3的转发芯片上下发包括源IP地址2.2.2.2和目的IP地址1.1.1.1的Flowspec路由,从而可以减少在转发芯片上下发的Flowspec路由数量,并可以节省Flowspec路由的表项资源。而且,网络设备的CPU可以更少的向转发芯片下发Flowspec路由,从而可以减少CPU的调度过程,并有利于提高系统的性能,而且对于DDoS攻击能够起到很好的防御效果。在一个例子中,网络设备2在接收到携带Flowspec路由的BGP消息之后,还可以将该BGP消息发送给用户侧设备2,但是由于用户侧设备2不是运营商网络内的网络设备,因此用户侧设备2是否会基于该Flowspec路由过滤报文,运营商无法进行控制,因此,需要在网络设备2的转发芯片上下发包括源IP地址2.2.2.2和目的IP地址1.1.1.1的Flowspec路由。此外,网络设备3在接收到携带Flowspec路由的BGP消息之后,还可以将该BGP消息发送给用户侧设备3,对此过程不再赘述。在一个例子中,上述的运营商网络可以包括但不限于MPLS(MultiProtocolLabelSwitching,多协议标签交换)网络,网络设备1、网络设备2和网络设备3可以为MPLS网络内的PE(ProviderEdge,网络侧边缘)设备,在网络设备1与网络设备2之间还可以包括一个或者多个P(Provider,核心)设备,在网络设备1与网络设备3之间还可以包括一个或者多个P设备,在网络设备2与网络设备3之间还可以包括一个或者多个P设备。用户侧设备1、用户侧设备2和用户侧设备3均可以为CE(CustomerEdge,客户侧边缘)设备。基于与上述方法同样的发明构思,本发明实施例还提供一种Flowspec路由的下发装置,应用于运营商网络中的网络设备上。该Flowspec路由的下发装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的网络设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图4所示,为本发明提出Flowspec路由的下发装置所在的网络设备的一种硬件结构图,除了图4所示的处理器、非易失性存储器外,网络设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该网络设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。如图5所示,为本发明提出的Flowspec路由的下发装置的结构图,该装置包括:获得模块11,用于获得用于对攻击报文进行过滤的Flowspec路由;判断模块12,用于当所述Flowspec路由中包含源IP地址时,则判断发布所述源IP地址的路由的邻居网络设备,是否是所述运营商网络中的网络设备;处理模块13,用于当判断结果为是时,则拒绝将所述Flowspec路由下发到所述网络设备的转发芯片上。所述判断模块12,具体用于在判断发布所述源IP地址的路由的邻居网络设备,是否是所述运营商网络中的网络设备的过程中,从本地路由表中获取到与所述源IP地址匹配的路由表项,并从所述路由表项中获取到邻居地址,并通过所述邻居地址查询预先配置的地址表;其中,所述地址表中记录了所述运营商网络中的所有网络设备的IP地址;若所述邻居地址在所述地址表中,则确定所述邻居网络设备是所述运营商网络中的网络设备,若所述邻居地址不在所述地址表中,则确定所述邻居网络设备不是所述运营商网络中的网络设备。在一个例子中,所述处理模块13,进一步用于当本地路由表中没有与所述源IP地址匹配的路由表项时,则将所述Flowspec路由下发到所述网络设备的转发芯片上,以使所述转发芯片利用所述Flowspec路由对报文进行过滤。在一个例子中,所述处理模块13,进一步用于当所述Flowspec路由中不包含源IP地址时,则将所述Flowspec路由下发到所述网络设备的转发芯片上,以使所述转发芯片利用所述Flowspec路由对报文进行过滤。在一个例子中,所述处理模块13,进一步用于当邻居网络设备不是所述运营商网络中的网络设备时,则将所述Flowspec路由下发到所述网络设备的转发芯片上,以使所述转发芯片利用所述Flowspec路由对报文进行过滤。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。当前第1页1 2 3