Orijinal SIGCOMM '97 PostScript belgesini HFSC hakkında okudum, teknik olarak çok basit, ancak temel konsepti anlıyorum. Doğrusal bir servis eğrisi vermek yerine (hemen hemen tüm diğer programlama algoritmalarında olduğu gibi), bir dışbükey veya içbükey servis eğrisi belirleyebilirsiniz ve böylece bant genişliği ve gecikmeyi ayırmak mümkündür. Ancak, bu yazı kullanılan tür zamanlama algoritmalarından söz etse bile (gerçek zamanlı ve bağlantı paylaşımı), zamanlama sınıfı başına yalnızca bir eğriden bahseder (dekuplaj bu eğri belirtilerek yapılır, bunun için sadece bir eğri gerekir) ).
Şimdi HFSC, ALTQ zamanlama çerçevesini kullanarak BSD (OpenBSD, FreeBSD, vb.) İçin uygulandı ve TC zamanlama çerçevesini (iproute2'nin bir parçası) kullanarak Linux'u uyguladı . Her iki uygulama da, orijinal makalede OLMAYAN iki ek servis eğrisi ekledi ! Gerçek zamanlı bir servis eğrisi ve bir üst limit servis eğrisi. Yine, lütfen orijinal belgenin iki programlama algoritmasından (gerçek zamanlı ve bağlantı paylaşımı) bahsettiğini, ancak bu yazıda her ikisinin de tek bir servis eğrisi ile çalıştığını unutmayın. BSD ve Linux'ta şu anda bulduğunuzdan biri için hiçbiri iki bağımsız servis eğrisi olmamıştır.
Daha da kötüsü, ALTQ'nun bazı sürümlerinin HSFC'ye ek bir sıra önceliği eklediği görülüyor (orijinal belgede de öncelik diye bir şey yok). Birkaç BSD HowTo'nun bu öncelik ayarından bahsettiğini gördüm (en son ALTQ sürümünün man sayfası HSFC için böyle bir parametre bilmese de, resmi olarak bile yok).
Bunların hepsi HFSC çizelgelemesini orijinal belgede açıklanan algoritmadan bile daha karmaşık hale getirir ve internette sık sık birbiriyle çelişen, biri diğerinin tam tersini talep eden tonlarca ders vardır. Bu muhtemelen, HFSC çizelgelemenin gerçekte nasıl çalıştığını gerçekten kimsenin anlamadığını görmesinin temel nedenidir. Sorularımı sormadan önce bir çeşit örnek kurulum yapmalıyız. Aşağıdaki resimde görüldüğü gibi çok basit bir tane kullanacağım:
alt metin http://f.imagehost.org/0177/hfsc-test-setup.png
İşte size yanıtlayamadığım bazı sorular: Dersler birbiriyle çelişiyor:
Ne için gerçek zamanlı bir eğriye ihtiyacım var? A1, A2, B1, B2’nin hepsinin 128 kbit / s bağlantı payı olduğunu varsayalım (her ikisi için de gerçek zamanlı eğri yok), o zaman kökün dağıtmak için 512 kbit / s olması durumunda bunların her biri 128 kbit / s alır (ve A ve B elbette 256 kbit / s'dir). Neden ayrıca A1 ve B1'e 128 kbit / s ile gerçek zamanlı bir eğri vereyim? Bu ne için iyi olurdu? Bu ikisine daha yüksek öncelik vermek mi? Orijinal makaleye göre, eğri kullanarak onlara daha yüksek öncelik verebilirim , sonuçta HFSC'nin konusu budur. Her iki sınıfa [256kbit / s 20ms 128kbit / s] eğri vererek, her ikisi de otomatik olarak A2 ve B2'den iki kat önceliğe sahiptir (yine de ortalama olarak yalnızca 128 kbit / s elde edilir)
Gerçek zamanlı bant genişliği, bağlantı paylaşımı bant genişliğine göre sayılır mı? Örneğin, A1 ve B1, yalnızca 64kbit / s gerçek zamanlı ve 64kbit / s bağlantı paylaşım bant genişliğine sahipse, bu gerçek zamanlı olarak 64kbit / s bir kez servis yapıldığında, bağlantı paylaşımı gereksinimlerinin de karşılanabileceği anlamına gelir (olabilir; fazla bant genişliği elde edersiniz, fakat bunu bir saniye boyunca görmezden gelinelim mi? Öyleyse, her sınıfın gerçek zamanlı artı bağlantı paylaşımı bant genişliği "gereksinimi" var mı? Ya da bir sınıf, yalnızca bağlantı payı eğrisi gerçek zamanlı eğriden daha yüksekse, gerçek zamanlı eğriden daha yüksek bir gereksinime sahip midir? (Geçerli bağlantı paylaşımı gereksinimi, buna önceden sağlanan gerçek zamanlı bant genişliği eksi belirtilen bağlantı paylaşımı gereksinimine eşittir) sınıf)?
Üst limit eğrisi de gerçek zamanlı olarak mı, sadece bağlantı paylaşımında mı, yoksa her ikisinde mi uygulanıyor? Bazı dersler bir şekilde, bazıları ise diğer yolu söyler. Hatta bazılarının üst sınırının gerçek zamanlı bant genişliği + bağlantı paylaşımı bant genişliği için maksimum olduğunu iddia ediyor mu? Gerçek ne?
A2 ve B2’nin her ikisi de 128 kbit / s olduğu varsayılırsa, A1 ve B1’in yalnızca 128 kbit / s bağlantı payı veya 64 kbit / s gerçek zamanlı ve 128 kbit / s bağlantı payı olması durumunda fark yaratır mı? ne fark?
Sınıf önceliklerini artırmak için ayrı gerçek zamanlı eğri kullanırsam neden "eğrilere" ihtiyacım olsun ki? Neden gerçek zamanlı değil düz bir değer ve bağlantı paylaşımı da düz bir değer değil? Neden her ikisi de eğridir? Orijinal kağıtta eğrilere olan ihtiyaç açıktır, çünkü sınıf başına bu türden yalnızca bir özellik vardır. Fakat şimdi, üç özelliğe (gerçek zamanlı, bağlantı paylaşımı ve üst sınır) sahip olmak için, her biri için hala eğrilere ne ihtiyacım var? Neden eğrilerin şekli (ortalama bant genişliği değil, eğimleri) gerçek zamanlı ve bağlantı paylaşımlı trafik için farklı olsun isteyeyim ?
Mevcut küçük belgelere göre, gerçek zamanlı eğri değerleri iç sınıflar (A ve B sınıfı) için tamamen göz ardı edilir, sadece yaprak sınıflarına uygulanır (A1, A2, B1, B2). Eğer bu doğruysa, neden ALTQ HFSC örnek konfigürasyonu ( 3.3 Örnek konfigürasyonunu arayın ) iç sınıflarda gerçek zamanlı eğrileri ayarlıyor ve iç sınıfların garantili oranını belirlediklerini iddia ediyor? Bu tamamen anlamsız değil mi? (not: pshare, ALTQ'da link paylaşımı eğrisini ayarlar ve gerçek zamanlı eğriyi rendeleyin; bunu örnek konfigürasyonun üstündeki paragrafta görebilirsiniz).
Bazı dersler, tüm gerçek zamanlı eğrilerin toplamının hat hızının% 80'inden yüksek olmadığını, diğerlerinin hat hızının% 70'inden yüksek olmaması gerektiğini söylüyor. Hangisi doğru ya da ikisi de yanlış mı?
Bir öğretici tüm teoriyi unutacağınızı söyledi. İşlerin gerçekte nasıl çalıştığı (zamanlayıcılar ve bant genişliği dağılımı) ne olursa olsun, üç eğriyi aşağıdaki "basitleştirilmiş zihin modeline" göre hayal edin: gerçek zamanlı, bu sınıfın her zaman alacağı garantili bant genişliğidir. link-share, bu sınıfın tamamen tatmin olmak istediği bir bant genişliğidir, ancak memnuniyet garanti edilemez. Aşırı bant genişliği olması durumunda, sınıf tatmin olmak için gerekenden daha fazla bant genişliği önerebilir, ancak asla üst sınırdan daha fazlasını kullanamaz. Bütün bunların çalışması için, tüm gerçek zamanlı bant genişliklerinin toplamı hat hızının% xx'inin üzerinde olamaz (yukarıdaki soruya bakın, yüzde değişir). Soru: Bu az çok doğru mu, yoksa HSFC'nin yanlış anlaşılması mı?
Ve eğer yukarıdaki varsayım gerçekten doğruysa, bu modelde önceliklendirme nerededir? Örneğin, her sınıfın gerçek zamanlı bir bant genişliği (garantili), bir link-paylaşım bant genişliği (garanti edilmez) ve belki bir üst sınırı olabilir, ancak yine de bazı sınıfların diğer sınıflardan daha yüksek öncelikli ihtiyaçları olabilir. Bu durumda, yine de bir şekilde, bu sınıfların gerçek zamanlı trafiği arasında bile öncelik vermeliyim. Eğrilerin eğimine öncelik verir miyim? Ve eğer öyleyse, hangi eğri? Gerçek zamanlı eğri? Bağlantı payı eğrisi? Üst sınır eğrisi? Hepsi? Hepsine aynı eğimi ya da her birine farklı bir eğim verebilir miyim ve doğru eğimi nasıl bulabilirim?
HFSC'yi gerçekten anlayan ve tüm bu soruları doğru bir şekilde cevaplayabilen, bu dünyada insanlarla dolu bir el olduğuna dair hala bir ümidim yok. Ve cevaplarda birbirleriyle çelişmeden bunu yapmak gerçekten güzel olurdu ;-)