2009-08-25 38 views
1

我需要用DSCP標記標記數據包以測試產品,但我沒有看到直接執行此操作的方法。我只是錯過了一些東西,還是我真的需要開始學習C語言中的網絡編程來完成這個任務?Ruby - 如何在數據包中進行DSCP標記?

或者,這可能更容易,那裏有一個程序(用於Linux),它會發送數據與DSCP標記比iperf更好嗎?我知道你也可以用ping來標記,但它不適合我的測試需求(iperf的確在一定程度上,但對於重度測試目的而言它並不可靠)。

回答

1

你應該使用Ruby的setsockopt, Linux系統調用。

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

查看TOS/DSCP settings here的列表。

另請參閱this question的答案。

0

使用具有ToS值的Iperf工具按照您的要求使用-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 
相關問題