发明内容
本发明实施例中提供了一种报文转发的方法、装置及网络设备,以解决现有技术中各个虚拟交换机的转发组件之间进行报文转发时导致系统资源浪费的技术问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面提供了一种报文转发的方法,所述方法应用于虚拟化场景中,包括:
接收入端口发送的报文;
查找端口映射表,得到所述入端口所属的虚拟设备;
在转发组件上按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;
查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳,所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用所述转发组件;
将所述处理后的所述报文通过所述出端口发送给所述下一跳。
在第一方面的第一种可能的实现方式中,在接收到所述报文后,查找端口映射表之前,所述方法还包括:
按照所述报文的识别信息查找快速转发表,如果没有查找到对应所述识别信息的快速转发表项,则建立与所述识别信息对应的快速转发表项;在所述对报文进行处理后,所述方法还包括:
将对所述报文的处理操作顺序记录在所述快速转发表项中,以及
在得到所述报文的转发路径信息时,将所述入端口记录在所述快速转发表项中,作为所述快速转发表项的入端口。
结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,当所述转发路径信息中的下一跳的入端口不属于共用所述转发组件的任何一个虚拟设备时,所述方法还包括,
将所述出端口和下一跳的入端口记录在对应所述识别信息的快速转发表项中,作为所述快速转发表项的出端口和下一跳的入端口。
在第一方面的第三种可能的实现方式,在接收到所述报文后,所述方法还包括:按照所述报文的识别信息查找快速转发表,如果查找到所述识别信息对应的完整快速转发表项,则按照所述完整快速转发表项中记录的处理操作和转发路径信息对所述报文进行处理和转发。
结合第一方面或第一方面第一种、第二种或第三种可能的实现方式,在第四种可能的实现方式中,在所述接收到所述报文之前,所述方法还包括:
与环境资源管理设备之间建立第一通道;
通过所述第一通道向环境资源管理设备获取所述虚拟设备的控制组件的配置信息;
根据所述配置信息,建立与所述虚拟设备之间的第二通道。
结合第一方面或第一方面第一种、第二种、第三种或第四种可能的实现方式,在第五种可能的实现方式中,所述第一通道和第二通道分别为不同的IRC通道。
结合第一方面或第一方面第一种、第二种、第三种、第四种或第五种可能的实现方式,在第六种可能的实现方式中,还包括:预先设定端口映射表,具体包括:
获取一个物理设备上的资源,所述资源包括多个端口;
在所述物理设备上创建至少两个虚拟设备,所述至少两个虚拟设备分别具有独立的控制组件;且所有虚拟设备共用一个转发组件;
为每个虚拟设备分配对应的端口,并将分配的所述端口分别通知给对应的虚拟设备;
建立每个虚拟设备与对应端口之间的对应关系,所述建立的各个对应关系称为端口映射表。
结合第一方面或第一方面第一种、第二种、第三种、第四种、第五种或第六种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:
在所述物理设备上创建新的虚拟设备;
为所述新的虚拟设备分配新的端口,并更新所述端口映射表。
结合第一方面或第一方面第一种、第二种、第三种、第四种、第五种、第六种或第七种可能的实现方式,在第八种可能的实现方式中,所述方法还包括:
在所述物理设备上撤销虚拟设备;
释放为撤销的所述虚拟设备分配的端口,并更新所述端口映射表。
第二方面提供了一种报文转发装置,应用于虚拟化场景中,包括:
入端口,用于接收报文;
转发组件,用于查找端口映射表,得到所述入端口所属的虚拟设备;按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳;所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用所述转发组件;将处理后的所述报文发送给所述出端口;
出端口,用于将所述转发组件发送的所述报文发送给所述下一跳的入端口。
在第二方面的第一种可能的实现方式中,所述转发组件包括:
接收单元,用于接收所述入端口发送的所述报文;
第一查找单元,用于按照接收所述报文的入端口查找端口映射表,得到所述入端口所属的虚拟设备;
处理单元,用于按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;
第二查找单元,用于查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳,所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用一个转发组件;
第一发送单元,用于将所述处理单元处理后所述报文发送给所述出端口。
结合第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述转发组件还包括:
第三查找单元,用于在所述接收单元接收所述入端口发送的报文时,按照所述报文的识别信息查找快速转发表;
建立单元,用于在所述第三查找单元没有查找到对应所述识别信息的快速转发表项时,建立所述识别信息的快速转发表项;
添加单元,用于将所述处理单元对报文进行处理的处理操作记录在所述快速转发表项中;及在第二查找单元查找到转发路径信息后,将所述报文对应的入端口记录在所述快速转发表项中,作为所述快速转发表项的入端口。
结合第二方面或第二方面第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述添加单元,还用于在所述转发路径信息中的下一跳的入端口不属于共用所述转发组件的任何一个虚拟设备时,将所述出端口和下一跳的入端口记录在所述报文对应的快速转发表项中,作为所述快速转发表项的出端口和下一跳的入端口。
结合第二方面或第二方面第一种可能的实现方式,在第四种可能的实现方式中,所述转发组件还包括:
第二发送单元,用于在所述第三查找单元查找到所述报文对应的快速转发表项时,按照所述快速转发表项中记录的处理操作和转发路径信息对所述报文进行处理和转发。
结合第二方面或第二方面第一种或第二种或第三种或第四种可能的实现方式,在第五种可能的实现方式中,所述转发组件还包括:
第一建立单元,用于在所述接收单元接收到所述入端口发送的报文之前,建立所述装置与环境资源管理设备之间的第一通道;
第一获取单元,用于通过所述第一通道向环境资源管理设备获取所述虚拟设备的控制组件的配置信息;
第二建立单元,用于根据所述配置信息,建立所述装置与所述虚拟设备的控制组件之间的第二通道。
结合第二方面或第二方面第一种或第二种或第三种或第四种可能的实现方式,在第六种可能的实现方式中,所述转发组件还包括:设定单元,用于预先设定端口映射表。
结合第二方面或第二方面第一种或第二种或第三种或第四种或第六种可能的实现方式,在第七种可能的实现方式中,所述设定单元包括:
获取一个物理设备上的资源,所述资源包括多个端口;
在所述物理设备上创建至少两个虚拟设备,每个虚拟交换机具有独立的控制组件;且所有虚拟设备共用一个转发组件;
为所述虚拟设备分配所述端口;
将所述第一分配单元分配的所述端口通知对应的虚拟设备;
建立每个虚拟设备与对应端口之间的对应关系,所述建立的各个对应关系称为端口映射表。
结合第二方面或第二方面第一种或第二种或第三种或第四种或第六种或第七种可能的实现方式,在第八种可能的实现方式中,所述转发组件还包括
第二创建单元,用于在所述物理设备上创建新的虚拟设备;
第二分配单元,还用于为所述新的虚拟设备分配新的端口信息,并更新所述端口映射表;
第二通知单元,用于将所述第二分配单元分配的所述新的端口信息通知新的虚拟设备。
结合第二方面或第二方面第一种或第二种或第三种或第四种或第六种或第七种可能的实现方式,在第九种可能的实现方式中,所述转发组件还包括:
撤销单元,用于在所述物理设备上撤销所述虚拟设备;
释放单元,用于释放为撤销的所述虚拟设备分配的端口信息,并更新所述端口映射表。
第三方面提供了一种网络设备,应用于虚拟化场景中,包括:
收发器,用于通过入端口接收报文;
处理器,用于查找端口映射表,得到所述入端口所属的虚拟设备;按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳;所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用一个转发组件;将处理后的所述报文发送给出端口;所述收发器;还用用于将所述报文通过出端口发送给所述下一跳。
由上述技术方案可知,本发明中多个虚拟设备共用一个转发组件,对于报文的处理和转发,都在该共用的转发组件上处理,减少现有的虚拟场景中,报文在各个虚拟设备对应的转发组件之间转发时的中间处理开销,节省了转发组件之间的系统资源。另外,由于减少了转发组件之间的转发,还提高了报文的转发效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例提供的一种报文转发的方法的流程图;该方法应用于多个虚拟设备共用一个转发组件,且各个虚拟设备分别具有独立的控制组件的场景中,所述方法包括:
步骤101:接收入端口发送的报文。
在该实施例中,如果终端A想将报文发送给终端B(即目的终端),终端A发送报文,如果该报文进入端口1(即入端口),该端口1将该文件转发给转发组件,即转发组件接收到发送给终端B的报文。
步骤102:查找端口映射表,得到所述入端口所属的虚拟设备。
其中,端口映射表包括各个端口与所属的虚拟设备之间的对应关系,比如,端口1、端口2、端口3和端口5对应虚拟设备1;端口4、端口6对应虚拟设备2,端口N和端口N+1对应虚拟设备N等。
在该步骤中,通过查找端口映射表,可以得到与所述入端口对应的虚拟设备,即所述端口所属的虚拟设备,也就是说,通过查找端口映射表,可以获知该报文要转发给哪个虚拟设备。其中所述虚拟设备可以是虚拟交换机、虚拟路由器或者虚拟防火墙等等,本实施例不作限制。
步骤103:在转发组件上按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文。
在该步骤中,转发组件按照所述虚拟设备(比如虚拟交换机)所具有的功能对该报文做一些功能性的处理,比如,网络地址转换(NAT,network address translation),代理(proxy)等,但并不限于此。
步骤104:查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳,所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用所述转发组件。
其中,所述转发表的表项为转发路径信息,每一条转发路径信息包括:入端口,出端口,以及下一跳。
步骤105:将所述处理后的所述报文通过所述出端口发送给所述下一跳。
在该步骤中,如果下一跳为目的终端,则转发组件不需要对该报文再进行处理。如果下一跳不是目的终端,而是共用所述转发组件的另一个虚拟设备,则所述转发组件对处理后的所述报文重复上述步骤,直至将处理后的所述报文发送给目的终端或者不使用所述转发组件的其他设备。
也就是说,在该步骤中,下一跳的入端口在接收到处理后的所述报文时,将报文转发给所述转发组件,所述转发组件重新执行上述步骤101至步骤106,即所述转发组件通过下一跳入端口接收到处理后的所述报文;查找所述端口映射表,得到所述下一跳入端口所属的虚拟设备(如果上述入端口所属的虚拟设备为虚拟设备1,而下一跳入端口所属的虚拟设备为虚拟设备2,所述虚拟设备1和虚拟设备2共用一个转发组件);按照所述虚拟设备2的处理操作对处理后的所述报文进行再次处理,得到再次处理后的报文;然后,查找所述虚拟设备2的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述下一跳入端口、与所述下一跳入端口对应的下一跳出端口及下下一跳;将再次处理后的所述报文通过所述下一跳出端口发送给所述下下一跳。
需要说明的,如果下下一跳对应的是目的终端,则将处理后的所述报文发送给所述目的终端,否则,继续重复上述步骤,直至将处理后的所述报文发送给目的终端。
本发明实施例中,由于多个虚拟设备共用一个转发组件,对于报文的处理和转发,都在该共用的转发组件上处理,减少现有的虚拟化场景中,报文在各个虚拟设备对应的转发组件之间转发时的中间处理开销,节省了转发组件之间的系统资源。另外,由于减少了转发组件之间的转发,还提高了报文的转发效率。
请参阅图2,图2为本发明实施例提供的另一种报文转发的方法的流程图,所述方法包括:
步骤201:转发组件通过入端口接收报文。
步骤202:转发组件查找快速转发表,如果没有查找到对应所述报文的识别信息的快速转发表项,则执行步骤203;如果查找到对应所述识别信息的快速转发表项,则执行步骤209。
对于一个报文在某一个物理设备(其上虚拟出了多个虚拟设备)中所要进行的各种处理操作,我们称为动作,比如,动作F1,动作F2,动作F3和动作Fn等。将所有处理操作的集合称为动作集,比如,虚拟设备1上的动作集A{F1,F2,F3};虚拟设备2上的动作集B{F4,F5,F6}。
对于每条数据流来说,当处理该数据流的首个报文的时候,接收到该报文的物理设备中的转发组件对物理设备中的每个虚拟设备的动作集进行记录,即,当一个报文从进入该物理设备到离开该物理设备,其所经历的所有虚拟设备都会有一个动作集被记录,我们把这些动作集进行汇总,形成一个动作总集T{A{F1,F2,F3},B{F4,F5,F6}};其中,A{F1,F2,F3},B{F4,F5,F6}为不同虚拟设备的动作集;并且将动作总集T添加到快速转发表中,以便于对该数据流的后续报文进行快速处理和转发,即当收到此数据流的后续报文时,只需查找快速转发表,如果查看到其所对应的T;就可以逐个完成T中各个动作F,从而完成快速转发过程。节约了中间不必要的报文处理,不但节省了系统资源,还提高了报文的转发效率。
在该步骤中,可以按照所述报文的识别信息查找所述快速转发表,如果所述报文的识别信息与快速转发表中记录的识别信息相同,则说明所述快速转发表的快速转发表项中记录了所述报文所属的数据流的转发行为,所述转发行为包括相同的转发路径和相同的业务处理。如果没有查找到对应的快速转发表项,则说明所述报文为其所属的数据流的首个报文,需要建立对应所述数据流的快速转发表项,以及在所述快速转发表项中记录所述报文的转发路径信息和业务处理信息。所述识别信息用于识别该报文所属的数据流,具体可以是该报文的识别信息,或者是报文中携带的流标识。
步骤203;转发组件建立与所述识别信息对应的快速转发表项;
其中,建立的过程就是在所述快速转发表中增加所述报文所属的数据流的快速转发表项。初始的时候,该快速转发表项中仅包括从所述报文中提取的识别信息以及所述接收报文的入端口,其动作集是空的。在所述转发组件对该报文进行处理的过程中,记录所述报文所经历的所有虚拟设备的动作集,形成所述报文的动作总集,并且将所述动作总集添加到所述快速转发表项。快速转发表中不存在所述标识信息对应的快速转发表项,说明所述报文为首次进入所述转发组件,且具有所述识别信息的报文,因此,所述入端口即为所述识别信息对应的快速转发表项的入端口。
步骤204:转发组件查找端口映射表,得到所述入端口所属的虚拟设备。
其中,所述端口映射表的内容主要包括物理设备上的各个端口与所属的虚拟设备之间的对应关系,比如,虚拟设备1包括端口1、端口2和端口5和端口6等,虚拟设备2包括的端口3、端口4、端口8等,虚拟交换机N包括端口N和端口N+1等。
其中,所述端口映射表是预先设置的,具体设置过程包括:获取一个物理设备上的资源,所述资源包括多个端口;在所述物理设备上创建至少两个虚拟设备,比如创建一个虚拟防火墙、一个虚拟路由器、第一虚拟交换机和第二虚拟交换机,每个虚拟设备具有独立的控制组件;且所述至少两个虚拟设备共用一个转发组件;为每个虚拟设备分配端口,并将端口分配信息分别通知给对应的虚拟设备;建立每个虚拟设备与其端口之间的对应关系,形成端口映射表。
在该实施例,也可以在物理设备上创建一个虚拟设备,该虚拟设备有独立的控制组件和转发组件,其它与划分有多个虚拟设备同,具体详见上述,在此不再赘述。
步骤205:转发组件按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;并在处理后,将对所述报文的处理操作顺序记录在所述快速转发表项中。
在该步骤中,转发组件按照虚拟设备的所具有的功能对该报文做一些功能性的处理,比如网络地址转换(NAT),proxy等。
步骤206:转发组件查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳。
在步骤205中对所述报文进行处理后,转发组件通过查找该虚拟设备的转发表,得到与接收所述报文的入端口对应的出端口,以及下一跳的入端口,然后,通过所述出端口将所述报文转发给下一跳的入端口,即执行步骤207。
当所述转发路径信息中的下一跳的入端口不属于共用所述转发组件的任何一个虚拟设备时,所述方法还包括,将所述出端口和下一跳的入端口记录在所述快速转发表项中,作为所述快速转发表项的出端口和下一跳端口。
步骤207:转发组件将处理后的所述报文通过所述出端口发送给所述下一跳。
步骤208:转发组件对处理后的报文重复上述步骤,即重复上述步骤201至步骤207,直至将所述处理后的报文发送给目的终端或不使用所述转发组件的其他设备。
在该步骤中,下一跳的入端口接收到所述报文后,将所述报文转发给所述转发组件,所述转发组件在接收到所述报文后,按照步骤202至步骤208进行类似的处理,直到将所述报文转发给目的终端或不使用所述转发组件的其他设备。此外,所述转发组件还在建立的所述快速转发表项中顺序记录各条虚拟设备对于所述报文的动作。
步骤209:确定所述快速转发表项是否为完整的快速转发表项,如果是,执行步骤210;如果不是,执行步骤204。
步骤210;按照所述快速转发表项中记录的处理操作和转发路径信息对所述报文进行处理和转发。
所述完整的快速转发表项,是指入端口、出端口及下一跳均不为空的快速转发表项。
该步骤中,如果快速转发组件通过快速转发表查找到对应的快速转发表项,也就是说,快速转发表中记录了该报文所属的数据流的转发行为,即记录了转发所述报文的转发路径及在转发过程中对所述报文的处理操作;此时,可以按照所述快速转发表项中的内容对所述报文进行相应的路径转发和业务处理,节省了查找对应的端口映射表和各个虚拟设备的转发表的系统资源。
本实施例中,转发组件在接收到报文时,先查找快速转发表,如果能查找到对应的完整的快速转发表项,则直接按照所述快速转发表项中的转发路径信息和业务处理操作对所述报文进行处理和转发;如果没有查找对应的快速转发表项,则在所述快速转发表中建立对应所述报文所属的数据流的快速转发表项,以便于在接收到所述报文所属的数据流的后续报文时,直接按照所述快速转发表项中记录的转发路径和业务处理过程进行相应的处理,不但节省了系统资源,还提高了转发效率。
可选的,在所述接收到发送给目的终端的报文之前,所述方法还可以包括:
转发组件与环境资源管理设备之间建立第一通道;通过所述第一通道向环境资源管理设备获取所述虚拟设备的控制组件的配置信息;然后,根据所述配置信息,建立与所述虚拟设备之间的第二通道。其中,所述第一通道和第二通道分别为不同的IRC(In TheRole Communication)通道。
也就是说,本发明实施例中,建立通道的过程是基于IRC协议来实现的。通常情况下,IRC在功能上分为两种类型的角色(本实施例中的角度定义为完成某一特定功能的子系统称为角色),一为环境资源管理设备(EVM)、一为转发组件(LCTL)和控制组件(CAP),具体如图3所示,图3为本发明实施例提供的一种角色间通信的结构示意图;其中,EVM是IRC通信的中枢管理者,其余角色之间的通信在EVM的帮助下建立和管理,但角色间通信过程无需经由IRC中转;每个角色由唯一的ID标识,比如定义,EVM的标识ID为RoleID1,CAP的标识ID为RoleID2,LCTL的标识ID为RoleID3等,但并不限于此。同一角色与不同角色的多条通道以IRC端口号来区分;在功能层面,角色之间的通道都是双工的。在该实施例中,每一个控制组件,转发组件,EVM等都可以称为角色,角色间的通信统一通过IRC协议来建立。
在该实施例中,EVM总是最先启动的一个角色,之后其他角色才能相继启动,比如先启动转发组件角色,也可以先启动控制面角色等。下面分别以先启动转发组件为例来说明,其过程具体包括:
1、在转发组件启动后,所述转发组件向EVM申请创建一个和EVM之间的IRC通信通道,此后,转发组件和EVM的通信都通过此IRC通信通道进行;然后,转发组件通过该IRC通信通道向EVM发送获取控制组件的配置文件,以及接收EVM反馈的所述配置文件,之后,转发组件根据所述配置信息可知,还需要向控制组件创建与控制组件之间的IRC通信通道;需要说明的,此时,如果控制组件还未启动,则IRC通信通道不会使能,直到控制组件启动后,IRC通信通道才能通信。
2、在控制组件启动以后,控制组件也向EVM创建一个IRC通信通道,此后,控制组件和EVM的通信都通过IRC通信通道进行,然后,控制组件通过该IRC通信通道向EVM获取转发组件的配置文件,以及根据所述配置文件得知,还需要创建一条和转发组件之间的IRC通信通道。
3、EVM使能控制组件和转发组件之间的IRC通信通道;
也就是说,在该实施例中,EVM能控制控制面面组件与转发组件之间的IRC通信通道,需要说明的是,上述所有IRC通信通道只传输控制和管理信息,比如,传输包括转发表的IRC报文等,但并不限于此。
4、当控制组件第一次向转发组件下发转发表信息,需要和转发组件通信时,控制组件通过已建立的通信通道向EVM发起建立IRC通道请求,希望能建立一条控制组件和转发组件之间的IRC通信通道;
5、EVM收到建立IRC通道请求后,建立控制组件和转发组件之间的IRC通信通道,并把通道ID返回给控制组件;
6、控制组件得到通道ID后,就知道了,与转发组件之间的IRC通信通道已建立,自己只需根据通道ID通过调用IRC接口,就可以把包括转发表信息的IRC报文下发给转发组件;
7、转发组件收到IRC报文,发现是转发组件下发的转发表信息,就建立此控制组件的转发表;
8、此后,当转发组件接收到属于此控制组件的报文时,就通过此转发表来进行转发;
9、控制组件和转发组件之间的IRC通信通道建立完毕后,此通道就一直存在了,下次通信直接利用此通道,无需再次申请创建该通到。从而提高了控制组件和转发组件信息的交互效率。
其中,在该实施例中,通过上述所有IRC通信通道进行IRC报文格式如图4所示,图4为本发明实施例中提供的一种IRC报文格式的示意图。
如图4所示,所述IRC报文中需要包括下述参数:目的角色ID(DstRoleId),目的角色端口号(DstPortNUM);所述源角色ID(SrcRoleId);所述源角色端口号(SrcPortNUM),这四个参数用来唯一标识一个角色间的IRC通信通道,这些在通道建立时,由EVM分配。
在图4中,AppNum表示通信报文中聚合了多少个应用传输参数app(ApplicationTransport Parameter)消息,所述TotalLength表示所有app消息的总长度,所述Reserv表示备用字段。
所述AppLength表示app消息长度;所述AppData表示app消息数据,所述AppType表示app消息类型,其中,所述消息类型可以包括:新建转发表、更新转发表、删除转发表等,通常情况下,还可以按需要增加其他类型,本实施例不作限制。
可选的,在上述所有实施例中,所述方法还可以包括:在所述物理设备上创建新的虚拟设备;为所述新的虚拟设备分配新的端口信息,并更新所述端口映射表。
可选的,在上述所有实施例中,在所述物理设备上撤销虚拟设备;释放为撤销的所述虚拟设备分配的端口信息,并更新所述端口映射表。
本实施例中,采用本实施例所述的技术方案,还可以在虚拟组网中任意的创建和撤销虚拟设备,以及为所创建的虚拟设备动态分配端口信息,以及在撤销虚拟设备后,释放撤销所述虚拟设备对应的端口。提高了控制组件和端口之间的动态调整。
基于上述方法的实现过程,本发明实施例还提供一种报文转发装置,其结构示意图如图5所示,包括入端口51,转发组件52和出端口52;其中,所述入端口51,用于接收报文;所述转发组件52,用于查找端口映射表,得到所述入端口所属的虚拟设备;按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳;所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用一个转发组件;将处理后的所述报文发送给出端口;所述出端口53,用于将所述转发组件发送的所述报文发送给所述下一跳的入端口。
可选的,所述转发组件包括:包括:接收单元521,第一查找单元522,处理单元523,第二查找单元524和第一发送单元525,其结构示意图如图6所示,图6为本发明实施例提供的一种报文转发装置的第二种结构示意图;其中,所述接收单元521,用于接收所述入端口发送的所述报文;所述第一查找单元522,用于按照接收所述报文的入端口查找端口映射表,得到所述入端口所属的虚拟设备;所述处理单元523,用于按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;所述第二查找单元524,用于查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳,所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用一个转发组件;所述第一发送单元525,用于将所述处理单元处理后所述报文发送给所述出端口。
本发明实施例中,虚拟组网技术中,对于报文的处理和转发,全部在该共用的转发组件上处理,减少虚拟组网中报文在各个转发组件的中间处理开销,节省了转发组件之间的系统资源,同时还提高了转发效率。
在上述图6实施例的基础上,所述装置还可以包括:第三查找单元71,建立单元72和添加单元73,其结构示意图如图7所示,图7为本发明实施例提供的一种转发组件的第三结构示意图;其中,所述第三查找单元71,用于在所述接收单元521接收所述入端口发送的报文时,按照所述报文的识别信息查找快速转发表;所述建立单元72,用于在所述第三查找单元71没有查找到对应所述识别信息的快速转发表项时,建立对应所述识别信息的快速转发表项;所述添加单元73,用于将接入所述报文的入端口以及所述处理单元523对报文进行处理的处理操作记录在所述标识信息对应的快速转发表项中。
可选的,所述添加单元,还用于在所述转发路径信息中的下一跳的入端口不属于共用所述转发组件的任何一个虚拟设备时,将所述出端口和下一跳的入端口记录在所述报文对应的快速转发表项中,作为所述快速转发表项的出端口和下一跳端口。
可选的,所述转发组件还可以包括:第二发送单元81,其结构示意图如图8所示,图8为本发明实施例提供的一种转发组件的第四种结构示意图;第二发送单元81,用于在所述第三查找单元71查找到所述报文对应的快速转发表项时,按照所述快速转发表项中记录的处理操作和转发路径信息对所述报文依次进行处理和转发。
可选的,所述转发组件还可以包括:第一建立单元,第一获取单元和第二建立单元,其中,所述第一建立单元,用于在所述接收单元所述入端口发送的的报文之前,建立所述装置与环境资源管理设备之间的第一通道;所述第一获取单元,用于通过所述第一通道向环境资源管理设备获取所述虚拟设备的控制组件的配置信息;所述第二建立单元,用于根据所述配置信息,建立所述装置与所述虚拟设备的控制组件之间的第二通道。
可选的,所述转发组件还可以包括:设定单元,用于预先设定端口映射表;其中,所述设定单元,具体用于获取一个物理设备上的资源,所述资源包括多个端口;在所述物理设备上创建至少两个虚拟设备,每个虚拟交换机具有独立的控制组件;且所有虚拟设备共用一个转发组件;为所述虚拟设备分配所述端口;将所述分配的所述端口通知对应的虚拟设备;建立每个虚拟设备与对应端口之间的对应关系,所述建立的各个对应关系称为端口映射表。
其中,所述设定单元具体包括:第二获取单元,第一创建单元,第一分配单元,第一通知单元和第三建立单元,其中,所述第二获取单元,用于获取一个物理设备上的资源,所述资源包括多个端口信息;所述第一创建单元,用于在所述物理设备上创建至少两个虚拟设备,每个虚拟交换机具有独立的控制组件;且所有虚拟设备共用一个转发组件;所述第一分配单元,用于为所述虚拟设备分配所述端口信息;所述第一通知单元,用于将所述第一分配单元分配的所述端口信息通知对应的虚拟设备;所述第三建立单元,用于建立所述虚拟设备与端口信息之间的对应关系,所述对应关系称为端口映射表。
可选的,所述转发组件还可以包括:第二创建单元,第二分配单元和第二通知单元,其中,所述第二创建单元,用于在所述物理设备上创建新的虚拟设备;所述第二分配单元,还用于为所述新的虚拟设备分配新的端口信息,并更新所述端口映射表;所述第二通知单元,用于将所述第二分配单元分配的所述新的端口信息通知新的虚拟设备。
所述转发组件还可以包括:撤销单元和释放单元,其中,所述撤销单元,用于在所述物理设备上撤销所述虚拟设备;所述释放单元,用于在所述撤销单元撤销所述虚拟设备时,释放为撤销的所述虚拟设备分配的端口信息,并更新所述端口映射表。
所述装置中各个单元的功能和作用的实现过程详见上述方法中对应的实现过程,具体详见上述,在此不再赘述。
本发明实施例还提供一种网络设备,所述网络设备应用于虚拟化场景中,网络设备包括:收发器91和处理器92,其结构示意图如图9所示,其中,所述收发器91,用于通过入端口接收报文;所述处理器92,用于查找端口映射表,得到所述入端口所属的虚拟设备;按照所述虚拟设备的处理操作对所述报文进行处理,得到处理后的报文;查找所述虚拟设备的转发表,得到所述报文的转发路径信息,所述转发路径信息包括:所述入端口、与所述入端口对应的出端口及下一跳;所述下一跳对应的虚拟设备与所述入端口所属的虚拟设备共用一个转发组件;将处理后的所述报文发送给出端口;所述收发器91;还用用于将所述报文通过出端口发送给所述下一跳。
其中,所述处理器包括上述的转发组件。
所述网络设备的功能和作用的实现过程详见上述方法中对应的实现过程,具体详见上述,在此不再赘述。
为了便于本领域技术人员的理解,下面以具体的应用实例来说明。
还请参阅图10,图10为本发明实施例提供的一种应用实例图,在该实施例中,将一个物理设备从逻辑上划分为5台虚拟设备,比如,包括一台虚拟防火墙、一台虚拟路由器和3台虚拟交换机(即虚拟交换机1、虚拟交换机2和虚拟交换机3),每个虚拟交换中存储对应的转发表,所述3台虚拟交换机共用一个转发组件,且每台虚拟交换机具有独立的控制组件,每台虚拟交换机已分配对应的端口以及中央处理器CPU,终端PC可以向对应的端口发送报文并与目的终端通信,具体如图所示。本实施例中,假设各个虚拟交换机的控制组件和转发组件以及EVM两两之间已建立对应的IRC通信通道。
在此基础上,本实施例以终端pc1想发送报文给终端pc9,且PC9为非子网的终端为例,但并不限于此,其他通信过程与该过程类似。具体包括:
1、pc1发送报文,如果所述报文为首包;
2、如果物理设备的端口port8收到了该报文,并将所述报文并交给转发组件;
3、转发组件按照报文的识别信息查找快速转发表,如果没有查找到对应的快速转发表项(即没发现关于此类报文的记录),则认为所述报文为首包;
其中,转发组件在接收到所述报文后,对所述报文进行去头处理,该处理需要消耗一定的系统资源;以及在转发组件转发所述报文时,在所述报文中添加对应的信息的操作。
4、转发组件新建一个快速转发表项,用于记录所述报文(首包)的整个转发处理操作;
5、转发组件查找端口映射表,获知所述port8属于虚拟交换机1,也就知道此报文是发送给虚拟交换机1的;
6、转发组件根据虚拟交换机1的所具有的功能对此报文做一些功能性的处理,比如nat,proxy等,以及将对所述报文所做的处理(动作)全部记录在新建的快速转发表项中;
7、转发组件查找虚拟交换机1的转发表,得知从port8进来的此类报文应该从port6转发出去,下一跳为port5,于是,转发组件将所述报文通过port6发送给port5,需要说明的,该步骤中的发送这个动作就涉及到报文头的添加,需要消耗资源的,此时,所述报文就离开了转发组件;
对于虚拟交换机1来说,其就完成了他对于报文的处理和转发过程,本实施例中,所述转发,就是一个端口进来,做些动作后,通过另一个端口出去,并发送给下一跳的端口。
8、此时,所述报文进入port5,所述port5将所述报文转交给所述转发组件;
9、所述转发组件通过所述报文的识别信息查找所述快速转发表,没有查找到对应的快速转发表项,却发现已有一个未完成的关于此类报文的快速转发表项,于是,会在此快速转发表项的基础上继续完善信息;即在所述快速转发表项中记录10、11和12中的处理和路径转发信息;
10、所述转发组件查找端口映射表,获知所述port5属于虚拟路由器,也就知道此报文是发送给虚拟路由器的;
11、转发组件根据虚拟路由器的所具有的功能对此报文做一些功能性的处理;
12、转发组件查找虚拟路由器的转发表,得知从port5进来的此类报文应该从port2转发出去,下一跳为port1,于是,转发组件将所述报文从port2发送给port1,所述报文就离开了转发组件;
13、所述报文进入port1,所述port1将所述报文转交给所述转发组件;
14、所述转发组件通过所述报文的识别信息查找所述快速转发表,没有查找到对应的快速转发表项,却发现已有一个未完成的关于此类报文的快速转发表项,于是,会在该快速转发表项的基础上继续完善信息;即在所述快速转发表项中记录15、16和17中的处理和路径转发信息;
15、所述转发组件查找端口映射表,获知所述port1属于虚拟防火墙,也就知道此报文是发送给虚拟防火墙的;
16、转发组件根据虚拟防火墙的所具有的功能对此报文做一些功能性的处理;
17、转发组件查找虚拟防火墙的转发表,得知从port1进来的此类报文应该从port0转发出去,下一跳为互联网,于是,转发组件将所述报文从port1发送给port0,所述报文就离开了转发组件,同时也离开了该物理设备,进入了互联网,之后,最终会将该报文转发给终端PC9。
也就是说,直到发现下一跳不在该物理设备中,即该报文要被转发到其他的网络中去,而不在公司内部的这个虚拟组网中了,如发送到互联网等,该应用实例中,最终出端口为port0,下一条为互联网,最后会见该报文转发给PC9。
18.当所述报文转发给所述互联网时,此时,所述报文对应的所述快速转发表项也已完善完毕,然后,将所述完善完毕的快速转发表项添加进快速转发表中,所述快速转发表项里面就记录了,从port8进来的此类报文,要在这个物理设备的虚拟组网内部所有虚拟设备所有动作,最终的出端口为port0,下一跳为互联网。
也就是说,此时首包处理完成,快速转发表项建立添加完毕;
19、此后,转发组件再接收到此类报文时,如果从快速转发表中查找对应的快速转发表项,转发组件根据快速转发表项,对所述报文做一系列的功能性处理(这样就省略了接收报文,发送报文等在各个虚拟设备间的传递所带来的资源消耗),最后,把报文从port0发送出去,下一条为互联网。
需要说明的是,本实施例中,用线将各个端口连接起来,只是为了说明两个端口直接是在机器内部被虚拟的链接起来,并不代表物理的网线连接。
此外,还如图8中的虚线所示,如果PC1想与PC3通信,其通信过程为:
1、pc1发送报文,如果所述报文为首包;
2、如果物理设备的端口port8收到了该报文,并将所述报文并交给转发组件;
3、转发组件按照报文的识别信息查找快速转发表,如果没有查找到对应的快速转发表项(即没发现关于此类报文的记录),则认为所述报文为首包;
其中,转发组件在接收到所述报文后,先对所述报文进行去头处理,该处理需要消耗一定的系统资源;之后,在进行查找快速转发表及其后续操作。
4、转发组件新建一个快速转发表项,用于记录所述报文(首包)的整个转发处理操作;
5、转发组件查找端口映射表,获知所述port8属于虚拟交换机1,也就知道此报文是发送给虚拟交换机1的;
6、转发组件根据虚拟交换机1的所具有的功能对此报文做一些功能性的处理,比如nat,proxy等,以及将对所述报文所做的处理(动作)全部记录在新建的快速转发表项中;
7、转发组件查找虚拟交换机1的转发表,得知从port8进来的此类报文应该从port6转发出去,下一跳为port12,于是,转发组件将所述报文通过port6发送给port12。需要说明的,该步骤中的发送这个动作就涉及到报文头的添加,需要消耗资源的,此时,所述报文就离开了转发组件;
8、所述转发组件通过所述报文的识别信息查找所述快速转发表,没有查找到对应的快速转发表项,却发现已有一个未完成的关于此类报文的快速转发表项,于是,会在此快速转发表项的基础上继续完善信息;即在所述快速转发表项中记录10、11和12中的处理和路径转发信息;
其中,所述转发组件收到所述报文后,先对所述报文进行去头处理后,以及在发送给下一跳之前,进行添加处理。
9、所述转发组件查找端口映射表,获知所述port12属于虚拟交换机2,也就知道此报文是发送给虚拟交换机2的;
10、转发组件根据虚拟交换机2的所具有的功能对此报文做一些功能性的处理;
11、转发组件查找虚拟交换机2的转发表,得知从port12进来的此类报文应该从port11转发出去,下一跳为pc3,于是,转发组件将所述报文通过port11发送给pc3,所述报文就离开了转发组件;
12.当所述报文转发给所述PC3时,此时,所述报文对应的所述快速转发表项也已完善完毕,然后,将所述完善完毕的快速转发表项添加进快速转发表中,所述快速转发表项里面就记录了,从port8进来的此类报文,要在这个物理设备的虚拟组网内部所有虚拟设备所有动作,最终的出端口为port11,下一跳为PC3。
13、此后,转发组件再接收到此类报文时,如果从快速转发表中查找对应的快速转发表项,转发组件根据快速转发表项,对所述报文做一系列的功能性处理(这样就省略了接收报文,发送报文等在各个虚拟设备间的传递所带来的资源消耗),最后,把报文从port11发送出去,下一条为PC3。
在本发明实施例中,终端可以为以下任意一种,可以是静态的,也可以是移动的,静止的终端具体可以包括为PC、移动台(mobile station)、用户单元(subscriber unit)或站台(station)等,移动的UE具体可以包括蜂窝电话(cellular phone)、个人数字助理(PDA,personal digital assistant)、无线调制解调器(modem),无线通信设备、手持设备(handheld)、膝上型电脑(laptop computer)、无绳电话(cordless phone)或无线本地环路(WLL,wireless local loop)台等,上述终端可以分布于整个无线网络中。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。