ipv6一致性测试(IPv6 Specification)内核修改

推荐内核版本

linux-4.19.155
下载地址:https://download.csdn.net/download/superbfly/14521687

REFERENCE

RFC 8200 - IPv6 Specification

测试流程

TN:测试设备
NUT:被测设备
在这里插入图片描述
TN分别发送分片包1和分片包2到NUT,其中分片包1没有包含原始报文全部ip头。NUT设备应该丢弃两个分片报文,并回复ICMPv6 error报文给TN。

判断标准

TN收到icmp parameter problem(code=3,pointer=0)报文即为通过。

解决方法

标准解决方法:修改内核,检查第一个分片报文中的各个报头,当最后一个报头不是上层报头如icmp、udp、等或no next header时,给TN节点反馈一个icmp parameter problem(code=3,pointer=0)。
取巧的方法:观察测试设备发出的测试报文都是一个分片都带一个其它头标识的简单报文。所以可以对分片报文进行判断,对next header不为tcp(6),udp(17),icmp(58)和no next header(59)的分片报文直接回复icmp parameter problem(code=3,pointer=0)消息。
在这里插入图片描述
ipv6头部类型与对应值表:
在这里插入图片描述

内核代码修改

修改文件:net/ipv6/ip6_input.c
修改函数:ip6_input_finish

/* 当preNextHdr(后面会有赋值,标识当前next header的前一个next header)为44,
* 并且当前nexthdr的值不等于6(tcp)、17(udp)、58(icmp)、59(no next header)时,
* 发送ICMPV6_PARAMPROB消息,其中code=3,pointer=0。
*/
if ( 44 == preNextHdr && (6 != nexthdr && 17 != nexthdr && 58 != nexthdr && 59 != nexthdr) )
{
        icmpv6_send(skb, ICMPV6_PARAMPROB, 3, 0);
}

ret = ipprot->handler(skb);
if (ret > 0) {
        if (ipprot->flags & INET6_PROTO_FINAL) {
                /* Not an extension header, most likely UDP
                * encapsulation. Use return value as nexthdr
                * protocol not nhoff (which presumably is
                * not set by handler).
                */
                nexthdr = ret;
                goto resubmit_final;
        } else {
                // 将当前next header赋值给preNextHdr
                preNextHdr = nexthdr;
                goto resubmit;
        }
} else if (ret == 0) {
        __IP6_INC_STATS(net, idev, IPSTATS_MIB_INDELIVERS);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高晓伟_Steven

相逢即是有缘,动力源于金钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值