Paylaşılan bir internet bağlantısında bant genişliği yönetimi seçenekleri


13

Önerme:

Kırsal konum, yüksek bant genişlikli internet bağlantıları için pek seçenek yok. Şimdiye kadar en hızlı Uydu internet, ancak pahalı (hem ekipman hem de aylık maliyet ve gecikme dezavantajları var), bu nedenle birden fazla hane bunu paylaşmak istiyor.

Bu kendi içinde basittir - her ev için bir alt ağa sahip bir yönlendirici (VLAN'lar veya fiziksel bağlantı noktaları) kurun, aralarındaki trafiği engelleyin ve modemi bu alt ağlara yönlendirecek şekilde yapılandırın veya çift NAT kurun.

Sorun:

TCP'nin normal şekilde çalışması, her TCP bağlantısının az ya da çok kullanılabilir bant genişliğini alacağı anlamına gelir; burada n, bağlantı sayısıdır. Dolayısıyla, bir ev / kullanıcı çok sayıda bağlantı oluşturuyorsa, genel bağlantıdan daha büyük bir pay alırlar. Bu özellikle adil değil - doymuş bir bağlantıyla, her hane eşit bir pay almalıdır. Öte yandan, başka hiç kimse bağlantıyı kullanmadığında, tam bant genişliğini kullanmak mümkün olmalıdır.

Örneğin, 12Mbit / s bağlantıyı paylaşan 4 hane olduğunu varsayalım. Bunlardan biri indirme / akış / her neyse, tam 12Mbit / s'yi (veya yeterince yakın) kullanabilmelidir. 2 hane bağlantı kullanıyorsa, bir hane 1 dosya ve diğer 11'i indirip indirmediğine bakılmaksızın her biri 6Mbit / s almalıdır (herhangi bir bant genişliği yönetimi olmadan, her dosya yaklaşık olarak 1Mbit / s'de indirilir) 3 hane her biri 4Mbit / s olsun vb.

Şimdiye kadar ne yaptım:

Böyle bir politika uygulamak için en iyi yer (aşağı akım için) dar borunun diğer ucunda, yani ISP'de olacaktır. Açıkçası, bu durumda bu mümkün değildir, bu yüzden bir şekilde tahmin edebilmek iyi olurdu. Ama nasıl? Bunun gibi bir şeyi destekleyen hazır yönlendiriciler var mı? Bunu yapmak için bir Linux veya BSD kutusu yapılandırabilir miyim? Kurşun geçirmez olması gerekmez - hatalı çalışan bir TCP sunucusu veya agresif UDP hizmeti muhtemelen sonunda yapabileceğim her şeyi atlayabilir - ancak çok sayıda RFC uyumlu trafikten oluşan yaygın durum için çalışmalıdır. TCP bağlantıları.

Açık olmak gerekirse, ben değilim değil özel uygulamalar öncelik söz değil, agrega trafik belirli ethernet cihazları veya IP adresi aralığından / olarak. Bazı trafiğe diğer trafiğe göre daha yüksek öncelik verilmesi iyi desteklenmiş gibi görünmektedir, ancak bant genişliğini trafik sınıflarına eşit olarak ayırmaya çalışırken durum daha az açıktır.

Web üzerinde trafik şekillendirme ile ilgili çok kötü yazılmış / düşüncesizce yetersiz / başka türlü bilgilendirilmemiş bilgiler vardır. Yönlendirici donanımıyla ilgili belgeler çok spesifik değil, bu yüzden çevrelerde dolaşıyor gibi görünüyor.

Anladığım kadarıyla, TCP'nin bu şekilde davranmasını sağlamanın yolu, gerçekte mevcut olandan biraz daha dar bir boruyu simüle etmek ve geri almak için paketleri yapay olarak bırakmaktır. Bu yüzden, yukarıdaki örnekte herkese tam olarak 3Mbit / s vermek için ekstra paketleri yapay olarak bırakarak oldukça basit olacağını düşünüyorum. Bu, çoğu zaman yedek kapasite olduğu için bağlantıyı verimli bir şekilde kullanmaz.

İstediğimi yapmanın bir yolu var mı? Yanlış mı gidiyorum? Ben (ya da daha doğrusu sorulardaki hane halkı) bu konuda para harcamaya hazırım - ister bir Linux ya da BSD dağıtımı çalıştırmak için orta fiyatlı bir yönlendirici / cihaz ya da genel bir kutu olsun.

Yanıtlar:


4

Ben bu sorunu çözmek için bir şey inşa olsaydı, ben bunu kurmak istiyorum:

Burada bir bağlantıyı paylaşan 4 bilgisayar örneğini ele alacağız. Ağ şu şekilde şekillenecektir:

{ ISP }=========[ SOHO router] ===LAN1=== [eth0 |Linux Box| eth1] ===LAN2=== Home Desktops/Laptops

Diyelim ki LAN2'de statik IP adresi kullanıyorsunuz:

Linux Box 192.168.1.1
Home 1    192.168.1.11
Home 2    192.168.1.12
Home 3    192.168.1.13
Home 4    192.168.1.14

Önce hangi istemcilere ping atarak ve bir yere sonuç yazarak algılamak için küçük bir komut dosyası yazardım. "Bu okuyucu için bir alıştırma olarak kaldı" Toplam bağlı ana bilgisayar sayısını hesaplayın (1-4)

Çevrimiçi olarak barındırıcı bulunmadığından emin olun.

Toplam bant genişliğini ancak bağlı ana bilgisayar sayısını bölün. (1 için 12Mb, 2 için 6Mb, 3 için 4Mb, 4 için 3Mb)

Daha sonra WAN tarafı cihazdaki her adresin bant genişliğini sınırlamak için HTB algoritmasıyla tc kullanın. İlk olarak, kök sınıfı oluşturun:

DEV="eth0"
TC="/sbin/tc"
TOT_BW=12
$TC qdisc add dev $DEV root handle 1: htb default 99

Ardından, her "istemci" için bir sınıf ekleyin (Burada, örneğin 3 istemci)

NB_CLT=3
CLT_BW=$(($TOT_BW/$NB_CLT))mbit
for i in seq $NB_CLT
do
    $TC class add def $DEV parent 1: classid 1:$i htb rate $CLT_BW ceil $CLT_BW burst 15k cburst 1500
    $TC filter add dev $DEV protocol ip parent 1:0 prio 1 flowid 1:$i u32 \
     match ip dst 192.168.1.1$i/32 \
     match ip src [Router IP in LAN1]/32
done

(yukarıdaki komut dosyası tamamen test edilmemiştir ve yazım hatasız DEĞİLDİR)

Şimdi, her dakika çalışacak şekilde düzgün bir şekilde komut dosyası yazmanız ve yeni bir ana makine her yukarı veya aşağı çıktığında kovaları / filtreleri yenilemeniz gerekir.

Umarım bu sizi doğru yöne yönlendirir, iyi şanslar.

Alternatif Çözüm

Bant genişliklerini kısıtlamak için tüm ana bilgisayarlara yerel bir QoS yazılımı yükleyin. I Personnaly NetLimiter kullanmaktadır (Ücretsiz)


Benim yaklaşımımla ilgili sorun, tüm ana bilgisayarların tüm paylarını kullanmasalar bile diğerinin bant genişliğini azaltmasıdır. Ancak, yalnızca talep yüksek olduğunda paylaşımı zorlayan bir şey tasarlamak zordur.
mveroone

2

OpenWRT bunu hiç desteklemiyor gibi görünsem de hiç kullanmadım. Web sitelerindeki Ağ Trafik Kontrolü sayfasına ve özellikle ikinci örneğe bakabilirsiniz : HTB ile basit bant genişliği paylaşımı (trafik şekillendirme olarak da bilinir) . Bu, qdisc'e basit çağrıları içerir, böylece herhangi bir Linux kutusu bunu yapabilir.


Bu örneğin yükleme tarafı için olduğunu fark ettim . Şu anda Linux Gelişmiş Yönlendirme ve Trafik Kontrol NASIL yoluyla yolumu okuyorum ama bu biraz umut verici görünüyor ve umarım tüm bu tckuralları anlamamı sağlıyor. Linux'un trafik şekillendiricisi kesinlikle umut vericidir.
pmdj

0

Https://superuser.com/a/1210164/257859'da açıklanan kurulum tam olarak bunu yapar:

[...] kuyruklar bu sınırlı BW'yi tüm LAN istemcileri arasında eşit olarak dağıtır (kesin olarak LAN IP'leri).


1
Lütfen aynı cevabı birden fazla soruya göndermeyin. Aynı bilgi gerçekten her iki soruya da cevap veriyorsa, bir soru (genellikle daha yeni olan) diğerinin kopyası olarak kapatılmalıdır. Bunu bir kopya olarak kapatmak için oy vererek veya bunun için yeterli bir itibara sahip değilseniz, bir kopya olduğunu belirtmek için bir bayrak kaldırın . Aksi takdirde yanıtınızı bu soruya uyarlayın ve aynı yanıtı birden fazla yere yapıştırmayın.
DavidPostill

@DavidPostill Bir kopya olarak kapatmak için oy vermeyi düşündüm ama bu 3 yıllık bir soru olduğu için tereddüt ettim. Hatta meta.superuser aradım ve meta.superuser.com/questions/3524/… adresinde alakalı bir soru buldum . Meta okuduktan sonra durumun karmaşık olduğunu düşünüyorum (her birinde yeterli tartışma olan iki eski soruya bir cevabım var) ve kısa bir işaretçi cevabı bırakmak en azından "kötü değil" gibi görünüyor. Düşüncelerinizi duymaya açıkım.
ndemou
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.