[linux-network] Re: sock proxy

---------

From: Serdar KOYLU (serdar@uludag.org.tr)
Date: Fri 02 Apr 2004 - 08:31:58 EST

  • Next message: Deniz Akkus Kanca: "[linux-network] Re: sock proxy"

    Selamlar...

    > Bir sistemin sadece 1 tane DEFAULT gateway'i olabilir.

    Boyle bir kaide nereden cikti ki?

    > Yazdiklariniza gore makineye birden fazla default gateway girmissiniz.

    Elbette, gayette makuldur. Ama bundan makul bir sonuc beklemeyin cogu
    zaman.

    Dilediginiz kadar gateway verebilirsiniz ama QOS saglayamazsiniz ornek
    sorunda. Cunku, gateway'larin paylasimi kuyruk doluluk oranina gore
    yapilir.

    Yapmaniz gereken aslen son derece basit ve gerekli bir durumdur. Once
    biraz teori. Eger siz modem gibi limitli CPU/RAM (Buffer) kaynaklari
    olan bir alete kuyruk yonetimi yuklerseniz aleti bogarsiniz,
    performansiniz duser. Ornegin 28.800 bagli bir modeme yukluce 115.200
    baglantiyla ile yuklenirseniz, modemin bufferi yetmez ve de icinde
    olusturdugu kuyruk yonetimi icin ekstra efor harcar. Sonucta paket kaybi
    yukselir ve performans gereksiz yere duser. Bir DSL modem (LL hattinizda
    aslen SDSL/HDSL) icin upload hizindan daha yuksek bir DTE upload girisi
    olursa o modem de ayni soruna muhatap kalir. Dahasi, sizin sisteminiz
    modemin nasil bir kuyruk yonetimi yaptigini vs. bilemez. Sonucta iki
    gateway icin kuyruklar iki ethernet uzerinden hep bos olur (nerdeyse) ve
    bir tur round robin duzenegi gerceklesir. Her iki modem esit upload
    kosullarina sahip olmadigi icin (genel olarak 128K SDSL+FR, 256K
    ADSL+PPPoE den daha verimlidir) tam olarak performans almaniz guclesir.

    Bu sorunun giderilmesi icin oncelikle kuyruklama islemi icin Host PC'yi
    kullanmak daha makuldur. Modeme gidecek verileri modemin upload hizindan
    daha dusuk, ama sadece biraz dusuk bir hizda ayarlamak yeterli olur.
    Boylece modem kuyruk yonetimi vs. ugrasmaz, daha verimli calisir.

    Peki bu tur bir upload sinirlama mekanizmasi koymazsaniz ne olur? Hic
    bir sey. Gereksiz Paket kaybinin getirecegi performans kaybindan baska
    pek bir sorun olmaz. Bu sistemin durumuna ve yukune gore %1 de olabilir,
    %70'te..

    Iki gateway olmasi durumunda yapilacak sey, her iki gateway'i sisteme
    eklemektir oncelikle.

    # ip route add default via adsl.ip.adresi dev eth0
    # ip route add default via fr.ip.adresi dev eth1

    Legacy "route" komutunu kullanmaktan kacinin. Zarari yoktur ama bu tur
    karisik networkler icin iproute2 paketi daha etkilidir.

    Simdi geri kalan sey ise, bunlar icin bant limitini ayarlamaktir. SDSL
    (FR-LL) ile ADSL ayri interface'ler (ethernet) uzerinde oldugu icin
    yapilacak sey cok kolay. Bir suru kuyruk algoritmasi vardir ama TBF,
    Tocken Bucket Filter basit ve CPU/RAM dostu son derece kullanisli bir
    kuyruk olur bu durumda.

    FR (LL) icin:

    # tc qdisc add dev eth0 root tbf rate 127kbit latency 50ms burst 1540

    ADSL icin:

    # tc qdisc add dev eth1 root tbf rate 250kbit latency 100ms burst 1540

    Artik daha precise bir kuyruga sahibiz. Boylece bufferleri dolu oldugu
    halde modemlere al yolla diyerek paket zorlamaya devam etme durumundan
    kurtuluyoruz.

    Bu ekstra duzenegi yapinca artik Linux'u gateway olarak kullanan herkes
    interface'ler uzerinden internete cikabilir. Bir sorun uygun
    masquerading/NAT ayarlarini yapmak olabilir:

    # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

    Fakat ilk sualde soyle bir sorundan bahsediliyor:

    >Bazı makinalar her iki baglantıyıda kullanmak zorunda bazıları ise
    sadece
    interneti kullanmaları yeterli

    Simdi ben bunu pek anlamadim. Burada amaclanan tam olarak aciklanirsa,
    her tur islem yapilabilir. Mesela, bazi makineler her zaman internete
    ADSL uzerinden ciksin, tum http istekleri ADSL uzerinden yapilsin, su
    makine her zaman LL uzerinden ciksin vs. gibi bir suru islev yerine
    getirilebilir. Ornek olarak:

    Yukaridaki ip satirlari yerine sunlari yazin:

    # ip route add default via adsl.ip.adres dev eth0 table 200
    # ip route add default via ll.ip.adres dev eth1

    # ip rule add fwmark 0x1000 table 200

    Simdi, 0x1000 olarak isaretlenen paketler, adsl uzerinden gidecektir.
    Digerleri ise FR uzerinden.

    # iptables -t mangle -A PREROUTING -s 1.2.3.4 -j MARK --set-mark 0x1000

    1.2.3.4 adresinden gelenler her zaman adsl uzerinden ciksin.

    # iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark
    0x1000

    Web baglantilari her zaman ADSL uzerinden yapilsin..

    gibi bir suru istek yerine getirilebilir bu sekilde. Eger tam olarak
    istenenleri soylerseniz, policy routing vs. gerekenleri bulabiliriz
    saniyorum..

    Saygi ve sevgiler..


  • Next message: Deniz Akkus Kanca: "[linux-network] Re: sock proxy"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.