一种基于虚拟地址空间的可编程网络设备管理控制方法

文档序号:8226059阅读:487来源:国知局
一种基于虚拟地址空间的可编程网络设备管理控制方法
【技术领域】
[0001]本发明是针对基于FPGA实现的可编程网络设备的数据平台管理控制所提出的一种方法。
【背景技术】
[0002]随着互联网社会中的普及,网络性能的要求越来越高,现阶段网络体系的发展遇到了渐进式和Clean Slate革命性的两条路,而目前网络的构架难以满足可扩展性,开放性,灵活性,服务质量等各个方面的需求,各个国家、组织机构积极进行网络创新的研究。可编程网络设备是支持网络实验、网络创新研究的重要手段,利用可编程网络设备硬件可重构,上层软件可编程的灵活、开放等特点,可以弥补现有实验网络规模庞大,技术复杂等不足。主流可编程网络设备分为基于FPGA的可编程网络设备和基于NP的软件可编程网络设备,相比之下,FPGA具有硬件可重构性,基于FPGA的硬件平台更加灵活,适合特定的实验进行软硬件协同的开发。可编程网络设备可控制的硬件资源主要包括配置寄存器CR,状态寄存器SR,计数器CNT,控制表格CT等,利用这些可重构硬件资源可实现网络设备的各种功倉泛。
[0003]基于FPGA的可编程网络需要管理控制的数据平面主要包括,参考图1:
配置寄存器CR:为了使数据平面的功能符合实验意图需要配置的寄存器,例如网络设备工作模式,选择寄存器等,可编程网络设备通过软件配置的CR进行设备初始化。
[0004]状态寄存器SR:可编程网络设备根据设备状态信息对SR进行读写操作,控制端软件通过读取SR寄存器了解转发设备端状态、工作情况,寄存器反应数据平台的状态端口UP/D0WN 等。
[0005]计数器CNT:可编程网络设备端硬件向CNT写入转发报文数,错误报文数等统计数据,控制端通读取CNT,以做出决策。
[0006]控制表格CT:存储转发策略的各种控制表格,由软件硬件协同商定转发策略的长度以及表达方式,支持灵活可变长,例如转发平台生成的MAC转发表,软件配置生成的IP转发表等。
[0007]在FPGA中实现访问控制代理,根据寄存器,存储器等资源在虚拟地址空间的映射关系,将软件Read,Write命令转换为FPGA中对上述资源的访问。
[0008]现有的主流网络设备控制协议有作为SDN的一种南向管理协议的OpenFlow协议和已提出多项RFC标准的ForCES协议。这两种协议作为固定标准,无法支撑可编程网络中软件与硬件协商开发与修改,且实现复杂和灵活性不足,加大了对新协议的开发部署和添加网络功能的困难。

【发明内容】

