Sávszélesség korlátozása

Kezdőlap Fórumok Vegyes gondok Sávszélesség korlátozása

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #2122027
    lada2105
    Felhasználó

      Mivel mindenki ilyen aktívan tudott segíteni (persze ne vegye senki se sértésnek), ezért folytattam a próbálkozásokat.

      Az alábbi megoldással nagyjából elértem amit akartam:

      Code:
      #!/bin/bash

      DEV=eth0

      start () {

      ip link set dev $DEV qlen 30
      #ip link set dev $DEV mtu 1000
      echo -n „.”
      tc qdisc add dev $DEV root handle 1: htb default 21

      tc class add dev $DEV parent 1: classid 1:1 htb rate 6000kbps
      echo -n „.”
      tc class add dev $DEV parent 1:1 classid 1:20 htb rate 1500kbit ceil 4200kbit pr
      io 0
      tc class add dev $DEV parent 1:1 classid 1:30 htb rate 1200kbit ceil 1500kbit pr
      io 1
      tc class add dev $DEV parent 1:1 classid 1:40 htb rate 30kbit ceil 60kbit prio 2
      echo -n „.”
      tc qdisc add dev $DEV parent 1:20 handle 21: sfq perturb 10
      tc qdisc add dev $DEV parent 1:30 handle 31: sfq perturb 10 limit 12
      tc qdisc add dev $DEV parent 1:40 handle 41: sfq perturb 10 limit 4
      echo -n „.”
      tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:20
      tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 31 fw flowid 1:30
      tc filter add dev $DEV parent 1:0 prio 2 protocol ip handle 41 fw flowid 1:40
      echo -n „.”
      #iptables -t mangle -A OUTPUT -p tcp -d 10.0.0.0/8 -j MARK –set-mark 20
      #iptables -t mangle -A INPUT -p tcp -s ! 10.0.0.0/8 -j MARK –set-mark 30
      iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/16 –sport 22 -j MARK
      –set-mark 31
      iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/16 -j MARK –set-mark
      41
      #iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.0.0.0/8 -j LOG –log-level i
      nfo
      iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/16 -j MARK –set-mark
      31
      echo „”
      }

      stop() {
          echo -n „.”
          tc qdisc del dev $DEV root
          echo -n „.”
          iptables -t mangle -F
      }

          case „$1” in
          start)
        echo „Starting”
        start
        echo „done”
        ;;
          stop)
        echo „Stopping”
        stop
        echo „done”
        ;;
          *)
        echo „usage: start | stop”
        ;;
          esac

      exit 0

      Tehát összefoglalva semmiféle burst/cburst nem szükséges, hanem (helyette) az sfq szürön átmenö vagy átadandó csomagok számát limitáltam, ha jól értelmeztem a leírást.

      Csak azért írtam le a megoldást, hogy hátha segítek azoknak, akik hasonló korlátozásban gondolkodnak.
      Persze ez a megoldás, mint már említettem biztosan finomítható még, de egyelöre megtetszi nekem. Legalább addig sem fogy el a sávszélességem 🙂

      #2122028
      admin
      Adminisztrátor

        Egyébként szerintem felesleges korlátoznod, mert itthon álltalában 3 gép megy egyszerre, amiből egyiket tesóm, másikat apum, harmadikat meg én használom. Nekem állandóan megy a BT vagy a DC++ és a többi gépen sem lassul be a net.
        De te tudod, de szerintem felesleges a korlátozás…

        #2122029
        lada2105
        Felhasználó

          Ha felesleges lenne akkor ne gürcölnék vele ennyit. 😛

          Nem akartam leírni, de akkor leírom nálunk hogy van.
          Van 1 gép ami routerkedik meg firewallkodik. (ez most érdektelen, de be van löve és már megy több éve és ehhez lusta vagyok hozzányúlni)
          Van 1 másik gép ami DHCP, Samba, Nyomtató, és letöltöszerver.
          Ez utóbbin mennek a bittorrent letöltéseim, ami sokszor 5-10 eltöltendö dolog is.
          Mindegyik jön kb 30-40k-val (vagy többel) jó esetben, rosszabban, csak 5-6al felfelé.

          A problémám az, hogy hiába a fent említett értékeket írja ki a progi, a többi 4-5-6 gép nem tud netezni, mert alig van szabad sávszél.
          Ha lecsekkolom pl a datanet sebességméröjével akkor 50-100k szabad sávszélt mutat.
          Így most a korlátozás bevezetése után még ha egy iso-t is húzok avval a géppel,  akkor is marad kb 2Mbit szabad sávszél.

          Annó nekem is jó volt korlát nélkül, söt a napok 95%-án nem is kellene korlátozni. Viszont ha nem vagyok itthon vagy hirtelen minden le/feltöltés begyorsul, akkor aztán aki itthon van és szeretne netezni akkor az finoman szólva megszívta…
          Eddig ilyen csak 2-3 alkalommal volt, de elég volt arra, hogy belássam, tenni kell ellene valamit.

          ui: amíg nekem is a desktop gépen ment a letöltés (dc, torrent, edonkey stb…), addig én is könnyebben be tudtam állítani a korlátot a grafikusan üzemelö progikban.
          De így (lehet csak túl régi a konzolos kliens) már nem olyan egyértelmü/egyszerü, hiába állítom is be a maximális le/feltöltési sebességet minden egyes letöltésnél a progiban… 

          #2122030
          admin
          Adminisztrátor

            De a szolgáltatód is korlátoz!!! 😀
            Érdemes ezt: elolvasni: http://www.sg.hu/cikkek/51278

            Egyébként a routergépen nem lehet, hogy egyszerűbb lenne még is a korlátozás?

            Igaz nekem itthon nem router gép üzemel, hanem egy sima router, azzal meg tudnám oldani…ha akarnám :P:D

            #2122031
            lada2105
            Felhasználó

              Tudom illetve gondoltam hogy korlátoz, hisz gondolom ö sem akarja megosztani a több száz megabites netét velünk 😛

              Lehet egyszerübb lenne, de nem akartam a többi gépnek „bekavarni”.
              Így jobb, saját magát korlátozza.
              Így ha elb…tam valamit, akkor csak ez a gép lassul be, a többi nem.
              Egyébként meg akkor is ennyit szenvedtem volna míg legalább eddig eljutok, csakhát akkor a többi gép is látja ennek a kárát 😛

              #1886695
              csaba
              Felhasználó

                Sziasztok!

                A következö a problémám, amivel már több hete szenvedek.
                Adott egy „szerver” gépem, ami otthon file, nyomtató, és letöltö szerverként üzemel.
                Szeretném megoldani, hogy a letöltések/feltöltések – föleg ha többet indítok pl bittorrent-el -, ne „egyék  meg” a teljes NET-es sávszélességemet. (4Mbit) Ráadásul mindezt úgy, hogy ez a gép korlátozza önmagát. Nem akarok a router géphez nyúlni ilyen dolog miatt.

                Létrehoztam egy tc alapú korlátozást, ami részben müködik is, de nem minden esetben úgy, ahogy azt szeretném.

                A következöket szeretném elérni:
                belsö hálózat SAMBA vagy bármilyen elérés -> teljes sávszélesség (bár ez ugye nem netes úgyhogy mindegy…)
                Maximális NET-röl letöltés -> kb 2Mbit/sec (a 4Mbit fele)
                Maximális NET-re feltöltés -> kb 10k/sec (a 128kbit bizonyos része)

                A kódom:

                Code:
                #!/bin/bash

                DEV=eth0

                start () {

                #ip link set dev $DEV qlen 30
                #ip link set dev $DEV mtu 1000
                echo -n „.”
                tc qdisc add dev $DEV root handle 1: htb default 21

                tc class add dev $DEV parent 1: classid 1:1 htb rate 6000kbps
                echo -n „.”
                #belso halozat
                tc class add dev $DEV parent 1:1 classid 1:20 htb rate 4000kbit ceil 6000kbit pr
                io 0
                #net letoltes
                tc class add dev $DEV parent 1:1 classid 1:30 htb rate 1500kbit ceil 2000kbit prio
                1 #burst 15k cburst 70k
                #net feltoltes
                tc class add dev $DEV parent 1:1 classid 1:40 htb rate 20kbit ceil 50kbit prio 2
                echo -n „.”
                tc qdisc add dev $DEV parent 1:20 handle 21: sfq perturb 10
                tc qdisc add dev $DEV parent 1:30 handle 31: sfq perturb 10
                tc qdisc add dev $DEV parent 1:40 handle 41: sfq perturb 10
                echo -n „.”
                tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:20
                tc filter add dev $DEV parent 1:0 prio 1 protocol ip handle 31 fw flowid 1:30
                tc filter add dev $DEV parent 1:0 prio 2 protocol ip handle 41 fw flowid 1:40
                echo -n „.”
                #iptables -t mangle -A OUTPUT -p tcp -d 10.0.0.0/8 -j MARK –set-mark 20
                #iptables -t mangle -A INPUT -p tcp -s ! 10.0.0.0/8 -j MARK –set-mark 30
                iptables -t mangle -A OUTPUT -p tcp -o eth0 -d ! 10.1.10.0/24 -j MARK –set-mark 4
                1
                #iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/24 -j LOG –log-level i
                nfo
                iptables -t mangle -A INPUT -p tcp -i eth0 -s ! 10.1.10.0/24 -j MARK –set-mark 31
                echo „”
                }

                stop() {
                    echo -n „.”
                    tc qdisc del dev $DEV root
                    echo -n „.”
                    iptables -t mangle -F
                }

                    case „$1” in
                    start)
                  echo „Starting”
                  start
                  echo „done”
                  ;;
                    stop)
                  echo „Stopping”
                  stop
                  echo „done”
                  ;;
                    *)

                A kódot sok-sok leírásból ollóztam össze és próbáltam a logikáját kitalálva elöállítani.

                A problémám konkrétan a következö:
                LANirányból le/feltöltés tökéletes.
                NET-irányból letöltés: töredéke a beállítottnak
                pl: 250 helyett kb 15/30k. Ha beállítom a kikommentezett burst-oket, akkor valamivel feljebb megy, de az is olyan 70/80k-ig csak.
                Hiába állítom a burst-oket 100k fölé, inkább csak lassulni látszik…
                Egy iso fájl letöltésével próbálgatom a korlátozást, ami korlát nélkül olyan 400k körül simán jön.

                Lehet (söt biztos) valamilyen szinten elszámolgatom magam a kapkodásban meg estefelé a fáradtságtól is, de jó lenne mostmár ha menne rendesen.

                Hol rontottam el?
                Hogyan állítsam be a burst/cburst-öt, hogy menjen minden rendesen?
                A bittorrent (bittornado) konzolosan 4-5 jobb esetben, jó „szerver” esetén 50-60k-kat ír ki, mint letöltési sebesség ha nincs korlát, de ha van akkor gyakorlatilag 0-t vagy alig 2-t. Ez miért van?

                Szóval úgy általánosságban szeretnék egy kis segítséget kérni ez ügyben, miután már az összes szabilinuxos meg google-s leírások garmadáját olvastam el.

                Elöre is köszönöm.

              6 bejegyzés megtekintése - 1-6 / 6
              • Be kell jelentkezni a hozzászóláshoz.