五月天视频APP下载链接安卓 -五月天app官网无限观看
0731-84728105
15116127200
FAST入门(6)FAST硬件流水线之二
宣布时间 :2018-07-16
     FAST基本 的流水线由5个通劳累 效模块组成,可支持基本 的OpenFlow转发成效 。经过 对基本 流水线扩展,可以完成 越发严重 的交流成效 。
一、基本 硬件流水线结构
     FAST基本 流水线征求 通用分组剖析 (GPP)、通用关键 字提取(GKE)、通用婚配 引擎(GME)、通用转刊举动 (GAC)和通用输入 引擎(GOE)五个模块,以及一个分组缓冲区(Buffer),如下图所示。因为 Buffer对软件是不成 见的,与详细 的分组处置赏罚 成效 有关 ,是以 不是FAST的硬件模块,也没有MID编号。
     GPP将抵达 的分组凭证 抵达 的先后顺序将分组写入Buffer缓存,同时提取分组的前128字节作为分组头向量(PHV)随分组元数据(M)在模块间转达 ,模块GAC以此将分组从Buffer读出,重新与元数据组合,发往GOE模块。在GPP将分组缓存,只在流水线中转 达 PHV的低贱 是简化流水线的设计,阻止 变长报文对流水线处置赏罚 功用 的浸染 。
     M和PHV在Verilog中划分界说为256位和1024位的向量,KEY界说为296位(IPv6五元组)的向量,是以 下游 模块运用 1个时钟周期即可将M、PHV以及KEY信息转达 到下游模块。
二、流水线的处置赏罚 流程
   (1)GPP模块
     GPP模块剖析 抵达 分组的L2-L4层协议,将剖析 效果 写入分组元数据中8比特的PST字段。PST编码中0XXXXXXX编码对应IPv4相关协议,1XXX XXXX编码对应IPv6相关协议。0000 0000表现 未识此外协议。
     如今 GPP支持的PST编码类型如下:
     GPP模块同时仔细 把分组送报文缓冲区凭证 先进先出的方式缓存,同时天生 每个分组的PHV,与分组元数据一同 向流水线下游传送。
   (2)GKE模块
     GKE仔细 凭证 元数据中德PST值,从PHV中提取查表关键 字。当分组PST确准时 ,关键 字在PHV中具有确定的位置 。例如,关于 提取IPv4/TCP/UDP报文的五元组,可离线盘算得:IPv4源IP地址到以太网帧起始的偏移量为26(208bit)字节,目的IP偏移量为30字节(240bit)。协议域偏移为23字节(184bit),TCP/UDP源和目的端口号划分为34(272bit)和36(288bit)字节。显然,若是 在关键 字提取时需求 TCP的SYN等记号 位,可以盘算这些记号 位的偏移量,直接赋值即可。用Verilog形貌 的IPv4五元组关键 字提取代码如下图所示。
     GKE支持对IPv4/IPv6的TCP/UDP/ICMP五元组提取(ICMP没有端口号),其中IPv4和IPv6的关键 字具有分别 的名堂 。
   (3)GME模块
     GME模块完成 相似 TCAM的成效 ,将征求 五元组的key与TCAM中的带掩码的五元组规则举行 婚配 ,前往 婚配 的FlowID,若是 婚配 不掷中 ,FlowID为全0。GME将前往 的flowID信息填写到元数据的FlowID字段中。
     分别 的FPGA平台上,GME的婚配 有分别 的完成 要领,以及分别 的规则数目和规则宽度等。完成 方式也多是 运用 FPGA片外的TCAM芯片,或许 FPGA片内的TCAM逻辑。
     因为 GME输入 的KEY能够 有多种名堂 ,是以 GME讲KEY与元数据中协议类型(PST)字段兼并 组成查表关键 字,软件在设置 查表规则时,分别 名堂 的规则前面 要带上分别 的PST编码。
   (4)GAC模块
     GAC模块征求 Action表,通常表项的巨细与FlowID的宽度相关 。例如系统 支持4K条五元组标志 的流,那么FlowID的宽度为12,在GAC中的Action表也有4K项。每个Action表征求 对分组的转发职掌 ,征求 丧失 ,转发到特定输入 端口,或送到特定的软件UA处置赏罚 等。GAC凭证 转发职掌 相关更新分组元数据中的字段,信息同时将分组从Buffer中读出,与元数据一同 发给下游模块。
     GAC完成 对分组元数据中OutPort、Discard、DMID等域的修正 ,决议 分组的转发交盛行 为。
   (5)GOE模块
     GOE模块仔细 FAST流水线输入 分组的处置赏罚 ,主要 征求 以下2个成效 。一是凭证 设置 对FlowID/DMID标志 流的令牌桶限速,例如作为OpenFlow交流机完成 时,GOE可以控制Packet-in分组(DMID为OpenFlow通道控制器)的流量,二是对扬弃 分组的计数。因为 分组在Buffer中是顺序存储的,是以 纵然GAC之前的模块不行 随意扬弃 分组或许 分组元数据。GPP等模块若是 决议 要扬弃 分组时,需将分组元数据中的Discard位置 位,将DMID设置为GOE的MID,这样分组就会旁路掉GOE模块前其他模块的处置赏罚 ,直到GOE模块。GOE模块完成 对分组的扬弃 ,并举行 统计计数。
     显然,FAST基本 流水线只完成 了最基本 的分组处置赏罚 成效 ,怎样 经过 流水线扩展完成 越发严重 的分组处置赏罚 将在后续文章中先容 。