首页 > 其他分享 >CRC 基础介绍

CRC 基础介绍

时间:2023-03-07 13:31:38浏览次数:36  
标签:基础 crypto dev PMD CRC 介绍 ISA 检错

CRC的用途

CRC(Cyclic Redundancy Check)校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。

检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

CRC的算法原理

参考:https://www.cnblogs.com/masonzhang/p/10261855.html

关键词:异或,求模运算, image.png

CRC的软硬件实现

有直接计算法和查表法:

直接CPU普通计算单元的方法:

查表法:

直接用CPU特殊指令的方法:

可选的现成方案

intel ISA-L open source https://github.com/intel/isa-l/tree/master/crc

spdk/dpdk 中的CRC 库 参考 https://blog.csdn.net/weixin_39822728/article/details/112527529

在DPDK中,ISA-L帮助DPDK构建了 Compression dev和 crypto dev,具体使用情况如下:

在Compression dev中

使用DEFLATE接口(包含在igzip中),来帮助PMD进行压缩/解压操作

CRC32,来帮助PMD进行数据完整性校验

在crypto dev中

AES,帮助PMD进行AES的加密/解密操作

HASH,帮助PMD对数据进行hash操作

而在SPDK中,ISA-L作为一个git submodule被包含了进去,在很多地方也有使用ISA-L,具体如下:

SPDK中提供了vbdev_crypto和vbdev_compress,这是借助于DPDK中Compression dev和crypto dev实现的,底层同样运行了ISA-L

ISA-L CRC的优势

为了体现其优势,这里用Alder32 和 ISA-L CRC 函数性能进行了比较。两者的性能对比如下:

image.png

标签:基础,crypto,dev,PMD,CRC,介绍,ISA,检错
From: https://blog.51cto.com/xiamachao/6105977

相关文章

  • SQL 基础(一)
    SQL简介基本简介SQL(StructuredQueryLanguage:结构化查询语言)是用于管理关系数据库管理系统(RDBMS)的一门语言。SQL的范围包括数据插入、查询、更新和删除,数据库模......
  • 面试官要你介绍项目,怎么说?
    测试人员在找工作中,基本都会碰到让介绍项目的这种面试题,如何正确介绍自己的项目?需要做哪些技术准备?今天这篇文章,围绕这些问题,跟大家一起聊一聊。关于介绍自己的项目?可以......
  • 搞定Go单元测试(一)——基础原理
    单元测试是代码质量的保证。本系列文章将一步步由浅入深展示如何在Go中做单元测试。Go对单元测试的支持相当友好,标准包中就支持单元测试,在开始本系阅读之前,需要对标准测试......
  • Python基础【16】如何遍历的同时删除指定的元素?
     ***核心:浅拷贝copy()通过操作副本而去锁定元数去剔除主本的元数,如果遍历删除对象一直是主本的话,遍历删除的同时会出现缺失遍历问题(删除是立马进行的,收集器里面的元素被删......
  • 测试基础理论
    软件测试=测试程序+测试数据+测试文档研发模型:顺序模型,迭代模型顺序模型:瀑布模型,V模型,W模型迭代模型:迭代模型,敏捷开发常见的研发流程: 产品经理确定软件需求————>......
  • python—基础知识(部分笔记)
    命名注释快捷键变量名复制运算格式化字符   ①:%s格式化字符串   ②:%d格式化整数   ③:%f格式化浮点数字   ④:format()转义字符:\n  \t算术运算符:%取余......
  • 三种拓扑的对比以及共性基础问题
    对于电感设计而言,最恶劣的电压定义为峰值电流达到最大值时所对应的输入电压,这是一般电感设计的基础,1.改变电感值是不会影响Idc2.改变开关电源频率是不会影响Idc的3.......
  • 入门云原生,你需要了解的基础知识
    “新冠疫情从根本上改变了商业模式,工作流向在线迁移的速度比以往任何时候都要快。越来越多的公司和消费者依靠电子商务“B2B”和B2C”,以及网上银行促进创新以满足日益增长......
  • c++基础学习路线
    c++基础学习路线类和对象c/c++内存管理模板IO流继承多态c++11新特新异常智能指针特殊类设计c++的类型转换STL......
  • python基础(2)
    1.什么是变量?为何要有变量?答:变量是存在变化的量,程序会一直变化,我们需要能反映出程序变化的东西,所以有了变量。2.变量的三大组成部分是?每部分的作用是什么?答:变量的三大组成......