【技术实现步骤摘要】
一种在交换机上实现虚拟设备的方法和装置
本申请涉及通信
,特别涉及一种在交换机上实现虚拟设备(VirtualDevice,VD)的方法和装置。
技术介绍
网络设备虚拟化可以把一台大的物理设备虚拟成多台小设备,也即虚拟设备。各VD对于用户来说就像一台独立的小设备,有自己独立运行的路由进程、二三层协议、转发表项、接口、可以添加自己的用户、可以独自重启并读取自己的配置文件。各VD间的资源可以通过命令来进行分配管理,互不影响,当VD占用的资源超过分配的资源限制时,将不能抢占其他的VD资源。设备支持VD功能后,整台物理设备就是一个VD,称为缺省VD,当用户登录物理设备时,实际登录的就是缺省VD。用户在物理设备上的配置实质就是对缺省VD的配置。缺省VD的编号为1,不需要创建,不能被删除。与缺省VD相对应的是非缺省VD,即在该物理设备上新创建的VD。产品要支持VD特性,需要在同一块单板上同时下发多个VD的配置,并同时生效;具体的,从不同端口进入的报文,根据端口所在VD,去匹配该VD的配置和转发表项进行处理。对于路由器产品,一般通过CPU、NP等实现报文转发,可以通过软件方式灵活设置,各VD的不同配置可以在同一块单板上共存,不会有冲突。而绝大多数的交换机由于受芯片制约,不同VD的配置可能是冲突的,例如L2_entry,Fib等,不能做到冲突的表项同时下发、分别匹配。为了解决不同VD的配置冲突问题,交换机通常按照芯片来划分VD端口,规定同一芯片的所有外部端口只属于一个VD,这个VD成为有效VD时,在此芯片上只下发和这个VD相关的配置和转发表项,可以解决不同VD之间可能 ...
【技术保护点】
一种在交换机上实现虚拟设备VD的方法,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;其特征在于,该方法包括:根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表;当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;当前VD在自身的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD,如果是,则从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,从滤除后剩下的出端口转发报文。
【技术特征摘要】
1.一种在交换机上实现虚拟设备VD的方法,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;其特征在于,该方法包括:根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表;当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口,对属于该转发芯片的外部端口的每个出端口,从该出端口转发报文;对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文;当前VD在自身的任一转发芯片的内部端口接收到携带源端口的报文时,确定报文的出端口,根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD,如果是,则从确定的出端口转发报文,否则,滤除报文的出端口中属于该转发芯片的外部端口,从滤除后剩下的出端口转发报文;其中,转发芯片的外部端口为转发芯片上的用于连接该转发芯片所在交换机以外的网络设备的端口;转发芯片的内部端口为转发芯片上用于连接该转发芯片所在的交换机中的其它转发芯片的端口。2.根据权利要求1所述的在交换机上实现VD的方法,其特征在于,所述对不属于该转发芯片的外部端口的每个出端口,将接收报文的端口作为报文的源端口携带在报文中并通过该转发芯片的内部端口转发报文的方法为:如果该出端口为该转发芯片的内部端口,则将接收报文的端口作为报文的源端口携带在报文中并从该出端口转发报文;如果该出端口是其它转发芯片的外部端口,则将接收报文的端口、该出端口、该出端口所在转发芯片分别作为报文的源端口、目的出端口、目的转发芯片携带在报文中,并查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文;所述从滤除后剩下的出端口转发报文的方法为:针对滤除后剩下的每个出端口,如果该出端口是该转发芯片的内部端口,则从该出端口转发报文,如果该出端口是其它转发芯片的外部端口,则查找转发芯片映射表确定报文的目的转发芯片对应的内部端口,从确定的内部端口转发报文。3.根据权利要求2所述的在交换机上实现VD的方法,其特征在于,所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表时,进一步将该转发芯片的每个内部端口加入到所述交换机中所有VD的VLAN中,并将该内部端口加入到所有组播组对应的组播表项的出端口列表中;当前VD在自身的任一转发芯片的外部端口接收到报文时,确定报文的出端口的方法为:如果报文是单播报文,则查找MAC转发表确定报文的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的所有出端口,对于根据MAC转发表未能确定出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的所有出端口;当前VD在自身的任一转发芯片的内部端口接收到报文时,确定报文的出端口的方法为:如果报文是单播报文且携带目的出端口,则确定报文的出端口为该目的出端口,如果报文是组播报文,则查找报文所属组播组对应的组播表项的出接口列表确定报文的所有出端口,对于未携带目的出端口的单播报文、根据组播表项的出接口列表未能确定出端口的组播报文以及广播报文,则查找VLAN广播表确定报文的所有出端口。4.根据权利要求1所述的在交换机上实现VD的方法,其特征在于,当前VD在任一转发芯片的内部端口接收到报文并确定报文属于当前VD之后,进一步包括:学习该报文的源MAC地址到报文的源端口;当前VD在任一转发芯片的内部端口接收到报文并确定报文不属于当前VD之后,进一步包括:禁止对该报文进行MAC地址学习。5.根据权利要求2-4任一权项所述的在交换机上实现VD的方法,其特征在于,该方法进一步包括:当前VD在自身的任一转发芯片的CPU端口接收到广播协议报文时,查找VLAN广播表确定报文的所有出端口,针对每个出端口,如果该出端口是该转发芯片的外部端口,则从该出端口转发广播协议报文,如果该出端口是该转发芯片的内部端口,则将预先为当前VD分配的CPU源端口作为广播协议报文的源端口携带在广播协议报文,并从该出端口转发广播协议报文;当前VD在自身的任一转发芯片的内部端口接收到携带源端口的广播协议报文时,查找VLAN广播表确定广播协议报文的所有出端口,根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD,如果是,则从所有出端口转发广播协议报文,否则,将所有出端口中属于该转发芯片的外部端口过滤,从过滤后的所有出端口转发广播协议报文。6.根据权利要求5所述的在交换机上实现VD的方法,其特征在于,所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表的方法为:将不属于当前VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为除当前VD外其它每个VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表;所述根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文不属于当前VD,否则,确定报文属于当前VD;所述根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文不属于当前VD,否则,确定广播协议报文属于当前VD;或者,所述根据转发芯片和VD的对应关系为当前VD中每个转发芯片配置用于隔离非当前VD的报文的二层隔离表的方法为:将属于当前VD的所有转发芯片的外部端口添加到为该转发芯片配置的二层隔离表,将为当前VD预先分配的CPU源端口添加到为该转发芯片配置的二层隔离表;所述根据报文的源端口和为该转发芯片配置的二层隔离表判断报文是否属于当前VD的方法为:如果报文的源端口是为该转发芯片配置的二层隔离表中的外部端口,则确定报文属于当前VD,否则,确定报文不属于当前VD;所述根据广播协议报文的源端口和为该转发芯片配置的二层隔离表判断广播协议报文是否属于当前VD的方法为:如果广播协议报文的源端口是为该转发芯片配置的二层隔离表中的CPU源端口,则确定广播协议报文属于当前VD,否则,确定广播协议报文不属于当前VD。7.一种虚拟设备VD,应用于交换机,所述交换机以转发芯片为加入和退出VD的最小单元,并建立有转发芯片和VD的对应关系;其特征在于,该VD包括:配置单元、接收单元、处理单元、发送单元;所述配置...
【专利技术属性】
技术研发人员:王明辉,
申请(专利权)人:杭州华三通信技术有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。