当前位置: 首页 > news >正文

ipv6报文封装linux,IPv6报文的路由头封装方法及装置与流程

技术特征:

1.一种ipv6报文的路由头封装方法,其特征在于,包括:

头节点对ipv6报文进行路由头的封装,并将封装后的所述ipv6报文发送至srv6域的下一节点,其中,所述路由头包括如下字段:

nextheader:占8比特,表示在所述路由头之后的内层头类型;

hdrextlen:占8比特,表示所述路由头的字节开销;

routingtype:占8比特,表示所述路由头的类型;

segmentsleft:占8比特,表示所述路由头所包含的段列表中剩余待访问的段的数量;

listlen:表示所述路由头所包含的段列表的字节开销;

offset:为占12比特的无符号整数,表示当前访问的segment在段列表中的位置;

reserved:占12比特,保留字段;

多个,每个为所述段列表中的一个元素,其中,st:占4比特,表示压缩后的段的类型;cmprl:占4比特,表示公共前缀的长度;segment:表示压缩后的段内容,其长度由st确定;

padding:可选的填充字段。

2.根据权利要求1所述的方法,其特征在于,所述ipv6报文的路由头还包括可选的类型长度值tlv字段。

3.根据权利要求1所述的方法,其特征在于,所述st包括以下类型之一:

类型0:表示相应的segment为完整的ipv6地址;

类型1:表示相应的segment为1字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型2:表示相应的segment为2字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型3:表示相应的segment为3字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型4:表示相应的segment为4字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型5:表示相应的segment为5字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型6:表示相应的segment为6字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型7:表示相应的segment为7字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型8:表示相应的segment为8字节的ipv6地址片段,该ipv6地址片段可与相应的公共前缀拼接成完整ipv6地址;

类型9:表示相应的segment为3字节的mplslabel索引,通过该mplslabel索引可查询映射表获得完整ipv6地址;

类型10:表示相应的segment为4字节的sr-mplssid索引,通过该sr-mplssid索引可查询映射表获得完整ipv6地址;

类型11:表示相应的segment为4字节的bierbfr-id索引,通过该bfr-id索引可查询映射表获得完整ipv6地址。

4.根据权利要求3所述的方法,其特征在于,其中,当st为类型0时,cmprl表示segment字段的实际长度;当st为类型1-8时,cmprl表示相应segment所属的公共前缀的长度;当st为类型9-11时,cmprl的值无意义。

5.根据权利要求1所述的方法,其特征在于,其中,所述路由头中的段列表采用正序存放方式。

6.根据权利要求1所述的方法,其特征在于,其中,当srv6域的所有节点的srv6sid均具有相同的公共前缀,则将所述公共前缀存放在ipv6header的da中,将各节点的srv6sid的差异部分作为压缩后的信息存放在所述路由头的段列表中。

7.根据权利要求1所述的方法,其特征在于,其中,所述头节点在为所述ipv6报文封装所述路由头时,对于段列表,将s1拷贝至ipv6header的da字段,如果s1被保存在所述路由头中,则offset设置为指向所述路由头中的段列表中的第二个元素,segmentleft=n-1,表示段列表中还剩下有n-1个段元素待处理,其中n为正整数。

8.根据权利要求1所述的方法,其特征在于,所述头节点在为所述ipv6报文封装所述路由头时,对于段列表,将s1拷贝至ipv6header的da字段,如果s1未存放在所述路由头中,则offset设置为指向所述路由头中的段列表中的第一个元素,segmentleft=n-1,表示段列表中还剩下有n-1个段元素待处理,其中n为正整数。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:

所述srv6域的中间节点或尾节点接收到所述ipv6报文时,如果ipv6header中的da与本地的ip地址匹配,并且ipv6header的nextheader字段提示下一层头是所述路由头,则继续处理所述ipv6报文。

10.根据权利要求9所述的方法,其特征在于,其中,继续处理所述ipv6报文包括:

如果segmentsleft等于0,则继续处理内层载荷,所述内层载荷的类型根据所述路由头的nextheader字段确定;

