![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA智能网卡
qq_807315755
微信公众号
展开
-
FPGA智能网卡-hash桶冲突
为什么需要hash来管理flow表智能网卡芯片主要依据流的五元组来管理flow表;比如ipv4的报文,流的五元组是SIP(32bit)+DIP(32bit)+SPORT(16bit)+DPORT(16bit)+PROTO(8bit),一共104bit;但是flow表的数量往往达不到如此大的规模;所以选择使用hash来压缩流表的地址空间;这可能会带来hash冲突问题;什么是hash冲突当不同的五元组的key通过hash算法得到相同的值,可以理解为是hash冲突;计算hash冲突的概率如下图原创 2022-05-02 14:37:36 · 949 阅读 · 0 评论 -
FPGA智能网卡-流表老化功能
流表老化的作用?流表老化主要有以下几个目的; 在智能网卡系统里面,流表的空间有限,流表老化主要为了流表空间利用最大化; 流表老化是什么?流表老化是一直利用时间戳机制来删除无用的流表;以达到流表空间的利用效率;流表老化怎么做?如下图所示, 从flow id=1的地址读流表,提取流表的时间戳;依次循环读流表;当前时间戳减去流表时间戳大于门限的时候,上报统计消息给业务软件,如果业务软件发出命令来删除流表;...原创 2022-04-23 16:37:59 · 823 阅读 · 0 评论 -
智能网卡OVS卸载设计
智能网卡转发面作用主要为了实现报文的编辑,实现OVS的功能;比如加vxlan头或者去vxlan头,修改MAC, 修改IP,修改UDP或者TCP的字段;以实现网络的智能互联功能;智能网卡转发面架构如下图所示:主要有以下几个模块 报文缓存管理,主要缓存原始报文的payload,当编辑报文头完成后,新报文头+原始报文的payload组成新的报文发送出去; parser模块,主要为了解析报文提取相应的meta信息;比如vni,sip,dip,sport,dport...原创 2022-04-16 18:39:27 · 3008 阅读 · 0 评论 -
FPGA智能网卡-RSS功能
FPGA智能网卡RSS功能是什么?RSS是一种智能网卡技术,能让智能网卡均衡的分配CPU; 一般选择2元组{sip,dip}或者4元元组{sip,dip,sport,dport}通过hash,得出HASH VALUE,然后通过Hash Value去查询indirect table;计算出queue的信息;HASH算法的选择方案一, CRC算法,网上有很多关于CRC的教程; 方案二, toeplitz 算法,先贴一下verilog的代码 function[31:0]h..原创 2022-04-08 22:36:54 · 831 阅读 · 0 评论 -
FPGA智能网卡-流量监管功能
为什么需要这个功能? 运营维度 售卖依据规格,带宽是重要的规格之一。比如VPORT限速,VPORT GROUP限速; 运维维度 当发现异常流量,可以采用flow限速来限制异常流量; FPGA智能网卡的限速是什么?当超过流量规格的时候,流量监控模块会丢弃配置的带宽规格;怎么做?限速采用令牌桶原理,下面来阐述一下限速的原理 令牌生产者 按照配置的速率来添加令牌;如果添加的令牌大于令牌桶的大小则溢出多余的令牌; 令牌消费者 入口的报文读meter表,首先判断原创 2022-04-04 21:54:13 · 502 阅读 · 0 评论 -
FPGA智能网卡-flow表匹配统计功能
为什么需要此功能?主要从两个方面来考虑: 运营方面: 售卖依据规格,流量包是重要的规格之一。 运维方面: 当我们定位线上问题的情况中,flow统计是重要的手段之一; flow表统计是什么?flow表统计主要是统计匹配flow表的报文个数和字节的数量;怎么做?当匹配流表的时候,匹配的流读对应的统计值,然后加上自身报文的属性(个数,字节大小) 如下图所示:...原创 2022-04-04 10:05:49 · 973 阅读 · 0 评论 -
FPGA智能网卡删除流表原理
智能网卡存储表象的规格有限,所以当某条流不再查询流表的时候,就会把对应的流表删除,把对应的位置给其他流使用;删除流表方法业务软件下发控制命令到控制面,然后控制面解析命令,然后删除流表;触发机制TCP协议报文触发机制如下图所示,让MAC收到TCP的FIN或者Rst报文的时候,上送给业务软件,业务软件收到FIN或者Rst报文的时候,就可以判断出来本次session需要删除,可以删除硬件的流表;老化触发机制主要涉及到3个模块,下面来梳理下3个模块之间的关系; 如下图所示,老化模块轮原创 2022-04-03 22:03:18 · 749 阅读 · 0 评论 -
FPGA智能网卡芯片配置流表原理
1. 背景FPGA智能网卡的价值在于卸载网络业务,减轻CPU的负担;网络卸载是以流级别作为粒度;那么配置流量是智能网卡芯片卸载业务的前提,2. 分析配置流表的原理2.1 TCP报文在TCP建立链接的过程中,智能网卡收到TCP的握手的syn报文的时候,智能网卡上送syn报文给业务,业务收到报文后,下发配置给智能网卡;具体流程如下:2.2 UDP报文因为TCP的链接没有状态,智能网卡收到UDP报文的时候,智能网卡上送相应的报文给业务,业务收到报文后,下发配置给智能网卡;具体流程如下:原创 2022-03-30 21:15:51 · 962 阅读 · 0 评论 -
FPGA智能网卡数据路径
整体的数据大图如下:正常转发数据路径[红色路径]报文从mac进来,查询流表并且匹配, 进入Action模块处理报文,然后从mac发出;上行数据通道[蓝色路径]报文从mac进来,查询流表并且不匹配,上送CPU;下行数据通道[浅蓝色路径]报文经过CPU处理,从PCIE下发到FPGA智能网卡,网卡收到报文后,把报文从MAC发出;配置表项通道[橙色数据路径]CPU收到报文后,触发配置表项流程,下发流表命令;从而后续报文就可以匹配流表;...原创 2022-03-29 22:42:54 · 513 阅读 · 0 评论 -
FPGA智能网卡-HairPin功能
是什么?智能网卡的hairpin功能指的是智能网卡实现同CN上多个VM之间通信网络转发功能;怎么做?方案一在智能网卡内部闭环解决智能网卡实现同CN上多个VM之间通信网络转发功能; VM0发出以太网报文到转发面路径1,2; 转发面收到报文固定封装隧道头,发送到routing; routing模块识别到固定IP的隧道头的时候,再把报文回给转发面, 转发面剥去隧道头,并且把报文发给VM1; 通过这样的方式实现同CN上多个VM之间通信网络转发功能;方案原创 2022-03-27 22:08:07 · 1241 阅读 · 0 评论 -
FPGA智能网卡功能剖析
智能网卡功能主要包括商卡功能和硬件转发面卸载功能;商卡功能 MAC功能,收发报文功能; PCIE功能,配置命令,消息下发和收发报文; DDR, 储存流表; 网卡RSS,上行通道根据报文五元组HASH来选择队列,分发报文; 网卡Flow Direct,上行通道根据报文五元组来选择队列,分发报文; 硬件卸载功能;转发功能 匹配流表 -> Action,处理overlay和underlay报文头的处理,增删改; 统计针对flow,原创 2022-03-26 15:36:09 · 1600 阅读 · 0 评论 -
FPGA智能网卡 MAC 的padding功能
padding原因 网卡内部消息报文或者其他报文组时候可能会小于64Byte;但是以太网报文长度必须大于等于64Byte;但是在mac层传输会增加4个字节的fcs;所以逻辑在处理以太网报文发给MAC的长度需要 大于60Byte;这也是智能网卡需要做padding的原因; 如何padding根据 rfc948 IEEE 802.3 packets have minimum size restrictions based on network bandwidth. When necessary,原创 2022-03-19 09:40:35 · 732 阅读 · 0 评论