V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amiwrong123
V2EX  ›  程序员

我好像还是没有理解 ipv6 头部去掉选项的精妙之处?

  •  
  •   amiwrong123 · 2021-11-06 15:56:40 +08:00 · 2562 次点击
    这是一个创建于 1117 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先先说一下我已经理解的 ipv6 的好处:

    1. 128 的 ip 地址,这下每个沙子都可以有 ip 地址了。大家不用抢了。
    2. ipv6 不让中间路由器分片和重装。这下 路由器轻松多了,不用干这个麻烦活了。
    3. 头部里删除了 以前的选项,放到了 数据里面。 这下 头部就固定 40 字节了。(但需要注意,选项实际没有删除,它放到了数据里面)

    但是这个第 3 点我不太理解哈,那比如现在一个 ipv6 分组可能是这样:

    那这个 ipv6 分组 到达一个路由器或主机,虽然 40 字节头部固定了,但它不还是得去找, 数据部分里是不是 有选项,如果有,是不是还得去看 有几个选项?

    就怎么有种 掩耳盗铃的感觉,就是你即使这样划分了,但该做的工作还是没有少呢(也不知道我提问得对不对,我已经尽力描述了 QAQ )(或者说,你只是在头部里去掉了选项,但是 在数据里,还是有的呀,这个长度可变的选项不还是一样成为了负担吗)

    10 条回复    2021-11-06 17:38:15 +08:00
    amiwrong123
        1
    amiwrong123  
    OP
       2021-11-06 16:10:10 +08:00
    我把原文描述加上:ipv6 对选项的删除
    ![]( https://s3.bmp.ovh/imgs/2021/11/0a303a5d269401d0.jpg)
    Tianao
        2
    Tianao  
       2021-11-06 16:16:19 +08:00   ❤️ 1
    「那这个 ipv6 分组 到达一个路由器或主机,虽然 40 字节头部固定了,但它不还是得去找, 数据部分里是不是 有选项,如果有,是不是还得去看 有几个选项?」

    除了逐跳扩展头部以外的其它扩展头部,中间路由器是不需要处理的,这点和禁止中途分片异曲同工。
    amiwrong123
        3
    amiwrong123  
    OP
       2021-11-06 16:33:07 +08:00
    @Tianao #2
    我在 TCP/IP 协议详解书中 找到了你说的 逐跳扩展头部,它说这个选项 是每个经过路由器都要进行处理的。 所以说,即使 ipv6 固定了 40 字节头部,但还是 需要消耗一定功夫 来看是否有这个 逐跳扩展头部的呗。

    虽说这个消耗不多了。
    amiwrong123
        4
    amiwrong123  
    OP
       2021-11-06 16:35:43 +08:00
    @Tianao #2
    如果说只提 第 3 点好处的话,我觉得其实 ipv4 现有的协议也可以马上 固定住头部的嘛。
    因为你看,ipv4 也是 前面 20 字节的 肯定有的头部,然后是 可能有的选项,然后是 才是数据。

    就是说,不用升级 ipv6 ,也能固定处 头部的呀?
    Tianao
        5
    Tianao  
       2021-11-06 16:38:04 +08:00   ❤️ 1
    @amiwrong123 #3 是的,这一改进的核心思路是尽量避免让路由器和主机处理不必要的信息。
    amiwrong123
        6
    amiwrong123  
    OP
       2021-11-06 16:48:07 +08:00
    @Tianao #5
    谢谢大佬今天的解惑了。看来今晚上能安心看决赛了。

    PS:4 楼我的问题有点杠精了哈,也不用管。
    jaywhen
        7
    jaywhen  
       2021-11-06 17:04:01 +08:00
    今天在 v 站多次看到两位的讨论,准备晚上开始看自顶向下了
    amiwrong123
        8
    amiwrong123  
    OP
       2021-11-06 17:06:15 +08:00
    @jaywhen #7
    哈哈哈,我就是问题太多了,幸好大佬愿意解惑
    Tianao
        9
    Tianao  
       2021-11-06 17:20:36 +08:00   ❤️ 2
    @amiwrong123 #4
    1. IPv4 可变长头部中的可选字段需要使用全 0 填充至 4 字节的整数倍,这将带来不必要的传输与端口资源开销。
    2. 单一可变长头部相较于定长头部+多个可选的扩展头部,需要更复杂的 /成本更高昂的软件和硬件设计实现,可能涉及到寄存器地址空间、TCAM 资源分配之类的。据我所知,现在市售的商品路由器(交换机)在处理 IPv4 可选头部时是必上送 CPU 的,这将带来更多的计算资源开销、更多的内部总线 /fabric 开销、更大的延迟和抖动(不确定性),但是很多设备在处理 IPv6 的扩展头部时是可以直接在接口板(线卡)上执行转发决策的。题外话,很多设备的内部 fabric 交换走的是定长信元切片,看中的也是定长信元带来的确定性(刚性)。

    目前想到这些,欢迎交流。
    amiwrong123
        10
    amiwrong123  
    OP
       2021-11-06 17:38:15 +08:00
    @Tianao #9
    >单一可变长头部相较于定长头部+多个可选的扩展头部,需要更复杂的 /成本更高昂的软件和硬件设计实现
    这一点我大概理解啦,毕竟 ipv4 的头部 上来就是不确定的,怎么想都会需要更多的设计和消耗。谢谢大佬的仔细讲解,不过后面有一些术语太专业没大懂😂,哈哈,看来还需要多学习呀

    PS:希望今年能看完 计网自顶向下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3454 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:17 · PVG 19:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.