batman-adv: throughput meter implementation
The throughput meter module is a simple, kernel-space replacement for throughtput measurements tool like iperf and netperf. It is intended to approximate TCP behaviour. It is invoked through batctl: the protocol is connection oriented, with cumulative acknowledgment and a dynamic-size sliding window. The test *can* be interrupted by batctl. A receiver side timeout avoids unlimited waitings for sender packets: after one second of inactivity, the receiver abort the ongoing test. Based on a prototype from Edo Monticelli <montik@autistici.org> Signed-off-by: Antonio Quartulli <antonio.quartulli@open-mesh.com> Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com> Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:

committed by
Simon Wunderlich

parent
f50ca95a69
commit
33a3bb4a33
@@ -20,6 +20,8 @@
|
||||
|
||||
#define BATADV_NL_NAME "batadv"
|
||||
|
||||
#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
|
||||
|
||||
/**
|
||||
* enum batadv_nl_attrs - batman-adv netlink attributes
|
||||
*
|
||||
@@ -32,6 +34,12 @@
|
||||
* @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
|
||||
* @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
|
||||
* @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv interface
|
||||
* @BATADV_ATTR_ORIG_ADDRESS: originator mac address
|
||||
* @BATADV_ATTR_TPMETER_RESULT: result of run (see batadv_tp_meter_status)
|
||||
* @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
|
||||
* @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
|
||||
* @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
|
||||
* @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
|
||||
* @__BATADV_ATTR_AFTER_LAST: internal use
|
||||
* @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
|
||||
* @BATADV_ATTR_MAX: highest attribute number currently defined
|
||||
@@ -46,6 +54,12 @@ enum batadv_nl_attrs {
|
||||
BATADV_ATTR_HARD_IFINDEX,
|
||||
BATADV_ATTR_HARD_IFNAME,
|
||||
BATADV_ATTR_HARD_ADDRESS,
|
||||
BATADV_ATTR_ORIG_ADDRESS,
|
||||
BATADV_ATTR_TPMETER_RESULT,
|
||||
BATADV_ATTR_TPMETER_TEST_TIME,
|
||||
BATADV_ATTR_TPMETER_BYTES,
|
||||
BATADV_ATTR_TPMETER_COOKIE,
|
||||
BATADV_ATTR_PAD,
|
||||
/* add attributes above here, update the policy in netlink.c */
|
||||
__BATADV_ATTR_AFTER_LAST,
|
||||
NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
|
||||
@@ -57,15 +71,44 @@ enum batadv_nl_attrs {
|
||||
*
|
||||
* @BATADV_CMD_UNSPEC: unspecified command to catch errors
|
||||
* @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
|
||||
* @BATADV_CMD_TP_METER: Start a tp meter session
|
||||
* @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
|
||||
* @__BATADV_CMD_AFTER_LAST: internal use
|
||||
* @BATADV_CMD_MAX: highest used command number
|
||||
*/
|
||||
enum batadv_nl_commands {
|
||||
BATADV_CMD_UNSPEC,
|
||||
BATADV_CMD_GET_MESH_INFO,
|
||||
BATADV_CMD_TP_METER,
|
||||
BATADV_CMD_TP_METER_CANCEL,
|
||||
/* add new commands above here */
|
||||
__BATADV_CMD_AFTER_LAST,
|
||||
BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_tp_meter_reason - reason of a tp meter test run stop
|
||||
* @BATADV_TP_REASON_COMPLETE: sender finished tp run
|
||||
* @BATADV_TP_REASON_CANCEL: sender was stopped during run
|
||||
* @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or didn't
|
||||
* answer
|
||||
* @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
|
||||
* @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node already
|
||||
* ongoing
|
||||
* @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
|
||||
* @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
|
||||
* @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
|
||||
*/
|
||||
enum batadv_tp_meter_reason {
|
||||
BATADV_TP_REASON_COMPLETE = 3,
|
||||
BATADV_TP_REASON_CANCEL = 4,
|
||||
/* error status >= 128 */
|
||||
BATADV_TP_REASON_DST_UNREACHABLE = 128,
|
||||
BATADV_TP_REASON_RESEND_LIMIT = 129,
|
||||
BATADV_TP_REASON_ALREADY_ONGOING = 130,
|
||||
BATADV_TP_REASON_MEMORY_ERROR = 131,
|
||||
BATADV_TP_REASON_CANT_SEND = 132,
|
||||
BATADV_TP_REASON_TOO_MANY = 133,
|
||||
};
|
||||
|
||||
#endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
|
||||
|
Reference in New Issue
Block a user