Ruby - 如何在数据包中进行 DSCP 标记?

发布于 2024-08-03 02:49:53 字数 220 浏览 3 评论 0 原文

我需要使用 DSCP 标记来标记数据包以测试产品,但我没有找到直接执行此操作的方法。我是否只是错过了一些东西,或者我真的需要开始学习 C 网络编程才能完成这项工作?

或者,这可能更容易,是否有一个程序(适用于 Linux)可以比 iperf 更好地发送带有 DSCP 标记的数据?我知道你也可以用 ping 进行标记,但它不适合我的测试需求(iperf 在某种程度上可以,但对于繁重的测试目的来说它并不可靠。)

I have a need to mark packets with DSCP markers for testing a product, but I'm not seeing a way to do this directly. Am I just missing something, or do I really need to start learning network programming in C to get this done?

Or, which may be easier, is there a program out there (for Linux) that will send data with DSCP markers better than iperf? I know you can mark with ping, also, but it won't suit my needs for testing (iperf does, to an extent, but it's been unreliable for heavy testing purposes.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染火枫林 2024-08-10 02:49:53

您应该使用 Ruby 的 setsockopt ,它包装了 Linux 系统调用。

require "socket"
s = TCPSocket.new("example.com", 80)
s.setsockopt(Socket::IPPROTO_IP, Socket::IP_TOS, 32)

请参阅此处的 TOS/DSCP 设置列表

另请参阅此问题的答案。

You should use Ruby's setsockopt, which wraps the Linux system call.

require "socket"
s = TCPSocket.new("example.com", 80)
s.setsockopt(Socket::IPPROTO_IP, Socket::IP_TOS, 32)

See a list of TOS/DSCP settings here.

Also see the answer to this question.

不奢求什么 2024-08-10 02:49:53

使用 Iperf 工具并在命令中提供 ToS 值,根据您的要求使用 -S 作为可选选项。

Ex : Iperf -c<Iperf ServerIP> -u<udp> -p<port> -S 0xb8<Marking EF>.
Refer the below table for your ToS Value for DSCP marking.

TOS (Dec)   TOS (Hex)   TOS (Bin)   TOS Precedence (Bin)    TOS Precedence (Dec)    TOS Precedence Name TOS Delay flag  TOS Throughput flag TOS Reliability flag    DSCP (Bin)  DSCP (Hex)  DSCP (Dec)  DSCP/PHB Class
0   0x00    00000000    000 0   Routine 0   0   0   000000  0x00    0   none
4   0x04    00000100    000 0   Routine 0   0   1   000001  0x01    1   none
8   0x08    00001000    000 0   Routine 0   1   0   000010  0x02    2   none
12  0x0C    00001100    000 0   Routine 0   1   1   000011  0x03    3   none
16  0x10    00010000    000 0   Routine 1   0   0   000100  0x04    4   none
32  0x20    00100000    001 1   Priority    0   0   0   001000  0x08    8   cs1
40  0x28    00101000    001 1   Priority    0   1   0   001010  0x0A    10  af11
48  0x30    00110000    001 1   Priority    1   0   0   001100  0x0C    12  af12
56  0x38    00111000    001 1   Priority    1   1   0   001110  0x0E    14  af13
64  0x40    01000000    010 2   Immediate   0   0   0   010000  0x10    16  cs2
72  0x48    01001000    010 2   Immediate   0   1   0   010010  0x12    18  af21
80  0x50    01010000    010 2   Immediate   1   0   0   010100  0x14    20  af22
88  0x58    01011000    010 2   Immediate   1   1   0   010110  0x16    22  af23
96  0x60    01100000    011 3   Flash   0   0   0   011000  0x18    24  cs3
104 0x68    01101000    011 3   Flash   0   1   0   011010  0x1A    26  af31
112 0x70    01110000    011 3   Flash   1   0   0   011100  0x1C    28  af32
120 0x78    01111000    011 3   Flash   1   1   0   011110  0x1E    30  af33
128 0x80    10000000    100 4   FlashOverride   0   0   0   100000  0x20    32  cs4
136 0x88    10001000    100 4   FlashOverride   0   1   0   100010  0x22    34  af41
144 0x90    10010000    100 4   FlashOverride   1   0   0   100100  0x24    36  af42
152 0x98    10011000    100 4   FlashOverride   1   1   0   100110  0x26    38  af43
160 0xA0    10100000    101 5   Critical    0   0   0   101000  0x28    40  cs5
176 0xB0    10111000    101 5   Critical    1   0   0   101100  0x2C    44  voice-admit
184 0xB8    10111000    101 5   Critical    1   1   0   101110  0x2E    46  ef
192 0xC0    11000000    110 6   InterNetworkControl 0   0   0   110000  0x30    48  cs6
224 0xE0    11100000    111 7   NetworkControl  0   0   0   111000  0x38    56  cs7