[0009]本发明是一种在可编程网络中对可编程网络设备管理控制的方法,该方法充分的利用了可编程网络设备管理的重要特点:硬件可重构性,软件可编程性,软件与硬件的逻辑可以协同设计。与ForCES和OpenFlow等协议软件硬件独立开发模式不同的是,本方法是软件和硬件开发人员可共同协商的一种硬件资源抽象方法,提供可软件访问控制代理,将硬件可编程资源如寄存器,存储器等以虚拟地址空间形式给软件开发者访问,使得控制端根据虚拟地址空间与可编程硬件进行交互,控制管理网络资源。
[0010]本文以国防科学技术大学NetMagic设备为例,硬件使用可重构的FPGA作为转发资源,而控制平面通过NMAC协议下发转发策略给转发平面。
[0011]一、虚拟地址空间
本专利在可编程网络构架上设计出一种新的抽象硬件资源方法OpenVAS (OpenVirtual Address Space),通过软件硬件联合设计,把硬件平台中所有需要合理控制的寄存器,存储器,计数器等硬件资源统一映射到一个地址空间,成为“虚拟地址空间”,类似于计算机内存抽象出的虚拟地址对于CPU控制访问MMU (Virtual Memory Management)虚拟内存管理。
[0012]在OpenVAS构架方法下,软件与硬件协同设计虚拟地址空间,包括虚拟地址编址大小,每条虚拟地址映射的硬件资源地址表,软件硬件交互通信方式,控制管理命令类型等规则。软件通过开放的虚拟地址空间对硬件如寄存器,存储器,计数器等资源进行管理配置。
[0013]二、OpenVAS构架以及模块组成
为了达到控制端软件管理FPGA网络设备,其模块设计需要以下主要功能模块参考图1包括以下模块。
[0014]软件模块:
(I)可编程网络设备应用管理模块:降低网络应用开发的难度,提供网络应用开发人员API接口,函数注册,实现管理多线程资源,对报文进行管理调度等上层应用功能。
[0015](2)设备虚拟地址访问代理模块:虚拟地址空间映射控制端软件,对虚拟地址空间进行申请、释放等,防止地址重用,提高对虚拟地址空间的使用效率,与应用管理模块协调合理操作虚拟地址空间。
[0016](3)设备控制通信代理模块:控制端软件直接与可编程网络设备交互的接口,软件开发者调用设备控制代理模块,与可编程网络设备进行通信,屏蔽了与底层硬件交互,降低开发难度,同时进行报文解析,区分控制报文和数报文,报文差错和报文序号检验、报文缓存等逻辑功能。可使用Libpcap/Libnet库或标准Socket通行来构架设备控制通信代理。
[0017]硬件模块:
(I)访问控制执行单元模块:硬件可编程网络设备将虚拟地址空间映射实际物理空间模块,寻址实际地址空间对硬件资源进行读写配置,可编程网络设备硬件逻辑通过此模块与软件进行交互。
[0018]通过OpenVAS这种网络构架,转发设备将CR、SR、CNT、CT等映射到同一个虚拟地址空间中,对于控制端可见的是这些虚拟地址空间,控制器通过这些虚拟地址空间的Read,Write命令或函数就可以访问到所有被管理的资源,对可编程网络设备进行管理控制,硬件将控制端传送的虚拟地址进行映射实际可编程资源的地址,提取出映射内容,对实际硬件资源进行读写操作,其虚拟地址空间表达方式可参考图1内虚拟地址空间,其控制端的虚拟地址空间需要与可编程网络设备内的虚拟地址空间保持一致性。
[0019]为了方便软件开发者开发网络应用,控制端构架分成三层,组成如图1控制端模块所示。底层为设备控制通行代理,作为与可编程网络设备通信的驱动;中间层为设备虚拟地址访问代理,是整个控制端系统最为重要的逻辑功能模块,起到承上启下的作用,不仅要屏蔽硬件通信复杂流程,为上层应用开发提供各种API,还要实现软件资源调度如多线程调度、虚拟地址空间控制管理等核心功能。最上层是可编程设备管理应用,软件开发者调用设备虚拟地址访问代理提供的API,实现复杂的网络应用逻辑功能。
[0020]这样的三层构架可加速网络设备可提高对网络应用开发的效率,降低开发难度,同时提高控制端性能稳定性和健壮性。
[0021 ] 三、控制端应用访问虚拟地址空间
控制端通过某种中间协议对虚拟地址空间进行读写操作,及对可编程转发设备进行管理控制,以NMAC协议为例,访问流程如图2所示。
[0022]步骤1:上层注册可编程网络设备应用管理模块,调用API,以目标设备ID号作为目的地址,调用虚拟地址访问代理,对目标设备请求建立连接。
[0023]步骤2:应用调用初始化API后对设备虚拟地址访问代理申请虚拟地址空间,虚拟地址空间得到配置寄存器CR的空间地址,和步骤I提供的目标设备ID号封装成初始化连接报文写入设备控制通信代理。
[0024]步骤3:设备控制通信代理发送连接报文到可编程网络设备,等待连接响应报文。
[0025]步骤4:设备控制通信代理收到响应报文后表示初始化成功,通告上层应用,上层网络应用即可对可编程网络设备进行管理控制。
[0026]步骤5:可编程网络设备向设备虚拟地址访问代理申请CT,下发转发策略如MAC地址表和IP地址表,将转发策略内容发送给设备虚拟地址访问代理。
[0027]步骤6:设备虚拟地址访问代理,将目标设备ID作为目标地址,将步骤5下发的转发策略和申请到的CT的虚拟地址空间封装报文发送给设备控制通信代理,封装同时可选择随即数添加到报文内,以确定报文的唯一性。
[0028]步骤7:如果访问控制代理收到响应报文,且收到报文内的随机数与步骤6发送的随机数一样,则一次控制端访问某虚拟地址空间成功,且下发转发策略成功;如果在规定时间内没有收到,则响应超时,可重复步骤6。
[0029]四、可编程网络设备端实现方法
可编程网络设备端可通过FPGA来实现硬件可重构,与软件协同开发,实现流程参考图3,步骤如下:
步骤1:可编程网络设备初始化,访问控制代理模块等待控制端下发的初始化报文。
[0030]步骤2:当控制代理模块接收到连接请求报文,提取报文的源地址、序号等内容,解析报文类型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1