[megfejtve] Gigabit hálózati saga

Recept:

- Végy egy Layer 2-es gigabites switchet
- Dugj rá 1 szervert, és mondjuk 3 klienst
- Forgalmazz adatot a szerverről és a kliensekre

Ésakkor...

1.) Ha a kliensek mind gigabittel csatlakoznak: a szerver gigabites sávszélje szépen eloszlik a kliensek között, három kliens esetén megy ~330 megabittel/kliens. Ha csak két kliens forgalmaz, akkor ~500 megabit/kliens. Ez így van rendjén.

2.) Fogd meg a klienseket, és downgrade-eld a linkjüket 100baseTx-re. Ekkor azt várnám, hogy mindhárom kliens forgalmaz 100 megával, ahogy a csövükön kifér, és ez a szerveren összeadódik 300 megára, mellette 700 mega szabad kapacitással.

De nem ez történik.

Ahogy az első kliens kitölti a maga 100 megabitjét, a többi kliens gyakorlatilag képtelen a szerverrel "értelmesen" kommunikálni: a ping megnő akár 800-1200ms-re is, és az egész "rendszer" össz-sávszélessége nagyságrendileg nem lesz több, mint 100 megabit.

Értsd: a szerver a gigabites portján alig 100 megával kommunikál, és közben 800ms-es pinggel, béka segge alatti sávszéllel képes kommunikálni egy másik géppel, ami lehet, hogy abszolúte nem is forgalmaz.

Mintha a switch nem tudná aggregálni a külön portokról érkező forgalmat egy portra...

A szituáció reprodukálva 3Com, SMC, Linksys, Dlink gyártmányú switcheken. (A switchek nem-menedzselhető, L2 eszközök)

Ez így normális?

UPDATE:

Flow controllal normális. Flow control kikapcsolása:

ethtool -A eth0 tx off rx off

Hozzászólások

kivancsi lennek az operacios rendszerekre es a kliensek halozati kartyajara :)

udv Zoli

Linux 2.6.3x, de próbáltam NetBSD 5.0-val is.
Hálókártya: szerveren Broadcom Netextreme2 (HP Proliant integrált)
Klienseken: Marvell Yukon, Intel Pro/1000, Broadcom Netextreme (van ~300 kliens kéznél, lehet válogatni)

Nem tűnik oprendszer- és driverspecifikusnak.

Hogy ki a szerver, és ki a kliens, az nagyjából tökmindegy, az iperf nem válogat :)

Flow control minden hálózati szereplőn, vagy csak a gigabites szerveren, amin aggregált forgalmat akarsz kitolni?