我该选择什么AckQueue
?
我是尝试在 pfSense 中进行流量整形。pfSense 中的流量整形涉及称为队列的东西。
有些队列比其他队列具有更高的优先级。
我知道没有办法限制客户端的下载速度(例如,如果互联网上的每个人都决定向你发送 5 个数据包,你就无法限制)。但你可以限制客户端会要求下载。下载正在进行时,客户端会向服务器发回确认数据包 (ACK),以表明它已准备好接收更多数据。
限制下载客户端的速度是限制其上传速度。
如果客户端无法向服务器发送其 ACK 数据包,则服务器将不会向客户端发送任何内容。
这仅适用于 TCP 流量(TCP 使用 acks;UDP 不使用)。
那么问题是我应该将 torrent TCP ack 放在哪个队列中?
- 我无法将它们放入
qACK
队列中。这是一个高优先级队列,导致 ACK 被快速发送出去。我希望 ACK不是尽快发出。 - 我无法将它们放入
qDefault
队列中。这是一个高优先级队列,导致 ACK 被快速发送出去。我希望 ACK不是尽快发出。 - 我无法将它们放入
qLink
队列中。这实际上没有队列;导致 ACK 被快速发送出去。我希望 ACK不是尽快发出。
我想要的是将它们放在尽可能优先级最低的队列中:点对点队列。但我无法将它们放入该队列,因为 pfSense 给出了错误:
确认队列和队列不能相同。
现在这个错误具有误导性;他们能是同一个队列。UI 设计师决定我不应该这样做。他们决定我应该做其他事情。
我应该做点什么其他的事情呢?
答案1
Ack 队列和下载队列可能有类似(甚至相同)的带宽限制,但它们不能具有相同的姓名如果您希望 pfSense 有所区分。
为了便于跟踪,我将所有 WAN(即 ACK)队列都标记为 qW_ 作为前缀。例如,其中一个是 qW_Nerfed,一个是 qW_HTTPWEB,一个是 qW_Games,等等。
我在 LAN 下的下载规则全部进入子队列(因此我不会限制 LAN 速度,只限制实际的 Internet 下载速度),其中我有类似的规则和流量限制,但我将它们标记为 qSomething。例如 qNerfed、qHTTPWEB、qGames。
现在我可以将最低优先级放入 qW_Nerfed/qNerfed。规则集相同(允许上行和下行的带宽百分比相同),但由于名称不同,pfSense 知道我指的是哪个队列。
您可能认为这是不言而喻的。如果我将 WAN 队列标记为 qNerfed,将 LAN 队列标记为 qNerfed,那么当我选择 ackqueue/queue 时,它显然会将 ackqueue“qNerfed”用于第一个队列,将队列“qNerfed”用于第二个队列。但是,即使您可以创建这些队列,并在 Traffic Shaper 部分中标记相同的队列,当您选择具有相同名称的队列时也会造成混淆。
因此,只需确保在 Traffic Shaper 中创建 ack 队列和队列时它们具有不同的名称。