基于SDN的报文转发方法和装置与流程

文档序号:19427755发布日期:2019-12-17 15:51阅读:273来源:国知局
基于SDN的报文转发方法和装置与流程
本发明属于报文转发
技术领域
,具体涉及一种的报文转发的方法和装置。
背景技术
:在sdn(softwaredefinednetwork,软件定义网络)网络环境中,sdn交换机在接收到单播报文后,会在其流表中查询与该单播报文对应的端口,若查询到可以匹配的流表项,则直接按照查询出的流表项对报文进行转发。若没有可以匹配的流表项,则该报文就成为未知单播报文,sdn交换机会将该报文上传至sdn控制器,通常sdn控制器会通过向sdn交换机发送相关流表项,使sdn交换机将该单播报文进行泛洪转发。在sdn环境下,对单播报文进行泛洪转发会使sdn交换机的各端口产生不必要的流量,导致网络性能不佳甚至完全丧失网络服务,同时,攻击者可以利用交换机的泛洪转发机制发起网络攻击,造成网络服务丧失。技术实现要素:本发明至少部分解决现有的报文转发方法对未知单播报文进行泛洪转发影响网络性能的问题,提供一种对未知单播报文定向转发的报文转发方法。本发明的一个方面提供一种报文转发方法,所述方法包括:接收源sdn交换机发送的第一报文消息,所述第一报文消息包括目的mac地址;根据预设的转发表,查询与所述目的mac地址对应的源sdn交换机的端口为目标端口,所述预设的转发表包括mac地址与sdn交换机的端口的对应关系;若查询到所述目标端口,则向所述源sdn交换机发送第二报文消息,所述第二报文消息包括所述目标端口。可选的,所述第一报文消息还包括源mac地址、源端口信息;所述接收源sdn交换机发送的第一报文消息之后还包括:根据所述源端口信息、源mac地址更新所述预设的转发表。可选的,所述接收源sdn交换机发送的第一报文消息之前还包括:接收来自每个sdn交换机的链路信息,所述每个sdn交换机的链路信息包括该sdn交换机与相邻sdn交换机连接所使用的端口;将对应每个sdn交换的链路信息写入链路信息表。进一步可选的,所述转发表包括mac地址、sdn交换机的端口以及标志位的对应关系,所述标志位表示能否在所述链路信息表中查询到其所对应的sdn交换机的端口。进一步可选的,所述方法还包括:将转发表中的低可信表项删除,并写入超时转发表,所述低可信表项包括:写入转发表后经历的累计时间超过预定时间的表项,和/或,错误的表项;所述根据预设的转发表,查询与所述目的mac地址对应的源sdn交换机的端口之后,还包括:若未查询到对应的源sdn交换机的端口,则根据所述超时转发表,查询标志位为预先设定值的所有表项中与所述目的mac地址对应的目标sdn交换机的端口,作为超时端口;控制请求报文从所述超时端口发出,所述请求报文包括接收到请求报文后返回响应报文的控制命令;若接收到相应的响应报文,则将所述查询到的超时转发表中的表项同步至所述转发表。本发明的另一个方面提供一种报文转发装置,所述装置包括:接收单元,用于接收源sdn交换机发送的第一报文消息,所述第一报文消息包括目的mac地址;查询单元,用于根据预设的转发表,查询与所述目的mac地址对应的源sdn交换机的端口为目标端口,所述预设的转发表包括mac地址与sdn交换机的端口的对应关系;发送单元,用于在查询到所述目标端口时,向所述源sdn交换机发送第二报文消息,所述第二报文消息包括所述目标端口。可选的,所述第一报文消息还包括源mac地址、源端口信息;所述查询单元还用于:根据所述源端口信息、源mac地址更新所述预设的转发表。可选的,所述装置还包括:链路单元,用于在接收单元接收源sdn交换机发送的第一报文消息之前,接收来自每个sdn交换机的链路信息,所述每个sdn交换机的链路信息包括该sdn交换机通过端口与相邻sdn交换机连接的信息;将对应每个sdn交换的链路信息写入链路信息表。进一步可选的,所述转发表包括mac地址、sdn交换机的端口以及标志位的对应关系,所述标志位表示能否在所述链路信息表中查询到其所对应的sdn交换机的端口。进一步可选的,所述查询单元还用于:将转发表中的低可信表项删除,并写入超时转发表,所述低可信表项包括:写入转发表后经历的累计时间超过预定时间的表项,和/或,错误的表项;所述查询单元还用于:在未查询到对应的源sdn交换机的端口时,则根据所述超时转发表,查询标志位为预先设定值的所有表项中与所述目的mac地址对应的目标sdn交换机的端口,作为超时端口;控制请求报文从所述超时端口发出,所述请求报文包括接收到请求报文后返回响应报文的控制命令;若接收到相应的响应报文,则将所述查询到的超时转发表中的表项同步至所述转发表。本发明的报文转发方法,通过预设的转发表,根据报文的目的mac地址完成了正常的数据报文的转发,同时实现对未知单播报文的定向转发,避免了未知单播报文泛洪转发对网络性能的影响。附图说明图1为本发明实施例的一种报文转发方法的流程示意图;图2为本发明实施例的另一种报文转发方法的流程示意图;图3为本发明实施例的一种报文转发装置的组成框图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。可以理解的是,此处描述的具体实施例和附图仅仅用于解释本发明,而非对本发明的限定。可以理解的是,在不冲突的情况下,本发明中的各实施例及实施例中的各特征可相互组合。可以理解的是,为便于描述,本发明的附图中仅示出了与本发明相关的部分,而与本发明无关的部分未在附图中示出。可以理解的是,本发明的实施例中所涉及的每个单元、模块可仅对应一个实体结构,也可由多个实体结构组成,或者,多个单元、模块也可集成为一个实体结构。可以理解的是,在不冲突的情况下,本发明的流程图和框图中所标注的功能、步骤可按照不同于附图中所标注的顺序发生。可以理解的是,本发明的流程图和框图中,示出了按照本发明各实施例的系统、装置、设备、方法的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可代表一个单元、模块、程序段、代码,其包含用于实现规定的功能的可执行指令。而且,框图和流程图中的每个方框或方框的组合,可用实现规定的功能的基于硬件的系统实现,也可用硬件与计算机指令的组合来实现。可以理解的是,本发明实施例中所涉及的单元、模块可通过软件的方式实现,也可通过硬件的方式来实现,例如单元、模块可位于处理器中。本发明实施例基于sdn网络,sdn网络包括sdn控制器和多个sdn交换机,多个主机。不同主机之间通过报文转发进行发送和接收信息,报文的转发需要通过sdn交换机和sdn控制器。当某一个主机需要与另一个主机(即目标主机)发送信息时,该主机首先将信息变成报文,并将报文转发至自己相连的sdn交换机,每一个sdn交换机上都有自己的流表,记录不同的报文应该从自己的哪个端口转发。该sdn交换机收到报文后,会首先在自己的流表中查询与该报文对应的端口:若查询到对应端口,则将报文直接从该端口转发。若通过该端口与该sdn交换机相连的是目标主机,则报文被转发至目标主机,完成报文转发;若通过该端口与该sdn交换机相连的是其他的sdn交换机,则报文被转发至其他sdn交换机,则继续进行在流表中查询与该报文对应的端口的步骤,直至该报文被转发至目标主机。若未查询到对应端口,则会将报文上传至sdn控制器进行处理。sdn控制器则通过可以通过下发流表的形式告诉sdn交换机如何处理报文,对于一些特殊的报文,sdn控制器也可以直接将该报文发送至目标的sdn交换机。实施例1:如图1所示,本实施例提供一种报文转发方法,该方法包括以下步骤:s101、接收源sdn交换机发送的第一报文消息,第一报文消息包括目的mac地址。源sdn交换机接收第一报文之后,会首先根据第一报文中的目的mac地址在自己的流表中查询是否有对应的目标端口信息,若查询不到,则源sdn交换机将第一报文封装成第一报文消息上传至sdn控制器。sdn控制器接收源sdn交换机发送的第一报文消息,第一报文消息包括了源sdn交换机接收的第一报文,第一报文可以是直接来自主机,也可以直接来自除源sdn交换机外的其他sdn交换机(当然最初必然是主机)。第一报文消息中也包括了目的mac地址,目的mac地址是目标主机的mac地址,可以被封装在第一报文中,第一报文是一台主机发送给其他某个或某些主机的报文,这个或这些第一报文最终希望到达的主机就是目标主机。其中,源sdn交换机是指当前向sdn控制器发送第一报文消息的sdn交换机。源sdn交换机并不是固定的sdn交换机,任意一个向sdn控制器发送报文消息的sdn交换机都可以成为源sdn交换机。s102、根据预设的转发表,查询与目的mac地址对应的源sdn交换机的端口为目标端口,预设的转发表包括mac地址与sdn交换机的端口的对应关系。sdn控制器有预设的转发表,预设的转发表包括mac地址与sdn交换机的端口的对应关系,则sdn控制器在接收到第一报文消息之后,对第一报文消息进行处理得到了目的mac地址,根据目的mac地址在预设的转发表中进行查询,得到与目的mac地址对应的源sdn交换机的端口,这个端口就是目标端口。s103、若查询到目标端口,则向源sdn交换机发送第二报文消息,第二报文消息包括目标端口。若sdn控制器在预设的转发表中查询到了目标端口,则sdn控制器向源sdn交换机,发送通过第一报文消息得到的第二报文消息,第二报文消息包括了查询得到的目标端口。第二报文消息的作用是控制源sdn交换机把接收到的第一报文从目标端口转发出去,因此目标端口只能是源sdn交换机的某一个端口。本发明的报文转发方法,通过预设的转发表,根据报文的目的mac地址完成了正常的数据报文的转发,同时实现对未知单播报文的定向转发,避免了未知单播报文泛洪转发对网络性能的影响。实施例2:如图2所示,本实施例提供另一种报文转发方法,可选的,在进行报文转发之前,还包括:s200、建立链路信息表。sdn控制器使用协议,如lldp(linklayerdiscoveryprotocol,链路层发现协议)进行链路发现获取sdn交换机之间完整的链路信息,并将其写入链路信息表。每个sdn交换机的链路信息包括该sdn交换机通过端口与相邻sdn交换机连接的信息。通过建立链路信息表,可以清楚的知道该网络环境下不同sdn交换机之间的连接情况,同时可以将sdn交换机与其他sdn交换机连接使用的端口与sdn交换机与主机连接使用的端口区分开。建立链路信息表的具体包括以下步骤:s2001、接收来自每个sdn交换机的链路信息,每个sdn交换机的链路信息包括该sdn交换机通过端口与相邻sdn交换机连接的信息。sdn控制器通过向sdn交换机发送lldp指示并接收来自sdn交换机的链路信息获取该网络环境下sdn交换机之间完整的链路信息,每个sdn交换机的链路信息包括该sdn交换机通过端口与相邻sdn交换机连接的信息,即链路信息不仅包括该sdn交换机可以与哪些其他的sdn交换机相连接,也包括了该sdn交换机使用哪个端口与其他的sdn交换机连接。s2002、将对应每个sdn交换的链路信息写入链路信息表。sdn控制器在获取每个sdn交换机的链路信息之后,将获取的每个sdn交换机的链路信息写入链路信息表。可选的,链路信息表的具体结构如下所示:端口交换机id<端口><交换机id>sdn控制器针对每一个sdn交换机都创建了该sdn交换机的链路信息表,在每个sdn交换机的链路信息表中写入了与该sdn交换机相连的sdn交换机的id以及相连所使用的端口。该网络环境下针对所有sdn交换机的链路信息表在一起就组成了完整的链路信息表。并不是每一次报文转发都需要重新建立链路信息表,因为sdn交换机之间的连接关系并不会实时发生变化,因此隔一段时间对链路信息表进行更新或重新建立即可。建立完链路信息表之后,就可以进行正常的报文转发,其具体包括:s201、接收源sdn交换机发送的第一报文消息,第一报文消息包括目的mac地址。源sdn交换机接收第一报文之后,会首先根据第一报文中的目的mac地址在自己的流表中查询是否有对应的目标端口信息,若查询不到,则源sdn交换机将第一报文封装成第一报文消息上传至sdn控制器。sdn控制器接收源sdn交换机发送的第一报文消息,第一报文消息包括了源sdn交换机接收的第一报文,第一报文可以直接来自主机,即源sdn交换机是直接与发送第一报文的主机相连的sdn交换机,也可以直接来自除源sdn交换机以外的其他sdn交换机,即源sdn交换机不是直接与发送第一报文的主机相连的sdn交换机。第一报文消息包括了目的mac地址,目的mac地址是目标主机的mac地址,可以被封装在第一报文中,第一报文是一台主机发送给其他某个或某些主机的报文,这个或这些第一报文最终希望到达的主机就是目标主机。s202、根据预设的转发表,查询与目的mac地址对应的源sdn交换机的端口为目标端口,预设的转发表包括mac地址与sdn交换机的端口的对应关系。sdn控制器有预设的转发表,预设的转发表包括mac地址与sdn交换机的端口的对应关系,则sdn控制器在接收到第一报文消息之后,对第一报文消息进行处理得到了目的mac地址,根据目的mac地址在预设的转发表中进行查询,得到与目的mac地址对应的源sdn交换机的端口,这个端口就是目标端口。可选的,转发表包括mac地址、sdn交换机的端口以及标志位的对应关系,标志位表示能否在链路信息表中查询到其所对应的sdn交换机的端口。转发表的具体结构如下所示:mac地址端口标志位<mac地址><端口><标志位>sdn控制器针对每一个sdn交换机都创建了转发表,即每一个sdn交换机都有对应的转发表,在该转发表中记录了如果要将报文转发至某个mac地址,则要将该报文从该sdn交换机的哪个端口转发至下一个目标。转发表中还记录了对应的标志位,标志位表示的是能否在该sdn的交换机的链路信息表中查询到对应的端口,即判断报文从该端口转发出去之后是进入sdn交换机还是进入主机。如果以对应的端口在该sdn交换机的链路信息表中进行查询,若查询到对应的sdn交换机id,即表示若报文通过该端口转发会到达查询到sdn交换机id对应的交换机,则可以用“1”来表示这种情况。相应的,若未查询到,则代表报文通过该端口转发可到达主机,则可以用“0”来表示这种情况。该网络环境下针对所有sdn交换机的转发表在一起组成了完整的转发表。可选的,第一报文消息还包括源mac地址、源端口信息。第一报文消息中不仅包括目的mac地址,还包括了源mac地址以及源端口信息。源mac地址是报文来源主机的mac地址,在一次报文转发过程中,源mac地址与目的mac地址一样可以被封装在原始的报文中(对应本实施例就是第一报文),并不会因为报文在转发过程经过的sdn交换机而发生改变。而源端口信息则是对应源sdn交换机,即第一报文消息达到源sdn交换机所使用的端口。可选的,根据源端口信息、源mac地址更新预设的转发表。在sdn控制器接收源sdn交换机发送的第一报文消息之后,得到源mac地址、源端口信息,根据源mac地址、源端口以及源sdn交换机更新转发表,即将mac地址以及源端口信息写入与源sdn交换机对应的转发表。同时将源端口信息与源sdn交换机对应的链路信息表中的端口进行匹配,若匹配到将该项的标志位置为“1”,否则置为“0”。可选的,将转发表中的低可信表项删除,并写入超时转发表,所述低可信表项包括:写入转发表后经历的累计时间超过预定时间的表项,和/或,错误的表项。转发表并不是一成不变的,低可信表项将被从转发表中删除并写入超时转发表。低可信表项包括写入转发表后经历的累计时间超过预定时间的表项和/或错误的表项,错误的表项可以是因为网络环境的变化,网络中sdn交换机之间或者sdn交换机与主机之间的连接关系发生了变化,在按照原来的表项向目标主机发送报文之后并不能得到目标主机发送的反馈报文,则认为该表项是错误。但是这种错误可能是暂时的,如目标主机发生故障。因此将此类表项也写入超时转发表。因为超时转发表中的表项是从转发表中得到,所以超时转发表和转发表拥有相同的结构,具体如下所示:mac地址端口标志位<mac地址><端口><标志位>即sdn控制器针对每一个sdn交换机都创建了超时转发表,每一个sdn交换机都有对应的超时转发表,sdn交换机转发表中的表项需要删除时,则写入对应的sdn交换机的超时转发表。该网络环境下针对所有sdn交换机的超时转发表在一起组成了完整的超时转发表。在转发表中的查询结果可能为查询到,也可能为未查询到。则对应不同的查询结果有不同的处理方式,其具体为:s203、若查询到目标端口,则向源sdn交换机发送第二报文消息,第二报文消息包括目标端口。若在转发表中查询到目标端口,则sdn控制器向源sdn交换机发送由第一报文消息和查询到的目标端口得到的第二报文消息,第二报文消息用于控制源交换机将接收到的报文,即第一报文经过源sdn交换机的封装从查询到的目标端口转发。如sdn控制器向源sdn交换机发送流表,流表中包含了查询到的目标端口,则sdn交换机在接收到流表之后将第一报文封装并从目标端口转发。第一报文经过源sdn交换机的转发可能达到目标主机,也可能到达其他的sdn交换机,若达到目标主机,则报文转发流程结束。若到达其他的sdn交换机,则该sdn交换机成为源交换机,继续进行报文转发步骤,直到第一报文达到目标主机。若在转发表中未查询到目标端口,则具体的处理步骤包括:s2041、若未查询到对应的源sdn交换机的端口,则根据超时转发表,查询标志位为预先设定值的所有表项中与目的mac地址对应的目标sdn交换机的端口,作为超时端口。sdn控制器根据目的mac地址、预先设定的标志位在超时转发表中进行查询,预先设定的标志位为“0”,即对应端口是sdn交换机与主机相连的端口,即得到直接与目标主机相连的sdn交换机,该sdn交换机为目标sdn交换机,目标sdn交换机向目标主机发送报文使用的端口为超时端口。在第一报文从发送第一报文的主机到目标主机的过程中,源sdn交换机会随着第一报文在sdn交换机之间转发而发生改变,当前接收报文的sdn交换机即为源sdn交换机,但目标sdn交换机是确定的,是与目标主机连接的sdn交换机。但在不同报文的转发过程中,目标sdn交换机也是不确定的,任何一个sdn交换机都可以成为目标sdn交换机。s2042、控制请求报文从超时端口发出,请求报文包括接收到请求报文后返回响应报文的控制命令。sdn控制器向目标sdn交换机发送请求报文,并控制目标sdn交换机在接收到请求报文之后将该请求报文从查询到的超时端口发出,因为超时端口为目标sdn交换机与目标主机相连的端口,所以请求报文最终会到达目标主机。请求报文包括接收到请求报文之后返回响应报文的控制命令,因此,目标主机在接收到请求报文之后会返回响应报文。sdn控制器向目标sdn交换机下发流表,该流表为源主机的mac地址,并包括接收到包含该mac地址的报文则将报文上传至sdn交换机的控制命令。则目标主机发送响应报文到目标sdn交换机,目标sdn交换机在收到响应报文后,发现其目的mac地址为源主机的mac地址,则将响应报文上传至sdn控制器。s2043、若接收到相应的响应报文,则将查询到的超时转发表中的表项同步至转发表。sdn控制器在接收到相应的响应报文之后,则认为超时转发表中查询到的表项仍然有效,则将查询到的超时转发表中的表项同步至对应的转发表中。经过同步后,转发表中的表项得到更新,则根据更新后的转发表返回步骤s201继续进行报文转发。若未接收到响应报文和/或在超时转发表中未查询到与目的mac地址、预先设定的标志位对应的目标sdn交换机的端口,则进行泛洪转发。本发明的报文转发方法,通过预设的转发表和超时转发表,根据报文的目的mac地址完成了正常的数据报文的转发,同时实现对未知单播报文的定向转发,避免了未知单播报文泛洪转发对网络性能的影响。实施例3:如图3所示,本实施例提供一种报文转发装置,其具体包括以下单元:接收单元,用于接收源sdn交换机发送的第一报文消息,第一报文消息包括目的mac地址;查询单元,用于根据预设的转发表,查询与目的mac地址对应的源sdn交换机的端口为目标端口,预设的转发表包括mac地址与sdn交换机的端口的对应关系;发送单元,用于在查询到目标端口时,向源sdn交换机发送第二报文消息,第二报文消息包括目标端口。可选的,第一报文消息还包括源mac地址、源端口信息;查询单元还用于:根据源端口信息、源mac地址更新预设的转发表。可选的,装置还包括:链路单元,用于在接收单元接收源sdn交换机发送的第一报文消息之前,接收来自每个sdn交换机的链路信息,每个sdn交换机的链路信息包括该sdn交换机通过端口与相邻sdn交换机连接的信息;将对应每个sdn交换的链路信息写入链路信息表。进一步可选的,转发表包括mac地址、sdn交换机的端口以及标志位的对应关系,标志位表示能否在链路信息表中查询到其所对应的sdn交换机的端口。进一步可选的,查询单元还用于:将转发表中的低可信表项删除,并写入超时转发表,低可信表项包括:写入转发表后经历的累计时间超过预定时间的表项,和/或,错误的表项;查询单元还用于:在未查询到对应的源sdn交换机的端口时,则根据超时转发表,查询标志位为预先设定值的所有表项中与目的mac地址对应的目标sdn交换机的端口,作为超时端口;控制请求报文从超时端口发出,请求报文包括接收到请求报文后返回响应报文的控制命令;若接收到相应的响应报文,则将查询到的超时转发表中的表项同步至转发表。本发明的报文转发装置,通过预设的转发表,根据报文的目的mac地址完成了正常的数据报文的转发,同时实现对未知单播报文的定向转发,避免了未知单播报文泛洪转发对网络性能的影响。可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1