如果segmentsleft不等于0,则将segmentsleft减1,读取下一个segment,offset的当前值指向的就是下一个的首地址,根据st的类型值,读取相应长度的segment,并结合cmprl的信息,将segment转换为完整的新ipv6address;

使offset指向下下一个的首地址;

如果offset大于listlen*8,则丢弃所述ipv6报文,并向ipv6header的sourceaddress发送差错报文;

如果ipv6header的ipv6hoplimit值小于或等于1,则丢弃所述ipv6报文,并向ipv6header的sourceaddress发送icmptimeexceeded-hoplimitexceededintransit报文;如果ipv6header的ipv6hoplimit值大于1,则将所述hoplimit值减1;

将转换得到的所述新ipv6address拷贝到ipv6header的da,并根据新的da查ipv6路由表转发所述ipv6报文。

11.一种ipv6报文的路由头封装装置,位于头节点中,其特征在于,包括:

封装模块,用于对ipv6报文进行路由头的封装;

发送模块,用于将封装后的所述ipv6报文发送至srv6域的下一节点,其中,所述路由头包括如下字段:

nextheader:占8比特,表示在所述路由头之后的内层头类型;

hdrextlen:占8比特,表示所述路由头的字节开销;

routingtype:占8比特,表示所述路由头的类型;

segmentsleft:占8比特,表示所述路由头所包含的段列表中剩余待访问的段的数量;

listlen:表示所述路由头所包含的段列表的字节开销;

offset:为占12比特的无符号整数,表示当前访问的segment在段列表中的位置;

reserved:占12比特,保留字段;

多个,每个为所述段列表中的一个元素,其中,st:占4比特,表示压缩后的段的类型;cmprl:占4比特,表示公共前缀的长度;segment:表示压缩后的段内容,其长度由st确定;

padding:可选的填充字段。

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至10任一项中所述的方法的步骤。

13.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至10任一项中所述的方法的步骤。

相关文章:

  • android 7下载地址,Android7.0下载地址 安卓7.0系统手机下载安装教程
  • android 弹出菜单环形,谷歌新专利:安卓环形菜单 双指触屏效率高
  • android相机拍摄时动画完成效果,Android 仿微信图像拍摄和选择界面功能(代码分享)...
  • 安装android 模拟器 停止运行程序,才知道,原来修改程序后,不需要重新启动AVD模拟器就可以测试程序运行的!...
  • 修改sim卡号码 android,android 如何动态修改SIM卡应用名称 MT6572 MT6589
  • android studio sqliteopenhelper,android studio使用SQLiteOpenHelper()建立数据库的方法
  • 一加5android 系统耗电,一加5评测:可能是今年最好的Android旗舰
  • 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  • html文件如何放置web站点,如何使用Go Web服务器提供静态html文件?
  • asp.net mv4 controller 跳转 静态html,Asp.Net MVC系列--进阶篇之controller(1)
  • html星星连线特效代码,js实现飞入星星特效代码
  • html生成jsessionid,H5 APP 使用 JSESSIONID 保持会话登录
  • web项目html访问不了,JBoss7部署web工程,无法访问到html文件,但是jsp都可以正常访...
  • html中的div的,html – div中的div
  • html背景图去重,Python Django开发 经验技巧总结(二)
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • DOM的那些事
  • FastReport在线报表设计器工作原理
  • Git同步原始仓库到Fork仓库中
  • mysql中InnoDB引擎中页的概念
  • Python学习之路16-使用API
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 动态魔术使用DBMS_SQL
  • 二维平面内的碰撞检测【一】
  • 好的网址,关于.net 4.0 ,vs 2010
  • 记录:CentOS7.2配置LNMP环境记录
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 线上 python http server profile 实践
  • 译米田引理
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​MySQL主从复制一致性检测
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #include<初见C语言之指针(5)>
  • $$$$GB2312-80区位编码表$$$$
  • $.proxy和$.extend
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (编译到47%失败)to be deleted
  • (算法)N皇后问题
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET CORE Aws S3 使用
  • .NET Core中的去虚
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET简谈设计模式之(单件模式)
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • /var/log/cvslog 太大
  • ??myeclipse+tomcat
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [ 数据结构 - C++] AVL树原理及实现
  • [ 数据结构 - C++]红黑树RBTree