处理数据包的方法、交换机和控制器与流程

文档序号:11959922阅读:255来源:国知局
本发明实施例涉及通信
技术领域
:,并且更具体地,涉及处理数据包的方法、交换机和控制器。
背景技术
::软件定义网络(SoftwareDefinedNetwork,SDN)和开放流(OpenFlow)允许对一个网络进行编程。此时,这个网络就是一台计算机,将物理网络的抽象层直接提供给控制元件,允许通过软件设置和操作网络。OpenFlow技术最早由斯坦福大学提出,旨在基于现有传输控制协议/因特网互连协议(TransmissionControlProtocol/InternetProtocol,TCP/IP)技术条件,以创新的网络互联理念解决当前网络面对新业务产生的种种瓶颈。OpenFlow技术的核心思想很简单,即将原本完全由交换机/路由器控制的数据包转发过程,转化为由OpenFlow交换机(OpenFlowSwitch,OFS)和控制器分别完成的独立过程。现有的OpenFlow交换机一般采用缓存机制,新数据包到交换机以后先缓存起来并发送PacketIn消息,等待控制器下发PacketOut/FlowMod消息并明确转发路径后将新数据包转发出去。但是,当端口速率较大时,缓存可能无法应对海量的数据。这样,当缓存不够时,可能造成数据包丢失。技术实现要素:本发明实施例提供一种处理数据包的方法、交换机和控制器,能够避免数据包的丢失。第一方面,提供了一种处理数据包的方法,包括:交换机获取待转发的数据包;根据该待转发的数据包的输入端口和预存的该交换机的输入端口与输出端口的对应关系,生成用于指示临时转发规则的组播流表项,该组播流表项用于指示该待转发的数据包的输入端口对应的输出端口;根据该组播流表项将该待转发的数据包进行转发。结合第一方面,在第一方面的第一种可能的实现方式中,在该根据该组播流表项将该待转发的数据包进行转发之后,还包括:从控制器接收用于指示正式转发规则的正式流表项,该正式流表项用于指示该待转发的数据包的输入端口对应的后续用于数据转发的输出端口;删除该组播流表项。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,还包括:向该控制器发送数据包上报PacketIn信息,该PacketIn信息包括该组播流表项的标识;接收该控制器发送的流表修改FlowMod信息,该FlowMod信息包括该组播流表项的标识;其中,该删除该组播流表项,包括:根据该组播流表项的标识,删除该组播流表项。结合第一方面或第一方面的第一种至第二种可能的实现方式中的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,该生成用于指示临时转发规则的组播流表项之前,还包括:接收控制器发送的组播信息,该组播信息用于指示该交换机的输入端口与输出端口的对应关系;根据该组播信息,预存该交换机的输入端口与输出端口的对应关系。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,在该接收控制器发送的组播信息之前,还包括:向该控制器发送请求信息,该请求信息用于向该控制器请求该组播信息。结合第一方面的第三种或第四种可能的实现方式,在第一方面的第五种可能的实现方式中,该组播信息包括该控制器根据网络拓扑变化进行更新后的组播信息。第二方面,提供了一种处理数据包的方法,包括:控制器确定组播信息,该组播信息用于指示交换机的输入端口与输出端口的对应关系;向该交换机发送该组播信息,以便于该交换机根据该组播信息预存该交换机的输入端口与输出端口的对应关系并根据待转发的数据包的输入端口和该预存的该交换机的输入端口与输出端口的对应关系生成用于指示临时转发规则的组播流表项,以及该交换机根据该组播流表项将该待转发的数据包进行转发,其中,该组播流表项用于指示该待转发的数据包的输入端口对应的输出端口。结合第二方面,在第二方面的第一种可能的实现方式中,在该向交换机发送该组播信息之后,还包括:向该交换机发送用于指示正式转发规则的正式流表项,以便于该交换机删除该组播流表项,该正式流表项用于指示该待转发的数据包的输入端口对应的后续用于数据转发的输出端口。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括:接收该交换机发送的数据包上报PacketIn信息,该PacketIn信息包括该组播流表项的标识;向该交换机发送流表修改FlowMod信息,该FlowMod信息包括该组播流表项的标识,以便于该交换机根据该组播流表项的标识,删除该组播流表项。结合第二方面或第二方面的第一种至第二种可能的实现方式中的任一种可能的实现方式,在第二方面的第三种可能的实现方式中,在该向交换机发送该组播信息之前,还包括:接收该交换机发送的请求信息,该请求信息用于向该控制器请求该组播信息。结合第二方面或第二方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括:根据网络拓扑变化,更新该组播信息。第三方面,提供了一种交换机,包括:接收单元,用于获取待转发的数据包;生成单元,用于根据该待转发的数据包的输入端口和预存的该交换机的输入端口与输出端口的对应关系,生成用于指示临时转发规则的组播流表项,该组播流表项用于指示该待转发的数据包的输入端口对应的输出端口;转发单元,用于根据该组播流表项将该待转发的数据包进行转发。结合第三方面,在第三方面的第一种可能的实现方式中,该接收单元,还用于从控制器接收用于指示正式转发规则的正式流表项;其中,该交换机还包括:删除单元,用于删除该组播流表项,该正式流表项用于指示该待转发的数据包的输入端口对应的后续用于数据转发的输出端口。结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,还包括:第一发送单元,用于向该控制器发送数据包上报PacketIn信息,该PacketIn信息包括该组播流表项的标识;该接收单元,还用于接收该控制器发送的流表修改FlowMod信息,该FlowMod信息包括该组播流表项的标识;其中,该删除单元,具体用于根据该组播流表项的标识,删除该组播流表项。结合第三方面或第三方面的第一种至第二种可能的实现方式中的任一种可能的实现方式,在第三方面的第三种可能的实现方式中,该接收单元,还用于接收控制器发送的组播信息,该组播信息用于指示该交换机的输入端口与输出端口的对应关系;其中,该交换机还包括:预存单元,用于根据该组 播信息,预存该交换机的输入端口与输出端口的对应关系。结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,还包括:第二发送单元,用于向该控制器发送请求信息,该请求信息用于向该控制器请求该组播信息。结合第三方面的第三种或第四种可能的实现方式,在第三方面的第五种可能的实现方式中,该组播信息包括该控制器根据网络拓扑变化进行更新后的组播信息。第四方面,提供了一种控制器,包括:确定单元,用于确定组播信息,该组播信息用于指示交换机的输入端口与输出端口的对应关系;发送单元,用于向该交换机发送该组播信息,以便于该交换机根据该组播信息预存该交换机的输入端口与输出端口的对应关系并根据待转发的数据包的输入端口和该预存的该交换机的输入端口与输出端口的对应关系生成用于指示临时转发规则的组播流表项,以及该交换机根据该组播流表项将该待转发的数据包进行转发,其中,该组播流表项用于指示该待转发的数据包的输入端口对应的输出端口。结合第四方面,在第四方面的第一种可能的实现方式中,该发送单元,还用于向该交换机发送用于指示正式转发规则的正式流表项,以便于该交换机删除该组播流表项,该正式流表项用于指示该待转发的数据包的输入端口对应的后续用于数据转发的输出端口。结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,还包括:第一接收单元,用于接收该交换机发送的数据包上报PacketIn信息,该PacketIn信息包括该组播流表项的标识;其中,该发送单元,还用于向该交换机发送流表修改FlowMod信息,该FlowMod信息包括该组播流表项的标识,以便于该交换机根据该组播流表项的标识,删除该组播流表项。结合第四方面或第四方面的第一种至第二种可能的实现方式中的任一种可能的实现方式,在第四方面的第三种可能的实现方式中,还包括:第二接收单元,用于接收该交换机发送的请求信息,该请求信息用于向该控制器请求该组播信息。结合第四方面或第四方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第四方面的第四种可能的实现方式中,还包括:更新单 元,用于根据网络拓扑变化,更新该组播信息。本发明实施例中根据预存的交换机的输入端口与输出端口的对应关系,确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进行缓存,进而避免了因为缓存不足而导致的数据包丢失。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是可应用本发明实施例的网络架构的一个例子的示意图。图2是本发明一个实施例的传输信息的方法的示意性流程图。图3为本发明另一实施例的处理数据包的方法的示意性流程图。图4是本发明另一实施例的处理数据包的方法的示意性流程图。图5是本发明一个实施例的传输信息的过程的示意性流程图。图6是本发明一个实施例的数据包的处理过程的示意性流程图。图7是本发明一个实施例的组播流表项的处理过程的示意性流程图。图8是本发明一个实施例的交换机的示意框图。图9是本发明一个实施例的控制器的示意框图。图10是本发明另一实施例的交换机的示意框图。图11是本发明另一实施例的控制器的示意框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。图1是可应用本发明实施例的网络架构的一个例子的示意图。应注意,图1的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限 制本发明实施例的范围。在图1中,以OpenFlow网络的架构为例进行说明。如图1所示,一个Openflow交换机包括一个或多个实现分组报文匹配和转发功能的流表(Flowtable)以及一个连接外部Openflow控制器的安全通道(Securechannel)。Openflow交换机的安全通道与Openflow控制器之间通过Openflow协议消息进行交互,实现对交换机内部的流表操作。每个流表中包括一个或多个流表项(Flowentry)。Openflow控制器通过Openflow协议消息可以添加、更新或删除流表中的流表项。每个流表项包括匹配域信息和对应的操作域信息,其中操作域信息也可称为动作(Actions)域信息或者指令(Instructions)域信息。交换机从输入端口接收到数据报文后从第一个流表开始进行匹配,然后跳转到下一个流表继续匹配。这种顺次级联的流表称为流管线(Pipeline)。交换机将接收到的报文与流表中各流表项的匹配域信息进行比对,如果流表中存在与接收到的报文匹配的流表项,则执行流表项中操作域信息中对应的操作。流表项中的操作域包括两类信息,第一类是将匹配的报文跳转到下一个流表实现进一步处理,同时还可传递相应的元数据;第二类是实现对数据报文的修改和转发到输出端口。OpenFlow交换设备可以是支持OpenFlow技术的具有交换功能的设备,可以是OpenFlow交换机,本发明实施例对此不作限制。以下实施例中OpenFlow交换设备可简称交换设备。OpenFlow控制设备可以是支持OpenFlow技术的具有控制功能的设备,可以是OpenFlow控制器,本发明实施例对此不作限制。以下实施例中OpenFlow控制设备简称控制设备。应注意,本发明实施例中,虽然以OpenFlow网络为例进行说明,但本发明实施例还可以应用于其它类似于OpenFlow网络的控制面与转发面分离的网络架构中。本发明实施例对此不作限定。图2是本发明一个实施例的传输信息的方法的示意性流程图。该方法包括:210,交换机获取待转发的数据包;220,根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系,生成用于指示临时转发规则的组播流表项,组播流表项用于指示待转发的数据包的输入端口对应的输出端口;230,根据组播流表项将待转发的数据包进行转发。本发明实施例中根据预存的交换机的输入端口与输出端口的对应关系, 确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进行缓存,进而避免了因为缓存不足而导致的数据包丢失。应理解,交换机可以包括多个输入端口和多个输出端口。其中,一个输入端口可以对应至少一个输出端口。换句话说,当数据包从某一个输入端口输入时,该输入端口对应的至少一个输出端口可以为该数据包可能的输出端口。输入端口对应的至少一个输出端口中可以包括该数据包真正输出的输出端口。预存的交换机的输入端口与输出端口的对应关系为将交换机的输入端口与可能的输出端口的对应关系。该输出端口可以包括至少一个输出端口。还应理解,该交换机可以为SDN交换机,例如OpenFlow交换机,也可以为其他类型的交换机,本发明实施例并不做限定。交换机根据获取的待转发的数据包的输入端口和预存的该交换机的输入端口与输出端口的对应关系,能够确定可能输出的输出端口,并生成指示该数据包的临时转发规则的组播流表项。应理解,临时转发规则与控制器下发的正式流表的转发规则不同,该临时转发规则中包含可能的输出端口,而正式流表的转发规则为该数据包应该输出的输出端口。应理解,生成的组播流表项可以与正式流表的表项的内容格式相同。不同的是,组播流表项为交换机生成的临时转发规则,而正式流表的表项为控制器下发的转发规则。可选地,组播流表项的匹配(Match)域可以为目的MAC(DestinationMediaAccessControl,DSTMAC)和虚拟局域网标识(VirtualLocalAreaNetworkIDentity,VlanID),组播流表项的指令可以为数据流组播到至少一个可能的输出端口。组播流表项指示待转发的数据包的输入端口对应的输出端口,该输出端口可以为至少一个输出端口。当对应N个输出端口时,交换机将该数据包在N个输出端口的每个输出端口进行转发,即发送N次该数据包。其中,N为大于或等于1的整数。因此,交换机对新数据包进行转发时,不需要进行缓存,也不需要等待控制器下发正式流表,而是自行将新数据包组播到可能的输出端口。这样,能够避免因为缓存不足而带来的丢包问题。应理解,交换机在获取到待转发的数据包时,可以首先查找是否存在对应的正式流表的表项。若有对应的表项,则按照正式流表的表项进行转发;若没有对应的表项,则可以将数据包上报给交换机的中央处理器(CentralProcessingUnit,CPU)。然后,CPU可以根据该首包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成该数据流的组播流表项。图3为本发明另一实施例的处理数据包的方法的示意性流程图。图3中与图2相同的内容可以采用相同的编号。在230之后,交换机还可以包括:240,从控制器接收用于指示正式转发规则的正式流表项,正式流表项用于指示待转发的数据包的输入端口对应的后续用于数据转发的输出端口;250,删除组播流表项。可选地,作为另一实施例,交换机可以向控制器发送数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;接收控制器发送的流表修改FlowMod信息,FlowMod信息包括组播流表项的标识。其中,在250中,交换机可以根据FlowMod信息中的组播流表项的标识,将该标识对应的组播流表项删除。本发明实施例中的PacketIn信息与目前协议规定的PacketIn消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识。具体地,交换机发送的PacketIn信息可以如下:其中,增加的字段mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。本发明实施例中的FlowMod信息与目前协议规定的FlowMod消息相 比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识。具体地,交换机接收的FlowMod信息可以如下:其中,增加的字段mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。应理解,对于现有协议中PacketIn信息和FlowMod信息的内容,本发明实施例不再详细描述,仅仅对与本发明实施例相关的内容进行描述。还应理解,本发明实施例可以生成多个组播流表项。当交换机获取待转发的数据包时,根据该数据包生成对应的组播流表项。为便于理解,本发明实施例中仅仅对其中一个组播流表项进行描述。交换机每次上报PacketIn信息时,将该数据包的组播流表项的标识一起进行上报,这样,控制器可以接收多个数据包的多个组播流表项。当控制器下发正式流表时,该正式流表的一个表项与交换机上报的多个组播流表项中的一个对应,这样,可以在FlowMod信息中包含该正式流表的表项对应的组播流表项的标识。交换机根据该 标识,删除该组播流表项。可选地,作为另一实施例,在交换机生成用于指示临时转发规则的组播流表项之前,图3的方法还可以包括:260,接收控制器发送的组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系。270,根据组播信息,预存交换机的输入端口与输出端口的对应关系。具体地,控制器可以向交换机发送组播信息。该组播信息的结构体可以如下:该组播信息的结构体为本发明实施例中新增的结构体。具体地,新增了type类型OFPT_MATREE_ADV,in_port字段表示数据包的输入端口,out_port字段表示数据包可能的输出端口,length字段表示可能的输出端口的个数。应理解,控制器可以多次向交换机发送组播信息,每次可以发送一个输入端口与多个可能的输出端口的对应关系。交换机接收到组播信息后,可以将组播信息预存在CPU中,当有数据包从输入端口进入时,根据数据包的输入端口和预存的输入端口与输出端口的对应关系(即组播信息)确定可能的输出端口。具体地,260的步骤可以位于210之前。也就是说,交换机可以先获取组播信息,并存在CPU中,当获取到待转发的数据流之后,根据组播信息和数据流的输入端口,确定可能的输出端口。可选地,作为另一实施例,在交换机接收控制器发送的组播信息之前,该方法还可以包括:280,向控制器发送请求信息,请求信息用于向控制器请求组播信息。具体地,该请求信息的结构体可以如下:该请求信息可以为本发明实施例新增的信息,其中,version字段可以表示协议规定的版本号;type字段可以表示消息类型,对于组播信息的请求信息,该type字段可以为ofp_mctree_request;length可以表示该请求信息的长度;xid可以表示该请求信息的标识信息。可选地,作为另一实施例,组播信息可以包括控制器根据网络拓扑变化进行更新后的组播信息。具体地,控制器可以检测到网络拓扑发生变化需要更新组播信息时,可以发送更新后的组播信息。图4是本发明另一实施例的处理数据包的方法的示意性流程图。图4所示的方法可以由控制器执行。该方法可以包括:410,控制器确定组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系;420,向交换机发送组播信息,以便于交换机根据组播信息预存交换机的输入端口与输出端口的对应关系并根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成用于指示临时转发规则的组播流表项,以及交换机根据组播流表项将待转发的数据包进行转发,其中,组播流表项用于指示待转发的数据包的输入端口对应的输出端口。本发明实施例中向交换机发送指示交换机的输入端口和输出端口的对应关系的组播信息,这样,交换机根据数据包的输入端口能够确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进 行缓存,进而避免了因为缓存不足而导致的数据包丢失。应理解,交换机可以包括多个输入端口和多个输出端口。其中,一个输入端口可以对应至少一个输出端口。换句话说,当数据包从某一个输入端口输入时,该输入端口对应的至少一个输出端口可以为该数据包可能的输出端口。输入端口对应的至少一个输出端口中可以包括该数据包真正输出的输出端口。预存的交换机的输入端口与输出端口的对应关系为将交换机的输入端口与可能的输出端口的对应关系。该输出端口可以包括至少一个输出端口。还应理解,该交换机可以为SDN交换机,例如OpenFlow交换机,也可以为其他类型的交换机,本发明实施例并不做限定。应理解,生成的组播流表项可以与正式流表的表项的内容格式相同。不同的是,组播流表项为交换机生成的临时转发规则,而正式流表的表项为控制器下发的转发规则。可选地,组播流表项的匹配(Match)域可以为目的MAC(DestinationMediaAccessControl,DSTMAC)和虚拟局域网标识(VirtualLocalAreaNetworkIDentity,VlanID),组播流表项的指令可以为数据流组播到至少一个可能的输出端口。组播流表项指示待转发的数据包的输入端口对应的输出端口,该输出端口可以为至少一个输出端口。当对应N个输出端口时,交换机将该数据包在N个输出端口的每个输出端口进行转发,即发送N次该数据包。其中,N为大于或等于1的整数。因此,交换机对新数据包进行转发时,不需要进行缓存,也不需要等待控制器下发正式流表,而是自行将新数据包组播到可能的输出端口。这样,能够避免因为缓存不足而带来的丢包问题。应理解,交换机在获取到待转发的数据包时,可以首先查找是否存在对应的正式流表的表项。若有对应的表项,则按照正式流表的表项进行转发;若没有对应的表项,则可以将数据包上报给交换机的中央处理器(CentralProcessingUnit,CPU)。然后,CPU可以根据该首包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成该数据流的组播流表项。组播信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描述。该组播信息的结构体为本发明实施例中新增的结构体。具体地,新增了 type类型OFPT_MATREE_ADV,in_port字段表示数据包的输入端口,out_port字段表示数据包可能的输出端口,length字段表示可能的输出端口的个数。应理解,控制器可以多次向交换机发送组播信息,每次可以发送一个输入端口与多个可能的输出端口的对应关系。交换机接收到组播信息后,可以将组播信息预存在CPU中,当有数据包从输入端口进入时,根据数据包的输入端口和预存的输入端口与输出端口的对应关系(即组播信息)确定可能的输出端口。可选地,作为另一实施例,在向交换机发送组播信息之后,该方法还可以包括:430,向交换机发送用于指示正式转发规则的正式流表项,以便于交换机删除组播流表项,正式流表项用于指示待转发的数据包的输入端口对应的后续用于数据转发的输出端口。可选地,作为另一实施例,控制器可以接收交换机发送的数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;并向交换机发送流表修改FlowMod信息,FlowMod信息包括组播流表项的标识,以便于交换机根据组播流表项的标识,删除组播流表项。本发明实施例中的PacketIn信息与目前协议规定的PacketIn消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。本发明实施例中的FlowMod信息与目前协议规定的FlowMod消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。本发明实施例中,PacketIn消息和FlowMod信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描述。应理解,对于现有协议中PacketIn信息和FlowMod信息的内容,本发明实施例不再详细描述,仅仅对与本发明实施例相关的内容进行描述。还应理解,本发明实施例可以生成多个组播流表项。当交换机获取待转发的数据包时,根据该数据包生成对应的组播流表项。为便于理解,本发明实施例中仅仅对其中一个组播流表项进行描述。交换机每次上报PacketIn信息时,将该数据包的组播流表项的标识一起进行上报,这样,控制器可以接收多个数据包的多个组播流表项。当控制器下发正式流表时,该正式流表的 一个表项与交换机上报的多个组播流表项中的一个对应,这样,可以在FlowMod信息中包含该正式流表的表项对应的组播流表项的标识。交换机根据该标识,删除该组播流表项。可选地,作为另一实施例,在向交换机发送组播信息之前,该方法还可以包括:440,接收交换机发送的请求信息,请求信息用于向控制器请求组播信息。具体地,该请求信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描述。该请求信息可以为本发明实施例新增的信息,其中,version字段可以表示协议规定的版本号;type字段可以表示消息类型,对于组播信息的请求信息,该type字段可以为ofp_mctree_request;length可以表示该请求信息的长度;xid可以表示该请求信息的标识信息。可选地,作为另一实施例,该方法还可以包括:450,根据网络拓扑变化,更新组播信息。具体地,控制器可以检测到网络拓扑发生变化需要更新组播信息时,可以发送更新后的组播信息。图5是本发明一个实施例的传输信息的过程的示意性流程图。该过程包括:501,交换机与控制器进行握手。应理解,该握手过程可以按照现有的OpenFlow协议进行。502,交换机向控制器请求组播信息。具体地,该请求信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描述。该请求信息可以为本发明实施例新增的信息,其中,version字段可以表示协议规定的版本号;type字段可以表示消息类型,对于组播信息的请求信息,该type字段可以为ofp_mctree_request;length可以表示该请求信息的长度;xid可以表示该请求信息的标识信息。503,控制器向交换机发送组播信息。该组播信息的结构体为本发明实施例中新增的结构体。具体地,新增了type类型OFPT_MATREE_ADV,in_port字段表示数据包的输入端口,out_port字段表示数据包可能的输出端口,length字段表示可能的输出端口的个数。组播信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描 述。504,交换机根据待转发的数据包和组播信息,生成组播流表项。应理解,生成的组播流表项可以与正式流表的表项的内容格式相同。不同的是,组播流表项为交换机生成的临时转发规则,而正式流表的表项为控制器下发的转发规则。可选地,组播流表项的匹配(Match)域可以为目的MAC(DestinationMediaAccessControl,DSTMAC)和虚拟局域网标识(VirtualLocalAreaNetworkIDentity,VlanID),组播流表项的指令可以为数据流组播到至少一个可能的输出端口。组播流表项指示待转发的数据包的输入端口对应的输出端口,该输出端口可以为至少一个输出端口。当对应N个输出端口时,交换机将该数据包在N个输出端口的每个输出端口进行转发,即发送N次该数据包。其中,N为大于或等于1的整数。交换机在获取到待转发的数据包时,可以首先查找是否存在对应的正式流表的表项。若有对应的表项,则按照正式流表的表项进行转发;若没有对应的表项,则可以将数据包上报给交换机的中央处理器(CentralProcessingUnit,CPU)。然后,CPU可以根据该首包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成该数据流的组播流表项。505,交换机将待转发的数据包根据该组播流表项进行转发。506,控制器向交换机发送正式流表项。507,交换机删除组播流表项。可选地,作为另一实施例,控制器可以接收交换机发送的数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;并向交换机发送流表修改FlowMod信息,FlowMod信息包括组播流表项的标识,以便于交换机根据组播流表项的标识,删除组播流表项。本发明实施例中的PacketIn信息与目前协议规定的PacketIn消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。本发明实施例中的FlowMod信息与目前协议规定的FlowMod消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。本发明实施例中,PacketIn消息和FlowMod信息的结构体可以如上文中的相关描述,为避免重复,此处不再详细描述。应理解,对于现有协议中PacketIn信息和FlowMod信息的内容,本发明实施例不再详细描述,仅仅对与本发明实施例相关的内容进行描述。还应理解,本发明实施例可以生成多个组播流表项。当交换机获取待转发的数据包时,根据该数据包生成对应的组播流表项。为便于理解,本发明实施例中仅仅对其中一个组播流表项进行描述。交换机每次上报PacketIn信息时,将该数据包的组播流表项的标识一起进行上报,这样,控制器可以接收多个数据包的多个组播流表项。当控制器下发正式流表时,该正式流表的一个表项与交换机上报的多个组播流表项中的一个对应,这样,可以在FlowMod信息中包含该正式流表的表项对应的组播流表项的标识。交换机根据该标识,删除该组播流表项。508,控制器更新组播信息,并向交换机发送更新后的组播信息。具体地,控制器可以检测到网络拓扑发生变化需要更新组播信息时,可以发送更新后的组播信息。图6是本发明一个实施例的数据包的处理过程的示意性流程图。图6所示的过程可以由交换机执行,该过程包括:601,查找待转发的数据包是否有正式流表。602,当有正式流表时,按照正式流表转发该数据包。603,当没有正式流表时,根据数据包的输入端口和组播信息生成组播流表项。604,根据组播流表项转发该数据包。605,上报数据包上报消息。具体地,该数据包上报PacketIn消息包括组播流表项的标识。本发明实施例中的PacketIn信息与目前协议规定的PacketIn消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。图7是本发明一个实施例的组播流表项的处理过程的示意性流程图。图7所示的过程可以由交换机执行。该过程包括:701,接收控制器发送的流表修改信息。具体地,该FlowMod消息包括组播流表项的标识。本发明实施例中的 FlowMod信息与目前协议规定的FlowMod消息相比,增加了mc_entry_id字段,该mc_entry_id字段可以为组播流表项的标识,用于唯一标识组播流表项。702,获取控制器发送的正式流表项。703,若701与702执行成功,则删除组播流表项。具体地,交换机可以根据FlowMod消息中的组播流表项的标识,删除对应的组播流表项。应理解,本发明实施例可以生成多个组播流表项。当交换机获取待转发的数据包时,根据该数据包生成对应的组播流表项。为便于理解,本发明实施例中仅仅对其中一个组播流表项进行描述。交换机每次上报PacketIn信息时,将该数据包的组播流表项的标识一起进行上报,这样,控制器可以接收多个数据包的多个组播流表项。当控制器下发正式流表时,该正式流表的一个表项与交换机上报的多个组播流表项中的一个对应,这样,可以在FlowMod信息中包含该正式流表的表项对应的组播流表项的标识。交换机根据该标识,删除该组播流表项。704,若701或702执行失败,则进行异常处理。图8是本发明一个实施例的交换机的示意框图。图8所示的交换机可以实现上述图2、图3以及图5-图7的方法或过程,为避免重复,此处不再详细描述。具体地,该交换机80可以包括:接收单元81获取待转发的数据包;生成单元82根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系,生成用于指示临时转发规则的组播流表项,组播流表项用于指示待转发的数据包的输入端口对应的输出端口;转发单元83根据组播流表项将待转发的数据包进行转发。本发明实施例中根据预存的交换机的输入端口与输出端口的对应关系,确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进行缓存,进而避免了因为缓存不足而导致的数据包丢失。可选地,作为另一实施例,接收单元81还可以从控制器接收用于指示正式转发规则的正式流表项,正式流表项用于指示待转发的数据包的输入端口 对应的后续用于数据转发的输出端口;其中,交换机80还包括:删除单元84删除组播流表项。可选地,作为另一实施例,交换机80还可以包括:第一发送单元85向控制器发送数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;接收单元81还可以接收控制器发送的流表修改FlowMod信息,FlowMod信息包括组播流表项的标识;其中,删除单元84可以根据组播流表项的标识,删除组播流表项。可选地,作为另一实施例,接收单元81还可以接收控制器发送的组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系;其中,该交换机80还可以包括:预存单元86根据组播信息,预存交换机的输入端口与输出端口的对应关系。可选地,作为另一实施例,该交换机80还可以包括:第二发送单元87向控制器发送请求信息,请求信息用于向控制器请求组播信息。可选地,作为另一实施例,组播信息包括控制器根据网络拓扑变化进行更新后的组播信息。图9是本发明一个实施例的控制器的示意框图。图9所示的控制器可以实现上述图4的方法和图5-图7的过程,为避免重复,此处不再详细描述。该控制器90包括:确定单元91确定组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系;发送单元92向交换机发送组播信息,以便于交换机根据组播信息预存交换机的输入端口与输出端口的对应关系并根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成用于指示临时转发规则的组播流表项,以及交换机根据组播流表项将待转发的数据包进行转发,其中,组播流表项用于指示待转发的数据包的输入端口对应的输出端口。本发明实施例中向交换机发送指示交换机的输入端口和输出端口的对应关系的组播信息,这样,交换机根据数据包的输入端口能够确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进行缓存,进而避免了因为缓存不足而导致的数据包丢失。可选地,作为另一实施例,发送单元92还可以向交换机发送用于指示正式转发规则的正式流表项,以便于交换机删除组播流表项,正式流表项用于指示待转发的数据包的输入端口对应的后续用于数据转发的输出端口。可选地,作为另一实施例,该控制器90还可以包括:第一接收单元93接收交换机发送的数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;其中,发送单元92还可以向交换机发送流表修改FlowMod信息,FlowMod信息包括组播流表项的标识,以便于交换机根据组播流表项的标识,删除组播流表项。可选地,作为另一实施例,该控制器90还可以包括:第二接收单元94接收交换机发送的请求信息,请求信息用于向控制器请求组播信息。可选地,作为另一实施例,该控制器90还可以包括:更新单元95根据网络拓扑变化,更新组播信息。图10是本发明另一实施例的交换机的示意框图。图10的交换机100可用于实现上述方法实施例中各步骤及方法。图10的交换机包括处理器101、存储器102、接收电路103和发射电路104。处理器101、存储器102、接收电路103和发射电路104通过总线系统109连接。此外,交换机100还可以包括天线105等。处理器101控制交换机100的操作。存储器102可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器102的一部分还可以包括非易失行随机存取存储器(NVRAM)。具体的应用中,发射电路104和接收电路103可以耦合到天线105。交换机100的各个组件通过总线系统109耦合在一起,其中总线系统109除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统109。处理器101可能是一种集成电路芯片,具有信号的处理能力。上述的处理器101可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器101读取存储器102中的信息,结合其硬件控制交换机100的各个部件。图2或图3的方法可以在图10的交换机100中实现,为避免重复,不再 详细描述。具体地,在处理器101的控制之下,交换机100完成以下操作:交换机获取待转发的数据包;根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系,生成用于指示临时转发规则的组播流表项,组播流表项用于指示待转发的数据包的输入端口对应的输出端口;根据组播流表项将待转发的数据包进行转发。本发明实施例中根据预存的交换机的输入端口与输出端口的对应关系,确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进行缓存,进而避免了因为缓存不足而导致的数据包丢失。可选地,作为另一实施例,接收电路103可以从控制器接收用于指示正式转发规则的正式流表项;处理器101可以删除组播流表项。可选地,作为另一实施例,发射电路104可以向控制器发送数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;接收电路103可以接收控制器发送的流表修改FlowMod信息,FlowMod信息包括组播流表项的标识,正式流表项用于指示待转发的数据包的输入端口对应的后续用于数据转发的输出端口;其中,处理器101可以根据组播流表项的标识,删除组播流表项。可选地,作为另一实施例,处理器101生成用于指示临时转发规则的组播流表项之前,接收电路103可以接收控制器发送的组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系;处理器101根据组播信息,预存交换机的输入端口与输出端口的对应关系。可选地,作为另一实施例,在接收电路103接收控制器发送的组播信息之前,发射电路104可以向控制器发送请求信息,请求信息用于向控制器请求组播信息。可选地,作为另一实施例,接收电路103接收的组播信息可以包括控制器根据网络拓扑变化进行更新后的组播信息。图11是本发明另一实施例的控制器的示意框图。图11的控制器110可用于实现上述方法实施例中各步骤及方法。图11的控制器110包括处理器 111、存储器112、接收电路113和发射电路114。处理器111、存储器112、接收电路113和发射电路114通过总线系统119连接。此外,控制器110还可以包括天线115等。处理器111控制控制器110的操作。存储器112可以包括只读存储器和随机存取存储器,并向处理器111提供指令和数据。存储器112的一部分还可以包括非易失行随机存取存储器(NVRAM)。具体的应用中,发射电路114和接收电路113可以耦合到天线115。控制器110的各个组件通过总线系统119耦合在一起,其中总线系统119除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统119。处理器111可能是一种集成电路芯片,具有信号的处理能力。上述的处理器111可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器111读取存储器112中的信息,结合其硬件控制控制器110的各个部件。图4的方法可以在图11的控制器110中实现,为避免重复,不再详细描述。具体地,在处理器111的控制之下,控制器110完成以下操作:控制器确定组播信息,组播信息用于指示交换机的输入端口与输出端口的对应关系;向交换机发送组播信息,以便于交换机根据组播信息预存交换机的输入端口与输出端口的对应关系并根据待转发的数据包的输入端口和预存的交换机的输入端口与输出端口的对应关系生成用于指示临时转发规则的组播流表项,以及交换机根据组播流表项将待转发的数据包进行转发,其中,组播流表项用于指示待转发的数据包的输入端口对应的输出端口。本发明实施例中向交换机发送指示交换机的输入端口和输出端口的对应关系的组播信息,这样,交换机根据数据包的输入端口能够确定待转发的数据包可能的输出端口,并生成临时的组播流表项进行转发数据包。这样,交换机在接收到数据包之后,不需要等待控制器下发正式的转发规则,而是自行将数据包转发到可能的输出端口。因此,本发明实施例中数据包不需要进 行缓存,进而避免了因为缓存不足而导致的数据包丢失。可选地,作为另一实施例,在向交换机发送组播信息之后,发射电路114可以向交换机发送用于指示正式转发规则的正式流表项,以便于交换机删除组播流表项,正式流表项用于指示待转发的数据包的输入端口对应的后续用于数据转发的输出端口。可选地,作为另一实施例,接收电路113可以接收交换机发送的数据包上报PacketIn信息,PacketIn信息包括组播流表项的标识;发射电路114可以向交换机发送流表修改FlowMod信息,FlowMod信息包括组播流表项的标识,以便于交换机根据组播流表项的标识,删除组播流表项。可选地,作为另一实施例,在向交换机发送组播信息之前,接收电路113还可以接收交换机发送的请求信息,请求信息用于向控制器请求组播信息。可选地,作为另一实施例,处理器111还可以根据网络拓扑变化,更新组播信息。应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执 行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1