本发明涉及软件定义网络领域,具体涉及一种sptn(softwaredefinedpackettransportnetwork,软件定义分组传送网)网络s-scn(sptnsignalcontrolnetwork,sptn控制网络)实现方法及系统。
背景技术:
随着sdn(softwaredefinednetwork,软件定义网络)技术热潮的到来,传送网开启了从ptn(packettransportnetwork,分组传送网)逐渐演进为sptn的新时代。sptn控制网络(s-scn)是sptn系统的基础,s-scn通过在sptn设备上创建连接dc(domaincontroller,域控制器)的控制通道、进而构建一张dc与各个sptn设备可通信互达的控制网络,以此承载dc与sptn设备间通信的标准南向接口协议报文,实现控制器对sptn设备的管理与控制,而sptn设备之间则没有通信要求。中国通信标准协会ccsa在sptn相关标准文档中已经对s-scn进行了规范,其中有些要求如下:s-scn网络是基于mac地址的二层桥接转发的网络,转发行为应符合802.1q规范,由sptn设备上的管理vlan(virtuallocalareanetwork,虚拟局域网)模块实现对南向接口协议报文的中继转发;s-scn应避免以太网环路导致的广播风暴;sptn设备应支持通过带内s-scn通道与域控制器建立通信,带内s-scn通道采用固定vlan值4094;sptn设备应支持通过dhcp(dynamichostconfigurationprotocol,动态主机配置协议)服务器获取管理ip地址的方式和域控制器通信,在该方式下,域控制器应集成dhcp服务器插件,向sptn设备分配管理ip地址。
众所周知,环路对于以太网二层交换网络是灾难性的,成环会引起广播风暴导致网络瘫痪。工程应用中sptn设备组网拓扑复杂多样,实际物理链路构成的以太网环路随处可见,基于此物理网络构建的带内s-scn网络也是二层交换网络,因此如何避免广播风暴显得至关重要。目前业界主流想法是在有环路的物理网络上构建没有环路的带内s-scn树型拓扑网络,普遍采用dc与设备同时共同掌控设备的管理vlan、实现管理vlan成员端口实时动态变化的方案,即:设备dhcpclient模块负责选择本设备去往dc控制通道的唯一上联端口、并通知管理vlan将其加入成员端口;dc的dhcpserver模块、openflow模块和netconf模块一起配合完成对中继设备管理vlan中与控制通道下联端口对应的成员端口的增删管理、以便允许或禁止该中继设备对下游设备的控制报文的中继转发。
上述现有实现方案有如下不足之处:
a、为了构建带内s-scn树型拓扑网络,dc上需要一个额外的拓扑管理模块专门负责s-scn网络的拓扑管理;另外,dc和设备间需要借助netconf协议接口实时交互管理vlan成员端口信息。
b、dhcp报文需要特殊处理。上电之初设备通过dhcp方式主动向dc申请设备管理ip,此时该设备与dc的控制通道还未建立,例如本设备的上联口和上游中继设备的下联口都还没有加入管理vlan,因此dhcp协议报文不能采用管理vlan进行转发而需采用特殊处理方式:本设备非管理vlan成员端口也需要收发dhcp报文,上游中继设备采用openflow协议的packet-in/out方式支持下游设备与dc的dhcp会话报文在中继设备的转发处理,同时dc上与中继设备对应的openflow协议实例采用对等的packet-out/in方式支持下游设备与dc的dhcp会话报文在dc内部的中继转发处理。
c、dhcp报文特殊处理方式对设备核心交换芯片提出了额外要求,芯片需支持dhcp报文深度匹配提取机制,对于dc发给本设备的dhcp报文需要匹配提取到dhcp模块进行处理,对于下游设备发给dc的dhcp报文需要匹配提取到openflow模块进行packet-in处理。普通低端芯片无法满足该需求,高端芯片又会导致设备成本上升,对于成本优先的小型化sptn设备而言,这是难以接受的。
d、软件设计方面,为了支持s-scn,dc和设备内部原本毫无关联的协议模块间需要进行通信,模块间耦合度增加必然导致软件架构复杂,稳定性降低。dc内部,dhcp和netconf间、dhcp和openflow间需要增加通信接口及相应处理;设备内部,dhcp和netconf间、管理vlan与netconf间、控制报文收发模块与openflow间需要增加通信接口及相应处理。
e、dc和设备双头管控管理vlan的方法需要二者相互配合、实时通信协调,配合不当会导致管理vlan混乱甚至s-scn网络成环,容错能力降低,灾难风险增加。
f、s-scn网络结构具有不确定性,物理网络状态(如链路连接状态、设备运行状态)的变化会导致s-scn网络结构随时发生改变。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种sptn网络s-scn实现方法及系统,采用输入输出端口过滤技术结合静态mac地址的非移动性控制功能,实现了转发树避免了转发环路,因此彻底避免了广播风暴。
为达到以上目的,本发明采取的技术方案是:
一种sptn网络s-scn实现方法,包括:
设备上电完成交换芯片初始化后,创建管理vlan并配置输入端口过滤规则;在管理vlan的mac地址表中为本设备管理mac地址配置静态表项,当从不期望的端口接收到了源mac地址等于该静态mac地址的报文时,丢弃该报文;建立openflow连接以后,改变管理vlan的输入端口过滤规则。
在上述技术方案的基础上,所述配置输入端口过滤规则的步骤包括:为vlan域的每个成员端口的输出方向配置输入端口过滤表项;为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。
在上述技术方案的基础上,管理vlan的转发模式包括中继转发模式和非中继转发模式,在设备开启后,配置管理vlan的转发模式为非中继转发模式;在建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式。
在上述技术方案的基础上,所述在设备开启后,配置管理vlan的转发模式为非中继转发模式的步骤包括:
配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能。
在上述技术方案的基础上,配置管理vlan为非中继转发模式后,还包括:dhcp客户端模块从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口;在指定本设备的上联口后,在dhcp会话过程中,使用dhcp客户端模块获取域控制器对应的mac地址;在管理vlan的mac地址表中为域控制器对应的mac地址配置静态表项;dhcp客户端申请设备管理ip地址;dhcp客户端将设备管理ip地址配置到tcp/ip协议栈以及netconf和openflow协议模块。
在上述技术方案的基础上,所述将管理vlan的转发模式由非中继转发模式变更为中继转发模式步骤包括:
修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
在上述技术方案的基础上,所述创建管理vlan并配置输入端口过滤规则的步骤还包括:
创建一个新的vlan域,配置所述vlan域的vlan值为4094,为其取名为管理vlan;将设备网络侧和客户侧的所有物理端口都添加到管理vlan中;将交换芯片的cpu端口添加到管理vlan中;配置接收方向的各个物理端口在收到带有vlan4094的标签报文时,分类进入管理vlan的相应成员端口,然后经过管理vlan转发处理;配置发送方向的管理vlan的各个成员端口发送出去的所有报文都携带vlan4094的标签。
本发明还提供一种sptn网络s-scn实现系统,包括:
域控制器,其包括dhcp服务模块、openflow模块和netconf模块;至少两个通过链路连接的sptn设备,每个sptn设备包括至少两个端口、dhcp客户端模块和管理vlan模块,其中,所述管理vlan模块用于在设备上电完成交换芯片初始化后,配置管理vlan的转发模式为非中继转发模式,在建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式;以及在管理vlan的mac地址表中为本设备管理mac地址配置静态表项,当从不期望的端口接收到了源mac地址等于该静态mac地址的报文时,丢弃该报文;dhcp客户端模块用于从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口,并使用所述上联口进行后续dhcp交互、netconf及openflow协议通信。
在上述技术方案的基础上,所述管理vlan模块还用于:为vlan域的每个成员端口的输出方向配置输入端口过滤表项;以及为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。
在上述技术方案的基础上,所述管理vlan模块还用于:
在sptn设备开启后,配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能;以及在建立openflow连接以后,修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
与现有技术相比,本发明的优点在于:
(1)本发明的sptn网络s-scn实现方法在固定s-scn网络的拓扑结构前提下允许拓扑成环,通过控制设备管理vlan的转发行为来达到避免广播风暴的目的,与现有s-scn方案完全不同。由于技术门槛低,无需芯片支持dhcp报文深度匹配提取机制等复杂功能,对交互芯片的分类匹配要求不高,允许设备采用低端芯片,特别适合于以成本为第一要素的小型化sptn设备使用。
(2)本发明的sptn网络s-scn实现方法在避免广播风暴的前提下,无需dc或设备内部dhcp和netconf、openflow间进行相关操作,避免了不同协议模块间的不符合规范的通信接口,模块耦合度降低、软件架构清晰,提高了稳定度。
(3)本发明的sptn网络s-scn实现方法采用静态拓扑结构,不会因为sptn物理网络状态(如链路、节点状态)的变化,而实施动态调整s-scn网络拓扑,彻底消除了域控制器和设备多头掌控设备管理vlan的局面,也免除了二者间为了协调配合而需实施动态交互管理vlan成员信息的麻烦,使得整个s-scn网络更加健壮。
(4)本发明的sptn网络s-scn实现方法在固定s-scn网络的拓扑结构前提下通过控制设备管理vlan的转发行为来达到避免广播风暴的目的。该方法在设备的管理vlan中采用输入输出端口过滤技术结合静态mac地址的非移动性控制功能,将南向接口协议报文在设备上的转发行为限制成一种树型转发模型,基于这种转发行为受控的管理vlan而构建的整个s-scn网络实际上就是一颗巨大的转发树,对管理控制报文而言,其功能相当于一个以太网树型(e-tree)业务,dc为树根,各个设备的cpu为树叶。尽管整个s-scn网络在拓扑结构上可能存在环路,但对管理控制报文的转发行为而言,这种转发树避免了转发环路,因此彻底避免了广播风暴。
附图说明
图1为本发明实施例中sptn网络中管理vlan实现的架构示意图;
图2是本发明实施例中的sptn网络s-scn实现系统示意图;
图3是本发明实施例中的sptn网络s-scn实现方法中s-scn配置及上线流程示意图;
图4是本发明一个实施例中设备非全上线场景下一个物理环路应用案例架构图;
图5是本发明一个实施例中设备全上线场景下一个物理环路应用案例架构图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
本发明实施例提供一种sptn网络s-scn实现方法,该方法包括:设备上电完成交换芯片初始化后,完成管理vlan的创建与配置管理;配置管理vlan的转发模式为非中继转发模式;dhcp客户端模块从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口,并使用上联口进行后续dhcp交互、netconf及openflow协议通信;建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式。
具体的,完成管理vlan的创建与配置管理步骤还包括:
创建一个新的vlan域,配置所述vlan域的vlan值为4094,为其取名为管理vlan;将设备网络侧和客户侧的所有物理端口都添加到管理vlan中;将交换芯片的cpu端口添加到管理vlan中;将管理vlan的所有成员端口设置为tagged方式,配置vid值为4094,即:配置接收方向的各个物理端口在收到带有vlan4094的标签报文时,分类进入管理vlan的相应成员端口,然后经过管理vlan转发处理;配置发送方向的管理vlan的各个成员端口发送出去的所有报文都携带vlan4094的标签。
在一个优选的实施例中,上述过程中完成管理vlan的创建与配置管理步骤可包括:为vlan域的每个成员端口的输出方向配置输入端口过滤表项;为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从某一端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。
具体的,所述在设备开启后,配置管理vlan的转发模式为非中继转发模式的步骤包括:
配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能。
配置管理vlan为非中继转发模式后,将本设备的管理mac地址采用静态方式配置到管理vlan的mac表中。
在上述方案的基础上,在指定本设备的上联口后,还可包括以下步骤:在dhcp会话过程中,使用dhcp客户端模块获取域控制器对应的mac地址;在管理vlan的mac地址表中为域控制器对应的mac地址配置静态表项;dhcp客户端申请设备管理ip地址;dhcp客户端将设备管理ip地址配置到tcp/ip协议栈以及netconf和openflow协议模块。
为保障管理vlan的转发模式由非中继转发模式变更为中继转发模式,避免广播风暴,可按以下步骤进行设置:
修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
本发明还提供一种sptn网络s-scn实现系统,其包括:
域控制器,其包括dhcp服务模块、openflow模块和netconf模块;至少两个通过链路连接的sptn设备,每个sptn设备包括至少两个端口、dhcp客户端模块和管理vlan模块。其中,管理vlan模块用于在设备上电完成交换芯片初始化后,配置管理vlan的转发模式为非中继转发模式,以及在建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式;dhcp客户端模块用于从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口,并使用所述上联口进行后续dhcp交互、netconf及openflow协议通信。
在一个优选的实施例中,管理vlan模块还用于:
为vlan域的每个成员端口的输出方向配置输入端口过滤表项;以及为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从某一端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。以及,在sptn设备开启后,配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能。
为了保障管理vlan模块转发设置的平滑切换,并在切换过程中防止广播风暴的形成,还可设置管理vlan模块用于:
在建立openflow连接以后,修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
下面就一个具体的实施例进行说明:
s1、创建并配置管理vlan。设备的管理vlan是vlan值为4094的vlan域,设备上电完成交换芯片初始化后,通过建立4094的vlan域、添加成员端口、配置成员属性等步骤,完成管理vlan的创建与配置管理。在本实施例中,上述步骤的具体过程如下:
s101、创建一个新的vlan域,配置它的vlan值为4094,为其取名为管理vlan;
s102、添加外部物理端口,将设备网络侧和客户侧的所有物理端口都添加到管理vlan中;
s103、添加内部cpu端口,将交换芯片的cpu端口添加到管理vlan中;
s104、设置成员端口属性,将管理vlan的所有成员端口设置为标签(tag)属性,配置vid值为4094;接收方向:各个物理端口收到的带有vlan4094的标签报文会分类进入管理vlan的相应成员端口、然后经过管理vlan的转发处理;发送方向:管理vlan的各个成员端口发送出去的所有报文都带有vlan4094的标签。
s2、随后开始进行初始阶段设备的端口配置,将初启动的sptn设备设置为非中继转发模式。
本专利文件中,管理vlan模块有两种转发模式:中继转发和非中继转发。非中继转发模式下,cpu端口为根端口,其他所有外部物理口为叶端口,此时管理vlan只收发本设备与dc通信的控制报文,对于其他设备与dc通信的控制报文,会被丢弃不会中继转发(先送给本设备cpu继而被相应的协议软件模块丢弃),可见非中继转发模式的管理vlan只支持本设备与dc通信,不支持下游设备与dc通信,如在图2中,设备se3处于非中继转发模式,它的cpu口为根端口,p3和p4等所有外部端口为叶端口;中继转发模式下,上联口为根端口,其他成员端口为叶端口,此时管理vlan不仅可以收发本设备与dc通信的控制报文,而且对于其他设备与dc通信的控制报文,也可进行中继转发而不丢弃,可见中继转发模式的管理vlan既支持本设备与dc通信,又支持下游设备与dc通信;在图2中,设备se2处于中继转发模式,它的p1口为根端口,p2口等其他所有外部端口以及cpu端口都为叶端口,设备se2可以与dc通信,同时也支持se3与dc通信。
由于初始阶段设备的上联口未知,为了避免因本设备的不恰当中继转发而形成转发环路引起广播风暴,应该禁止管理vlan在外部端口间转发报文;而且因为此时上联口未知,为了支持本设备尝试经由任何一个外部物理端口与dc建立控制通道实现通信,应该允许管理vlan在cpu端口与任何外部端口间转发报文。所以管理vlan的初始转发模式应配置成非中继转发模式,可通过适当配置各个成员端口的输入端口过滤表项来实现,如果报文的输入端口在输入端口过滤表项中是使能的,则报文被发送出去,如果是不使能的,则丢弃报文。利用输入输出端口过滤功能,可以轻松控制vlan域的转发行为。
在本实施例中,采用如下配置:1、配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;2、配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能。这样配置以后,cpu端口便成为根端口,其他所有端口成为叶端口,管理vlan进入非中继转发模式,cpu端口可以与任何外部端口间转发报文、外部端口间不能转发报文。
完成上述步骤后,事实上从转发角度将vlan域的成员端口划分为根端口(root)和叶端口(leaf)两种,即成员端口的转发属性不是根就是叶;叶端口之间不允许转发报文,根端口间、根端口与叶端口间可以转发报文;对于设备的管理vlan,可以从其成员列表中选定唯一一个成员端口作为根端口,其余端口都作为叶端口,便可构建一个树型转发模型--根端口接收的流量可以分发给各个叶端口发送出去,所有叶端口接收的流量只能汇聚到根端口发送出去。管理vlan树型转发模型可以利用输入输出端口过滤功能进行适当的配置来实现:配置根端口的输入端口过滤表项,使除本端口以外的其他所有端口为使能;配置叶端口的输入端口过滤表项,使根端口为使能,其他所有端口为不使能。
s3、配置设备管理mac地址。将本设备的管理mac地址采用静态方式配置到管理vlan的mac表中,利用mac表的静态表项的特殊属性字段,在mac学习与查找阶段对匹配上的接收报文进行适当控制,可以实现静态mac地址的非移动性管理功能。
通过在mac表中为管理vlan配置静态地址表项,当从不期望的端口接收到了源mac地址等于该静态mac地址的报文时,既可以防止源mac地址的错误学习、又可以将这个来自不恰当入口的报文丢弃掉。管理vlan的mac表的地址表项含有如下相关属性字段:vlan域、mac地址、成员端口、静态标志、可移动性标志。这里,vlan域和mac地址构成mac表hash查找的关键字;成员端口表示源mac匹配该表项的报文的预期接收端口、或者目的mac匹配该表项的报文的转发出端口;静态标志为true时表示该表项是静态配置的、不允许老化,为false时表示该表项是动态表项,它是动态学习到的、允许到期老化;可移动性标志表示是否允许mac地址学习时更新表项的成员端口属性字段、是否允许对接收端口发生了移动的报文进行转发:当接收报文的源mac等于表项mac、入端口不等于表项成员端口时,表明该报文的源mac地址的接收端口发生了移动,如果可移动性标志=false,表示不允许,说明此报文是从错误入口接收的,为非法报文,应丢弃且不更新mac表项,如果为true则情况正好相反,即允许报文转发且更新mac表项的成员端口信息。
本实施例中该表项的相关属性字段配置如下:vlan域=4094、mac地址=设备的管理mac地址、成员端口=cpu端口、静态标志=true、可移动性标志=flase。当设备各协议软件模块向dc发送报文时,这些报文可以经cpu端口送入管理vlan、然后转发到外部端口,支持设备与dc通信;当设备从外部端口收到一个源mac=本设备管理mac的报文时,管理vlan将它判为非法报文而丢弃、且不会错误地更新mac表项,这样可以避免因其他设备意外误用了本设备管理mac而导致本设备与dc通信紊乱。
通过静态mac地址的非移动性功能,系统可以选择性地控制报文入端口的合法性,只有从预期端口接收的报文才会被转发处理,从其他端口接收的报文都当成非法报文将其丢弃。
s4、尝试dhcp会话。启动设备的dhcp客户端模块,开始向dc的dhcp服务器模块申请本设备的管理ip地址。客户端模块通过管理vlan向所有外部端口广播discover(发现)报文,尝试和dc进行dhcp会话交互。当本设备去往dc的某条路径上的所有上游sptn设备(它相对于本设备而言是中继设备)的管理vlan处于中继转发模式状态时,本设备与dc间通信的控制通道在这条路径上便已打通,本设备可以通过这个控制通道与dc开始dhcp交互。
s5、选定上联口。在dhcp会话过程中,如果sptn设备客户端模块可以从多个端口收到服务器模块回复的dhcp报文,那么客户端模块从这些端口中选定唯一一个端口作为本设备的上联口,此后设备一直使用该上联口与dc通信,通过该端口维持后续dhcp交互、进行netconf和openflow等协议通信。
s6、配置dc对应的mac地址。在dhcp会话过程中,设备的客户端模块可以获取dc对应的mac地址。在管理vlan的mac地址表中为dc对应的mac地址配置静态表项,该表项的相关属性字段配置如下:vlan域=4094、mac地址=dc对应的mac地址、成员端口=上联口、静态标志=true、可移动性标志=flase。配置该静态表项后,在静态mac地址的非移动性功能作用下,dc对应的mac就被锁定在上联口上,对于dc发出的到达本设备的报文,只有从上联口接收时才会被管理vlan转发,从其他口接收时都会被当成非法报文而丢弃。
s7、申请并配置设备管理ip。按照dhcp规范流程,设备与dc持续进行dhcp会话。设备dhcp客户端模块首先尝试申请设备管理ip,当成功申请到本设备管理ip地址后,dhcp客户端模块会启动设备管理ip地址的配置,接着进行ip地址的租期维护管理。在配置ip过程中,会将设备管理ip地址配置到tcp/ip协议栈和netconf、openflow等相关协议模块,在网络层和传输层为netconf连接、openflow连接做好准备。
s8、准备及建立netconf连接。在设备上启动netconfserver,等待dc的netconfclient发起连接。dc为设备分配了管理ip后不久,dc会以客户端(client)的角色向设备发起netcoonf连接请求,设备netcoonfserver按照标准流程响应dc,直至建立起netconf连接。
s9、配置及建立openflow连接。首先,dc通过netconf通道将自己的ip地址等信息下发给设备,等待设备的openflow连接。设备得知dc的ip后,openflow模块以client身份向dc发起连接,采用规范流程尝试与dc建立openflow连接,至此连接成功。openflow连接建立以后,设备便进入完全受dc控制管理的状态,可以随时接受dc下发业务配置。
s10、建立openflow连接以后,设置中继转发模式。在建立openflow连接以后,设备便可变更管理vlan的转发模式,由非中继转发模式变更为中继转发模式,形成以上联口为根的树型转发模型而不会出现转发环路。通过适当配置各个成员端口的输入端口过滤表项,可以实现模式转变。在本实施例中,相关配置方法采用如下步骤:1、改变cpu端口的输入端口过滤表项,其中上联口使能,其他所有端口包括cpu端口为不使能;2、改变上联口的输入端口过滤表项,其中上联口不使能,其他所有端口包括cpu端口为使能;3、改变其他外部端口的输入端口过滤表项,其中上联口使能,其他所有端口包括cpu端口为不使能。这样配置以后,上联口便成为根端口,除上联口以外的其他外部端口都成为叶端口,cpu端口也成为叶端口;管理vlan模块进入中继转发模式,上联口既可以与cpu端口间转发报文,又可以与除上联口以外的其他任何外部端口间转发报文、除上联口以外的其他任何两个外部端口之间不能转发报文。
这样的以上联口为根的树型转发模型,在上行方向,可以将其他端口收到的来自下游设备的流量汇聚到上联口朝dc方向发送出去,反过来在下行方向,对于上联口接收到的来自dc的流量,可以转发至相应端口发出去送给下游设备,或转发至cpu端口送给本设备接收处理。在中继转发模式下,管理vlan既支持本设备与dc的各种协议通信,也支持下游设备与dc的各种协议通信,并且不会出现转发环路形成广播风暴。此后只要设备上联口至dc间的控制通道是通的,设备管理vlan便维持这种正常中继转发模式不变。管理vlan变为中继转发模式后,设备进入正常工作状态,至此设备完成上线流程。
在本发明实施例中,s-scn网络是以dc为中心的集中控制网络,网内只有dc与各个sptn设备间的通信,设备之间不需要进行控制管理层面的通信。各个设备发给dc的控制报文流构成上行流量,它们的流向为上行方向,dc发给各个设备的控制报文流构成下行流量,它们的流向为下行方向。上下行流量进一步细分为单播流量和广播流量:上行报文的源mac地址是发送设备的管理mac地址,其中上行单播报文的目的mac是dc对应的mac,上行广播报文的目的mac地址是广播地址;下行报文的源mac地址是dc对应的mac,其中下行单播报文的目的mac是接收设备的管理mac,下行广播报文的目的mac地址是广播地址。
在本发明实施例中,上线状态下设备既支持自身与dc的通信,又通过中继转发功能支持下游设备与dc通信。
在上行方向:(1)设备自身发出的控制报文(即cpu发出的报文),只会朝向dc方向发送,即从管理vlan根端口发出去经过上游设备中继送往dc,不会从叶端口发送出去,亦即只会发到根-叶链路上、不会发到叶-叶链路上(首端设备的上行报文是从根端口直接送往dc);(2)对于下游设备直接发出的控制报文或者中继转发的其他下游设备发出的控制报文,在上游设备处,只会从a类叶端口进入、并经中继转发从根端口送出;(3)对于所有上行流量(包括单播和广播),无论在源设备处还是在途径的上游设备处,只会从a类叶端口进入、不会从根端口或b类叶端口进入,只会从根端口送出、不会从叶端口送出。(连接叶-叶链路的叶端口称为b类叶端口,连接根-叶链路的叶端口称为a类叶端口,上线设备的cpu端口也是a类叶端口)
在下行方向:(1)对于首端设备,下行报文流量从根端口进入;对于下行单播报文,目的地为本设备的报文送cpu处理终结,其他目的地报文经过管理vlan的二层转发后从某个a类叶端口送出去;对于广播报文,会复制多份后从包含cpu端口在内的所有叶端口发出去;(2)次端设备处:对于下行单播报文,与首端设备的情况一样,只会从根端口到达,然后经过二层转发处理决定出端口,目的地为本设备的报文送cpu处理终结,其他目的地报文从某个a类叶端口送出去;对于下行广播报文,如果本设备与其他设备间存在n条叶-叶链路,则除了从根端口收到一份报文外,还会从n个b类叶端口收到n份额外报文,这n 1份广播报文的接收处理有区别:只有根端口收到的那份下行广播报文才会被接收并进行常规二层转发处理,从b类叶端口收到的下行广播报文会被丢弃掉(因为静态mac地址的非移动性管理功能);(3)总之,下行单播流量只会从根端口到达、不会从叶端口到达,只会从a类叶端口(含cpu口)发出、不会从根端口或b类叶端口发出;下行广播流量会从根端口到达、还可能会从b类叶端口到达,(但b类叶端口收的下行广播流量会丢弃、只转发处理根端口接收的下行广播流量)、不会从a类叶端口到达,会复制到所有叶端口发出、不会从根端口发出。
最后以一个具体实施例的运行过程,说明本发明sptn网络s-scn实现系统实施例中实现防止广播风暴的原理:
当环路上有设备处于初始化状态时,该设备的cpu口为根端口,它在环路上的两个端口都为叶端口,这两个环路端口间不能相互转发报文,因此从报文转发角度看,环路在这个设备处自然破除,广播报文传到这个设备后只会被送给cpu处理、不会转发到外部端口继续传送到相邻设备。例如图4中,4个sptn设备(se2、se3、se4、se5)和4条链路(l23、l34、l45、l25)构成物理环路,se4处于初始化状态,se4设备的p3口和p4口为叶端口,p3口收到广播报文时,不会广播到p4送出,p4口收到广播报文时也不可能广播到p3口送出,因此广播报文在se4设备处被送给cpu终结掉,从而避免了广播风暴。
当环路上所有设备都处于上线状态时。n个sptn设备和n条链路构成一个物理环路,如果n个设备都已上线,每个设备只有一个根端口、共有n个根端口,则至少有一个设备的根端口不在这个环路上(否则该环路上的所有设备都无法与dc通信,因为设备必须经由根端口与dc通信),也就是说至多有(n-1)个根端口位于这个环路的n条物理链路上,那么至少有一条链路上没有根端口,这个链路为叶-叶链路,它的两端为b类叶端口。如前文所述可知,上行流量和下行单播流量不会出现在该链路上,只有下行广播流量可能出现在该链路上,由于b类叶端口接收的下行广播流量会被设备丢弃,因此包含广播流量在内的所有流量会被这条叶-叶链路终结掉,不会继续转发到下一条链路上。因此从报文转发角度看,此场景下的物理环路上的广播风暴也被消除了。例如图5中,4个sptn设备(se2、se3、se4、se5)和4条链路(l23、l34、l45、l25)构成一个物理环路,4个设备都已上线,其中设备se2位于该环路上的两个端口(p1口、p2口)都为叶端口,设备se2的根端口(p0口)不在这个环路上,链路l45两端的端口分别是设备se4的p4口和设备se5的p6口,这两个端口都是叶端口,因而链路l45是一条叶-叶链路,该链路上只有下行广播流量(报文源mac为dc对应的mac),设备se4的p4口送出的广播报文通过该链路达到设备se5的p6口时,由于设备se5已将dc对应的mac地址配置为管理vlan的mac表的静态表项、且该mac对应的端口为根端口(p7口),因而在静态mac地址的非移动性管理功能作用下,p6口收到的下行广播报文都会被丢弃、不会继续向前广播到l25链路上,同样地,设备se5的p6口送出的广播报文通过链路l45达到设备se4的p4口时,也会在静态mac地址的非移动性管理功能作用下被丢弃;总之,由于环路中存在叶-叶链路l45,广播风暴被彻底消除了。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
1.一种sptn网络s-scn实现方法,其特征在于,包括:
设备上电完成交换芯片初始化后,创建管理vlan并配置输入端口过滤规则;
在管理vlan的mac地址表中为本设备管理mac地址配置静态表项,当从不期望的端口接收到了源mac地址等于该静态mac地址的报文时,丢弃该报文;
建立openflow连接以后,改变管理vlan的输入端口过滤规则。
2.如权利要求1所述的sptn网络s-scn实现方法,其特征在于,所述配置输入端口过滤规则的步骤包括:
为vlan域的每个成员端口的输出方向配置输入端口过滤表项;
为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。
3.如权利要求2所述的sptn网络s-scn实现方法,其特征在于:
管理vlan的转发模式包括中继转发模式和非中继转发模式,在设备开启后,配置管理vlan的转发模式为非中继转发模式;在建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式。
4.如权利要求3所述的sptn网络s-scn实现方法,其特征在于:所述在设备开启后,配置管理vlan的转发模式为非中继转发模式的步骤包括:
配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;
配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能。
5.如权利要求4所述的sptn网络s-scn实现方法,其特征在于,配置管理vlan为非中继转发模式后,还包括:
dhcp客户端模块从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口;
在指定本设备的上联口后,在dhcp会话过程中,使用dhcp客户端模块获取域控制器对应的mac地址;
在管理vlan的mac地址表中为域控制器对应的mac地址配置静态表项;
dhcp客户端申请设备管理ip地址;
dhcp客户端将设备管理ip地址配置到tcp/ip协议栈以及netconf和openflow协议模块。
6.如权利要求3所述的sptn网络s-scn实现方法,其特征在于,所述将管理vlan的转发模式由非中继转发模式变更为中继转发模式步骤包括:
修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;
修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;
修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
7.如权利要求1所述的sptn网络s-scn实现方法,其特征在于,所述创建管理vlan并配置输入端口过滤规则的步骤还包括:
创建一个新的vlan域,配置所述vlan域的vlan值为4094,为其取名为管理vlan;
将设备网络侧和客户侧的所有物理端口都添加到管理vlan中;
将交换芯片的cpu端口添加到管理vlan中;
配置接收方向的各个物理端口在收到带有vlan4094的标签报文时,分类进入管理vlan的相应成员端口,然后经过管理vlan转发处理;配置发送方向的管理vlan的各个成员端口发送出去的所有报文都携带vlan4094的标签。
8.一种sptn网络s-scn实现系统,其特征在于,包括:
域控制器,其包括dhcp服务模块、openflow模块和netconf模块;
至少两个通过链路连接的sptn设备,每个sptn设备包括至少两个端口、dhcp客户端模块和管理vlan模块,其中,
所述管理vlan模块用于在设备上电完成交换芯片初始化后,配置管理vlan的转发模式为非中继转发模式,在建立openflow连接以后,将管理vlan的转发模式由非中继转发模式变更为中继转发模式;以及在管理vlan的mac地址表中为本设备管理mac地址配置静态表项,当从不期望的端口接收到了源mac地址等于该静态mac地址的报文时,丢弃该报文;
dhcp客户端模块用于从接收到dhcp报文的端口中选定唯一一个端口作为本设备的上联口,并使用所述上联口进行后续dhcp交互、netconf及openflow协议通信。
9.如权利要求8所述的sptn网络s-scn实现系统,其特征在于,所述管理vlan模块还用于:
为vlan域的每个成员端口的输出方向配置输入端口过滤表项;
以及为每个成员端口的报文转发流程配置以下判断流程:当报文经过转发查找后要从端口发出时,若报文的输入端口在该端口的输入端口过滤表项中是使能的,则发送报文;如果是不使能的,则丢弃报文。
10.如权利要求8所述的sptn网络s-scn实现系统,其特征在于,所述管理vlan模块还用于:
在sptn设备开启后,配置cpu端口的输入端口过滤表项,其中cpu端口不使能,其他所有端口为使能;配置外部物理端口对应的成员端口的输入端口过滤表项,其中cpu端口为使能,其他所有端口为不使能;
以及在建立openflow连接以后,修改cpu端口的输入端口过滤表项,设置上联口为使能,其他所有端口为不使能;修改上联口的输入端口过滤表项,设置上联口为不使能,其他所有端口为使能;修改其他外部端口的输入端口过滤表项,设置上联口使能,其他所有端口为不使能。
技术总结