[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-bugs] [bugs #12471] Add ToS support

From: Mark Schreiber
Subject: [Mldonkey-bugs] [bugs #12471] Add ToS support
Date: Sat, 26 Mar 2005 20:19:14 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050323 Firefox/1.0.2 Fedora/1.0.2-1.3.1


                 Summary: Add ToS support
                 Project: mldonkey, a multi-networks file-sharing client
            Submitted by: mark7
            Submitted on: Sat 03/26/2005 at 20:19
                Category: Core
                Severity: 3 - Normal
              Item Group: Feature request
                  Status: None
                 Privacy: Private
             Assigned to: None
             Open/Closed: Open
                 Release: None
        Platform Version: None
         Binaries Origin: None
                CPU type: None



IP provides a mechanism for flagging packets as Maximize-Throughput (bulk) or
Minimize-Latency (interactive).  If applications that "soak up extra
bandwidth" flag their packets as bulk, it can be extremely useful for
bandwidth allocation on residential ADSL or cable routers, and allow users to
run P2P 24/7 using *all* available extra bandwidth -- web browsing and the
like is not affected by P2P use.

Mldonkey could provide the option to flag all of its connections as bulk. 
The main problem is that the current version of ocaml does not expose the
required flags.

In C, flagging connections as bulk is done with these simple two lines of

setsockopt(sock, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(tos));

IPPROTO_IP and IP_TOS are not exposed by ocaml, so mldonkey cannot use this

A fix would entail adding IPPTORO_IP and IP_TOS to ocaml, and then locating
all the places that sockets are created in mldonkey and setting them to bulk
(if the user so desires).

Those mldonkey users who are on Linux boxes can enjoy this functionality
already, without application-level support.  The following configuration
should work nicely out-of-box for those of you with a single computer (no
NATTing routers set up or anything fancy like that) connected to an ADSL or
cable line:

Simply use the following commands:

groupadd mlnet
chgrp mlnet mlnet (in the mldonkey directory, as root)
chmod g+s mlnet (in the mldonkey directory, as root)

Then use the following script (adjust the variables at the top to fit your
particular configuration):




# if there are already traffic-shaping rules in place, this removes them
# this will print an error if they don't exist, but continue to work
tc qdisc del dev $DEV root

tc qdisc add dev $DEV root handle 1: htb default 20

tc class add dev $DEV parent 1: classid 1:1 htb rate $RATE

tc class add dev $DEV parent 1:1 classid 1:10 htb rate $HIGH_RATE ceil $RATE
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $MED_RATE ceil $RATE
quantum 1500
tc class add dev $DEV parent 1:1 classid 1:30 htb rate $LOW_RATE ceil $RATE
quantum 1500

# interactive
tc filter add dev $DEV parent 1: prio 1 protocol ip u32 match ip tos 0x10
0x18 flowid 1:10
# bulk
tc filter add dev $DEV parent 1: prio 1 protocol ip u32 match ip tos 0x08
0x18 flowid 1:30

# make p2p bulk
iptables -t mangle -A OUTPUT -m owner -p tcp --gid-owner mlnet -j TOS
--set-tos Maximize-Throughpu


Reply to this item at:


  Message sent via/by Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]