using Iperf tool with ToS value provide in command using -S as optional as per your requirement.

Ex : Iperf -c<Iperf ServerIP> -u<udp> -p<port> -S 0xb8<Marking EF>.
Refer the below table for your ToS Value for DSCP marking.

TOS (Dec)   TOS (Hex)   TOS (Bin)   TOS Precedence (Bin)    TOS Precedence (Dec)    TOS Precedence Name TOS Delay flag  TOS Throughput flag TOS Reliability flag    DSCP (Bin)  DSCP (Hex)  DSCP (Dec)  DSCP/PHB Class
0   0x00    00000000    000 0   Routine 0   0   0   000000  0x00    0   none
4   0x04    00000100    000 0   Routine 0   0   1   000001  0x01    1   none
8   0x08    00001000    000 0   Routine 0   1   0   000010  0x02    2   none
12  0x0C    00001100    000 0   Routine 0   1   1   000011  0x03    3   none
16  0x10    00010000    000 0   Routine 1   0   0   000100  0x04    4   none
32  0x20    00100000    001 1   Priority    0   0   0   001000  0x08    8   cs1
40  0x28    00101000    001 1   Priority    0   1   0   001010  0x0A    10  af11
48  0x30    00110000    001 1   Priority    1   0   0   001100  0x0C    12  af12
56  0x38    00111000    001 1   Priority    1   1   0   001110  0x0E    14  af13
64  0x40    01000000    010 2   Immediate   0   0   0   010000  0x10    16  cs2
72  0x48    01001000    010 2   Immediate   0   1   0   010010  0x12    18  af21
80  0x50    01010000    010 2   Immediate   1   0   0   010100  0x14    20  af22
88  0x58    01011000    010 2   Immediate   1   1   0   010110  0x16    22  af23
96  0x60    01100000    011 3   Flash   0   0   0   011000  0x18    24  cs3
104 0x68    01101000    011 3   Flash   0   1   0   011010  0x1A    26  af31
112 0x70    01110000    011 3   Flash   1   0   0   011100  0x1C    28  af32
120 0x78    01111000    011 3   Flash   1   1   0   011110  0x1E    30  af33
128 0x80    10000000    100 4   FlashOverride   0   0   0   100000  0x20    32  cs4
136 0x88    10001000    100 4   FlashOverride   0   1   0   100010  0x22    34  af41
144 0x90    10010000    100 4   FlashOverride   1   0   0   100100  0x24    36  af42
152 0x98    10011000    100 4   FlashOverride   1   1   0   100110  0x26    38  af43
160 0xA0    10100000    101 5   Critical    0   0   0   101000  0x28    40  cs5
176 0xB0    10111000    101 5   Critical    1   0   0   101100  0x2C    44  voice-admit
184 0xB8    10111000    101 5   Critical    1   1   0   101110  0x2E    46  ef
192 0xC0    11000000    110 6   InterNetworkControl 0   0   0   110000  0x30    48  cs6
224 0xE0    11100000    111 7   NetworkControl  0   0   0   111000  0x38    56  cs7
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文