发明内容
本发明实施例提供了一种接收报文的方法及开放流交换机,有助于降低对控制通道的带宽的占用。
第一方面,提供了接收报文的方法,包括:
开放流交换机接收第一报文,所述第一报文的源MAC地址为第一MAC地址;
所述开放流交换机在第一流表中查找与所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项;
所述开放流交换机构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表,所述第一流表项包括所述第一MAC地址;
所述开放流交换机接收第二报文,所述第二报文的源MAC地址为所述第一MAC地址;
所述开放流交换机确定所述第一流表项中的所述第一MAC地址与所述第二报文的源MAC地址匹配,所述开放流交换机避免通过控制通道向控制服务器发送第一消息,所述第一消息包含所述第二报文的报头中的字段。
在第一方面的第一种可能的实现方式中,所述开放流交换机构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表之后,所述方法还包括:
所述开放流交换机接收第三报文,所述第三报文的目的MAC地址为所述第一MAC地址;
所述开放流交换机在所述第二流表中查找与所述第三报文的目的MAC地址匹配的流表项,并查找到所述第一流表项;
所述开放流交换机确定所述第一流表项中包含预设值,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述开放流交换机在第一流表中查找与所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项之后,所述方法还包括:
所述开放流交换机通过所述控制通道向所述控制服务器发送第二消息,所述第二消息包含所述第一报文的报文头中的字段;
所述开放流交换机通过所述控制通道接收所述控制服务器发送的第三消息,所述第三消息包括第一动作的索引;
所述开放流交换机将所述第一动作的索引添加到所述第一流表项中。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述开放流交换机接收第一报文具体为:所述开放流交换机通过第一端口接收所述第一报文;
所述第二消息包括所述第一端口的标识;
所述第一动作包括:通过所述第一端口转发目的MAC地址与所述添加了所述第一动作的索引的第一流表项中的所述第一MAC地址匹配的报文。
结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述开放流交换机将所述第一动作的索引添加到所述第一流表项中之后,所述方法还包括:
所述开放流交换机接收第四报文,所述第四报文的目的MAC地址为所述第一MAC地址;
所述开放流交换机在所述第二流表中查找与所述第四报文的目的MAC地址匹配的流表项,并查找到所述添加了所述第一动作的索引的第一流表项;
所述开放流交换机对所述第四报文执行所述第一动作的索引对应的所述第一动作。
第二方面,提供了一种开放流交换机,包括:
第一接收单元,用于接收第一报文,所述第一报文的源MAC地址为第一MAC地址;
第一确定单元,用于在第一流表中查找与所述第一接收单元接收的所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项;
第一添加单元,用于构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表,所述第一流表项包括所述第一接收单元接收的所述第一报文中的所述第一MAC地址;
第二接收单元,用于接收第二报文,所述第二报文的源MAC地址为所述第一MAC地址;
第二确定单元,用于确定所述第一流表项中的所述第一MAC地址与所述第二接收单元接收的所述第二报文的源MAC地址匹配,避免通过控制通道向控制服务器发送第一消息,所述第一消息包含所述第二报文的报文头中的字段。
在第二方面的第一种可能的实现方式中,所述开放流交换机还包括:
第三接收单元,用于接收第三报文,所述第三报文的目的MAC地址为所述第一MAC地址;
第一查找单元,用于在所述第一添加单元得到的所述第二流表中查找与所述第三接收单元接收的所述第三报文的目的MAC地址匹配的流表项,并查找到所述第一流表项;
第三确定单元,用于确定所述第一查找单元查找到的所述第一流表项中包含预设值,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述开放流交换机,还包括:
发送单元,用于在所述第一确定单元确定所述第一流表中没有包含所述流表项以后,通过所述控制通道向所述控制服务器发送第二消息,所述第二消息包含所述第一报文的报文头中的字段;
第四接收单元,用于通过所述控制通道接收所述控制服务器发送的第三消息,所述第三消息包括第一动作的索引;
第二添加单元,用于将所述第四接收单元接收的所述第三消息中的所述第一动作的索引添加到所述第一流表项中。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一接收单元具体用于通过第一端口接收所述第一报文;
所述第二消息包括所述第一端口的标识;
所述第一动作包括:通过所述第一端口转发目的MAC地址能够与所述添加了所述第一动作的索引的第一流表项中的所述第一MAC地址匹配的报文。
结合第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述开放流交换机还包括:
第五接收单元,用于在所述第二添加单元将所述第一动作的索引添加到所述第一流表项中以后,接收第四报文,所述第四报文的目的MAC地址为所述第一MAC地址;
第二查找单元,用于在所述第二流表中查找与所述第五接收单元接收到的所述第四报文的目的MAC地址匹配的流表项,并查找到所述添加了所述第一动作的索引的第一流表项;
执行单元,用于对所述第四报文执行所述第二查找单元查找到的所述添加了所述第一动作的索引的第一流表项中的所述第一动作的索引对应的所述第一动作。
上述技术方案中,所述开放流交换机接收到源MAC地址为所述第一MAC地址的所述第一报文后,生成包括所述第一MAC地址的所述第一流表项。所述开放流交换机接收到源MAC地址为所述第一MAC地址的所述第二报文后,确定所述第二报文的源MAC地址与所述第一流表项中的所述第一MAC地址匹配。所述开放流交换机避免向所述控制服务器发送所述第一消息。因此,上述技术方案有助于减少对控制通道的带宽的占用。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
举例来说,一个开放流交换机可以包括一个或多个流表,一个流表包括一个或多个Entry,一个Entry包括一个或多个流表项。流表的内容可以包括两部分。第一部分是流表的描述信息,包括流表项起始地址、查表方式和Key(关键字)描述信息。key描述信息可以为从原始报文、metaData(元数据)以及知名字段中提取的key信息。key描述信息可以包括下述信息中的一个或者多个:进入接口,报文源地址、报文目标地址、报文类型,vlan(Virtual LocalArea Network,虚拟局域网)ID(Identity,身份标识号码),vlan优先级,IP(Internet Protocol,网络之间互连的协议)源地址、IP目标地址、协议、IP ToS位,TCP/UDP(Transmission Control Protocol/User Datagram Protocol,传输控制协议/用户数据报协议)目标端口以及TCP/UDP源端口。第二部分是表项key及执行动作(action)索引,执行动作索引用于描述报文命中流表项后的执行动作。其中,vlan ID为虚拟局域网区域的广播范围ID。
开放流交换机接收到报文后,通过对报文进行解析提取报文的知名字段或者报文中包括的其他信息组成报文key,同时读取流表的描述信息,得到该流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息。然后开放流交换机根据读取得到的流表信息组成流表Key,根据报文key查找流表,判断是否存在与报文key匹配的流表key。如果存在,则命中,根据命中的流表项中对应的action索引执行对应的动作。如果不存在,则不命中,根据流表的描述信息的配置进行丢弃、跳转到默认流表或者上送控制服务器。
OpenFlow技术中,SMAC地址的学习和基于DMAC地址的转发都是通过流表完成的。现有技术中,开放流交换机接收到报文后,查找流表中是否存在与报文匹配的SMAC地址流表项。如果不存在,向控制服务器发送学习消息。如果存在,查找流表中是否存在与报文匹配的DMAC地址流表项。如果存在,根据与报文匹配的DMAC地址流表项的action索引执行对应的动作。如果不存在,丢弃报文或跳转到默认流表或者将报文上送控制服务器等。
开放流交换机接收到多个源MAC地址为第一源MAC地址的报文后,如果开放流交换机中的流表与所述多个报文没有匹配,则开放流交换机需要进行第一源MAC地址学习,需要根据所述多个报文生成多个学习消息,并通过控制通道向控制服务器发送所述多个学习消息。控制服务器根据所述多个学习消息中的学习消息生成新的消息并所述新的消息发送至开放流交换机。开放流交换机根据所述新的消息对所述流表进行更新,导致占用了所述控制通道的带宽较多。
本发明实施例提供一种接收报文的方法及开放流交换机,可减小控制通道的占用带宽,下面通过具体实施例进行说明。
图1为本发明实施例提供的一种报文接收方法的流程示意图。本发明实施例可以实现在OpenFlow开放流交换机中,如图所示本实施例中的流程包括:
S101,开放流交换机接收第一报文,所述第一报文的源MAC地址为第一MAC地址。
举例来说,开放流交换机接收第一报文具体可以为:所述开放流交换机通过第一端口接收所述第一报文。其中,第一报文可以包括:报文头中的字段,第一报文的报文头中的字段可以包括第一报文的源MAC地址。第一报文可以为以太网帧(Ethernet frame)。
S102,所述开放流交换机在第一流表中查找与所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项。
举例来说,开放流交换机如果在第一流表中没有查找到与所述第一报文的源MAC地址匹配的流表项,则确定第一流表中不存在与第一报文的源MAC地址匹配的流表项。开放流交换机解析第一报文,并提取第一报文头的字段或者第一报文中包括的其他信息组成第一报文key,同时读取流表的描述信息,得到该流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息,然后根据读取得到的流表信息组成第一流表Key,根据第一报文key查找流表,判断是否存在与第一报文key匹配的第一流表key,S102中不存在,则确定第一流表中不存在与第一报文的源MAC地址匹配的流表项。
S103,所述开放流交换机构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表,所述第一流表项包括所述第一MAC地址。
举例来说,开放流交换机根据第一报文的源MAC地址构造第一流表项,第一流表项可以包括预设值。其中,预设值可以为预设的执行动作索引,预设的执行动作索引可以为任意一个预设的无效值,以区别于控制服务器根据学习消息下发的表项插入消息,控制服务器根据表项插入消息进行MAC地址学习得到的执行动作索引值,预设的执行动作索引,例如数值0等。
可选的,第一流表项还可以包括:第一接口的标识、Vlan ID或第一报文的报文头中的字段等。开放流交换机将所述构造的第一流表项添加到所述第一流表中,得到第二流表。
S104,所述开放流交换机接收第二报文,所述第二报文的源MAC地址为所述第一MAC地址。
举例来说,第二报文的源MAC地址为所述第一MAC地址,即第二报文的源MAC地址与第一报文的源MAC地址相同。第二报文可以包括:报文头中的字段,第二报文的报文头中的字段可以包括第二报文的源MAC地址等,第二报文可以为以太网帧。
S105,所述开放流交换机确定所述第一流表项中的所述第一MAC地址与所述第二报文的源MAC地址匹配,所述开放流交换机避免通过控制通道向控制服务器发送第一消息,所述第一消息包含所述第二报文的报头中的字段。
举例来说,开放流交换机在第一流表中查找与所述第二报文的源MAC地址匹配的流表项,查找到与第二报文的源MAC地址匹配的流表项为第一流表项,即开放流交换机确定所述第一流表项中的所述第一MAC地址与所述第二报文的源MAC地址匹配,则开放流交换机避免通过控制通道向控制服务器发送第一消息,其中,第一消息为对第二报文进行封装得到的第一消息,第一消息可以包含所述第二报文的报头中的字段。
上述技术方案中,开放流交换机接收到源MAC地址为所述第一MAC地址的所述第一报文后,生成包括所述第一MAC地址的所述第一流表项。所述开放流交换机接收到源MAC地址为所述第一MAC地址的所述第二报文后,确定所述第二报文的源MAC地址与所述第一流表项中的所述第一MAC地址匹配。所述开放流交换机避免向所述控制服务器发送所述第一消息。减少了对控制通道的带宽的占用。
可选的,图1所示的方法还可以包括S2a01~S2a03。如图2(a)所示,是本发明实施例提供的第三报文的处理流程图,如图2(a)所示本实施例中的流程包括:
S2a01,开放流交换机接收第三报文,所述第三报文的目的MAC地址为所述第一MAC地址。
举例来说,第三报文的目的MAC地址为所述第一MAC地址,即第三报文的目的MAC地址与第一报文的源MAC地址相同。第三报文可以包括:报文头中的字段,第三报文的报文头中的字段可以包括第三报文的源MAC地址、目的MAC地址等,第三报文可以为以太网帧。
S2a02,开放流交换机在所述第二流表中查找与所述第三报文的目的MAC地址匹配的流表项,并查找到所述第一流表项。
举例来说,如图1所示的S103之后,开放流交换机第二流表中查找是否存在与所述第三报文的目的MAC地址匹配的流表项,又所述第三报文的目的MAC地址为所述第一MAC地址,则查找到第一流表项。开放流交换机解析第三报文,并提取第三报文头的字段或者第三报文中包括的其他信息组成第三报文key,同时读取第二流表的描述信息,得到第二流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息,然后根据读取得到的流表信息组成第二流表Key,根据第三报文key查找第二流表,判断是否存在与第三报文key匹配的第二流表key。若存在,则确定第二流表中存在与第三报文的目的MAC地址匹配的流表项,即查找到第一流表项。
S2a03,开放流交换机确定所述第一流表项中包含预设值,将第三报文与预设的流表匹配,或者将第三报文转发至预设的出接口,或者将第三报文丢弃,或者保存第三报文。
举例来说,S2a02查找到第一流表项之后,确定第一流表项中包含预设值,预设值为图1所示的S103中构造的第一流表项中包含的预设值。开放流交换机确定第一流表项中包含预设值时,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
可选的,在S2a02之前,图2(a)所示的方法还可以包括:
开放流交换机在第一流表中查找与所述第三报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项。
开放流交换机构造第二流表项,并将所述第二流表项添加到所述第一流表中,得到第三流表,所述第二流表项包括所述第一MAC地址。
开放流交换机通过所述控制通道向所述控制服务器发送第四消息。
可选的,图1所示的方法还可以包括S2b01~S2b03。如图2(b)所示,为本发明实施例提供的流表的更新流程示意图,如图2(b)所示本实施例中的流程包括:
S2b01,开放流交换机通过控制通道向控制服务器发送第二消息,所述第二消息包含第一报文的报文头中的字段。
举例来说,在图1所示的S103之后,开放流交换机通过控制通道向所述控制服务器发送第二消息。其中,第二消息包含第一报文的报文头中的字段。
例如,第一报文的报文头中的字段可以包括第一报文的源MAC地址。可选的,第二消息还可以包括第一端口的标识。
S2b02,开放流交换机通过控制通道接收控制服务器发送的第三消息,所述第三消息包括第一动作的索引。
举例来说,控制服务器接收开放流交换机发送的第二消息,并解析第二消息,解析得到需要学习的第一报文key,根据管理的流表资源和OpenFlow协议,生成对应的第三消息,即第一表项插入消息,第三消息包括第一动作的索引,将生成的第三消息发送给开放流交换机,开放流交换机通过控制通道接收控制服务器发送的第三消息。
S2b03,开放流交换机将所述第一动作的索引添加到所述第一流表项中。
举例来说,对接收到的第三消息进行解析,解析出需要学习的报文key和action索引,得到第一动作的索引。具体的,根据解析第三消息得到的报文key在流表中查找是否存在与之匹配的源MAC,如果存在,则获取与第三消息匹配的流表项中的执行动作索引。如果不存在,则本机进行MAC地址的学习。
判断所述获取到的与所述第三消息匹配的流表项中的执行动作索引与预设值是否一致。若一致,开放流交换机将第一动作的索引添加到第一流表项中,即用解析得到的第一动作的索引替换所述预设值。其中,第一动作可以为转发第一报文、或丢弃第一报文、或修改第一报文、或通过计数器进行计数等。
可选的,图1所示的方法还可以包括S2c01~S2c03。如图2(c)所示,为本发明实施例提供的第四报文的处理流程图,如图2(c)所示本实施例中的流程包括:
S2c01,开放流交换机接收第四报文,所述第四报文的目的MAC地址为第一MAC地址。
举例来说,第四报文的目的MAC地址为所述第一MAC地址,即第四报文的目的MAC地址与第一报文的源MAC地址相同。第四报文可以包括:报文头中的字段。第四报文的报文头中的字段可以包括第四报文的源MAC地址以及第四报文的目的MAC地址。第四报文可以为以太网帧。
S2c02,开放流交换机在第二流表中查找与第四报文的目的MAC地址匹配的流表项,并查找到所述添加了第一动作的索引的第一流表项。
举例来说,在图2(b)所示的S2b03之后,即开放流交换机将第一动作的索引添加到第一流表项中之后,开放流交换机第二流表中查找是否存在与所述第四报文的目的MAC地址匹配的流表项,并查找到第一流表项。
S2c03,开放流交换机对所述第四报文执行所述第一动作的索引对应的所述第一动作。
举例来说,在执行图2(b)所示的S2b03:开放流交换机将第一动作的索引添加到第一流表项中之后,开放流交换机对所述第四报文执行所述第一动作的索引对应的所述第一动作。举例来说,第一动作包括:通过所述第一端口转发目的MAC地址与所述添加了所述第一动作的索引的第一流表项中的所述第一MAC地址匹配的报文。
可选的,开放流交换机将第一动作的索引添加到第一流表项中之后,开放流交换机接收到新的报文,新的报文的目的MAC地址为所述第一MAC地址,开放流交换机确定所述新的报文中的目的MAC地址与所述添加了所述第一动作的索引的第一流表项匹配,进而开放流交换机可通过所述第一端口转发所述新的报文。
可选的,在S2c02之前,图2(c)所示的方法还可以包括:
所述开放流交换机确定所述第二流表项中的所述第一MAC地址与所述第四报文的源MAC地址匹配,所述开放流交换机避免通过控制通道向控制服务器发送第五消息,所述第五消息包含所述第四报文的报头中的字段。
可选的,如果执行如图1所示S103~S103以及如图2(b)所示S2b01~S2b03,在S103到S2b03之间的时间内,开放流交换机接收到多个源MAC地址为第一源MAC地址的报文,开放流交换机避免向所述控制服务器发送所述第一消息,从而有效减少了控制通道的占用带宽。
上述技术方案中,开放流交换机接收到源MAC地址为第一MAC地址的第一报文后,生成包括第一MAC地址的所述第一流表项。开放流交换机接收到源MAC地址为第一MAC地址的第二报文后,确定第二报文的源MAC地址与所述第一流表项中的所述第一MAC地址匹配。开放流交换机接收到目的MAC地址为第一MAC地址的第三报文后,确定第一流表项与第三报文的目的MAC地址匹配,又第一流表中包含预设值时,将第三报文与预设的流表匹配,或将第三报文转发至预设的出接口,或将第三报文丢弃,或保存第三报文。开放流交换机接收到目的MAC地址为第一MAC地址的第四报文后,确定第一流表项与第四报文的目的MAC地址匹配,又第一流表中已添加第一动作索引,则对第四报文执行第一动作的索引对应的第一动作。实施本发明实施例,开放流交换机接收到多个源MAC地址为第一源MAC地址的报文后,可避免向所述控制服务器发送所述第一消息,减少对控制通道的带宽的占用。
下面将结合附图3,对本发明实施例提供的开放流交换机进行详细介绍。需要说明的是,附图3所示的开放流交换机,可以用于执行图1-图2所示的方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图2所示的方法。
请参见图3,为本发明实施例提供的一种开放流交换机的结构示意图,该开放流交换机可包括:
第一接收单元301,用于接收第一报文,所述第一报文的源MAC地址为第一MAC地址。
举例来说,第一接收单元301接收第一报文具体可以为:通过第一端口接收所述第一报文,其中,第一报文可以包括:报文头中的字段,第一报文的报文头中的字段可以包括第一报文的源MAC地址等,第一报文可以为以太网帧。
第一确定单元302,用于在第一流表中查找与所述第一接收单元301接收的所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项。
举例来说,第一确定单元302如果在第一流表中没有查找与所述第一接收单元301接收的第一报文的源MAC地址匹配的流表项,则确定第一流表中不存在与第一报文的源MAC地址匹配的流表项。解读第一报文,并提取第一报文头的字段或者第一报文中包括的其他信息组成第一报文key,同时读取流表的描述信息,得到该流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息,然后根据读取得到的流表信息组成第一流表Key,根据第一报文key查找流表,判断是否存在与第一报文key匹配的第一流表key,若不存在,则确定第一流表中不存在与第一报文的源MAC地址匹配的流表项。
第一添加单元303,用于构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表,所述第一流表项包括所述第一接收单元301接收的所述第一报文中的所述第一MAC地址。
举例来说,第一添加单元303根据第一报文的源MAC地址构造第一流表项,第一流表项可以包括预设值,其中,预设值可以为预设的执行动作索引,预设的执行动作索引可以为任意一个预设的无效值,以区别于控制服务器根据学习消息下发的表项插入消息,控制服务器根据表项插入消息进行MAC地址学习得到的执行动作索引值,预设的执行动作索引,例如数值0等。
可选的,第一流表项还可以包括:第一接口的标识、Vlan ID或第一报文的报文头中的字段等。第一添加单元303将所述构造的第一流表项添加到所述第一流表中,得到第二流表。
第二接收单元304,用于接收第二报文,所述第二报文的源MAC地址为所述第一MAC地址。
举例来说,第二报文的源MAC地址为所述第一MAC地址,即第二报文的源MAC地址与第一报文的源MAC地址相同。第二报文可以包括:报文头中的字段,第二报文的报文头中的字段可以包括第二报文的源MAC地址等,第二报文可以为以太网帧。
第二确定单元305,用于确定所述第一流表项中的所述第一MAC地址与所述第二接收单元304接收的所述第二报文的源MAC地址匹配,避免通过控制通道向控制服务器发送第一消息,所述第一消息包含所述第二报文的报文头中的字段。
举例来说,第二确定单元305在第一流表中查找与所述第二报文的源MAC地址匹配的流表项,查找到与第二报文的源MAC地址匹配的流表项为第一流表项,即第二确定单元305确定所述第一流表项中的所述第一MAC地址与所述第二报文的源MAC地址匹配,则避免通过控制通道向控制服务器发送第一消息,其中,第一消息为对第二报文进行封装得到的第一消息,第一消息可以包含所述第二报文的报头中的字段。
可选的,图3所示的开放流交换机还可以包括:
第三接收单元,用于接收第三报文,所述第三报文的目的MAC地址为所述第一MAC地址。
举例来说,第三报文的目的MAC地址为所述第一MAC地址,即第三报文的目的MAC地址与第一报文的源MAC地址相同。第三报文可以包括:报文头中的字段,第三报文的报文头中的字段源可以包括第三报文的MAC地址、第三报文的目的MAC地址等,第三报文可以为以太网帧。
第一查找单元,用于在所述第一添加单元303得到的所述第二流表中查找与所述第三接收单元接收的所述第三报文的目的MAC地址匹配的流表项,并查找到所述第一流表项。
举例来说,第一查找单元在第一添加单元得到的所述第二流表中查找是否存在与所述第三报文的目的MAC地址匹配的流表项,又所述第三报文的目的MAC地址为所述第一MAC地址,则查找到第一流表项。解读第三报文,并提取第三报文头的字段或者第三报文中包括的其他信息组成第三报文key,同时读取第二流表的描述信息,得到第二流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息,然后根据读取得到的流表信息组成第二流表Key,根据第三报文key查找第二流表,判断是否存在与第三报文key匹配的第二流表key,若存在,则确定第二流表中存在与第三报文的目的MAC地址匹配的流表项,即查找到第一流表项。
第三确定单元,用于确定所述第一查找单元查找到的所述第一流表项中包含预设值,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
举例来说,第一查找单元查找到的所述第一流表项中包含预设值,预设值为第一添加单元303构造的第一流表项中包含的预设值。第三确定单元确定第一流表项中包含预设值时,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
可选的,上述技术方案中,开放流交换机还可以包括:
发送单元,用于在所述第一确定单元302确定所述第一流表中没有包含所述流表项以后,通过所述控制通道向所述控制服务器发送第二消息,所述第二消息包含所述第一报文的报文头中的字段。
举例来说,发送单元通过控制通道向所述控制服务器发送第二消息,开放流交换机为对第一报文进行封装,得到第二消息。
可选的,第二消息还可以包括第一端口的标识。
第四接收单元,用于通过所述控制通道接收所述控制服务器发送的第三消息,所述第三消息包括第一动作的索引。
举例来说,第四接收单元接收开放流交换机发送的第二消息,并解析第二消息,解析得到需要学习的第一报文key,根据管理的流表资源和OpenFlow协议,生成对应的第三消息,即第一表项插入消息,第三消息包括第一动作的索引,将生成的第三消息发送给开放流交换机,第四接收单元通过控制通道接收控制服务器发送的第三消息。
第二添加单元,用于将所述第四接收单元接收的所述第三消息中的所述第一动作的索引添加到所述第一流表项中。
举例来说,对接收到的第三消息进行解析,解析出需要学习的报文key和action索引,得到第一动作的索引。具体的,根据解析第三消息得到的报文key在流表中查找是否存在与之匹配的源MAC,如果存在,则获取与第三消息匹配的流表项中的执行动作索引。如果不存在,则本机进行MAC地址的学习。
判断所述获取到的与所述第三消息匹配的流表项中的执行动作索引与预设值是否一致,若一致,第二添加单元将第一动作的索引添加到第一流表项中,即用解析得到的第一动作的索引替换所述预设值。其中,第一动作可以为转发第一报文、或丢弃第一报文、或修改第一报文、或通过计数器进行计数等。
可选的,上述技术方案中,开放流交换机还可以包括:
第五接收单元,用于在所述第二添加单元将所述第一动作的索引添加到所述第一流表项中以后,接收第四报文,所述第四报文的目的MAC地址为所述第一MAC地址。
举例来说,第四报文的目的MAC地址为所述第一MAC地址,即第四报文的目的MAC地址与第一报文的源MAC地址相同。第四报文可以包括:报文头中的字段,第四报文的报文头中的字段可以包括第四报文的源MAC地址、第四报文的目的MAC地址等,第四报文可以为以太网帧。
第二查找单元,用于在所述第二流表中查找与所述第五接收单元接收到的所述第四报文的目的MAC地址匹配的流表项,并查找到所述添加了所述第一动作的索引的第一流表项。
举例来说,添加单元303将第一动作的索引添加到第一流表项中之后,第二查找单元第二流表中查找是否存在与第五接收单元接收到的第四报文的目的MAC地址匹配的流表项,又所述第四报文的目的MAC地址为所述第一MAC地址,则查找到第一流表项。解读第四报文,并提取第四报文头的字段或者第三报文中包括的其他信息组成第三报文key,同时读取第二流表的描述信息,得到第二流表的查找方式、组Key的所有Key编码、表的属性、表的起始地址等流表信息,然后根据读取得到的流表信息组成第二流表Key,根据第四报文key查找第二流表,判断是否存在与第四报文key匹配的第二流表key,若存在,则确定第二流表中存在与第四报文的目的MAC地址匹配的流表项,即查找到第一流表项。
执行单元,用于对所述第四报文执行所述第二查找单元查找到的所述添加了所述第一动作的索引的第一流表项中的所述第一动作的索引对应的所述第一动作。
举例来说,第二添加单元将第一动作的索引添加到第一流表项中之后,执行单元对所述第四报文执行所述第一动作的索引对应的所述第一动作。其中,第一动作包括:通过所述第一端口转发目的MAC地址与所述添加了所述第一动作的索引的第一流表项中的所述第一MAC地址匹配的报文。可选的的,第二添加单元将第一动作的索引添加到第一流表项中之后,接收到新的报文,新的报文的目的MAC地址为所述第一MAC地址,确定所述新的报文中的目的MAC地址与所述添加了所述第一动作的索引的第一流表项匹配,进而可通过所述第一端口转发所述新的报文。
上述技术方案中,接收到源MAC地址为所述第一MAC地址的所述第一报文后,生成包括所述第一MAC地址的所述第一流表项。接收到源MAC地址为所述第一MAC地址的所述第二报文后,确定所述第二报文的源MAC地址与所述第一流表项中的所述第一MAC地址匹配。所述开放流交换机避免向所述控制服务器发送所述第一消息。减少了控制通道的占用带宽,减小了开放流交换机和控制服务器的功耗。
可选的,本发明实施例还提供的一种接收报文的系统,可以包括:上述的开放流交换机和控制服务器。
请参见图4,图4为本发明实施例提供的一种开放流交换机的结构示意图。其中,本实施例提供的开放流交换机可以用于执行图1-图2所示的方法。图4所示的开放流交换机可以是图1-图2所示的方法的执行主体。参见图4,本实施例提供的开放流交换机,包括:接收器41、发送器42、处理器43和存储器44,其中,存储器44中存储一组程序代码,且处理器43用于调用存储器44中存储的程序代码,其中:
接收器41,用于接收第一报文,所述第一报文的源MAC地址为第一MAC地址;
处理器43,用于在第一流表中查找与所述接收器41接收的所述第一报文的源MAC地址匹配的流表项,确定所述第一流表中没有包含所述流表项;
处理器43,还用于构造第一流表项,并将所述第一流表项添加到所述第一流表中,得到第二流表,所述第一流表项包括所述接收器41接收的所述第一报文中的所述第一MAC地址;
接收器41,还用于接收第二报文,所述第二报文的源MAC地址为所述第一MAC地址;
处理器43,还用于确定所述第一流表项中的所述第一MAC地址与所述接收器41接收的所述第二报文的源MAC地址匹配,避免通过控制通道向控制服务器发送第一消息,所述第一消息包含所述第二报文的报文头中的字段。
可选的,接收器41,还用于接收第三报文,所述第三报文的目的MAC地址为所述第一MAC地址;
处理器43,还用于在所述第二流表中查找与所述接收器41接收的所述第三报文的目的MAC地址匹配的流表项,并查找到所述第一流表项;
处理器43,还用于确定所述查找到的所述第一流表项中包含预设值,将所述第三报文与预设的流表匹配,或者将所述第三报文转发至预设的出接口,或者将所述第三报文丢弃,或者保存所述第三报文。
可选的,发送器42,用于在所述处理器43确定所述第一流表中没有包含所述流表项以后,通过所述控制通道向所述控制服务器发送第二消息,所述第二消息包含所述第一报文的报文头中的字段;
接收器41,还用于通过所述控制通道接收所述控制服务器发送的第三消息,所述第三消息包括第一动作的索引;
处理器43,还用于将所述接收器41接收的所述第三消息中的所述第一动作的索引添加到所述第一流表项中。
可选的,所述接收器41具体用于通过第一端口接收所述第一报文;
所述第二消息包括所述第一端口的标识;
所述第一动作包括:通过所述第一端口转发目的MAC地址能够与所述添加了所述第一动作的索引的第一流表项中的所述第一MAC地址匹配的报文。
可选的,接收器41,还用于在所述处理器43将所述第一动作的索引添加到所述第一流表项中以后,接收第四报文,所述第四报文的目的MAC地址为所述第一MAC地址;
处理器43,还用于在所述第二流表中查找与所述接收器41接收到的所述第四报文的目的MAC地址匹配的流表项,并查找到所述添加了所述第一动作的索引的第一流表项;
处理器43,还用于对所述第四报文执行所述添加了所述第一动作的索引的第一流表项中的所述第一动作的索引对应的所述第一动作。
处理器43可以是中央处理器(central processing unit,CPU)、专用集成电路(application-specific integrated circuit,ASIC)等。其中,本实施例中的开放流交换机可以包括总线45。接收器41、发送器42、处理器43以及存储器44之间可通过总线45连接并通信。其中,存储器44可以包括:随机存取存储器(randomaccess memory,RAM),只读存储器(read-only memory,ROM),磁盘等具有存储功能的实体。
本发明实施例中的开放流交换机,包括:接收器、发送器、处理器和存储器,接收器接收到源MAC地址为所述第一MAC地址的所述第一报文后,处理器生成包括所述第一MAC地址的所述第一流表项。接收器接收到源MAC地址为所述第一MAC地址的所述第二报文后,处理器确定所述第二报文的源MAC地址与所述第一流表项中的所述第一MAC地址匹配,处理器避免向所述控制服务器发送所述第一消息。接收器接收到多个源MAC地址为第一源MAC地址的报文后,处理器避免向所述控制服务器发送所述第一消息,减少对控制通道的带宽的占用,减小了开放流交换机和控制服务器的功耗。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。