【问题标题】:Specifying new option for hop by hop extension header IPv6?为逐跳扩展标头 IPv6 指定新选项?
【发布时间】:2014-05-22 09:44:10
【问题描述】:

一段时间以来,我一直在努力寻找答案,但找不到。

有没有一种方法可以为 IPv6 中的逐跳扩展标头指定一个新的选项值,以便我可以在用户空间中解析该值而不是内核解析它?

内核在尝试解析该值时,向我发送一个 ICMP 回复,说明标头中的该值无法识别参数。

我想知道是否应该有一种方法来部署和测试 IPv6 扩展标头中的新选项,而无需为它们编写处理程序作为 LKM。

网络上没有很多可用的 IPv6,因此 IPv6 专家的任何帮助都会很棒!

RFC 2460 提到了这一点。我假设您可以创建一个新的选项类型来测试任何新的应用程序:

考虑到与现有 IPv6 部署兼容的需求, 不得创建或指定新的 IPv6 扩展标头,除非 没有现有的 IPv6 扩展头可以通过指定一个新的 现有 IPv6 扩展标头的选项。任何提议 创建或指定新的 IPv6 扩展标头必须包含详细信息 关于为什么没有现有的 IPv6 扩展标头的技术解释 用于提议新 IPv6 扩展标头的 Internet 草案。

【问题讨论】:

    标签: c linux-kernel ipv6 raw-sockets


    【解决方案1】:

    至于“内核在尝试解析值时,向我发送 ICMP 回复......”你提到的“内核”我假设你的意思是远程 ipv6 节点(路由器或目标主机)。然后,您可能会在通过 raw-socket 发送的出口数据包中以错误的方式设置“选项类型”。

    正如 RFC 2460 所说:

    选项类型标识符在内部进行编码,以便它们的最高两位指定在处理 IPv6 节点无法识别选项类型时必须采取的操作:

    00、01、10、11 ....

    ---我猜你填“10”或“11”,你可以填“00”

    【讨论】:

    • 在选项类型字段中输入“00”值将导致内核跳过此标头。 (这不是我想要的情况)。我希望能够编辑编辑广告/或显示此选项标题中的值。
    • "00" 使任何中间路由器和目标主机不会在内核级堆栈中丢弃此数据包。然后,可以使用原始套接字来接收和发送数据包数据,以及它的跳扩展头。请参阅 > 8.1。接收逐跳选项和 8.2。发送逐跳选项。我自己没试过,但应该可以工作。
    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2013-01-23
    • 2014-11-20
    • 2012-04-08
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多