Skip to content

Commit bcc0a92

Browse files
committed
add delay jitter param
1 parent 9e05b2b commit bcc0a92

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/throttle.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const throttleCurrentValues = {
1515
{
1616
rate?: number
1717
delay?: number
18+
delayJitter?: number
1819
loss?: number
1920
lossBurst?: number
2021
queue?: number
@@ -25,6 +26,7 @@ const throttleCurrentValues = {
2526
{
2627
rate?: number
2728
delay?: number
29+
delayJitter?: number
2830
loss?: number
2931
lossBurst?: number
3032
queue?: number
@@ -75,6 +77,8 @@ export type ThrottleRule = {
7577
rate?: number
7678
/** The one-way delay (ms). */
7779
delay?: number
80+
/** The one-way delay jitter (ms). */
81+
delayJitter?: number
7882
/** The packet loss percentage. */
7983
loss?: number
8084
/** The packet loss burst. */
@@ -135,7 +139,7 @@ async function applyRules(
135139
})
136140

137141
for (const [i, rule] of rules.entries()) {
138-
const { rate, delay, loss, lossBurst, queue, at } = rule
142+
const { rate, delay, delayJitter, loss, lossBurst, queue, at } = rule
139143
const limit = queue ?? calculateBufferedPackets(rate || 0, delay || 0)
140144
const mark = index + 1
141145
const handle = index + 2
@@ -175,6 +179,14 @@ sudo -n tc filter add dev ${device} \
175179
}
176180

177181
const timeoutId = setTimeout(async () => {
182+
let delayDesc = ''
183+
if (delay && delay > 0) {
184+
delayDesc = ` delay ${delay}ms`
185+
if (delayJitter && delayJitter > 0) {
186+
delayDesc += ` ${delayJitter}ms`
187+
}
188+
}
189+
178190
let lossDesc = ''
179191
if (loss && loss > 0) {
180192
if (lossBurst && lossBurst > 0) {
@@ -188,7 +200,7 @@ sudo -n tc filter add dev ${device} \
188200

189201
const desc = `\
190202
${rate && rate > 0 ? `rate ${rate}kbit` : ''}\
191-
${delay && delay >= 0 ? ` delay ${delay}ms` : ''}\
203+
${delayDesc}\
192204
${lossDesc}\
193205
${limit && limit >= 0 ? ` limit ${limit}` : ''}`
194206

0 commit comments

Comments
 (0)