-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[mesh-forwarder] add delay-aware queue management (#7568)
This commit implements delay-aware queue management. When enabled the device will monitor time-in-queue of messages in the direct tx queue and if it is lager than specified thresholds it updates ECN flag (if message indicates it is ECN-capable) and/or drop the message. This mechanism is applied to IPv6 messages on the first device that sends the message into Thread mesh and also on intermediate routers that are forwarding the message (e.g., as a "mesh lowpan fragment" frame). On an intermediate router when forwarding the fragments of a message, if any fragment is dropped by the queue management policy, all subsequent fragments will also be dropped. In particular, this commit contains the following: - Adds `DecompressEcn()` and `MarkCompressedEcn()` in `Lowpan` class to decompress or update the ECN field in a compressed IPHC header (unit test `test_lowpan` is also updated to test the new methods). - Adds `UpdateEcnOrDrop()` which implements the main queue management logic. This method is used when preparing next direct tx message. It decides whether to keep the message as is, update ECN on it or drop it. - Updates `EvictMessage()` to first apply the queue management rule to see if any message can be dropped before using the eviction logic based on message priority. - Updates and reuses the `FragmentPriorityList` to track whether queue management dropped any of the fragments of same message so to also drop any subsequent ones. - Updates `LogMessage()` to log when a message is dropped by queue-management or when ECN is marked on a message.
- Loading branch information
Showing
11 changed files
with
438 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.