Re: [B.A.T.M.A.N.] [RFC 1/3] batman-adv: bandwidth meter implementation
flat view
From: Sven Eckelmann <sven@narfation.org>
Date: 2012-08-12 12:20:57
On Thursday 09 August 2012 14:15:24 Edo Monticelli wrote:
quoted hunk ↗ jump to hunk
The bandwith meter module is a simple, kernel-space replacement for bandwith measurements tool like iperf and netper. It is intended to approximate TCP behaviour. It is invoked through ``batctl bw": the protocol is connection oriented, with cumulative acknowledgment and sliding window. Sender keeps a timeout, which is checked by a worker function regoularly invoked through the workqueue mechanism. If the timeout is expired at the time worker is executed, the whole window is re-transmitted. Struct bw_vars, one for each connection, are collected into a linked list. Thus access to them is protected with a spinlock. Another spinlock prevents more than one instance of multiple_send to run concurrently. Ack code is mutually exclusive (two ack handler cannot run at the same time for differnent acks), but they are not mutually exclusive with send_remaining_window, that is to say the ack handler shifts the window ``while" send_remaining_window is running. Maybe some atomic variable (window_first) is needed to avoid problems. When the test is over, the results are returned to batctl through a call to the function batadv_socket_receive_packet(), before freeing struct batadv_bw_vars. The function only accepts struct batadv_icmp_packet_rr, so that structure is used and a cast is done to struct batadv_bw_result. The test interruptable with CTRL-C. A receiver side timeout avoids unlimited waitings for sender packets: after one second of inactivity, the receiver abort the ongoing test. Signed-off-by: Edo Monticelli <redacted> --- Makefile | 2 +- Makefile.kbuild | 1 + bw_meter.c | 513 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ bw_meter.h | 7 + icmp_socket.c | 18 ++ main.c | 2 + packet.h | 22 ++- routing.c | 15 ++- soft-interface.c | 5 + types.h | 36 ++++ 10 files changed, 614 insertions(+), 7 deletions(-) create mode 100644 bw_meter.c create mode 100644 bw_meter.hdiff --git a/Makefile b/Makefile index bd8d30c..12aebe5 100644 --- a/Makefile +++ b/Makefile@@ -20,7 +20,7 @@ # changing the CONFIG_* line to 'y' enables the related feature # B.A.T.M.A.N. debugging: -export CONFIG_BATMAN_ADV_DEBUG=n +export CONFIG_BATMAN_ADV_DEBUG=y # B.A.T.M.A.N. bridge loop avoidance: export CONFIG_BATMAN_ADV_BLA=y
Sry, disapproved. Kind regards, Sven
Attachments
- signature.asc [application/pgp-signature] 836 bytes