blob: c18a2b29ff72317ca92baf0e087ac21b68f68238 [file] [log] [blame]
willy tarreau0f7af912005-12-17 12:21:26 +01001
2 H A - P r o x y
3 ---------------
willy tarreaue47c8d72005-12-17 12:55:52 +01004 version 1.1.4
willy tarreau0f7af912005-12-17 12:21:26 +01005 willy tarreau
willy tarreaue47c8d72005-12-17 12:55:52 +01006 2002/03/25
willy tarreau0f7af912005-12-17 12:21:26 +01007
willy tarreaub719f002005-12-17 12:55:07 +01008================
9| Introduction |
10================
willy tarreau0f7af912005-12-17 12:21:26 +010011
12HA-Proxy est un relais TCP/HTTP offrant des facilités d'intégration en
13environnement hautement disponible. En effet, il est capable de :
14 - assurer un aiguillage statique défini par des cookies ;
willy tarreau5cbea6f2005-12-17 12:48:26 +010015 - assurer une répartition de charge avec création de cookies pour
16 assurer la persistence de session ;
willy tarreau0f7af912005-12-17 12:21:26 +010017 - fournir une visibilité externe de son état de santé ;
18 - s'arrêter en douceur sans perte brutale de service.
willy tarreau5cbea6f2005-12-17 12:48:26 +010019 - modifier/ajouter/supprimer des entêtes dans la requête et la réponse.
willy tarreau0f7af912005-12-17 12:21:26 +010020
21Il requiert peu de ressources, et son architecture événementielle
22mono-processus lui permet facilement de gérer plusieurs milliers de
23connexions simultanées sur plusieurs relais sans effondrer le système.
24
25===========================
26| Paramètres de lancement |
27===========================
28
29Les options de lancement sont peu nombreuses :
30
31 -f <fichier de configuration>
32 -n <nombre maximal total de connexions simultanées>
33 -N <nombre maximal de connexions simultanées par proxy>
34 -d active le mode debug
35 -D passe en daemon
36 -s affiche les statistiques (si option compilée)
37 -l ajoute des informations aux statistiques
38
39Le nombre maximal de connexion simultanées par proxy est le paramètre
40par défaut pour les proxies pour lesquels ce paramètre n'est pas
41précisé dans le fichier de configuration.
42
43Le nombre maximal total de connexions simultanées limite le nombre de
44connexions TCP utilisables à un instant par le processus, tous proxies
45confondus.
46
47============================
48| Fichier de configuration |
49============================
50
51
52Commentaires
53============
54
55L'analyseur du fichier de configuration ignore des lignes vides, les
56espaces, les tabulations, et tout ce qui est compris entre le symbole
willy tarreau5cbea6f2005-12-17 12:48:26 +010057'#' (s'il n'est pas précédé d'un '\'), et la fin de la ligne.
willy tarreau0f7af912005-12-17 12:21:26 +010058
59
60Serveur
61=======
62
63Le fichier de configuration contient des sections repérées par le mot
64clé "listen" :
65
66 listen <nom_instance> <adresse_IP>:<port>
67
68<nom_instance> est le nom de l'instance décrite. Ce nom sera envoyé
69dans les logs, donc il est souhaitable d'utiliser un nom relatif au
70service relayé. Aucun test n'est effectué concernant l'unicité de ce
71nom, qui n'est pas obligatoire, mais fortement recommandée.
72
73<adresse_IP> est l'adresse IP sur laquelle le relais attend ses
74connexions. L'adresse 0.0.0.0 signifie que les connexions pourront
75s'effectuer sur toutes les adresses de la machine.
76
77<port> est le numéro de port TCP sur lequel le relais attend ses
78connexions. Le couple <adresse_IP>:<port> doit être unique pour toutes
79les instances d'une même machine. L'attachement à un port inférieur à
801024 nécessite un niveau de privilège particulier.
81
82Exemple :
83---------
84 listen http_proxy 127.0.0.1:80
85
86
87Inhibition
88==========
89
90Un serveur peut être désactivé pour des besoins de maintenance, sans
91avoir à commenter toute une partie du fichier. Il suffit de
92positionner le mot clé "disabled" dans sa section :
93
94 listen smtp_proxy 0.0.0.0:25
95 disabled
96
97Mode
98====
99
100Un serveur peut fonctionner dans trois modes différents :
101 - TCP
102 - HTTP
103 - supervision
104
105Mode TCP
106--------
107Dans ce mode, le service relaye, dès leur établissement, les
willy tarreau5cbea6f2005-12-17 12:48:26 +0100108connexions TCP vers un ou plusieurs serveurs. Aucun traitement n'est
willy tarreau0f7af912005-12-17 12:21:26 +0100109effectué sur le flux. Il s'agit simplement d'une association
110<adresse_source:port_source> <adresse_destination:port_destination>.
111Pour l'utiliser, préciser le mode TCP sous la déclaration du relais :
112
113 listen smtp_proxy 0.0.0.0:25
114 mode tcp
115
116Mode HTTP
117---------
118Dans ce mode, le service relaye les connexions TCP vers un ou
119plusieurs serveurs, une fois qu'il dispose d'assez d'informations pour
120en prendre la décision. Les entêtes HTTP sont analysés pour y trouver
121un éventuel cookie, et certains d'entre-eux peuvent être modifiés par
122le biais d'expressions régulières. Pour activer ce mode, préciser le
123mode HTTP sous la déclaration du relais :
124
125 listen http_proxy 0.0.0.0:80
126 mode http
127
128Mode supervision
129----------------
130Il s'agit d'un mode offrant à un composant externe une visibilité de
131l'état de santé du service. Il se contente de retourner "OK" à tout
132client se connectant sur son port. Il peut être utilisé avec des
133répartiteurs de charge évolués pour déterminer quels sont les services
134utilisables. Pour activer ce mode, préciser le mode HEALTH sous la
135déclaration du relais :
136
137 listen health_check 0.0.0.0:60000
138 mode health
139
140
141Limitation du nombre de connexions simultanées
142==============================================
143
144Le paramètre "maxconn" permet de fixer la limite acceptable en nombre
145de connexions simultanées par proxy. Chaque proxy qui atteint cette
146valeur cesse d'écouter jusqu'à libération d'une connexion. Voir plus
147loin concernant les limitations liées au système. Exemple:
148
149 maxconn 16000
150
151
152Arrêt en douceur
153================
154
155Il est possible d'arrêter les services en douceur en envoyant un
156signal SIG_USR1 au processus relais. Tous les services seront alors
157mis en phase d'arrêt, mais pourront continuer d'accepter des connexions
158pendant un temps défini par le paramètre "grace" (en millisecondes).
159Cela permet par exemple, de faire savoir rapidement à un répartiteur
160de charge qu'il ne doit plus utiliser un relais, tout en continuant
161d'assurer le service le temps qu'il s'en rende compte. Remarque : les
162connexions actives ne sont jamais cassées. Dans le pire des cas, il
163faudra attendre en plus leur expiration avant l'arrêt total du
164processus. La valeur par défaut est 0 (pas de grâce).
165
166Exemple :
167---------
168
169 # le service tournera encore 10 secondes après la demande d'arrêt
170 listen http_proxy 0.0.0.0:80
171 mode http
172 grace 10000
173
174 listen health_check 0.0.0.0:60000
175 mode health
176 grace 0
177
178
179Temps d'expiration des connexions
180=================================
181
182Il est possible de paramétrer certaines durées d'expiration au niveau
183des connexions TCP. Trois temps indépendants sont configurables et
184acceptent des valeurs en millisecondes. Si l'une de ces trois
185temporisations est dépassée, la session est terminée à chaque
186extrémité.
187
188 - temps d'attente d'une donnée de la part du client, ou de la
189 possibilité de lui envoyer des données : "clitimeout" :
190
191 # time-out client à 2mn30.
192 clitimeout 150000
193
194 - temps d'attente d'une donnée de la part du serveur, ou de la
195 possibilité de lui envoyer des données : "srvtimeout" :
196
197 # time-out client à 30s.
198 srvtimeout 30000
199
200 - temps d'attente de l'établissement d'une connexion vers un serveur
201 "contimeout" :
202
203 # on abandonne si la connexion n'est pas établie après 3 secondes
204 contimeout 3000
205
206Remarque: "contimeout" et "srvtimeout" n'ont pas d'utilité dans le cas
207du serveur de type "health".
208
209Tentatives de reconnexion
210=========================
211
212Lors d'un échec de connexion vers un serveur, il est possible de
213retenter (potentiellement vers un autre serveur, en cas de répartition
214de charge). Le nombre de nouvelles tentatives infructueuses avant
215abandon est fourni par le paramètre "retries" :
216
217 # on essaie encore trois fois maxi
218 retries 3
219
220Adresse du serveur
221==================
222
223Le serveur vers lequel sont redirigées les connexions est défini par
224le paramètre "dispatch" sous la forme <adresse_ip>:<port> :
225
226 # on envoie toutes les nouvelles connexions ici
227 dispatch 192.168.1.2:80
228
229Remarque: ce paramètre n'a pas d'utilité pour un serveur en mode "health".
230
231Définition du nom du cookie
232===========================
233
234En mode HTTP, il est possible de rechercher la valeur d'un cookie pour
235savoir vers quel serveur aiguiller la requête utilisateur. Le nom du
236cookie est donné par le paramètre "cookie" :
237
238 listen http_proxy 0.0.0.0:80
239 mode http
240 cookie SERVERID
241
willy tarreau5cbea6f2005-12-17 12:48:26 +0100242On peut modifier l'utilisation du cookie pour la rendre plus
243intelligente vis-à-vis des applications relayées. Il est possible,notamment
244de supprimer ou réécrire un cookie retourné par un serveur accédé en direct,
245et d'insérer un cookie dans une réponse HTTP orientée vers un serveur
246sélectionné en répartition de charge.
247
248Pour ne conserver le cookie qu'en accès indirect, donc à travers le
249dispatcheur, et le supprimer lors des accès directs :
250
251 cookie SERVERID indirect
252
253Pour réécrire le nom du serveur dans un cookie lors d'un accès direct :
254
255 cookie SERVERID rewrite
256
257Pour créer un cookie comportant le nom du serveur lors d'un accès en
258répartition de charge interne. Dans ce cas, il est indispensable que tous les
259serveurs aient un cookie renseigné.
260
261 cookie SERVERID insert
262
263Remarque: Il est possible de combiner 'insert' avec 'indirect' ou 'rewrite'
264pour s'adapter à des applications générant déjà le cookie, avec un contenu
265invalide. Il suffit pour cela de les spécifier sur la même ligne.
willy tarreau0f7af912005-12-17 12:21:26 +0100266
267Assignation d'un serveur à une valeur de cookie
268===============================================
269
270En mode HTTP, il est possible d'associer des serveurs à des valeurs de
271cookie par le paramètre "server". La syntaxe est :
272
willy tarreau5cbea6f2005-12-17 12:48:26 +0100273 server <identifiant> <adresse_ip>:<port> cookie <valeur>
willy tarreau0f7af912005-12-17 12:21:26 +0100274
willy tarreau5cbea6f2005-12-17 12:48:26 +0100275<identifiant> est un nom quelconque de serveur utilisé pour
276l'identifier dans la configuration (erreurs...).
willy tarreau0f7af912005-12-17 12:21:26 +0100277<adresse_ip>:<port> le couple adresse-port sur lequel le serveur écoute.
willy tarreau5cbea6f2005-12-17 12:48:26 +0100278<valeur> est la valeur trouvée dans le cookie,
willy tarreau0f7af912005-12-17 12:21:26 +0100279
280Exemple : le cookie SERVERID peut contenir server01 ou server02
281-------
282 listen http_proxy 0.0.0.0:80
283 mode http
284 cookie SERVERID
285 dispatch 192.168.1.100:80
willy tarreau5cbea6f2005-12-17 12:48:26 +0100286 server web1 192.168.1.1:80 cookie server01
287 server web2 192.168.1.2:80 cookie server02
288
289Attention : la syntaxe a changé depuis la version 1.0.
290---------
291
292Répartiteur de charge interne
293=============================
294
295Le relais peut effectuer lui-même la répartition de charge entre les
296différents serveurs décrits pour un service donné, en mode TCP comme
297en mode HTTP. Pour cela, on précise le mot clé 'balance' dans la
298définition du service, éventuellement suivi du nom d'un algorithme de
299répartition. En version 1.1.0, seul 'roundrobin' est géré, et c'est
300aussi la valeur implicite par défaut. Il est évident qu'en cas
301d'utilisation du répartiteur interne, il ne faudra pas spécifier
302d'adresse de dispatch, et qu'il faudra au moins un serveur.
303
304Exemple : même que précédemment en répartition interne
305-------
306
307 listen http_proxy 0.0.0.0:80
308 mode http
309 cookie SERVERID
310 balance roundrobin
311 server web1 192.168.1.1:80 cookie server01
312 server web2 192.168.1.2:80 cookie server02
313
willy tarreau0f7af912005-12-17 12:21:26 +0100314
willy tarreau5cbea6f2005-12-17 12:48:26 +0100315Surveillance des serveurs
316=========================
willy tarreau0f7af912005-12-17 12:21:26 +0100317
willy tarreau5cbea6f2005-12-17 12:48:26 +0100318A cette date, l'état des serveurs n'est testé que par établissement
319de connexion TCP toutes les 2 secondes, avec 3 essais pour déclarer
320un serveur en panne, 2 pour le déclarer utilisable. Un serveur hors
321d'usage ne sera pas utilisé dans le processus de répartition de charge
322interne. Pour activer la surveillance, ajouter le mot clé 'check' à la
willy tarreaue47c8d72005-12-17 12:55:52 +0100323fin de la déclaration du serveur. Il est possible de spécifier
324l'intervalle (en millisecondes) séparant deux tests du serveur par le
325paramètre "inter", le nombre d'échecs acceptés par le paramètre "fall",
326et le nombre de succès avant reprise par le paramètre "rise".
327Les paramètres non précisés prennent les valeurs suivantes par défaut :
328 - inter : 2000
329 - rise : 2
330 - fall : 3
willy tarreau5cbea6f2005-12-17 12:48:26 +0100331
332Exemple : même que précédemment avec surveillance
333-------
334
335 listen http_proxy 0.0.0.0:80
336 mode http
337 cookie SERVERID
338 balance roundrobin
339 server web1 192.168.1.1:80 cookie server01 check
340 server web2 192.168.1.2:80 cookie server02 check
341
342
343Reconnexion vers un répartiteur en cas d'échec direct
344=====================================================
willy tarreau0f7af912005-12-17 12:21:26 +0100345
346En mode HTTP, si un serveur défini par un cookie ne répond plus, les
347clients seront définitivement aiguillés dessus à cause de leur cookie,
348et de ce fait, définitivement privés de service. La spécification du
willy tarreau5cbea6f2005-12-17 12:48:26 +0100349paramètre "redispatch" autorise dans ce cas à renvoyer les connexions
350échouées vers le répartiteur (externe ou interne) afin d'assigner un
willy tarreau0f7af912005-12-17 12:21:26 +0100351nouveau serveur à ces clients.
352
353Exemple :
354-------
355 listen http_proxy 0.0.0.0:80
356 mode http
357 cookie SERVERID
358 dispatch 192.168.1.100:80
willy tarreau5cbea6f2005-12-17 12:48:26 +0100359 server web1 192.168.1.1:80 cookie server01
360 server web2 192.168.1.2:80 cookie server02
361 redispatch # renvoyer vers dispatch si serveur HS.
362
363Fonctionnement en mode transparent
364==================================
365
366En mode HTTP, le mot clé "transparent" permet d'intercepter des
367sessions routées à travers la machine hébergeant le proxy. Dans
368ce mode, on ne précise pas l'adresse de répartition "dispatch",
369car celle-ci est tirée de l'adresse destination de la session
370détournée. Le système doit permettre de rediriger les paquets
371vers un processus local.
372
373Exemple :
374-------
375 listen http_proxy 0.0.0.0:65000
376 mode http
377 transparent
378 cookie SERVERID
willy tarreau0f7af912005-12-17 12:21:26 +0100379 server server01 192.168.1.1:80
380 server server02 192.168.1.2:80
willy tarreau5cbea6f2005-12-17 12:48:26 +0100381
382 # iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.100 \
383 --dport 80 -j REDIRECT --to-ports 65000
willy tarreau0f7af912005-12-17 12:21:26 +0100384
385Journalisation des connexions
386=============================
387
388Les connexions TCP et HTTP peuvent donner lieu à une journalisation
389sommaire indiquant, pour chaque connexion, la date, l'heure, les adresses
390IP source et destination, et les ports source et destination qui la
391caractérisent. Ultérieurement, les URLs seront loguées en mode HTTP,
392tout comme les arrêts de service. Tous les messages sont envoyés en
393syslog vers un ou deux serveurs. La syntaxe est la suivante :
394
395 log <adresse_ip> <facility>
396
397Exemple :
398---------
399 listen http_proxy 0.0.0.0:80
400 mode http
401 log 192.168.2.200 local3
402 log 192.168.2.201 local4
403
404Les connexions sont envoyées en niveau "info". Les démarrages de
405service seront envoyés en "notice", les signaux d'arrêts en "warning"
406et les arrêts définitifs en "alert".
407
408Les catégories possibles sont :
409 kern, user, mail, daemon, auth, syslog, lpr, news,
410 uucp, cron, auth2, ftp, ntp, audit, alert, cron2,
411 local0, local1, local2, local3, local4, local5, local6, local7
412
413
willy tarreau5cbea6f2005-12-17 12:48:26 +0100414Modification des entêtes HTTP
415=============================
willy tarreau0f7af912005-12-17 12:21:26 +0100416
417En mode HTTP uniquement, il est possible de remplacer certains entêtes
willy tarreau5cbea6f2005-12-17 12:48:26 +0100418dans la requête et/ou la réponse à partir d'expressions régulières. Une
419limitation cependant : les entêtes fournis au milieu de connexions
420persistentes (keep-alive) ne sont pas vus. Les données ne sont pas
421affectées, ceci ne s'applique qu'aux entêtes.
willy tarreau0f7af912005-12-17 12:21:26 +0100422
423La syntaxe est :
willy tarreau5cbea6f2005-12-17 12:48:26 +0100424 reqadd <string> pour ajouter un entête dans la requête
425 reqrep <search> <replace> pour modifier la requête
426 reqrep <search> pour supprimer un entête dans la requête
427
428 rspadd <string> pour ajouter un entête dans la réponse
429 rsprep <search> <replace> pour modifier la réponse
430 rsprep <search> pour supprimer un entête dans la réponse
431
willy tarreau0f7af912005-12-17 12:21:26 +0100432
433<search> est une expression régulière compatible GNU regexp supportant
434le groupage par parenthèses (sans les '\'). Les espaces et autres
435séparateurs doivent êtres précédés d'un '\' pour ne pas être confondus
willy tarreau5cbea6f2005-12-17 12:48:26 +0100436avec la fin de la chaîne. De plus, certains caractères spéciaux peuvent
437être précédés d'un backslach ('\') :
438
439 \t pour une tabulation
440 \r pour un retour charriot
441 \n pour un saut de ligne
442 \ pour différencier un espace d'un séparateur
443 \# pour différencier un dièse d'un commentaire
444 \\ pour un backslash
445 \xXX pour un caractère spécifique XX (comme en C)
willy tarreau0f7af912005-12-17 12:21:26 +0100446
willy tarreau0f7af912005-12-17 12:21:26 +0100447
willy tarreau5cbea6f2005-12-17 12:48:26 +0100448<replace> contient la chaîne remplaçant la portion vérifiée par l'expression.
449Elle peut inclure les caractères spéciaux ci-dessus, faire référence à un
450groupe délimité par des parenthèses dans l'expression régulière, par sa
451position numérale. Les positions vont de 1 à 9, et sont codées par un '\'
452suivi du chiffre désiré. Il est également possible d'insérer un caractère non
453imprimable (utile pour le saut de ligne) inscrivant '\x' suivi du code
454hexadécimal de ce caractère (comme en C).
455
456<string> représente une chaîne qui sera ajoutée systématiquement après la
457dernière ligne d'entête.
458
459Remarques :
460---------
461 - la première ligne de la requête et celle de la réponse sont traitées comme
462 des entêtes, ce qui permet de réécrire des URL et des codes d'erreur.
463 - 'reqrep' est l'équivalent de 'cliexp' en version 1.0, et 'rsprep' celui de
464 'srvexp'. Ces noms sont toujours supportés mais déconseillés.
465 - pour des raisons de performances, le nombre total de caractères ajoutés sur
466 une requête ou une réponse est limité à 256. Cette valeur est modifiable dans
467 le code. Pour un usage temporaire, on peut gagner de la place en supprimant
468 quelques entêtes inutiles avant les ajouts.
willy tarreau0f7af912005-12-17 12:21:26 +0100469
470Exemples :
willy tarreau5cbea6f2005-12-17 12:48:26 +0100471--------
472 reqrep ^(GET.*)(.free.fr)(.*) \1.online.fr\3
473 reqrep ^(POST.*)(.free.fr)(.*) \1.online.fr\3
474 reqrep ^Proxy-Connection:.* Proxy-Connection:\ close
475 rsprep ^Server:.* Server:\ Tux-2.0
476 rsprep ^(Location:\ )([^:]*://[^/]*)(.*) \1\3
477 rspdel ^Connection:.*
478 rspadd Connection:\ close
willy tarreau0f7af912005-12-17 12:21:26 +0100479
480
willy tarreau5cbea6f2005-12-17 12:48:26 +0100481Répartition avec persistence
482============================
483
484La combinaison de l'insertion de cookie avec la répartition de charge interne
485permet d'assurer une persistence dans les sessions HTTP d'une manière
486pratiquement transparente pour les applications. Le principe est simple :
487 - assigner un cookie à chaque serveur
488 - effectuer une répartition interne
489 - insérer un cookie dans les réponses issues d'une répartition
490
491Exemple :
492-------
493 listen application 0.0.0.0:80
494 mode http
495 cookie SERVERID insert indirect
496 balance roundrobin
497 server 192.168.1.1:80 cookie server01 check
498 server 192.168.1.2:80 cookie server02 check
499
willy tarreaub719f002005-12-17 12:55:07 +0100500=======================
501| Paramétrage système |
502=======================
willy tarreau0f7af912005-12-17 12:21:26 +0100503
504Sous Linux 2.4
505==============
506
willy tarreaub719f002005-12-17 12:55:07 +0100507-- cut here --
508#!/bin/sh
509# set this to about 256/4M (16384 for 256M machine)
510MAXFILES=16384
511echo $MAXFILES > /proc/sys/fs/file-max
512ulimit -n $MAXFILES
513
514if [ -e /proc/sys/net/ipv4/ip_conntrack_max ]; then
515 echo 65536 > /proc/sys/net/ipv4/ip_conntrack_max
516fi
517
518if [ -e /proc/sys/net/ipv4/netfilter/ip_ct_tcp_timeout_fin_wait ]; then
519 # 30 seconds for fin, 15 for time wait
520 echo 3000 > /proc/sys/net/ipv4/netfilter/ip_ct_tcp_timeout_fin_wait
521 echo 1500 > /proc/sys/net/ipv4/netfilter/ip_ct_tcp_timeout_time_wait
522 echo 0 > /proc/sys/net/ipv4/netfilter/ip_ct_tcp_log_invalid_scale
523 echo 0 > /proc/sys/net/ipv4/netfilter/ip_ct_tcp_log_out_of_window
524fi
525
willy tarreau0f7af912005-12-17 12:21:26 +0100526echo 1024 60999 > /proc/sys/net/ipv4/ip_local_port_range
willy tarreau5cbea6f2005-12-17 12:48:26 +0100527echo 32768 > /proc/sys/net/ipv4/ip_queue_maxlen
willy tarreaub719f002005-12-17 12:55:07 +0100528echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
529echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog
willy tarreau0f7af912005-12-17 12:21:26 +0100530echo 262144 > /proc/sys/net/ipv4/tcp_max_tw_buckets
willy tarreaub719f002005-12-17 12:55:07 +0100531echo 262144 > /proc/sys/net/ipv4/tcp_max_orphans
532echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
willy tarreau0f7af912005-12-17 12:21:26 +0100533echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
534echo 0 > /proc/sys/net/ipv4/tcp_timestamps
willy tarreau5cbea6f2005-12-17 12:48:26 +0100535echo 0 > /proc/sys/net/ipv4/tcp_ecn
willy tarreaub719f002005-12-17 12:55:07 +0100536echo 0 > /proc/sys/net/ipv4/tcp_sack
537echo 0 > /proc/sys/net/ipv4/tcp_dsack
538
539# auto-tuned on 2.4
540#echo 262143 > /proc/sys/net/core/rmem_max
541#echo 262143 > /proc/sys/net/core/rmem_default
542
543echo 16384 65536 524288 > /proc/sys/net/ipv4/tcp_rmem
544echo 16384 349520 699040 > /proc/sys/net/ipv4/tcp_wmem
545
546-- cut here --
willy tarreau0f7af912005-12-17 12:21:26 +0100547
548-- fin --