一种基于软件定义网络的二层交换机内容协同的方法
技术领域
本发明涉及网络技术领域,特别涉及一种基于软件定义网络的二层交换机内容协同的方法。
背景技术
软件定义网络(Software Defined Network,SDN)是一种新型的网络架构体系,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。在SDN中,通过解耦和网络的转发层与控制层,提升了网络的可编程性。
近年,华为在业界提出了新的软件定义网络转发技术,并将其命名为协议无感知转发(Protocol Oblivious Forwarding,POF),即转发硬件设备对数据报文协议和处理转发流程没有感知,网络行为完全由控制面负责定义。该技术作为对OpenFlow协议的增强,拓展了目前OpenFlow的应用场景,为实现真正灵活的可编程软件定义网络奠定了基础。同时,未来网络越来越受到关注,美国国家科学基金会的未来网络架构项目资助的项目,如命名数据网络(NDN),移动性优先(Mobility First)等;均对网络节点的存储能力提出了需求。利用协议无感知转发技术更好的可编程性特点,已有基于协议无感知转发技术的转发层存取功能的扩展,实现网络单节点对存储的支持。而单节点存储容量、速度等能力有限,尚缺乏协同转发层多节点进行存储服务的问题。
发明内容
本发明的目的在于,为解决对现有的二层交换机内容协同方法存在上述问题,本发明提供了一种基于软件定义网络的二层交换机内容协同的方法,该方法具体包括:
步骤1、SDN控制器通过二层交换机周期性地向若干交换机的各个交换端口发送节点发现帧。每个该若干二层交换机的邻接交换机接收到节点发现帧后,均根据以太网帧类型进行流表匹配,查询本地存储容量信息,并将该存储容量信息添加至节点发现帧,得到带有存储容量信息的节点发现帧;
步骤2、将步骤1中的带有存储容量信息的节点发现帧上报至SDN控制器,该SDN控制器接收该节点发现帧,并监听该二层交换机的上、下线和各个端口变化状态,实时更新和维护链路表和缓存状况表,同时周期性检查时间戳以删除失效链路;
步骤3、SDN控制器所管理域内,某一台二层交换机接收到以太网帧,通过上层协议解析,判定为需要进行存储的以太网帧,并得到需要存储报文载荷的数据包。该二层交换机根据本地存储状态和配置存储策略进行决策,判断是否进行本地存储操作和需要协同存储;如果决策结果为需要进行本地存储操作和需要协同存储,则该二层交换机以packet-in消息形式上报该SDN控制器,该SDN控制器接收到packet-in消息,并根据存储策略查询网络拓扑及各交换机本地存储信息,在所管理域内若干二层交换机中选定一台作为可协同存储的二层交换机,并以packet-out消息形式将数据包转发至所选定二层交换机;如果决策结果为不需要进行本地存储操作,则直接跳出;
步骤4、在完成步骤3中的本地存储操作和需要协同存储的操作之后,所选定二层交换机根据本地存储状态及配置存储策略进行决策,判断是否缓存该数据包,如果判定结果为需要缓存该数据包,则进行缓存;并将本地存储结果返回至该接收到需存储的以太网帧的二层交换机和SDN控制器;该接收到需存储的以太网帧的二层交换机依据返回的存储结果更新交换机端缓存映射表,控制器依据存储结果更新控制器端缓存映射表;如果判定结果为不需要缓存该数据包,则直接跳出;
步骤5、SDN控制器所管理域内,某一台二层交换机接收到以太网帧,通过上层协议解析,判定为需要进行读取的以太网帧,得到需要读取数据的请求,则该二层交换机步骤3中的查询本地存储结果,如果本地存储结果中有所需读取数据,则直接读取缓存数据;
如果本地存储结果中没有该所需读取数据,则该二层交换机查询本地存储的交换机端缓存映射表,若查询成功,则将数据请求转发至所查询到的交换机。所查询到的交换机接收到转发过来的数据请求后,如果所查询到的交换机接收的本地存储结果中有所需读取数据,则直接读取缓存数据并返回数据给该接收到需读取数据以太网帧的二层交换机,如所查询到的交换机接收的本地存储结果中无所需读取数据,则结束处理。若查询失败,则交由上层协议处理。
所述本地存储容量信息包括且不限于交换机端本地的存储总容量,剩余存储容量的信息。
所述存储策略包括本地无法存储数据时由二层交换机协同存储数据;对于热门数据推送给其它二层交换机存储。
所述二层交换机端节点映射关系表维护通过哈希映射表和布尔过滤器等多种数据结构实现,以维护数据名称与存储该数据的交换机名称之间的映射关系,表信息可缓存于二层交换机内部或缓存于外部存储设备。
所述步骤3中,SDN控制器所管理域内,某一台二层交换机的协同缓存数据发生变化时,该交换机上报至SDN控制器,SDN控制根据该上报的缓存变化信息及二层交换机的上、下线信息,该SDN控制器维护控制器端缓存映射表,SDN控制器所管理域内的交换机周期性将控制器端缓存映射表更新至交换机端缓存映射表。
所述步骤3中,该接收到需存储的以太网帧的二层交换机根据本地存储状态和配置存储策略进行决策的具体过程如下:
如本地已有相同数据,则不缓存。若本地无相同数据,则本地需缓存。若本地需缓存,则依据配置存储策略决定是否存储于本地,若存储于本地,则本地直接缓存。若需存储于其他交换机,则采用协同存储。
所述二层交换机和所述邻接交换机均是具备存储扩展功能的二层交换机,具有存储能力,并可查询所需的相关存储信息。
本发明的优点在于:二层交换机具备存储能力,可以查询所需的相关存储信息,可适用于不同的存储策略配置,适用于多种未来网络协议,有效的解决了二层交换机缺乏有效内容协同机制的技术问题,对于数据缓存状态维护所需网络通信开销低,对数据请求的转发速率高。
附图说明
图1是本发明的一种基于软件定义网络的二层交换机内容协同的方法的流程图;
图2是本发明的具体实施例中的一种基于软件定义网络的POF交换机内容协同的方法的拓扑发现及存储信息维护的结构示意图;
图3是本发明的具体实施例中的一种基于软件定义网络的POF交换机内容协同的方法的实验拓扑图
具体实施方式
以下结合附图对本发明作进一步的详细说明。
在具体实施例中,本发明采用的是POF交换机,POF交换机相比其他交换机具有更高的灵活性和可编程性,在POF交换机中,对网络中哪些类型数据包进行缓存和缓存策略均通过控制器端的编程来实现。
在本实施例的场景中,假设缓存策略为本地存储容量值低于阈值K时,该POF交换机在本地不存储信息,邻接POF交换机进行协同存储数据。本地存储容量值高于阈值K时,该POF交换机直接在本地存储该数据。
在本实施例的场景中,假设缓存策略为本地存储容量低于阈值K时,本地不存储,由本地所邻接节点协同存储该数据;假设需要处理的与缓存有关的以太网帧为内容中心网络帧(CCN),该内容中心网络帧对应EtherType为0x0101,EtherType后1字节的字段为Type字段,用于表示数据包的类型。假设,0x01表示兴趣包,0x02表示内容包,节点发现帧对应EtherType为0x0102,协同消息帧对应EtherType为0x0103,其EtherType后1字节的字段为Type字段,用来表示协同消息的类型;同时假设该协同消息帧的Type字段,0x01表示兴趣包,0x02表示协同存内容包,0x03表示协同读取内容包,0x04表示协同存结果。
如图2所示,SDN控制器周期性地通过二层交换机1向其各个交换端口发送节点发现帧,该节点发现帧以packet-out消息形式转发给二层交换机1所邻接二层交换机2,二层交换机2根据流表匹配EtherType为0x0102,则查询存储信息,得到带有存储容量信息的节点发现帧。交换机2将带有存储容量信息的节点发现帧以packet-in消息发送至控制器。控制器根据接收到的packet-in消息以及监听交换机上下线情况维护交换机1与交换机2之间的链路表及交换机2的缓存状况表。同时周期性检查时间戳以删除失效链路。
如图1所示,本发明一种基于软件定义网络的二层交换机内容协同的方法,该方法具体包括:
如图3所示,假定在某一时刻,二层交换机A和二层交换机B的本地存储容量值均低于阈值K,二层交换机C的存储容量值高于阈值K。本发明一种基于软件定义网络的二层交换机内容协同的方法,该方法具体包括:
步骤1、SDN控制器周期性地通过二层交换机A、B、C向其各个交换端口发送节点发现帧,该节点发现帧以packet-out消息形式转发给二层交换机A所邻接交换机,即二层交换机B和C;或转发给二层交换机B所邻接交换机,即二层交换机A和C;或转发给二层交换机C所邻接交换机,即二层交换机B和A;二层交换机A、B、C所邻接交换机接收到节点发现帧后,根据流表匹配EtherType为0x0102,则查询存储信息,得到带有存储容量信息的节点发现帧。
步骤2、将步骤1中的带有存储容量信息的节点发现帧以packet-in消息发送至控制器。控制器根据接收到的packet-in消息以及监听交换机上下线情况维护链路表及缓存状况表。同时周期性检查时间戳以删除失效链路。
步骤3、假定交换机A此时接收到以太网帧,经流表匹配EtherType为0x0101,Type为0x02,判定为需要进行存储的以太网帧,并得到需要存储报文载荷的数据包a。依据进一步流表匹配,本地未缓存该数据包a且本地存储容量低于阈值K,判定需要本地存储且需由所邻接的交换机B或C协同存储。则交换机A将该内容包EtherType改为0x0103,以packet-in消息形式发送给控制器。控制器接收到packet-in消息后查询网络拓扑及交换机存储信息,判定交换机C可以缓存该数据。则控制器将载荷以packet-out消息形式发送给交换机C。交换机C接收到协同消息帧后,经流表匹配成功缓存该数据并将缓存成功结果封装成协同消息帧回复给交换机A和SDN控制器。交换机A接收到协同消息帧后,更新交换机端缓存映射表。控制器依据存储结果更新控制器端缓存映射表。
步骤4、假定交换机A此时接收到以太网帧,经流表匹配EtherType为0x0101,Type为0x01,判定为需要进行读取的以太网帧,得到需要读取数据包a的请求,经进一步流表匹配本地无相应内容,缓存映射表中记录该数据包a名称对应于交换机C名称。则本地于流表中保存状态,将该以太网帧EtherType改为0x0103发送给交换机C。交换机C接收到该以太网帧后通过读取本地缓存数据,获取数据包a,将数据包a返回给交换机A。交换机A接收数据包a,根据流表中所保存状态处理并响应原请求数据包a以太网帧的数据请求。
假定协同存储于交换机C处的数据包a因超时等原因被删除,交换机C上报至SDN控制器,SDN控制根据该上报的缓存变化信息及二层交换机的上、下线信息,该SDN控制器维护控制器端缓存映射表,SDN控制器所管理域内的交换机A、B、C周期性将控制器端缓存映射表更新至交换机端缓存映射表。
所述本地存储容量信息包括且不限于交换机端本地的存储总容量,剩余存储容量的信息。
所述存储策略包括本地无法存储数据时由二层交换机协同存储数据;对于热门数据推送给其它二层交换机存储。
所述二层交换机端节点映射关系表维护通过哈希映射表和布尔过滤器等多种数据结构实现,以维护数据名称与存储该数据的交换机名称之间的映射关系,表信息可缓存于二层交换机内部或缓存于外部存储设备。
所述步骤3中,SDN控制器所管理域内,某一台二层交换机的协同缓存数据发生变化时,该交换机上报至SDN控制器,SDN控制根据该上报的缓存变化信息及二层交换机的上、下线信息,该SDN控制器维护控制器端缓存映射表,SDN控制器所管理域内的交换机周期性将控制器端缓存映射表更新至交换机端缓存映射表。
所述步骤3中,该接收到需存储的以太网帧的二层交换机根据本地存储状态和配置存储策略进行决策的具体过程如下:
如本地已有相同数据,则不缓存。若本地无相同数据,则本地需缓存。若本地需缓存,则依据配置存储策略决定是否存储于本地,若存储于本地,则本地直接缓存。若需存储于其他交换机,则采用协同存储。
所述二层交换机和所述邻接交换机均是具备存储扩展功能的二层交换机,具有存储能力,并可查询所需的相关存储信息。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。