Salut,

Odata cu instalarea unui Cisco FWSM [1] intr-un switch Catalyst 6500 am 
observat o scadere dramatica a ratei de transfer de la un server aflat in 
spatele acestui firewall. Eram pe cale sa chem un preot specialist in 
exorcizare intrucat in urma mai multor teste nu am putut trage nicio 
concluzie clara. 

Pentru ca m-am chinuit cu treaba asta ceva vreme si vreau sa-mi testez 
(in)competenta va dau datele problemei, iar in cazul in care nimeni nu 
gaseste explicatia pana la sfarsitul zilei am sa v-o prezint eu :)

Se dau:

  A - serverul din spatele firewall-ului (eth gigabit)
  B - un server de cealalta parte a FW (placa fast ethernet)
  C - un laptop (si el de cealalta parte a FW - switch-ul este de 100Mbps)

Rate de transfer obtinute cu optiunile default ale stivei TCP din sistemele de 
operare respective:

  A.linux -> B - ~50 Mbps
  A.linux -> C - ~35 Mbps
  A.windows -> B,C - ~92 Mbps
  A.freebsd -> B,C - ~92 Mbps
  B, C -> A.* - ~92 Mbps

In caz ca e cineva interesat, kernelul de linux de pe A este 2.6.18-4-amd64, 
dar aceleasi perfomante le-am obtinut si cu 2.6.9 sau 2.6.21.

Sunt excluse problemele hardware pe A intrucat daca A.linux se scoate din 
spatele FWSM-ului totul merge bine.

Am inceput sa fac tuning la stiva TCP de pe A si am obtinut urmatoarele 
rezultate:

1) schimband protocolul de evitare a congestiilor 
(net.ipv4.tcp_congestion_control):

  A.linux.bic -> B - ~50 Mbps
  A.linux.cubic -> B - ~50 Mbps
  A.linux.reno -> B - ~91 Mbps
  A.linux.westwood -> B - ~91 Mbps
  ...
  

2) dezactivand selective acknowledgements de pe A (net.ipv4.tcp_sack)

  A.linux.sack -> B - ~50 Mbps
  A.linux.no_sack -> B - ~92 Mbps
  A.linux.sack -> C - ~35 Mbps
  A.linux.no_sack -> B - ~92 Mbps

  la adresa http://anubis.xcyb.org/fwsm/ am pus 4 capturi ale traficului 
dintre A si B cu SACK activat/dezactivat din punct de vedere sender/receiver.

Windows-ul si FreeBSD-ul au SACK activat implicit asa ca nu am mai refacut 
testele intrucat rata de transfer initiala era indeajuns de buna.

3) setand explicit bufferele de send/receive la o anumita valoare in aplicatia 
cu care faceam teste am obtinut ~92 Mbps. Valoarea ideala a fost stabilita 
experimental.

In urma acestor teste si date pe care le-am oferit, care considerati ca e 
problema ? Mentionez ca acest caz a ajuns la Cisco support si abia ei au 
reusit sa ma lumineze.


Mihai

[1] http://www.cisco.com/en/US/products/hw/modules/ps2706/ps4452/index.html

PS: Ii rog pe cei carora le-am comunicat raspunsul sa nu-l divulge :)

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui