ip-rule 不适用于大于 0x10 的 ToS

ip-rule 不适用于大于 0x10 的 ToS

有一些奇怪的行为ip-rule具有特定IP服务条款-价值观。它仅适用于高达 0x10 的值,但不接受 DSCP 部分。

我试过:

ip ru a tos 0x20 table 1234

并得到:

RTNETLINK answers: Invalid argument

答案1

TOS在 RFC 中定义第791章进一步在 RFC 1349 中只有 4 个可能的位见 RFC 1349 的第 3 章:

            0     1     2     3     4     5     6     7
         +-----+-----+-----+-----+-----+-----+-----+-----+
         |                 |                       |     |
         |   PRECEDENCE    |          TOS          | MBZ |
         |                 |                       |     |
         +-----+-----+-----+-----+-----+-----+-----+-----+

和4:

                1000   --   minimize delay
                0100   --   maximize throughput
                0010   --   maximize reliability
                0001   --   minimize monetary cost
                0000   --   normal service

由于 MBZ(必须为零)位被保留并且优先级为(据称?)从未真正使用过,只有 0x00 和 0x1E 之间的偶数值可能。 Linux在 ip.h 中定义它:

#define IPTOS_TOS_MASK        0x1E
#define IPTOS_TOS(tos)        ((tos)&IPTOS_TOS_MASK)
#define   IPTOS_LOWDELAY      0x10
#define   IPTOS_THROUGHPUT    0x08
#define   IPTOS_RELIABILITY   0x04
#define   IPTOS_MINCOST       0x02

and ip rule( 的内核部分) 只是遵循这些定义来告诉什么是允许的。

现在如果您想使用DSCPRFC 中定义的2474成为替代TOS同一字节视图的替代机制(以及ECNRFC3168),似乎不存在直接的等效使用ip rule.

你仍然可以做的是使用iptables或者nftablesdscp然后匹配字段值rk数据包并在fwmarkin 中重用它ip rule

相关内容