美文网首页
IPV6测试小结

IPV6测试小结

作者: johney_zhou | 来源:发表于2018-12-22 16:29 被阅读0次

    1       案例分析... 2

    2       解决过程... 2

    3       解决结果... 12

    4       总结... 12

     

    关键词:

    ipv4  ipv6 自动化

    摘 要:

    基于我司IPV6项目开发过程中,测试尽早参与,进行白盒测试,验证所有的IPV6接口是否完成既定的功能,在本次测试过程中遇到了各种问题,问题主要分成以下两大类:

    1、IPV4和IPV6的区别。

    2、需要支持的外部环境。

    案例描述

    1 、在IPV6测试过程中,遇到了好多问题,由于这种公有技术是没有需求文档的,只有RFC标准,在测试过程中,也花了很多时间去了解IPV6,下面我将从数据包封装,IP设置,网络协议,测试功能点以及依赖条件几个方便来总结。

    IPV6和IPV4的数据包区别

    IPV6和IPV4都是网络七层协议中的网络层,首先我们来看看IPV6和IPV4的数据报文格式如下:

    (IPV4数据报文) (IPV6数据报文)

    对比如下:

    1、  版本标识不同,抓包的时候可以通过过版本号来区分,IPV4和IPV6;

    2、  对比IPV4,去除了首部长度,由于IPV4的首部有可选项导致IPV4的包头大小是不确定的,需要4个bit来说明IPV4报文的包头长度;而IPV6的报文包头是固定40字节的,所以这项就不需要了;

    3、  通信分类字段用来标识对应IPv6的通信流类别,或者说是优先级别,占8个bit,类似于IPv4中的ToS(服务类型)字段。(PS所以老的NETCBB修改TOS的接口就不支持IPV6了,需要重新封装);

    4、  标记那些需要IPv6路由器特殊处理(如一种非默认服务质量或实时服务)的信息包顺序,这是IPV6所特有的属性;

    5、  IPV4和IPV6的最大包长不超过65535字节,但是两者是有区别的,IPV4的包长度是包含包头的,而IPV6的包长度在这里称为有效负荷长度是不包含包头的,但是包含扩展包头;

    6、 下一报头,当IPv6没有扩展报头时,该字段的作用和IPv4的上层协议字段一样。当含有扩展报头时,该字段的值即为第一个扩展报头的类型。

    7、  跳限制,转发数据报的每台路由器对该字段的值减1,若减为0则丢弃该数据报。改字段的作用和IPv4的寿命TTL相同;

    8、  IPV4和IPV6的数据报文都包含源地址和目的地址,但是IPv4占32bit,IPv6占128bit,所以IPv4的地址数为2的32次方个,而IPv6的地址数为2的128次方个,可以得出的是IPv6的地址个数是IPv4的2的96次方倍;

    9、  IPV6不采用IPV4中报头不定长的做法,而是将可选项信息放在了IPV6的扩展报头中,IPV6可拥有0个、1个或多个的扩展头,扩展头由前一段的next hdr标识。IPV6支持的扩展报头有:逐跳选项报头、路由报头、分片报头、目的选项报头、身份验证报头、封装安全有效载荷报头、移动性,由于每一个扩展头的内容可以决定是否处理下一个报头,所以扩展头出现的次序必须遵循一定的原则,一般来说会按照如下的顺序排列:1)IPV6头 2)逐跳选项扩展头 3)目的选项扩展头 4)路由扩展头 5)分片扩展头 6)身份认证扩展头 7)封装安全有效载荷扩展头 8)目的选项扩展头 9)上层应用头,除了目的选项扩展头外,其他扩展头只能出现一次

    每个扩展头的含义如下:

    1)逐跳选项扩展头,定义了转发路径中每个节点需要处理的信息

    2)目的选项扩展头,目的节点需要处理的信息

    3)路由扩展头,记录转发路径上路由节点的信息

    4)分片扩展头,发送大于MTU的包,不同于IPV4,IPV6只在源节点进行数据的分片

    5) 身份认证扩展头,确保数据来源于可信任的源点

    6)封装安全有效载荷扩展头,可以有效避免在数据传输过程中被窃听、抓取内容等行为;

    10、负载数据IPv4和IPv6相同都是上层数据。

    2      IPV6和IPV4的IP区别

        1、 从IPv6和IPv4的数据报文上来看区别最大的就是IP地址了,IPv4是32bit的,而IPv6是128位的,那我们来具体看看他们的区别:

    IPv4地址IPv6地址

    点分十进制表示(172.16.124.10)带冒号的十六进制表示,0压缩(2001::1)

    分为A、B、C、D、E5类地址不分类

    组播地址224.0.0.0/4组播地址FF00::/8(前八位全1)

    广播地址(主机部分为全1)任意播(1、任意播不能用于源地址,只能做目的地址;

        2、任意播地址不能指定给IPv6主机,而只能指定给IPv6路由器。)

    默认地址0.0.0.0不确定地址::(0:0:0:0:0:0:0:0)

    回环地址127.0.0.1回环地址::1(0:0:0:0:0:0:0:1)

    公共地址可聚合全球单播地址FP==001

    私网地址10.0.0.0/8 172.16.0.0/12 192.168.0.0/16站点本地地址FEC0::/48(1111 1110 11)

    自动专用IP地址169.254.0.0/16链路本地地址FE80::/48(1111 1110 10)

    上表从IP表达式,IP分类,组播地址范围,广播地址VS任意播,默认地址(初始地址),回环地址,公共地址(可聚合全球单播地址),私网地址(站点本地地址),自动专用IP地址(链路本地地址)来区分的;

    但是IPv6内部也可以分类,分成单播地址,任意播地址,组播地址(IPv4地址也可以分成单播地址,广播地址,组播地址),下图为IPv6的内部分类图:

    3      IPV6和IPV4的协议区别

    从数据报文到IP格式,IPv4和IPv6都有较大的区别,那么其他对应的网络协议从支持IPv4和IPv6的情况有没有较大变化呢?下面我们罗列一下我司netcbb组件支持IPv6功能的协议,如下图所示:

    上图我们通过TCP/IP四层模型我司常用的协议去分析了IPv4和IPv6的区别:

    [if !supportLists]1)            [endif]链路层中ARP和RARP只支持IPv4,IPv6把这部分功能集成到ICMPv6中了,ICMPv6是通过邻居发现协议(Neighbor Discovery)实现MAC地址查找的。

    [if !supportLists]2)            [endif]链路层中的PPPoE也区分了PPPoE和PPPoEv6两个版本。

    [if !supportLists]3)            [endif]网络层中IPv4和IPv6的区别上面介绍过了,从数据报文和IP表达进行区分。

    [if !supportLists]4)            [endif]传输层也分成UDP和TCP。

    [if !supportLists]5)            [endif]应用层的FTP&Telnet&HTTP&DNS只需要去修改对应的IP地址即可,DHCP区分成DHCP和DHCPv6两个版本。

    4      IPV6测试点提取

    5      IPV6环境准备

    在网络组件测试过程中,我们设备很多时候都在扮演客户端角色,所以在IPv6涉及客户端和服务器测试时,是有环境依赖的,下面把所有的环境依赖给罗列出来。

    被测系统要求:

    1)  [endif]被测系统内核需要支持IPv6功能,在整体编译时,开启IPv6选型即可;

    2)  [endif]需要busybox1.28版本的支持,老的busybox版本对DHCPv6兼容性不好,无法获取IPv6地址;

    3)  [endif]需要支持PPPoEv6的ppp (ppp-2.4.5交叉编译得到)和pppd(rp-pppoe-3.10交叉编译得到)文件。

    4)  [endif]需要支持DHCPv6的udhcpc6.script文件,将文件放入/etc/scripts/,不同的平台需要配置不同的路径,比如

    hisi平台:

    UDHCPC_CONF="/tmp/udhcpc6.conf$interface"  

    UDHCPC_CONF_DEBUG_USR_DIR="/usr/log/"  

    UDHCPC_CONF_DEBUG_WORK_DIR="/work/log/"  

    UDHCPC_CONF_DEBUG="udhcpc6.conf$interface"  

    RESOLV_CONF="/etc/resolv.conf"  

    高通平台:

    UDHCPC_CONF="/data/config/etc/udhcpc6.conf$interface"  

    UDHCPC_CONF_DEBUG_USR_DIR="/data/config/etc/log/"  

    UDHCPC_CONF_DEBUG_WORK_DIR="/data/config/etc/log/"  

    UDHCPC_CONF_DEBUG="udhcpc6.conf$interface"  

    5.  [endif]RESOLV_CONF="/data/config/etc/resolv.conf"   

    服务器要求:

    1)  [endif]需要搭建支持IPv6的PPPoEv6的服务器;

    2)  [endif]需要搭建支持IPv6的DHCPv6的服务器;

    3)  [endif]需要搭建支持IPv6的NTP服务器。

    6      解决过程

    1)从数据包封装,IP设置,网络协议去了解IPv6;

    2)完成测试脚本开发;

    3)完成依赖环境搭建(由于IPv6的环境搭建网上好多资料都是错的,下一篇案例我会介绍一下IPv6各个服务器的搭建过程);

    7     总结

    相关文章

      网友评论

          本文标题:IPV6测试小结

          本文链接:https://www.haomeiwen.com/subject/phoikqtx.html