USB数据包转TCP数据包的最佳缓冲区大小

Yanye0xFF / 2023-05-14 / 原文

应用场景:
TCP单个数据包大小1460字节,USB-HS 批量传输(BULK)单包大小512字节,在通过网络传输USB数据包时,选取合适的缓冲区大小达到最佳的利用率

使用测试代码得到不同缓冲区大小下的TCP包负载率:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("num,packet,remain,per\n");
    int res, res2;
    int remain;
    float packet, per;

    for(int i = 1; i < 101; i++) {
        packet = 1460.0f * (float)i / 512.0f;
        res = (int)packet;
        remain = (1460 * i) - (res * 512);
        per = ((float)res * 512.0f) / (1460.0f * (float)i) * 100;
        printf("%d,%d,%d,%.2f\n", i, res,remain,per);
    }
    
    return 0;
}

下表列出了缓冲1 ~ 100个TCP包时,对应的USB包数量和利用率关系。
TCP缓冲区剩余字节越少(TCP缓冲区负载率越大),表示TCP包缓冲区利用率越高。

TCP包缓冲数量 可容纳USB包数量 TCP缓冲区剩余字节 TCP缓冲区负载率 备注
1 2 436 70.14
2 5 360 87.67
3 8 284 93.52
4 11 208 96.44
5 14 132 98.19
6 17 56 99.36 小内存设备推荐
7 19 492 95.19
8 22 416 96.44
9 25 340 97.41
10 28 264 98.19
11 31 188 98.83
12 34 112 99.36
13 37 36 99.81
14 39 472 97.69
15 42 396 98.19
16 45 320 98.63
17 48 244 99.02
18 51 168 99.36
19 54 92 99.67
20 57 16 99.95
21 59 452 98.53
22 62 376 98.83
23 65 300 99.11
24 68 224 99.36
25 71 148 99.59
26 74 72 99.81
27 76 508 98.71
28 79 432 98.94
29 82 356 99.16
30 85 280 99.36
31 88 204 99.55
32 91 128 99.73
33 94 52 99.89
34 96 488 99.02
35 99 412 99.19
36 102 336 99.36
37 105 260 99.52
38 108 184 99.67
39 111 108 99.81
40 114 32 99.95
41 116 468 99.22
42 119 392 99.36
43 122 316 99.50
44 125 240 99.63
45 128 164 99.75
46 131 88 99.87
47 134 12 99.98
48 136 448 99.36
49 139 372 99.48
50 142 296 99.59
51 145 220 99.70
52 148 144 99.81
53 151 68 99.91
54 153 504 99.36
55 156 428 99.47
56 159 352 99.57
57 162 276 99.67
58 165 200 99.76
59 168 124 99.86
60 171 48 99.95
61 173 484 99.46
62 176 408 99.55
63 179 332 99.64
64 182 256 99.73
65 185 180 99.81
66 188 104 99.89
67 191 28 99.97
68 193 464 99.53
69 196 388 99.61
70 199 312 99.69
71 202 236 99.77
72 205 160 99.85
73 208 84 99.92
74 211 8 99.99 效率最佳
75 213 444 99.59
76 216 368 99.67
77 219 292 99.74
78 222 216 99.81
79 225 140 99.88
80 228 64 99.95
81 230 500 99.58
82 233 424 99.65
83 236 348 99.71
84 239 272 99.78
85 242 196 99.84
86 245 120 99.90
87 248 44 99.97
88 250 480 99.63
89 253 404 99.69
90 256 328 99.75
91 259 252 99.81
92 262 176 99.87
93 265 100 99.93
94 268 24 99.98
95 270 460 99.67
96 273 384 99.73
97 276 308 99.78
98 279 232 99.84
99 282 156 99.89
100 285 80 99.95

image