一种在虚拟设备间实现流量互通的方法和装置制造方法
【专利摘要】本发明公开了一种在虚拟设备间实现流量互通的方法和设备,技术方案为:为每个VD设置用于与其它VD互联的虚拟端口并将该虚拟端口配置成三层接口,利用该三层接口进行路由学习和虚拟端口的端口信息通告;当任一VD接收到需发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该其它VD的虚拟端口的IP地址和MAC地址,进而根据其它各VD通告的虚拟端口的端口信息确定该其它VD的虚拟端口的端口号,从而将报文发送到该虚拟端口,使得该其它VD可以转发报文至目的用户设备。本发明能够降低用户的组网成本。
【专利说明】一种在虚拟设备间实现流量互通的方法和装置
【技术领域】
[0001]本申请涉及通信【技术领域】,特别涉及一种在虚拟设备间实现流量互通的方法和装置。
【背景技术】
[0002]参见图1,图1是现有技术分布式交换路由系统的逻辑框图,包括四个转发芯片:PPU PP2、PP3、PP4,以及一个交换网,每个都有一个对应的交换网端口 fp和多个下属的用户端口 up,其中,PP1、PP2、PP3、PP4对应的交换网端口分别为fp 1、fp2、fp3、fp4,每个转发芯片上均有4个用户端口,用upl、up2、up3、up4表示。
[0003]在现有技术中,转发芯片负责报文的转发处理,根据转发流程分析出报文的目的转发芯片和目的端口,以及在报文到达目的芯片后负责把报文送到目的用户端口,而交换网是负责转发芯片间的逻辑连接,即根据转发芯片发送过来的报文中携带的目的转发芯片号转发报文至目的转发芯片。以图1为例,若有单播报文从PPl下的用户端口 UPl上来,需要转发到PP3下的用户端口 upl,那PPl把报文发送到交换网时会携带目的芯片号PP3,在交换网上,和PP3连接的交换网端口是fp3,交换网就会把报文发送到fp3,那么该单播报文就不会有被发送到PP2或PP4。
[0004]在分布式交换路由系统中,可以采用网络设备虚拟化。网络设备虚拟化可以把一台大的物理设备虚拟成多台小设备,也即虚拟设备(Virtual Device, VD)。各VD对于用户来说就像一台独立的小设备,有自己独立运行的路由进程、二三层协议、转发表项、接口、可以添加自己的用户、可以独自重启并读取自己的配置文件。各VD间的资源可以通过命令来进行分配管理,互不影响。即使VD占用的资源超过分配的资源限制时,也不能抢占其他的VD资源。
[0005]当在分布式交换路由系统中采用网络设备虚拟化后,各VD之间的流量互相隔离,各用户端口对其他VD是不可见的。因此,在需要实现VD间流量的互通时,现有技术通常通过光纤或网线等外部连线把VD连接起来。这样的实现技术,给用户使用带来不便,而且还增加了用户组网成本。
【发明内容】
[0006]有鉴于此,本发明的目的在于提供一种在虚拟设备间实现流量互通的方法,该方法能够降低用户的组网成本。
[0007]为了达到上述目的,本发明提供了一种在虚拟设备间实现流量互通的方法,应用于分布式交换路由系统,所述分布式交换路由系统包括多个转发芯片和一个交换网,所述分布式交换路由系统以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系,该方法包括:
[0008]为当前VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为当前VD对其它VD的三层接口,发布当前VD的路由信息并学习其它各VD发布的路由信息;并向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息;其中,所述端口信息包括虚拟端口的MAC地址和虚拟端口的端口号;
[0009]当前VD接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口 ;
[0010]当前VD在自身的虚拟端口接收到其它VD发来的报文时,在当前VD内将该报文转发至报文的目的用户设备。
[0011]本申请还提供了一种VD,应用于分布式交换路由系统,所述分布式交换路由系统包括多个转发芯片和一个交换网,所述分布式交换路由系统以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系,该VD包括:配置单元、路由学习单元、端口通告单元、转发单元;
[0012]所述配置单元,用于为本VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为本VD对其它VD的三层接口 ;
[0013]所述路由学习单元,用于在配置单元将本VD的虚拟端口配置为对其它VD的三层接口之后,发布本VD的路由信息并学习其它各VD发布的路由信息;
[0014]所述端口通告单元,用于在配置单元将本VD的虚拟端口配置为对其它VD的三层接口之后,向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息;其中,所述端口信息包括虚拟端口的MAC地址和虚拟端口的端口号;
[0015]所述转发单元,用于接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口 ;用于在本VD的虚拟端口接收到其它VD发来的报文,在本VD内将该报文转发至报文的目的用户设备。。
[0016]由上面的技术方案可知,本发明中,通过为分布式交换路由系统中的每个VD设置用于与其它各VD互联的虚拟端口并配置成三层接口,然后执行行路由信息的发布和接收、虚拟端口的端口信息的通告和接收;当某个VD接收到需发往其它VD下属的用户设备的报文时,通过查找路由表、ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,进而根据其它各VD通告的虚拟端口的端口信息确定相应的端口号,将报文发送到该端口号所代表的虚拟端口,使得报文的目的用户设备所属VD可以在自身的虚拟端口接收报文并在本VD内转发出去,从而不需要在VD之间增加光纤或网线等外部连线就可以实现VD间的流量互通,因此可以降低用户的组网成本。
【专利附图】
【附图说明】
[0017]图1是现有技术分布式交换路由系统的逻辑框图;
[0018]图2是本发明实施例在虚拟设备间实现流量互通的方法流程图;
[0019]图3是本发明实施例报文在VD间的转发路径示意图。
[0020]图4是本发明实施例提供的VD的结构示意图。【具体实施方式】
[0021]为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
[0022]本发明中,为了在分布式交换路由系统中的各虚拟设备之间实现流量互通,在分布式交换路由系统中以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系。
[0023]参见图2,图2是本发明实施例在虚拟设备间实现流量互通的方法流程图,主要包括以下步骤:
[0024]步骤201、为当前VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为当前VD对其它VD的三层接口,发布当前VD的路由信息并学习其它各VD发布的路由信息;并向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息。
[0025]为了实现VD间的流量互通,需要为每个VD设置用于与其它VD互联的虚拟端口,并将该虚拟端口设置为该VD对其它VD的三层接口,对于分布式交换路由系统中的任意两个VD来说,当其中一个VD需要发送报文到另一个VD时,需要先将报文发往另一个VD的虚拟端口,而另一个VD则在自身的虚拟端口接收该报文。
[0026]本实施例中,为各VD设置的虚拟端口是环回端口,用以使VD在虚拟端口接收到报文后,可以将报文环回回来并重新在该VD内处理和转发该报文。在实际应用中,分布式交换路由系统中的各转发芯片一般都内置有环回端口,可以直接为VD配置一个用作虚拟端口的环回端口,也可以利用VD中的转发芯片的环回端口进行虚拟端口设置,为此,为当前VD设置用于与其它VD互联的虚拟端口至少有以下三种可行方法:
[0027]第一种、无论当前VD的各转发芯片中是否内置有环回端口,均为当前VD重新配置一个环回端口,将重新配置的环回端口作为当前VD的虚拟端口。配置环回端口的方法为现有技术。
[0028]第二种、当前VD的部分或全部转发芯片内置有环回端口,只选择其中一个转发芯片的环回端口作为当前VD的虚拟端口 ;
[0029]第三种、当前VD的部分或全部转发芯片内置有环回端口,将内置有环回端口的所有转发芯片的环回端口配置成聚合端口,将该聚合端口作为当前VD的虚拟端口。
[0030]在为各VD设置虚拟端口之后,还需要将该VD的虚拟端口配置成对其它VD的三层接口,从而可以利用该三层接口进行路由信息发布和接收。另外,现有技术中,由于各VD之间实现了流量隔离,各VD的虚拟端口对其它VD来说是不可见的,为了实现流量互通,需要将各VD将自身的虚拟端口的端口信息通告给其它VD,以使该VD的虚拟端口能够为其它VD所见,其中,虚拟端口的端口信息包括虚拟端口的MAC地址和虚拟端口的端口号。路由信息发布以及虚拟端口的端口信息的通告的实现方法将在后续进行详细说明。
[0031]将当前VD的虚拟端口配置为对其它VD的三层接口可以采用两种方法,一种是将当前VD的虚拟端口配置成路由器端口,具体方法是为当前VD的虚拟端口分配IP地址;另一种是将当前VD的虚拟端口配置成交换机端口,具体方法是将当前VD的虚拟端口加入到当前VD对应的预设VLAN中,并为当前VD的虚拟端口分配基于该预设VLAN的IP地址。
[0032]在将当前VD的虚拟端口配置为对其它VD的三层接口之后,还需要为当前VD的虚拟端口配置MAC地址,以通过MAC地址来区分需发往不同VD的报文。[0033]步骤202、当前VD接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口。
[0034]本发明中,将各VD下属的用户端口连接(包括直接相连和间接相连)的用户设备称为该VD下属的用户设备,该VD下属的用户设备归属于该VD。
[0035]由于在步骤201中,当前VD已经执行了接收其它各VD发布的路由信息的操作,因此已经学习到其它各VD的路由信息并相应生成了路由表,因此在接收到需要发往其它VD下属的用户设备的报文时,可以通过查找路由表确定报文的下一跳IP地址,通过ARP学习确定该下一跳IP地址对应的MAC地址,其中,ARP学习的具体方法为:先查找ARP表确定是否存在该下一跳IP地址对应的ARP表项,如果存在,则确定该下一跳IP地址对应的MAC地址为查找到的ARP表项中的MAC地址,否则,向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文,如果接收到任一 VD返回的ARP响应报文,则确定ARP响应报文中的源MAC地址为该下一跳IP地址对应的MAC地址,并建立该下一跳IP地址对应的ARP表项。这里,报文的下一跳地址也即是报文的目的用户设备所属的VD的虚拟端口的IP地址,报文的下一跳IP地址对应的MAC地址也即是报文的目的用户设备所属的VD的虚拟端口的MAC地址。
[0036]由于在步骤201中,当前VD已经执行了接收其它各VD发布的路由信息的操作,本步骤中,当前VD确定了报文的下一跳IP地址和该下一跳IP地址对应的MAC地址后,可以根据该下一跳IP地址对应的MAC地址以及接收到的其它各VD的虚拟端口的端口信息确定报文的目的用户设备所属的VD的虚拟端口的端口号,从而,可以根据该下一跳IP地址、该下一跳IP地址对应的MAC地址,该MAC地址对应的端口号,将报文发送到报文的目的用户设备所属的VD的虚拟端口,具体地,可以将该下一跳IP地址对应的MAC地址封装为报文的目的MAC地址,然后发送到该目的MAC地址对应的端口号所代表的虚拟端口。
[0037]步骤203、当前VD在自身的虚拟端口接收到其它VD发来的报文时,在当前VD内将该报文转发至报文的目的用户设备。
[0038]当前VD在自身的虚拟端口接收到其它VD发来的报文,其目的用户设备是当前VD下属的用户设备,而且由于当前VD的虚拟端口是环回端口,可以将报文重新环回回来,因此,可以在报文环回回来之后重新对报文进行处理,将报文通过报文的目的用户设备对应的当前VD的用户端口转发,并最终到达报文的目的用户设备。
[0039]需要说明的是,图2所示本发明实施例中,步骤202和步骤203没有逻辑关系,不分先后顺序。
[0040]在现有实现中,分布式交换路由系统中各VD之间实现了流量隔离,各VD之间并不能进行信息交互。然而,由于分布式交换路由系统中的所有VD共用同一 CPU,本发明中,可以利用所有VD共用的CPU实现上述路由信息发布、虚拟端口的端口信息通告以及ARP请求报文及ARP响应报文的发送。为了便于叙述,下面将分布式交换路由系统中所有VD共用的CPU称为共享CPU。
[0041]因此,对于路由信息发布,发布当前VD的路由信息的方法具体可以为:当前VD利用与其它所有VD共用的CPU生成携带当前VD的路由信息的路由协议报文,以使其它各VD利用所述CPU获取该路由协议报文并学习该路由协议报文中携带的路由信息;其中,所述路由协议报文的源IP地址、源MAC地址分别为当前VD的虚拟端口的IP地址、MAC地址。这里,需要说明的是,在当前VD的虚拟端口被配置成交换机端口的情况下,发送的路由协议报文中可以携带当前VD对应的预设VLAN标签,也可以不携带当前VLAN对应的预设VLAN标签,由具体的交换机端口配置确定,当需要携带VLAN标签时,分布式交换路由系统中的各VD对应的预设VLAN相同,当不需要携带VLAN标签时,分布式交换路由系统中的各VD对应的预设VLAN可以相同,也可以不相同。
[0042]对于虚拟端口的端口信息通告,当前VD可以预先定义一种信息通告报文,通过该信息通告报文进行虚拟端口的端口信息通告。向其它各VD通告该虚拟端口的端口信息的方法具体为:将当前VD的虚拟端口信息设置为全局变量,或者,利用与其它所有VD共用的CPU生成携带当前VD的虚拟端口信息的信息通告报文,以使其它各VD利用所述CPU获取该信息通告报文并保存信息通告报文中携带的虚拟端口信息。实际上,虚拟端口通告也可以采用其它方法,例如将各VD的虚拟端口信息设置为全局变量,或者预先存储所有VD的虚拟端口信息到某一存储位置,各VD可以去该位置读取所有VD的虚拟端口信息。
[0043]图2所示本发明实施例中,ARP学习也需要利用分布式交换路由系统中所有VD共用的CPU实现。其中,对于ARP请求报文,当前VD其它各VD发送ARP请求报文的方法为:共享CPU作为当前VD的CPU生成ARP请求报文,以使共享CPU作为其它任一 VD的CPU可以获取该ARP请求报文并在该ARP请求报文中携带的目的IP地址是该其它VD的虚拟端口的IP地址时,生成源IP地址和源MAC地址分别为该其它VD的虚拟端口的IP地址和MAC地址的ARP响应报文。
[0044]当前VD也会接收到其它VD发送的ARP请求报文,当接收到其它VD发送的ARP请求报文时,如果ARP请求报文中的目的IP地址为当前VD的虚拟端口的IP地址,则会生成源IP地址和源MAC地址分别为当前VD的虚拟端口的IP地址和MAC地址的ARP响应报文,这样,共享CPU作为生成该ARP请求报文的VD可以获取当前VD生成的ARP响应报文,从而可以确定该ARP请求报文中的目的IP地址是当前VD的虚拟端口的IP地址,进而确定该ARP请求报文中的目的IP地址对应MAC地址是当前VD的虚拟端口的MAC地址。
[0045]下面以图1为例,对图2和图3所示本发明实施例进行举例说明。
[0046]假设PP1、PP3加入到VD1,PP2加入到VD2,PP4加入到VD3,其中,PPl下属的用户端口 upl连接有服务器I (IP地址为192.168.1.2/24),PP2下属的用户端口 up4连接有服务器 2(IP 地址为 192.168.2.2/24);VDl 的环回端口为 PPl_up4(IP 地址:172.16.0.1/24,MAC 地址:0000-0000-0000-0001), VD2 的环回端口为 PP2_upl (IP 地址:172.16.0.2/24,MAC 地址:0000-0000-0000-0002), VD3 的环回端口为 PP4_upl (IP 地址:172.16.0.3/24,MAC 地址:0000-0000-0000-0003)。
[0047]现假设服务器I需要发送报文到服务器2,则报文的转发流程如下:
[0048]UVDl在PPl-upl端口收到来自服务器I (服务器I是VDl下属的用户设备)的报文,报文的目的IP地址为192.168.2.2/24 ;
[0049]2、VDl查找经路由学习得到的路由表,确定报文的下一跳IP地址为172.16.0.2/24 ;
[0050]3,VDl查找172.16.0.2/24对应的ARP表项,如果没有查找到,则向VD2和VD3发送目的IP地址是172.16.0.2/24的ARP请求报文,VD2接收到该ARP请求后返回源IP地址为 172.16.0.2/24,源 MAC 地址为 0000-0000-0000-0002 的 ARP 响应报文;
[0051]4、VDl接收到VD2返回的ARP响应报文后,将接收到的来自服务器I的报文的目的MAC地址修改为0000-0000-0000-0002,源MAC地址修改为自身的环回端口的MAC地址,在确定172.16.0.2/24对应的MAC地址为0000-0000-0000-0002后,可以确定目的端口PP2-upl,转发芯片PPl可以直接将报文发送到PP2-upl ;
[0052]5、由于PP2_upl是环回端口,因此报文到达PP2_upl后会重新返回PP2,之后,VD2查找经路由学习得到的路由表确定需要将报文发送到PP2-up4。
[0053]至此,完成了报文跨VD的路由转发,报文在VD间的转发路径如图3所示。
[0054]以上对本发明实施例在虚拟设备间实现流量互通的方法进行了说明,本发明还提供了一种在虚拟设备间实现流量互通的设备,下面结合图4进行说明。
[0055]图4是本发明实施例提供的VD的结构示意图,该VD应用于分布式交换路由系统,所述分布式交换路由系统包括多个转发芯片和一个交换网,所述分布式交换路由系统以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系,该VD包括:配置单元401、路由学习单元402、端口通告单元403、转发单元404 ;其中,
[0056]配置单元401,用于为本VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为本VD对其它VD的三层接口 ;
[0057]路由学习单元402,用于在配置单元401将本VD的虚拟端口配置为对其它VD的三层接口之后,发布本VD的路由信息并学习其它各VD发布的路由信息;
[0058]端口通告单元403,用于在配置单元401将本VD的虚拟端口配置为对其它VD的三层接口之后,向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息;其中,所述端口信息包括虚拟端口的MAC地址和虚拟端口的端口号;
[0059]转发单元404,用于接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口 ;用于在本VD的虚拟端口接收到其它VD发来的报文,在本VD内将该报文转发至报文的目的用户设备。
[0060]上述VD中,所述虚拟端口为环回端口 ;
[0061]所述配置单元401在为本VD设置用于与其它VD互联的虚拟端口时,用于:为本VD设置一个环回端口并将该环回端口作为本VD的虚拟端口 ;或者,如果本VD的部分或全部转发芯片内置有环回端口,则选择其中一个转发芯片的环回端口作为本VD的虚拟端口 ;或者,如果本VD的部分或全部转发芯片内置有环回端口,则将各转发芯片的环回端口配置成聚合端口,将该聚合端口作为本VD的虚拟端口。
[0062]上述VD中,所述配置单元401在将该虚拟端口配置为本VD对其它VD的三层接口时,用于:将该虚拟端口配置成路由器端口,包括:为该虚拟端口分配IP地址;或者,将该虚拟端口配置成交换机端口,包括:将该虚拟端口加入到本VD对应的预设VLAN,并为该虚拟端口分配基于该预设VLAN的IP地址;
[0063]所述配置单元401在将该虚拟端口配置为本VD对其它VD的三层接口后,进一步用于:为该虚拟端口配置MAC地址;[0064]所述路由学习单元402,在发布本VD的路由信息时,用于:利用本VD与其它所有VD共用的CPU生成携带本VD的路由信息的路由协议报文,以使其它各VD利用所述CPU获取该路由协议报文并学习该路由协议报文中携带的路由信息;其中,所述路由协议报文的源IP地址、源MAC地址分别为本VD的虚拟端口的IP地址、MAC地址;
[0065]所述端口通告单元403在向其它各VD通告该虚拟端口的端口信息时,用于:将本VD的虚拟端口信息设置为全局变量,或者,利用本VD与其它所有VD共用的CPU生成携带本VD的虚拟端口信息的信息通告报文,以使其它各VD利用所述CPU获取该信息通告报文并保存信息通告报文中携带的虚拟端口信息。
[0066]上述VD中,所述转发单元404在通过查找路由表以及ARP学习确定报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址时,用于:查找路由表确定报文的下一跳IP地址,查找该下一跳IP地址对应的ARP表项,如果查找到,则确定该下一跳IP地址对应的MAC地址为查找到的ARP表项中的MAC地址,否则,向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文,如果接收到任一 VD返回的ARP响应报文,则确定ARP响应报文中的源MAC地址为该下一跳IP地址对应的MAC地址,并建立该下一跳IP地址对应的ARP表项;将报文的下一跳IP地址和该下一跳IP地址对应的MAC地址确定为报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址。
[0067]所述转发单元404,进一步用于:接收其它VD发送的ARP请求报文,如果ARP请求报文中的目的IP地址为本VD的虚拟端口的IP地址,则返回源IP地址和源MAC地址分别为本VD的虚拟端口的IP地址和MAC地址的ARP响应报文。
[0068]上述VD中,所述转发单元404在向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文时,用于:利用本VD与其它所有VD共用的CPU生成目的IP地址为该下一跳IP地址的ARP请求报文,以使其它各VD利用所述CPU获取该ARP请求报文并在该ARP请求报文的目的IP地址是该其它VD的虚拟端口的IP地址时生成源IP地址和源MAC地址分别为该其它VD的虚拟端口的IP地址和MAC地址的ARP响应报文;
[0069]所述转发单元404接收到目的IP地址为本VD的虚拟端口的IP地址的ARP请求报文后,返回源IP地址、源MAC地址分别为本VD的虚拟端口的IP地址和MAC地址的ARP响应报文时,用于:利用本VD与其它所有VD共用的CPU生成源IP地址、源MAC地址分别为本VD的虚拟端口的IP地址和MAC地址的ARP响应报文,以使发送该ARP请求报文的VD利用所述CPU获取该ARP响应报文并确定该ARP请求报文的目的IP地址对应的MAC地址是该ARP响应报文中的源MAC地址。
[0070]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种在虚拟设备VD间实现流量互通的方法,应用于分布式交换路由系统,所述分布式交换路由系统包括多个转发芯片和一个交换网,所述分布式交换路由系统以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系,其特征在于,该方法包括: 为当前VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为当前VD对其它VD的三层接口,发布当前VD的路由信息并学习其它各VD发布的路由信息;并向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息;其中,所述端口信息包括虚拟端口的MAC地址和虚拟端口的端口号; 当前VD接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口 ; 当前VD在自身的虚拟端口接收到其它VD发来的报文时,在当前VD内将该报文转发至报文的目的用户设备。
2.根据权利要求1所述的在VD间实现流量互通的方法,其特征在于, 所述虚拟端口为环回端口; 所述为当前VD设置用于与其它VD互联的虚拟端口的方法为:为当前VD设置一个环回端口并将该环回端口作为当前VD的虚拟端口 ;或者,如果当前VD的部分或全部转发芯片内置有环回端口,则选择其中一个转发芯片的环回端口作为当前VD的虚拟端口 ;或者,如果当前VD的部分或全部转发芯片内置有环回端口,则将各转发芯片的环回端口配置成聚合端口,将该聚合端口作为当前VD的虚拟端口。
3.根据权利要求2所述的在VD间实现流量互通的方法,其特征在于, 所述将该虚拟端口配置为当前VD对其它VD的三层接口的方法为: 将该虚拟端口配置成路由器端口,包括:为该虚拟端口分配IP地址; 或者,将该虚拟端口配置成交换机端口,包括:将该虚拟端口加入到当前VD对应的预设VLAN,并为该虚拟端口分配基于该预设VLAN的IP地址; 所述将该虚拟端口配置为当前VD对其它VD的三层接口后,进一步包括:为该虚拟端口配置MAC地址; 所述发布当前VD的路由信息的方法为:当前VD利用与其它所有VD共用的CPU生成携带当前VD的路由信息的路由协议报文,以使其它各VD利用所述CPU获取该路由协议报文并学习该路由协议报文中携带的路由信息;其中,所述路由协议报文的源IP地址、源MAC地址分别为当前VD的虚拟端口的IP地址、MAC地址; 所述向其它各VD通告该虚拟端口的端口信息的方法为:将当前VD的虚拟端口信息设置为全局变量,或者,利用与其它所有VD共用的CPU生成携带当前VD的虚拟端口信息的信息通告报文,以使其它各VD利用所述CPU获取该信息通告报文并保存信息通告报文中携带的虚拟端口信息。
4.根据权利要求3所述的在VD间实现流量互通的方法,其特征在于, 通过查找路由表以及ARP学习确定报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址的方法为:查找路由表确定报文的下一跳IP地址,查找该下一跳IP地址对应的ARP表项,如果查找到,则确定该下一跳IP地址对应的MAC地址为查找到的ARP表项中的MAC地址,否则,向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文,如果接收到任一 VD返回的ARP响应报文,则确定ARP响应报文中的源MAC地址为该下一跳IP地址对应的MAC地址,并建立该下一跳IP地址对应的ARP表项;将报文的下一跳IP地址和该下一跳IP地址对应的MAC地址确定为报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址。 该方法进一步包括:当前VD接收到其它VD发送的ARP请求报文时,如果ARP请求报文中的目的IP地址为当前VD的虚拟端口的IP地址,则返回源IP地址和源MAC地址分别为当前VD的虚拟端口的IP地址和MAC地址的ARP响应报文。
5.根据权利要求4所述的在VD间实现流量互通的方法,其特征在于, 所述向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文的方法为:当前VD利用与其它所有VD共用的CPU生成目的IP地址为该下一跳IP地址的ARP请求报文,以使其它各VD利用所述CPU获取该ARP请求报文并在该ARP请求报文的目的IP地址是该其它VD的虚拟端口的IP地址时生成源IP地址和源MAC地址分别为该其它VD的虚拟端口的IP地址和MAC地址的ARP响应报文; 当前VD接收到目的IP地址为当前VD的虚拟端口的IP地址的ARP请求报文后,返回源IP地址、源MAC地址分别为当前VD的虚拟端口的IP地址和MAC地址的ARP响应报文的方法为:当前VD利用与其它所有VD共用的CPU生成源IP地址、源MAC地址分别为当前VD的虚拟端口的IP地址和MAC地址的ARP响应报文,以使发送该ARP请求报文的VD利用所述CPU获取该ARP响应报文并确定该ARP请求报文的目的IP地址对应的MAC地址是该ARP响应报文中的源MAC地址。
6.一种虚拟设备VD,应用于分布式交换路由系统,所述分布式交换路由系统包括多个转发芯片和一个交换网,所述分布式交换路由系统以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD 的对应关系,其特征在于,该VD包括:配置单元、路由学习单元、端口通告单元、转发单元; 所述配置单元,用于为本VD设置用于与其它VD互联的虚拟端口,将该虚拟端口配置为本VD对其它VD的三层接口 ; 所述路由学习单元,用于在配置单元将本VD的虚拟端口配置为对其它VD的三层接口之后,发布本VD的路由信息并学习其它各VD发布的路由信息; 所述端口通告单元,用于在配置单元将本VD的虚拟端口配置为对其它VD的三层接口之后,向其它各VD通告该虚拟端口的端口信息和接收其它各VD通告的虚拟端口的端口信息;其中,所述端口信息包括虚拟端口的MAC地址和虚拟端口的端口号; 所述转发单元,用于接收需要发往其它VD下属的用户设备的报文时,通过查找路由表以及ARP学习确定该用户设备所属VD的虚拟端口的IP地址和MAC地址,并根据接收到其它各VD通告的虚拟端口的端口信息确定该用户设备所属VD的虚拟端口的端口号,根据IP地址、MAC地址和端口号,将该报文发往该用户设备所属VD的虚拟端口 ;用于在本VD的虚拟端口接收到其它VD发来的报文,在本VD内将该报文转发至报文的目的用户设备。
7.根据权利要求6所述的VD,其特征在于, 所述虚拟端口为环回端口;所述配置单元在为本VD设置用于与其它VD互联的虚拟端口时,用于:为本VD设置一个环回端口并将该环回端口作为本VD的虚拟端口 ;或者,如果本VD的部分或全部转发芯片内置有环回端口,则选择其中一个转发芯片的环回端口作为本VD的虚拟端口;或者,如果本VD的部分或全部转发芯片内置有环回端口,则将各转发芯片的环回端口配置成聚合端口,将该聚合端口作为本VD的虚拟端口。
8.根据权利要求7所述的VD,其特征在于, 所述配置单元在将该虚拟端口配置为本VD对其它VD的三层接口时,用于: 将该虚拟端口配置成路由器端口,包括:为该虚拟端口分配IP地址; 或者,将该虚拟端口配置成交换机端口,包括:将该虚拟端口加入到本VD对应的预设VLAN,并为该虚拟端口分配基于该预设VLAN的IP地址; 所述配置单元在将该虚拟端口配置为本VD对其它VD的三层接口后,进一步用于:为该虚拟端口配置MAC地址; 所述路由学习单元,在发布本VD的路由信息时,用于:利用本VD与其它所有VD共用的CPU生成携带本VD的路由信息的路由协议报文,以使其它各VD利用所述CPU获取该路由协议报文并学习该路由协议报文中携带的路由信息;其中,所述路由协议报文的源IP地址、源MAC地址分别为本VD的虚拟端口的IP地址、MAC地址;` 所述端口通告单元在向其它各VD通告该虚拟端口的端口信息时,用于:将本VD的虚拟端口信息设置为全局变量,或者,利用本VD与其它所有VD共用的CPU生成携带本VD的虚拟端口信息的信息通告报文,以使其它各VD利用所述CPU获取该信息通告报文并保存信息通告报文中携带的虚拟端口信息。
9.根据权利要求8所述的VD,其特征在于, 所述转发单元在通过查找路由表以及ARP学习确定报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址时,用于:查找路由表确定报文的下一跳IP地址,查找该下一跳IP地址对应的ARP表项,如果查找到,则确定该下一跳IP地址对应的MAC地址为查找到的ARP表项中的MAC地址,否则,向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文,如果接收到任一 VD返回的ARP响应报文,则确定ARP响应报文中的源MAC地址为该下一跳IP地址对应的MAC地址,并建立该下一跳IP地址对应的ARP表项;将报文的下一跳IP地址和该下一跳IP地址对应的MAC地址确定为报文的目的用户设备所属VD的虚拟端口的IP地址和MAC地址。 所述转发单元,进一步用于:接收其它VD发送的ARP请求报文,如果ARP请求报文中的目的IP地址为本VD的虚拟端口的IP地址,则返回源IP地址和源MAC地址分别为本VD的虚拟端口的IP地址和MAC地址的ARP响应报文。
10.根据权利要求9所述的VD,其特征在于, 所述转发单元在向其它各VD发送目的IP地址为该下一跳IP地址的ARP请求报文时,用于:利用本VD与其它所有VD共用的CPU生成目的IP地址为该下一跳IP地址的ARP请求报文,以使其它各VD利用所述CPU获取该ARP请求报文并在该ARP请求报文的目的IP地址是该其它VD的虚拟端口的IP地址时生成源IP地址和源MAC地址分别为该其它VD的虚拟端口的IP地址和MAC地址的ARP响应报文;所述转发单元接收到目的IP地址为本VD的虚拟端口的IP地址的ARP请求报文后,返回源IP地址、源MAC地址分别为本VD的虚拟端口的 IP地址和MAC地址的ARP响应报文时,用于:利用本VD与其它所有VD共用的CPU生成源IP地址、源MAC地址分别为本VD的虚拟端口的IP地址和MAC地址的ARP响应报文,以使发送该ARP请求报文的VD利用所述CPU获取该ARP响应报文并确定该ARP请求报文的目的IP地址对应的MAC地址是该ARP响应报文中的源MAC地址。
【文档编号】H04L12/701GK103795623SQ201210419267
【公开日】2014年5月14日 申请日期:2012年10月26日 优先权日:2012年10月26日
【发明者】郑国良, 管树发 申请人:杭州华三通信技术有限公司