Consolidation of multipath logic. Better system separation
This commit is contained in:
parent
19391858d4
commit
e1af003e4f
23 changed files with 2004 additions and 3162 deletions
|
@ -420,157 +420,6 @@ enum ZT_ResultCode
|
|||
*/
|
||||
#define ZT_ResultCode_isFatal(x) ((((int)(x)) >= 100)&&(((int)(x)) < 1000))
|
||||
|
||||
|
||||
/**
|
||||
* Multipath bonding policy
|
||||
*/
|
||||
enum ZT_MultipathBondingPolicy
|
||||
{
|
||||
/**
|
||||
* Normal operation. No fault tolerance, no load balancing
|
||||
*/
|
||||
ZT_BONDING_POLICY_NONE = 0,
|
||||
|
||||
/**
|
||||
* Sends traffic out on only one path at a time. Configurable immediate
|
||||
* fail-over.
|
||||
*/
|
||||
ZT_BONDING_POLICY_ACTIVE_BACKUP = 1,
|
||||
|
||||
/**
|
||||
* Sends traffic out on all paths
|
||||
*/
|
||||
ZT_BONDING_POLICY_BROADCAST = 2,
|
||||
|
||||
/**
|
||||
* Stripes packets across all paths
|
||||
*/
|
||||
ZT_BONDING_POLICY_BALANCE_RR = 3,
|
||||
|
||||
/**
|
||||
* Packets destined for specific peers will always be sent over the same
|
||||
* path.
|
||||
*/
|
||||
ZT_BONDING_POLICY_BALANCE_XOR = 4,
|
||||
|
||||
/**
|
||||
* Balances flows among all paths according to path performance
|
||||
*/
|
||||
ZT_BONDING_POLICY_BALANCE_AWARE = 5
|
||||
};
|
||||
|
||||
/**
|
||||
* Multipath active re-selection policy (linkSelectMethod)
|
||||
*/
|
||||
enum ZT_MultipathLinkSelectMethod
|
||||
{
|
||||
/**
|
||||
* Primary link regains status as active link whenever it comes back up
|
||||
* (default when links are explicitly specified)
|
||||
*/
|
||||
ZT_MULTIPATH_RESELECTION_POLICY_ALWAYS = 0,
|
||||
|
||||
/**
|
||||
* Primary link regains status as active link when it comes back up and
|
||||
* (if) it is better than the currently-active link.
|
||||
*/
|
||||
ZT_MULTIPATH_RESELECTION_POLICY_BETTER = 1,
|
||||
|
||||
/**
|
||||
* Primary link regains status as active link only if the currently-active
|
||||
* link fails.
|
||||
*/
|
||||
ZT_MULTIPATH_RESELECTION_POLICY_FAILURE = 2,
|
||||
|
||||
/**
|
||||
* The primary link can change if a superior path is detected.
|
||||
* (default if user provides no fail-over guidance)
|
||||
*/
|
||||
ZT_MULTIPATH_RESELECTION_POLICY_OPTIMIZE = 3
|
||||
};
|
||||
|
||||
/**
|
||||
* Mode of multipath link interface
|
||||
*/
|
||||
enum ZT_MultipathLinkMode
|
||||
{
|
||||
ZT_MULTIPATH_SLAVE_MODE_PRIMARY = 0,
|
||||
ZT_MULTIPATH_SLAVE_MODE_SPARE = 1
|
||||
};
|
||||
|
||||
/**
|
||||
* Strategy for path monitoring
|
||||
*/
|
||||
enum ZT_MultipathMonitorStrategy
|
||||
{
|
||||
/**
|
||||
* Use bonding policy's default strategy
|
||||
*/
|
||||
ZT_MULTIPATH_SLAVE_MONITOR_STRATEGY_DEFAULT = 0,
|
||||
|
||||
/**
|
||||
* Does not actively send probes to judge aliveness, will rely
|
||||
* on conventional traffic and summary statistics.
|
||||
*/
|
||||
ZT_MULTIPATH_SLAVE_MONITOR_STRATEGY_PASSIVE = 1,
|
||||
|
||||
/**
|
||||
* Sends probes at a constant rate to judge aliveness.
|
||||
*/
|
||||
ZT_MULTIPATH_SLAVE_MONITOR_STRATEGY_ACTIVE = 2,
|
||||
|
||||
/**
|
||||
* Sends probes at varying rates which correlate to native
|
||||
* traffic loads to judge aliveness.
|
||||
*/
|
||||
ZT_MULTIPATH_SLAVE_MONITOR_STRATEGY_DYNAMIC = 3
|
||||
};
|
||||
|
||||
/**
|
||||
* Strategy for re-balancing protocol flows
|
||||
*/
|
||||
enum ZT_MultipathFlowRebalanceStrategy
|
||||
{
|
||||
/**
|
||||
* Flows will only be re-balanced among links during
|
||||
* assignment or failover. This minimizes the possibility
|
||||
* of sequence reordering and is thus the default setting.
|
||||
*/
|
||||
ZT_MULTIPATH_FLOW_REBALANCE_STRATEGY_PASSIVE = 0,
|
||||
|
||||
/**
|
||||
* Flows that are active may be re-assigned to a new more
|
||||
* suitable link if it can be done without disrupting the flow.
|
||||
* This setting can sometimes cause sequence re-ordering.
|
||||
*/
|
||||
ZT_MULTIPATH_FLOW_REBALANCE_STRATEGY_OPPORTUNISTIC = 0,
|
||||
|
||||
/**
|
||||
* Flows will be continuously re-assigned the most suitable link
|
||||
* in order to maximize "balance". This can often cause sequence
|
||||
* reordering and is thus only reccomended for protocols like UDP.
|
||||
*/
|
||||
ZT_MULTIPATH_FLOW_REBALANCE_STRATEGY_AGGRESSIVE = 2
|
||||
};
|
||||
|
||||
/**
|
||||
* Indices for the path quality weight vector
|
||||
*/
|
||||
enum ZT_MultipathQualityWeightIndex
|
||||
{
|
||||
ZT_QOS_LAT_IDX,
|
||||
ZT_QOS_LTM_IDX,
|
||||
ZT_QOS_PDV_IDX,
|
||||
ZT_QOS_PLR_IDX,
|
||||
ZT_QOS_PER_IDX,
|
||||
ZT_QOS_THR_IDX,
|
||||
ZT_QOS_THM_IDX,
|
||||
ZT_QOS_THV_IDX,
|
||||
ZT_QOS_AGE_IDX,
|
||||
ZT_QOS_SCP_IDX,
|
||||
ZT_QOS_WEIGHT_SIZE
|
||||
};
|
||||
|
||||
/**
|
||||
* Status codes sent to status update callback when things happen
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue