一种虚拟缓存共享方法和系统
技术领域
本发明涉及虚拟网络环境下多网络的缓存共享的网络技术领域,特别涉及到一种虚拟缓存共享方法和系统。
背景技术
缓存是加速数据访问的传统做法。在计算机发展过程中,为解决CPU高速运行和I/O低速设备的速度矛盾,研究人员们设计了一级和二级缓存,通过预取或后写入操作,比较完美地解决了这个问题。在分布式系统中,如分布式文件系统,存在数据存储位置与访问位置不一致的问题,本质上仍然是速度不匹配的问题,几乎泛在地采用了缓存技术。作为分布式系统的集大成者,互联网经历了从诞生、学术应用、商业运作等多个阶段,其上面的应用更是蓬勃发展,但在应用发展过程中,端设备访问应用数据时,遇到了距离远、速度低的问题,这几乎是CPU与I/O低速不匹配问题的再现。互联网上最大的缓存系统是CDN(内容分发网络),以及前几年流行的P2P网络,都普遍采用缓存。
由于IP本身固有的缺陷,为应对占90%以上内容主体的需求,人们提出信息中心网络(ICN),其固有的特征之一就是网内缓存。
随着网络技术的发展和处理能力的不断提高,网络设备在带宽、存储和处理能力方面都远远大于单个网络的需求。另外,SDN(软件定义网络)和NFV(网络功能虚拟化)在网络业和电信业得到不断完善。这样,在单个网络设备上支持多个虚拟网络的运行成为可能。
如果每个虚拟网络上存在对同一信息的缓存,但由于不同的命名方式和缓存机制导致垂直式缓存,则将造成缓存空间资源的巨大浪费。这样就有人提出缓存共享的需求,普遍的做法是采用两层式缓存法,即每个虚拟网络有一个缓存客户端,单个设备有缓存服务端,通过客户端与服务端的交互完成缓存空间的共享,但还做不到缓存内容的共享。
发明内容
本发明的目的在于解决多个虚拟网络间单网络设备上缓存内容的不能共享的问题。
为实现上述目的,本发明提供了一种虚拟缓存共享方法
该方法涉及控制器、网络设备和与网络设备相连接的存储设备;所述方法包括:
步骤1)网络设备通过OpenFlow协议扩展,向控制器注册指定的虚拟缓存所连接的接口;
步骤2)由控制器配置网络设备,使网络设备将访问虚拟缓存的报文发送到虚拟缓存接口;
步骤3)所述存储设备从虚拟缓存接口接收到访问虚拟缓存的报文后对报文进行内容请求发送或数据存储的处理。
作为上述方法的一种改进,所述步骤1)的指定的虚拟缓存接口为支持多协议的接口,用于挂接存储设备。
作为上述方法的一种改进,所述步骤1)包括:
步骤1-1)指定虚拟缓存接口,将指定的虚拟缓存接口设置为支持多协议接口;
步骤1-2)所述网络设备通过OpenFlow协议,向控制器注册虚拟缓存所连接的接口,发送注册虚拟缓存接口的消息;
作为上述方法的一种改进,所述步骤2)包括:
步骤2-1)所述控制器接收到注册缓存接口的消息后,提取网络设备标识、虚拟缓存接口的标识和所支持的协议列表,形成所辖域的共享缓存列表;
步骤2-2)所述控制器根据共享缓存列表中协议表项所支持的协议列表,在每个协议执行访问虚拟缓存的操作中,增加一个流表项,该流表项的操作是指示将访问虚拟缓存的请求报文发往虚拟缓存接口;
步骤2-3)所述控制器将流表项配置到网络设备。
作为上述方法的一种改进,所述步骤3)包括:
步骤3-1)所述存储设备从虚拟缓存接口接收报文,并从报文中提取报文协议类型和内容名称;
步骤3-2)判断报文协议类型是否为内容请求报文,如果是,转入步骤2-3);否则,转入步骤2-4);
步骤3-3)对内容名称进行判断,并进行哈希处理,查找本地存储,形成请求的响应报文并发送出去;
步骤3-4)对内容名称进行判断,并进行哈希处理,查找本地存储,在本地存储内容数据或丢弃该内容数据。
作为上述方法的一种改进,所述步骤3-3)具体包括:
步骤3-3-1)所述存储设备对内容名称进行判断:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
步骤3-3-2)以访问用的名称hash-name查找本地存储,得到请求响应的净荷;
步骤3-3-3)根据协议类型对净荷进行数据封装,形成请求的响应报文,将该报文从请求报文到达的接口发送出去。
作为上述方法的一种改进,所述步骤3-4)具体包括:
步骤3-4-1)所述存储设备对内容名称进行判断:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型的,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
步骤3-4-2)以访问用的名称hash-name查找本地存储,
如果本地有访问用的名称hash-name的数据,则丢弃数据报文;否则以访问用的名称hash-name为文件名,在本地存储内容数据。
发明还提出一种虚拟缓存共享系统,所述系统包括缓存接口注册模块、配置模块和内容请求及数据处理模块;所述缓存接口注册模块设置在网络设备上;所述配置模块设置在控制器上,所述内容请求及数据处理模块设置在存储设备上;
所述缓存接口注册模块,用于通过OpenFlow协议扩展,向控制器注册网络设备上指定的虚拟缓存所连接的接口;
所述配置模块,用于对每个网络设备进行配置,使网络设备将访问虚拟缓存的报文发送到虚拟缓存接口;
所述内容请求及数据处理模块,用于从网络设备注册的虚拟缓存接口接收到访问报文后,分别对报文内容进行内容请求发送或内容数据存储的处理。
作为上述系统的一种改进,所述缓存接口注册模块包括:缓存接口设置单元和缓存接口注册单元;
所述缓存接口设置单元,用于将指定缓存接口设置为支持多协议接口;
所述缓存接口注册单元,用于通过OpenFlow协议,向控制器注册缓存所连接的接口并发送注册缓存接口的消息。
作为上述系统的一种改进,所述配置模块包括:建立共享缓存列表单元、请求报文发送单元和请求配置单元;
所述建立共享缓存列表单元,用于在接收到注册缓存接口的消息后,提取网络设备标识、缓存接口的标识和由所支持的协议列表,形成所辖域的共享缓存列表;
所述请求报文发送单元,用于根据所述共享缓存列表中协议表项所支持的协议列表,增加一个流表项,该流表项指示将访问缓存的请求报文发往所述缓存接口;
所述请求配置单元,用于将流表项配置到网络设备。
作为上述系统的一种改进,所述内容请求或数据处理模块包括:接收报文单元、报文协议类型判断单元和内容请求报文的处理单元;
所述接收报文单元,用于从缓存接口接收报文,并从报文中提取报文协议类型和内容名称;
所述报文协议类型判断单元,用于判断报文协议类型是否为内容请求报文;
所述内容请求报文的处理单元,用于对内容名称进行判断,进行哈希处理,查找本地存储;并根据报文协议类型,对报文进行请求/响应报文发送或内容数据存储的处理;
如果是内容请求报文,网络设备对内容名称进行如下处理:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
以访问用的名称hash-name查找本地存储,得到请求响应的净荷;
根据协议类型对净荷进行数据封装,形成请求的响应报文,将该报文从请求报文到达的接口发送出去。
如果是内容数据报文,网络设备对内容名称进行如下处理:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型的,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
以访问用的名称hash-name查找本地存储,
如果本地有访问用的名称hash-name的数据,则丢弃数据报文;否则以访问用的名称hash-name为文件对象名,在本地存储内容数据。
本发明的优势在于:本发明的方法能够实现多个虚拟网络间单网络设备上缓存内容共享,具有不影响网络设备转发性能的特点,系统实现简单便捷。
附图说明
图1本发明的缓存接口注册方法流程图;
图2本发明的内容请求处理流程图;
图3本发明的内容数据处理流程图;
图4本发明的虚拟缓存共享系统组成示意图;
图5本发明的网络设备内多协议缓存操作表项内容示意图;
图6本发明的存储设备内多协议处理模块图;
图7本发明的支持2个虚拟网的网络示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
本发明提供一种虚拟缓存共享方法,该方法解决了多个虚拟网络间单设备缓存内容共享问题,具有不影响网络设备转发性能、系统实现简单便捷的特点。
本发明提出的一种虚拟缓存共享方法,包括:
步骤1)网络设备通过OpenFlow协议扩展,向控制器注册指定的虚拟缓存所连接的接口;
步骤2)由控制器配置网络设备,使网络设备将访问虚拟缓存的报文发送到虚拟缓存接口;
步骤3)所述存储设备从虚拟缓存接口接收到访问虚拟缓存的报文后对报文进行内容请求发送或数据存储的处理。
该方法涉及如下实体:控制器、网络设备和存储设备。所述控制器指在SDN(软件定义网络)中控制器功能的基础上,实施扩展,主要的扩展功能包括网络设备的缓存接口管理、使用缓存的协议管理等。所述网络设备指支持OpenFlow/POF的路由器/交换机,以及可运行前述路由器/交互机软件的服务器、计算机等。所述存储设备指能够存储文件的设备,具备自己的操作系统,通过物理或虚拟网络接口连接到网络设备。
如图1所示,所述缓存接口注册子方法指网络设备通过OpenFlow协议扩展,向控制器注册缓存接口标识的方法。所述OpenFlow协议主要是通过对不同类型消息的处理来实现控制器与交换机之间的路由控制的。设备管理人员或网络管理人员指定缓存接口,将其设置为支持多协议。所述缓存接口可以是物理网络接口或虚拟网络接口,其上挂接存储设备(挂接的方法不是本专利的范围)。触发网络设备注册缓存接口的操作,控制器接收到网络设备的注册缓存接口的消息后,提取出网络设备标识、缓存接口标识、支持协议列表,并形成所辖域的共享缓存列表。控制器根据所支持协议列表,指示协议表项所指协议,在访问缓存的操作中,增加一个流表,该流表指示将访问缓存的报文发往缓存接口,所述控制器将流表项配置到网络设备。
所述内容请求或数据处理子方法,指存储设备从网络接口接收到内容请求/数据报文后进行处理的过程。分两个过程:1)内容请求报文的处理;2)内容数据报文的处理。
如图2所示,如果是内容请求报文,则存储设备从报文中提取协议类型、内容名称,内容名称可以是层次型的、扁平的和基于属性值对的。如果是层次型的,则对名称进行哈希处理,形成访问用的名称hash-name。如果名称是属性值对的,则首先将属性值对转换为层次型的,即将值对串接,串接前以/隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name。如果是扁平的,则直接作为hash-name。以hash-name查找本地存储,得到请求响应的净荷;依协议类型,对净荷进行数据封装,形成请求的响应报文,将报文从请求报文到达的接口发送出去。
如图3所示,如果是内容数据报文,则存储设备从报文中提取协议类型、内容名称,内容名称可以是层次型的、扁平的和基于属性值对的。如果是层次型的,则对名称进行哈希处理,形成访问用的名称hash-name。如果名称是属性值对的,则首先将属性值对转换为层次型的,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name。如果是扁平的,则直接作为hash-name。以hash-name查找本地存储,如果本地有hash-name的数据,则丢弃数据报文;否则存储设备以hash-name为文件对象名,在本地存储内容数据。
如图4所示,本发明还提出一种虚拟缓存共享系统包括:控制器、网络设备和存储设备;
所述系统还包括缓存接口注册模块、配置模块和内容请求或数据处理模块;
所述控制器指在SDN(软件定义网络)中控制器功能的基础上,实施扩展,主要的扩展功能包括网络设备的缓存接口管理、使用缓存的协议管理等。
所述网络设备指支持OpenFlow/POF的路由器/交换机,以及可运行前述路由器/交互机软件的服务器、计算机等;所述网络设备用于通过OpenFlow协议扩展,向控制器发出注册缓存接口的消息。
如图6所示,所述存储设备指能够存储文件的设备,具备自己的操作系统,通过物理/虚拟网络接口连接到网络设备;所述存储设备用于从缓存接口接收到访问缓存的报文后进行内容请求或数据处理。
本发明所述缓存接口注册模块,用于通过OpenFlow协议,网络设备向控制器注册缓存接口;
所述缓存接口注册模块包括:缓存接口设置单元和缓存接口注册单元;
所述缓存接口设置单元,用于操作人员指定缓存接口,将其设置为支持多协议接口;
所述缓存接口注册单元,用于网络设备通过OpenFlow协议,注册缓存所连接的接口并发送注册缓存接口的消息。
所述配置模块包括:建立共享缓存列表单元、请求报文发送单元和请求配置单元;
所述建立共享缓存列表单元,用于控制器接收到注册缓存接口的消息后,提取网络设备标识、缓存接口的标识和所支持的协议列表,形成所辖域的共享缓存列表;
所述请求报文发送单元,用于控制器根据所述共享缓存列表中协议表项所支持的协议列表,增加一个流表项,该流表项指示将访问缓存的请求报文发往所述缓存接口;
所述请求配置单元,用于控制器将流表项配置到网络设备。
所述内容请求或数据处理模块,用于网络设备从缓存接口接收到的报文中提取报文协议类型和内容名称,并对内容名称进行哈希处理,形成访问用的名称hash-name;以访问用的名称hash-name查找本地存储;并根据报文协议类型,对报文进行请求/响应报文发送或内容数据存储的处理。
所述内容请求或数据处理模块,包括:接收报文单元、报文协议类型判断单元和内容请求报文的处理单元;
所述接收报文单元,用于网络设备从缓存接口接收报文,并从报文中提取报文协议类型和内容名称;
所述报文协议类型判断单元,用于判断报文协议类型是否为内容请求报文,
所述内容请求报文的处理单元,用于对内容名称进行判断,进行哈希处理,查找本地存储;并根据报文协议类型,对报文进行请求/响应报文发送或内容数据存储的处理;
如果是内容请求报文,网络设备对内容名称进行判断:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
以访问用的名称hash-name查找本地存储,得到请求响应的净荷;
根据协议类型对净荷进行数据封装,形成请求的响应报文,将该报文从请求报文到达的接口发送出去。
如果是内容数据报文,网络设备对内容名称进行判断:
如果所述内容名称是层次型的,则对所述内容名称进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是属性值对的,则首先将属性值对转换为层次型的,即将值对串接,串接前以“/”隔开;之后对串接的结果进行哈希处理,形成访问用的名称hash-name;
如果所述内容名称是扁平的,则内容名称直接作为访问用的名称hash-name;
以访问用的名称hash-name查找本地存储;
如果本地有访问用的名称hash-name的数据,则丢弃数据报文;否则以访问用的名称hash-name为文件对象名,在本地存储内容数据。
实施例
如图7所示,在该网络上形成2个虚拟网,一个虚拟网支持NDN(Named DataNetworking),另一个虚拟网支持MF(MobilityFirst)。
在本示意图中,参照附图6,设备1、设备2和设备3,缓存接口完成注册,在设备内形成如附图5所示的流表项。下面结合这种场景说明本发明。
假定NDN的内容请求报文到达设备1,内容名字是"/publisherA/content/photo1"。设备1依据附图5的流表项将内容请求报文经缓存接口发送到存储设备。
存储设备依附图2进行处理,假定"/publisherA/content/photo1"做哈希处理后hash-name="12345"(为方便处理,示意)。在本地检索后找到名字为“12345”的文件,本地读取文件内容,依据NDN报文格式进行封装处理,由接收接口发回设备1。设备1接收到这条响应,依据NDN的流表进行后续处理工作。这样就完成缓存数据读取。
假定设备2接收到MF的数据报文,名字为"56789",净荷为1KB的数据。依据附图5的流表项,将数据报文经缓存接口发送到存储设备。存储设备依附图2进行处理,因为名字"56789"是扁平的,所以hash-name="56789"(为方便处理,示意)。在本地检索后没有找到名字为"56789"的文件,则将净荷数据在本地存储,文件名为"56789"。这样就完成缓存数据写入存储设备。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。