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

TOSRFC에 정의됨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(0이어야 함) 비트가 예약되어 있고 우선 순위는 (주장한 바에 의하면? )은 실제로 사용되지 않으며 0x00과 0x1E 사이의 값만 가능합니다. 리눅스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

ip rule(의 커널 부분)은 이러한 정의를 따라 무엇이 허용되는지 알려줍니다 .

DSCP이제 RFC에 정의된 것을 사용하려면2474TOS동일한 바이트 보기(및 ECNRFC) 에 대한 대체 메커니즘이 됩니다 .3168) 존재하지 않는 것 같습니다.직접동등한 사용 ip rule.

여전히 할 수 있는 것은 다음을 사용하는 것입니다.iptables또는nftablesdscp그런 다음 필드 값을 일치시킵니다.rk패킷 fwmark을 다시 사용합니다 ip rule.

관련 정보