StrategyChoice » History » Revision 10
Revision 9 (Davide Pesavento, 02/11/2017 12:47 PM) → Revision 10/16 (Junxiao Shi, 01/21/2018 12:11 PM)
# Strategy Choice Management **Strategy Choice Management** is a module of [[Management|NFD Management protocol]]. It provides: * commands to choose the forwarding strategy for a namespace * a dataset of strategy choices Strategy Choice Management commands and datasets are available under namespace `ndn:/localhost/nfd/strategy-choice`. ## Strategy A strategy is identified by a name. NFD currently supports the following strategies: * ndn:/localhost/nfd/strategy/best-route * ndn:/localhost/nfd/strategy/broadcast * ndn:/localhost/nfd/strategy/client-control * ndn:/localhost/nfd/strategy/ncc * ndn:/localhost/nfd/strategy/access * ndn:/localhost/nfd/strategy/asf Each strategy listed above may have one or more versions. Strategy version is increased when there is a major behavior change; bugfixes usually won't bump strategy version. The version component is appended to the strategy name. A strategy may accept parameters name components. Parameters are always optional. They may be appended to the strategy name after the version component. Whether a strategy accepts parameters and the syntax and semantics of the parameters are defined by each strategy. ## Control Commands [[ControlCommand]] **management-module**: `strategy-choice` ### Set the strategy for a namespace **command-verb**: `set` ControlParameters fields: * Name (required) * Strategy (required) **Name** is the name Name prefix on which the strategy is selected. NFD MAY impose a limit on the length of name prefix. The current limit is 32 name components. If Name exceeds this limit, the command fails with code 414. **Strategy** must be a Name that identifies a strategy. It could be either an unversioned name to instantiate the latest version of a strategy, or a versioned name to instantiate a specific version. If the chosen strategy accepts parameters, they may be appended after a versioned name. If **Strategy** does not match any registered strategy, the command fails with code 404. If the command succeeds, \<Body> in ControlResponse block contains updated ControlParameters: * Name: unchanged * Strategy: strategy instance name, which always contains a version component and may contain parameters name components ### Unset the strategy for a namespace **command-verb**: `unset` ControlParameters fields: * Name (required) After this operation, the effective strategy at **Name** is inherited from the parent. If there is no strategy defined at **Name**, this command does nothing, but is still considered successful. **Name** must not be `ndn:/`, otherwise the command fails with code 400. ## Strategy Choice Dataset Strategy choices for namespaces are published as a [[StatusDataset|Status Dataset]] at `ndn:/localhost/nfd/strategy-choice/list`. Each choice is represented by a **StrategyChoice** block: StrategyChoice := STRATEGY-CHOICE-TYPE TLV-LENGTH Name Strategy * **Name** is the namespace on which a strategy is chosen. * **Strategy** is the strategy chosen for this namespace. ## TLV-TYPE assignments Type | Assigned value | Assigned value (hex) ------------------------------------------- | ----------------- | -------------------- StrategyChoice | 128 | 0x80