NetMagic是国防科学技术大学计算机学院网路与信息安全研究所面向下一代网际网路创新体系结构研究设计的一款网路创新加速的开放式实验平台。该平台採用开源开放的设计思想和模组可重用的设计理念,通过提供高可用的基本功能模组及良定义的标準接口,有效减轻用户的系统设计、实现及验证工作,减少网路创新开发周期,用于有效打破传统商业网路设备的封闭性束缚,缩短网路技术科研创新周期。
基本介绍
- 中文名网际网路创新体系结构
- 外文名netmagic
- 机构国防科学技术大学计算机学院
- 影响缩短网路技术科研创新周期
优势
NetMagic採用大容量FPGA与商用乙太网交换晶片相结合的新型体系结构,可提供高连线埠密度报文线速转发能力和逻辑可重构能力,从而有效支持新型网路协定和报文处理机制的快速实现和部署。该平台可广泛用于网路科研和教学活动。
设计特点
NetMagic 平台设计特点主要体现在1)基于部分可程式交换机体系结构设计,为用户提供丰富灵活的工作模式;2)通过将用户逻辑与通用报文处理逻辑分离并提供良定义接口,可有效简化用户逻辑设计工作;3)通过通用的基于乙太网的NetMagic 访问控制协定NMAC,为平台管理提供良好兼容性和可移植性;4)通过提供高速扩展接口,有效支持控制及处理能力的扩展。
研发背景
当前,三网融合、物联网、云计算以及IPv6过渡等概念和技术的提出和兴起,一方面有力推动了下一代网际网路(Next Generation Internet,NGI)及相关技术的研究和发展,另一方面也对网路技术,尤其是网际网路技术的创新带来了前所未有的压力和挑战。大量成熟商用网路设备及协定的部署在有力推动网际网路普及套用的,其封闭性也为网路技术创新带来不可忽视的障碍。出于智慧财产权及安全性考虑,传统商用网路设备(路由器、交换机等)通常採用封闭式设备形态。新功能的集成被设备生产厂商严格控制,以防代码泄漏或设备的可靠性及可用性受到损害。第三方难以获得授权,无法在商用平台上展开技术创新和新功能的集成、测试及验证工作。网路技术研究者提出的各种新型协定和机制也难以在真实网路中部署和实验,网路技术创新正面临严峻的瓶颈。
为此,基于Emulab的网路安全试验设备DETER、提供良定义的抽象模型的OpenFlow交换机、网路科研教学评估板NetFPGA等平台相继推出,,这些平台在可靠性、扩展性、依耐性以及逻辑开发难度等方面存在一定限制。为了解决这些问题,研究者开发了一款开放式高扩展性的网路实验平台——NetMagic。
套用领域
NetMagic平台具有硬体可重构性和软体控制可程式性的特点,内部的计算存储模组以及丰富的功能扩展接口为该平台提供了必要的计算存储能力支持。NetMagic实验平台独特的结构设计和丰富的功能支持使得其可适用于很多领域,例如网路教学、网路科研、专用网路建设等。
在网路教学方面,NetMagic实验平台提供了丰富的开放式硬体构件和软体模组等基础资源,并基于上述资源实现乙太网交换机、IPv4路由器、Openflow交换机等参考设计,使用NetMagic实验平台可以使学生们避免浪费精力在複杂而繁琐的实验平台搭建上。基于该平台,学生可以了解网路报文的基本处理流程,掌握网路系统报文处理机制和协定工作原理。NetMagic平台为用户自定义逻辑(UM)的集成提供了良定义的接口,学生可以在NetMagic预置的基本数据通路等模组的基础上,快速高效地将自己的核心网路处理业务集成和部署在NetMagic平台中,实现例如标準乙太网交换机UM、路由器转发引擎UM、Openflow分组处理UM等网路处理功能,从而加深对网路设备内部工作原理的理解,从而有效提高学生网路技术创新能力和工程实践能力。
在网路创新研究方面,NetMagic实验平台通过“部分可程式交换机系统”专利设计提供了强大的可重构特性和线速报文转发能力。NetMagic平台通用可程式逻辑加商用高速交换晶片的独特设计结构,一方面为大规模真实实验环境构建提供有效支撑,另一方面则在新型网路协定、业务和服务的快速部署提供了支持。通过简洁良定义的控制协定和接口,研究人员可以通过外部控制器控制NetMagic对网路报文流的处理行为。,NetMagic实验平台还提供了计算存储扩展能力,使得研究人员可以在实验节点上部署更加丰富的网路管理、处理和计算业务及服务。
目前,基于NetMagic实验平台已经实现和正在开展很多前沿的网路创新技术研究。国家“973计画”的“大规模流媒体传输”正是基于该实验平台进行了新型传输协定功能实现,有效验证了其中流量检测、负载均衡、数据转发控制等创新技术;国家“863计画”的“可重构路由器构件组研製”也基于NetMagic平台进行了业务处理子系统的原型系统构建和实验;国家“863计画”紧急启动项目“三网融合演进技术与系统研究”也拟採用NetMagic平台作为构建网路演示验证环境的核心平台,评价、验证及展示各子课题的创新型研究成果。NetMagic平台为网路技术创新提供快速原型系统部署和大容量高性能的报文转发能力,是一个理想的网路技术创新实验平台。
基本结构
NetMagic平台採用新型部分可程式交换机体系结构技术设计实现,将商用乙太网交换晶片和大容量FPGA有机结合,可提供高连线埠密度下报文线速交换转发能力,提供丰富的工作模式配置,有效支持用户自定义报文处理逻辑集成。,通用的管理控制接口则使NetMagic避免平台相关性可能导致的兼容性和可移植性问题。NetMagic运行时以报文转发为基础,内部并不含CPU,自身无法运行任何作业系统,对于某些相对简单固定的套用,通过FPGA编程时的一些设定,可以完成预定任务。除此之外对于某些複杂灵活的套用,还需要一台外部主机对它进行配置。我们自主开发了一套NMAC协定,通过乙太网报文的形式传到FPGA的管理配置接口,然后由FPGA对这些命令和配置报文进行解析,改变NetMagic的转发行为。
4.1 硬体处理流程
NetMagic以一片中等规模FPGA为核心,称之为MagicFPGA。NetMagic08外设4个RJ45电口和4个SERDES光口。为了可以对报文进行重组,NetMagic08还设计了一片512Mb的DDR2 SDRAM进行报文快取。报文从某个连线埠进入FPGA,根据转发规则决定是否将报文送入DDR2快取,或者决定报文从哪个连线埠输出。转发规则由外部控制主机通过NMAC协定进行配置。
4.2 软体处理流程
NetMagic的软体处理依靠NMAC协定进行,NMAC协定是NeMagic管理模组和外部控制主机之间的一种访问控制协定,提供双方通信机制并定义相关的规范。和NetMagic24平台类似,NetMagic08平台也是以一片MagicFPGA为核心,完成报文的查錶转发和相同配置管理。MagicFPGA内部的管理模组负责基于NMAC协定与外部控制主机建立连线,并对管理报文中的命令进行解析,转换为汇流排命令,完成对NetMagic平台中功能模组控制以及存储器管理等工作。在Netmagic08平台中,管理配置接口使用静态MAC地址和IP位址,在平台初始化时将MAC地址和IP位址烧入硬体中,可以通过硬体编程进行修改。
4.3 MagicFPGA工作模式
MagicFPGA是NetMagic平台实现可定製报文处理功能的核心,其主要为用户提供可重构报文交换模组和平台无关的管理接口,如图3所示。为有效简化用户自定义报文处理功能的开发实现,可重构交换模组预置通用数据通路(Common Data Path,CDP)功能,负责提供报文的接收、传送、複製等基本通用处理原语,并在对存储器接口等複杂逻辑进行封装的基础上,为用户模组(User Module,UM)提供清晰的良定义接口。基于NetMagic平台开发时,用户仅需专注于UM中自定义逻辑的实现,而不必考虑网路接口、数据缓冲、平台管理等其它複杂逻辑的实现。
使用技巧
5.1 UM的总体结构
用户模组User Module简称UM,是MagicFPGA中用户可自行开发的唯一模组,其它模组的硬体代码和功能已经固定。图4 表明了NetMagic08平台上的MagicFPGA中用户模组UM和其它模组的关係。虽然NetMagic平台的硬体代码是全部公开的,理论上用户可以修改全部代码,但对于初学者,我们建议只修改UM中的代码功能。UM通过相关接口与CDP、管理模组和DDR2控制器相连。UM与CDP之间的接口分为输入控制接口和输出控制接口,主要是接收和传送数据报文,完成数据报文的传输;UM与管理模组之间的接口主要通过NMAC协定软体对UM内部暂存器或内嵌RAM表进行访问控制;UM与DDR2控制器之间的接口完成片外DDR2 SDRAM中的缓冲报文和其它数据的访问。DDR2片外存储器的访问相对来说比较複杂,初学者可以先不掌握。
CDP的输入控制模组和输出控制模组之间还有一个输入输出缓冲FIFO,可以直接将报文从输入控制模组旁路到输出控制模组,而不经过UM。UM与各个模组之间的接口功信号定义和时序关係在下面的小节中将详细介绍。用户可以根据需要,实例化必需的接口,设计出自己的UM。对于最简单的报文转发和路由查找等套用,用户只需要实例化与UM与CDP之间的接口和与管理模组之间的接口。
5.2 UM的引脚说明
UM与MagicFPGA内部其它模组的接口信号定义如表1所示。主要列出了与CDP、管理模组和DR2控制器的引脚信号名称及相关说明。其中,表1中的信号方向是相对UM而言。表1 UM与相连模组的引脚信号列表
在NetMagic24上此位对应一个外部百兆管理连线埠,在NetMagic08上这个连线埠不再保留了,而是任选一个物理连线埠作为管理连线埠,此位保留。
5.3 UM报文处理流程
UM和CDP紧密相连,直接面对CDP的输入控制模组和输出控制模组。CDP的输入控制模组将报文往两个方向複製CDP输入输出FIFO和UM。UM一边接收报文,一边提取报文的关键字,生成规则信息。规则信息在报文尾到达前生成完毕,然后等待CDP输出控制模组的许可,即看到CDP的规则FIFO有空闲空间时(um2cdp_rule_usedw<5'd30),将规则信息送往CDP的输出控制模组。
CDP的输出控制模组解析UM送来的规则信息,根据规则信息的最高位决定从哪条路径读取报文。由于规则信息是在报文尾到达时送往CDP输出控制模组的,所以一旦输出控制模组解析完规则信息并决定转发报文时,一定有一个完整的报文在等待着它,这个报文要幺在CDP输入输出FIFO中,要幺在UM中。剩下的事情就很简单了,CDP输出控制模组一边解析规则信息,一边转发报文。报文具体送往哪几个连线埠由规则信息指定。
回头再看看MagicFPGA的工作模式,可以知道,无论哪种模式,都需要UM产生相应的规则信息。即使处于旁路处理模式,也需要UM产生规则信息,告诉CDP输出控制模组如何转发报文。旁路可处理模式并不意味着用户可以不做任何事情,这是本文需要提醒用户注意的。规则是一个更接近软体的概念,实际上UM在产生规则信息的时候也遵循了这个原则,规则可以由MagicFPGA静态产生,也可以由软体通过NMAC协定动态配置,这与NetMagic平台倡导的开放可重构的理念是相吻合的。
5.4 UM接口时序关係
下面,对各个模组之间的时序关係作一介绍,具体内容技术论坛有详细呈现,如有需要,可以移步至相关资料社区阅读参考。
5.4.1 输入控制模组
当UM模组资源空闲,有能力从CDP接收一个新的报文时,则给CDP输入控制模组一个传送使能信号cdp2um_tx_enable。从5.3节可知,CDP输入控制模组获得该使能信号后,向UM和输入输出FIFO传送139位宽的报文数据cdp2um_data,并传送一个报文有效信号cdp2um_data_valid,此信号表明了报文的开始、中间和结束。UM一旦获得了报文的头部,就可以取消使能信号cdp2um_tx_enable,直到报文接收完毕。输入控制模组给UM的报文是连续的。当一个报文传送结束后,UM可以重新产生髮送使能信号,进行下一个报文的上传,如此循环操作。具体操作步骤如下
UM传送请求报文使能信号cdp2um_tx_enable为高;CDP输入控制模组收到cdp2um_tx_enable时,检测是否有一个完整报文等待传送,若有,则把cdp2um_data_valid信号置高,连续传送数据;若没有,CDP输入控制模组等待,cdp2um_tx_enable一直为高;其中,当UM检测到cdp2um_data_valid信号为高时,取消使能信号(置cdp2um_tx_enable为低);当一个报文传送结束后,CDP输入控制模组置cdp2um_data_valid信号为低,此时,如果UM再需要报文数据时,需要重新置cdp2um_tx_enable为高,如此循环。
5.4.2 输出控制模组
UM向CDP输出控制传送匹配规则和相应的报文数据,具体操作步骤如下
UM接收到一个报文尾,且规则FIFO有剩余空间时,将规则写信号um2cdp_rule_wrreq置高一拍,把匹配规则传送给CDP输出控制模组;CDP输出控制模组将规则信息存到一个规则FIFO中,然后根据下游的资源情况从FIFO中读取规则信息,根据规则中的定义(bit[29]),判断该规则绑定的报文是来自UM或是输入输出缓冲FIFO。所谓下游的资源情况是指下游的状态机处于空闲状态,有能力读取和传送一个新的报文。如果绑定为输入输出控制FIFO(bit[29]为1),则从输入输出缓冲FIFO中读出一个报文;如果是绑定自UM(bit[29]为0),则给UM一个数据传送使能信号um2cdp_tx_enable;UM检测到um2cdp_tx_enable为高时,则把um2cdp_data_valid信号置高,连续传送报文给CDP输出控制模组;报文传送结束后UM置um2cdp_data_valid信号为低,等待下一次操作。
5.4.3 UM与管理模组
管理模组把解析后的命令及数据传送给UM。UM获得命令及数据后,对相应的地址空间进行读写操作。如果为读操作,则UM需要向管理模组返回从相应地址中读出的数据及应答信号;如果为写操作,则UM完成写操作后,只需返回应答信号即可。,根据UM获得的读写两种操作命令,UM与管理模组之间的接口时序关係也分为read和write两种。管理模组与UM之间读操作步骤
管理模组输出读请求、地址;管理模组24ns之后输出地址锁存信号ale。高有效;管理模组24ns之后撤掉地址锁存信号;UM检测到ale的下降沿,採样地址并判断。如果为自己的地址空间则继续往下执行。如果不为自己的地址空间则不继续往下执行而是等待下一次操作。管理模组24ns之后撤掉读地址,输出片选。低有效;UM检测到片选信号为0,进行读操作、返回读数据data_out,等数据稳定之后将ack_n信号置0;管理模组检测到ack_n信号为0,採样数据data_out,撤掉片选、读请求;UM检测到片选信号为1,撤掉ack_n信号;管理模组检测到ack_n变为1,可以发起下一次操作。 管理模组与UM之间写操作步骤
管理模组输出写请求、地址;管理模组24ns之后输出地址锁存信号。高有效;管理模组24ns之后撤掉地址锁存信号;UM检测到ale的下降沿,採样地址并判断。如果为自己的地址空间则继续往下执行。如果不为自己的地址空间则不继续往下执行而是等待下一次操作;管理模组24ns之后撤掉写地址,输出写数据;管理模组24ns之后输出片选。低有效;UM检测到片选信号为0,进行写操作,写操作完成之后将ack_n置0;管理模组检测到ack_n信号为0,撤掉片选、请求;UM检测到片选信号为1之后,撤掉ack_n;管理模组检测到ack_n信号变为1之后,可以发起下一次操作。
5.4.4 DDR2控制器时序
UM与DDR2_CTRL之间的操作包括读操作和写操作。当UM模组检测到um2ddr_ready为高时(即DDR2準备完毕时),才能向DDR2传送操作命令。
写操作时,用户将需要存储的数据写入数据FIFO(um2ddr_data_fifo)之后再将命令、首地址及偏移量写入命令FIFO(um2ddr_command_fifo)。
读操作时,用户将命令、首地址及偏移量写入命令FIFO(um2ddr_command_fifo)。DDR2_CTRL将读出的数据写入数据FIFO(ddr2um_data_fifo)之后再将返回的数据信息写入命令FIFO(ddr2um_command_fifo)。UM检测ddr2um_valid_empty信号为0时,表示有数据返回,读取命令FIFO(ddr2um_command_fifo)和数据FIFO(ddr2um_data_fifo)取出结果。
DDR2接口控制器是用Altera的IP核实现的,由于这部分的功能比较複杂,建议用户将资源更多地用在对本文转发的处理上,UM与DDR2接口控制器之间的接口时序图本文尚未提供,有兴趣的读者可以参阅网站上的相关资料和Altera的文档。
5.5 UM内部暂存器定义
UM内部暂存器是NetMagic平台中MagicFPGA暂存器的一部分。NetMagic系统地址空间分配如表2;UM内部暂存器空间的分配如表3;UM标识暂存器地址空间分配如表4;用户可以通过NMAC协定,传送报文对CDP各个暂存器进行读取,从而达到读取连线埠状态的目的。UM标识暂存器均为32位宽,具体定义如表5;用户可以根据实际RAM表的大小,确定内嵌RAM表地址具体需要多少位。如果26位地址也不能满足设计时,可以构造内嵌鍊表进行扩充。
5.6 MagicFPGA数据格式
CDP及UM的内部报文数据宽度都是139位,其中低16个位元组为报文数据,高11位为带外控制信息。CDP和UM中的各个功能模组可以根据带外控制信息对报文进行判断,以确定处理方式。,因为报文全部为乙太网格式报文,所以最少为64个位元组,即四拍数据,不会出现首尾同拍的情况。
说明
头尾标识[138:136]
101报文头部;
100报文中间数据;
110报文尾部;
其余保留。
输入连线埠号port_num[131:128]为4位通道号(仅在报文头标识),对应MagicFPGA中的8个物理连线埠,序号为0-7。序号8-15保留。有效位元组数Vbyte[135:132]仅在报文尾部有效,头部和中间默认16个位元组全部有效。111116个位元组全部有效;
1110最高15个位元组有效;
1101最高14个位元组有效;
依次类推;
0000最高1个位元组有效。