CN1494279A - 一种快速计算ip报文头校验和的方法 - Google Patents
一种快速计算ip报文头校验和的方法 Download PDFInfo
- Publication number
- CN1494279A CN1494279A CNA021501130A CN02150113A CN1494279A CN 1494279 A CN1494279 A CN 1494279A CN A021501130 A CNA021501130 A CN A021501130A CN 02150113 A CN02150113 A CN 02150113A CN 1494279 A CN1494279 A CN 1494279A
- Authority
- CN
- China
- Prior art keywords
- verification
- message
- former
- heading
- calculation check
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及一种快速计算IP报文头校验和的方法,属数据通信技术领域。本方法首先计算IP报文头的原校验和,对接收到的IP报文进行转发,若转发过程中只对报文的生存时间进行了减1操作,则对该报文设置可快速计算校验和标志,否则相应的标志位置空;最后对可快速计算校验和标志的报文计算校验和。本发明方法,在计算效率上有了显著的提高,既可以在软件转发的系统中使用,同时也可以在硬件转发系统中使用。
Description
技术领域
本发明涉及一种快速计算IP报文头校验和的方法,属于数据通信技术领域。
背景技术
IP报文头中携带了校验和字段,用来保证IP报文穿过网络时的可靠性。转发设备在收到一个IP报文时,首先计算报文的校验和是否正确,并将校验和不正确的报文丢弃,在确定转发路径并对IP报文头进行必要的修改之后,转发设备将重新计算校验和。IP报文头校验和的计算时间与IP报文头的长度呈线性关系,对于最简单的IP报文头(IP报文头长为20字节),需要进行至少10次内存访问操作和加法运算。这个开销在软件转发的情况下对报文转发率的影响显得尤其重要。事实上,转发设备在绝大多数情况下只对IP报文头中的生存时间(Time To Live,以下简称TTL,IP报文头的第8个字节,当IP报文通过转发设备时,TTL域需要减1)进行了减1操作,而对报文头的其它域没有进行任何修改。
目前常用的IP报文头校验和计算方法就是将IP报文头看成一段连续的空间,然后按照从前到后的顺序,以两个字节为单位进行切分,得到一个短整数的序列,将这些数加起来,在考虑了进位的影响并进行取反操作之后,最后得到的短整数就是IP报文头的校验和。IP报文头的结构如图1所示。
以长度为20字节的IP报文头为例,校验和的计算过程如下:
首先,计算10个短整数的和:短整数和S=∑(Wi);
然后,分别拆分出高16位和低16位:短整数和的高16位=短整数和/65536;短整数和的低16位=短整数和mod 65536;
计算高16位和低16位的和,并将其存在临时变量T中:
临时变量T=短整数和的高16位+短整数和的低16位;
如果T大于65535,则减掉65535:
将临时变量T按16位取反,得到最终的校验和:校验和C=65535-临时变量T。
因为IP报文头中的第一个字节携带了IP的版本号,而IP的版本号为4(对目前普遍使用的IPV4而言),因此正确的IP报文头的第一个短整数W0永远大于0,短整数和的高16位+短整数和的低16位>0,临时变量T肯定不为0,所以,校验和C的取值范围为:0~65534
现有的技术方案是校验和计算的一个通用算法,它并没有考虑转发设备在绝大多数情况下只对IP报文头中的TTL进行减1操作,也不修改IP报文头其他域,而只是对IP报文头重新进行了一次校验和的计算,没有利用IP报文头中已经计算出的上次校验和的结果。从这个通用算法的基本流程不难看出,当IP报文头长度为2N个字节时,至少需要进行N次内存访问操作和加法运算。由于IP报文头的最小长度为20,所以N大于等于10,其运算量将是非常大的。
发明内容
本发明的目的是针对已有技术中计算校验和效率较低的缺点,提出一种快速计算IP报文头校验和的方法,以简化IP校验和的计算。
本发明提出的快速计算IP报文头校验和的方法,包括以下各步骤:
1、按照从前到后的顺序,对IP报文头以两个字节为单位进行切分,得到一个短整数的序列,原校验和为所有短整数之和;
2、对接收到的IP报文进行转发,若转发过程中只对报文的生存时间进行了减1操作,则对该报文设置可快速计算校验和标志,否则相应的标志位置空;
3、对上述设置了可快速计算校验和标志的报文,计算校验和。
上述方法中,计算校验和的公式为:
对于字节序为低字节在前,高字节在后的系统,若第一步中的原校验和<65534,则新校验和=原校验和+1,否则新校验和=原校验和-65534。
对于字节序为高字节在前,低字节在后的系统,若原校验和<65279,则新校验和=原校验和+256,否则新校验和=原校验和-65279。
上述方法中,对报文设置可快速计算校验和标志的方法,是在报文附属的转发控制块中设置标志位。
本发明提出的快速计算IP报文头校验和的方法,只需要进行一次内存访问和加法计算,相对于原有的通用计算方法在计算效率上有了显著的提高。考虑到转发设备在绝大多数情况下只对IP报文头中的TTL进行减1操作,因此这种优化方法具有实用性。从使用场合来看,本方法既可以在软件转发的系统中使用,也可以在硬件转发系统中使用。
附图说明
图1是IP报文头的结构示意图。
图2是TTL在IP头中的位置示意图。
具体实施方式
本发明提出的快速计算IP报文头校验和的方法,首先按照从前到后的顺序,对IP报文头以两个字节为单位进行切分,得到一个短整数的序列,W0,W1,……,Wn,原校验和为W0+W1+……+Wn;对接收到的IP报文进行转发,若转发过程中只对报文的生存时间进行了减1操作,则对该报文设置可快速计算校验和标志,否则相应的标志位置空;对上述设置了可快速计算校验和标志的报文,计算校验和。
计算校验和的公式为:
对于字节序为低字节在前,高字节在后的系统,若第一步中的原校验和<65534,则新校验和=原校验和+1,否则新校验和=原校验和-65534。
对于字节序为高字节在前,低字节在后的系统,若原校验和<65279,则新校验和=原校验和+256,否则新校验和=原校验和-65279。
上述对报文设置可快速计算校验和标志的方法,是在报文附属的转发控制块中设置标志位。
IP报文头中,TTL域的位置是固定的,如图2所示,位于IP报文头的第8个字节,恰好是校验和计算中的第五个短整数W4。从IP报文头校验和通用算法中,不难发现TTL域对校验和的贡献是固定的,与IP报文头的其他域无关,这样,仅当TTL的值发生变化时,可以很容易地根据TTL变化的情况及原校验和,计算出新的校验和。
下面是本发明提出的校验和计算公式的推导过程:
对于设置了可快速计算校验和标志的报文,只有TTL(W4)发生了变化,其他短整数的值不变,所以:
原短整数和Sold=∑(Wi)
新短整数和Snew=∑(Wi′),当i=4时,Wi不等于Wi′,对i的其他值,Wi=Wi′
令转发处理前后TTL的差值sub=W4-W4′,即0<sub≤65535
则原短整数和Sold=新短整数和Snew+TTL的差值sub。
若原校验和Cold+TTL的差值sub<65535,则新校验和Cnew=原校验和Cold+TTL的差值sub;
否则新校验和Cnew=原校验和Cold+TTL的差值sub-65535;
系统存在两种不同的字节序:低字节在前、高字节在后和低字节在前、高字节在后,不同的字节序决定了TTL域在第五个短整数中是高位还是低位。
对于低字节在前,高字节在后的系统,TTL域处于第五个短整数中的低字节,当TTL减1时,第五个短整数的值也减1,即TTL的差值sub=1,代入上面推导出的公式,优化后的校验和计算公式为:
若原校验和Cold<65534,则新校验和Cnew=原校验和Cold+1,
否则新校验和Cnew=原校验和Cold-65534;
对于高字节在前,低字节在后系统,TTL域处于第五个短整数中的高字节,当TTL减1时,第五个短整数的值减少了256,即TTL的差值sub=1,代入上面推导出的公式,优化后的校验和计算公式为:
若原校验和Cold<65279,则新校验和Cnew=原校验和Cold+256;
否则新校验和Cnew=原校验和Cold-65279。
Claims (3)
1、一种快速计算IP报文头校验和的方法,其特征在于该方法包括以下各步骤:
(1)按照从前到后的顺序,对IP报文头以两个字节为单位进行切分,得到一个短整数的序列,原校验和为所有短整数之和;
(2)对接收到的IP报文进行转发,若转发过程中只对报文的生存时间进行了减1操作,则对该报文设置可快速计算校验和标志,否则相应的标志位置空;
(3)对上述设置了可快速计算校验和标志的报文,计算校验和。
2、如权利要求1所述的方法,其特征在于第三步中,计算校验和的公式为:
对于字节序为低字节在前,高字节在后的系统,若第一步中的原校验和<65534,则新校验和=原校验和+1,否则新校验和=原校验和-65534;
对于字节序为高字节在前,低字节在后的系统,若原校验和<65279,则新校验和=原校验和+256,否则新校验和=原校验和-65279。
3、如权利要求1所述的方法,其特征在于第二步中,对报文设置可快速计算校验和标志的方法,是在报文附属的转发控制块中设置标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021501130A CN1300993C (zh) | 2002-11-02 | 2002-11-02 | 一种快速计算ip报文头校验和的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021501130A CN1300993C (zh) | 2002-11-02 | 2002-11-02 | 一种快速计算ip报文头校验和的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1494279A true CN1494279A (zh) | 2004-05-05 |
CN1300993C CN1300993C (zh) | 2007-02-14 |
Family
ID=34233871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021501130A Expired - Fee Related CN1300993C (zh) | 2002-11-02 | 2002-11-02 | 一种快速计算ip报文头校验和的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1300993C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904685A (zh) * | 2012-09-29 | 2013-01-30 | 杭州华三通信技术有限公司 | 一种硬件表项校验错误的处理方法及装置 |
CN104010050A (zh) * | 2014-05-30 | 2014-08-27 | 北京航空航天大学 | 基于中间件实现网关napt功能的方法及装置 |
CN113973110A (zh) * | 2021-10-25 | 2022-01-25 | 北京奇艺世纪科技有限公司 | 一种报文生成方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701316A (en) * | 1995-08-31 | 1997-12-23 | Unisys Corporation | Method for generating an internet protocol suite checksum in a single macro instruction |
US5815516A (en) * | 1996-04-05 | 1998-09-29 | International Business Machines Corporation | Method and apparatus for producing transmission control protocol checksums using internet protocol fragmentation |
KR0183322B1 (ko) * | 1996-11-15 | 1999-05-15 | 양승택 | 아이피/아이씨엠피 패킷 체크섬 생성기 |
US6643821B2 (en) * | 2000-11-30 | 2003-11-04 | Stmicroelectronics, Inc. | Method and device for computing incremental checksums |
-
2002
- 2002-11-02 CN CNB021501130A patent/CN1300993C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904685A (zh) * | 2012-09-29 | 2013-01-30 | 杭州华三通信技术有限公司 | 一种硬件表项校验错误的处理方法及装置 |
CN102904685B (zh) * | 2012-09-29 | 2016-04-27 | 杭州华三通信技术有限公司 | 一种硬件表项校验错误的处理方法及装置 |
CN104010050A (zh) * | 2014-05-30 | 2014-08-27 | 北京航空航天大学 | 基于中间件实现网关napt功能的方法及装置 |
CN113973110A (zh) * | 2021-10-25 | 2022-01-25 | 北京奇艺世纪科技有限公司 | 一种报文生成方法、装置及电子设备 |
CN113973110B (zh) * | 2021-10-25 | 2024-03-15 | 北京奇艺世纪科技有限公司 | 一种报文生成方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1300993C (zh) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7523171B2 (en) | Multidimensional hashed tree based URL matching engine using progressive hashing | |
US8156071B2 (en) | Byte-level file differencing and updating algorithms | |
CN1163047C (zh) | 发送/接收无线数据的设备及其方法 | |
US8495093B2 (en) | Multiway trie data structure that dynamically adjusts node sizes in a manner that reduces memory footprint and improves access speed | |
US8458354B2 (en) | Multi-pattern matching in compressed communication traffic | |
CN1227816C (zh) | 有效的格子结构状态量度归一化 | |
CN109474281A (zh) | 数据编码、解码方法及装置 | |
CN1300993C (zh) | 一种快速计算ip报文头校验和的方法 | |
US6728930B2 (en) | Method for computing the internet checksum | |
EP2462696A1 (en) | Compression of bitmaps and values | |
CN1838666A (zh) | 一种跨操作系统平台的字节序转换方法 | |
CN1203439C (zh) | 多媒体数据加密方法 | |
CN1243431C (zh) | 宽带网络通信产品的通用路由平台命令行的解析方法 | |
CN115328525A (zh) | 一种差分包的生成方法 | |
KR100281321B1 (ko) | 적응적인 산술 부호화 및 그 복호화 방법 | |
US7751486B2 (en) | Systems and methods for transmitting data | |
CN1179662A (zh) | 模式匹配装置 | |
CN1364341A (zh) | 算术编码信息信号的算术译码 | |
CN1250022C (zh) | 数据通信中的可靠帧同步方法 | |
CN112559465A (zh) | 一种日志压缩方法、装置、电子设备及存储介质 | |
RU2807474C1 (ru) | Способ сжатия данных последовательности генома | |
CN100341378C (zh) | 一种上行专用物理信道的搜索方法 | |
CN113569103B (zh) | 煤化工行业技术方案自匹配方法、电子设备及存储介质 | |
US9106864B2 (en) | Multi-bit error diffusion | |
US8990173B2 (en) | Method and apparatus for selecting an optimal delete-safe compression method on list of delta encoded integers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070214 Termination date: 20151102 |
|
EXPY | Termination of patent right or utility model |