tcp_syn_retries :INTEGER
默認值是5
對於一個新建鏈接,內核要發送多少個 SYN 鏈接請求才決定放棄。不該該大於255,默認值是5,對應於180秒左右時間。(對於大負載而物理通訊良好的網絡而言,這個值偏高,可修改成2.這個值僅僅是針對對外的鏈接,對進來的鏈接,是由tcp_retries1 決定的)
tcp_synack_retries :INTEGER
默認值是5
對於遠端的鏈接請求SYN,內核會發送SYN + ACK數據報,以確認收到上一個 SYN鏈接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這裏決定內核在放棄鏈接以前所送出的 SYN+ACK 數目。不該該大於255,默認值是5,對應於180秒左右時間。(能夠根據上面的tcp_syn_retries來決定這個值)
tcp_keepalive_time :INTEGER
默認值是7200(2小時)
當keepalive打開的狀況下,TCP發送keepalive消息的頻率。(因爲目前網絡攻擊等因素,形成了利用這個進行的攻擊很頻繁,曾經也有cu的朋友提到過,說若是2邊創建了鏈接,而後不發送任何數據或者rst/fin消息,那麼持續的時間是否是就是2小時,空鏈接攻擊?tcp_keepalive_time就是預防此情形的.我我的在作nat服務的時候的修改值爲1800秒)
tcp_keepalive_probes:INTEGER
默認值是9
TCP發送keepalive探測以肯定該鏈接已經斷開的次數。(注意:保持鏈接僅在SO_KEEPALIVE套接字選項被打開是才發送.次數默認不須要修改,固然根據情形也能夠適當地縮短此值.設置爲5比較合適)
tcp_keepalive_intvl:INTEGER
默認值爲75
探測消息發送的頻率,乘以tcp_keepalive_probes就獲得對於從開始探測以來沒有響應的鏈接殺除的時間。默認值爲75秒,也就是沒有活動的鏈接將在大約11分鐘之後將被丟棄。(對於普通應用來講,這個值有一些偏大,能夠根據須要改小.特別是web類服務器須要改小該值,15是個比較合適的值)
tcp_retries1 :INTEGER
默認值是3
放棄迴應一個TCP鏈接請求前﹐須要進行多少次重試。RFC 規定最低的數值是3﹐這也是默認值﹐根據RTO的值大約在3秒 - 8分鐘之間。(注意:這個值同時還決定進入的syn鏈接)
tcp_retries2 :INTEGER
默認值爲15
在丟棄激活(已創建通信情況)的TCP鏈接以前﹐須要進行多少次重試。默認值爲15,根據RTO的值來決定,至關於13-30分鐘(RFC1122規定,必須大於100秒).(這個值根據目前的網絡設置,能夠適當地改小,個人網絡內修改成了5)
tcp_orphan_retries :INTEGER
默認值是7
在近端丟棄TCP鏈接以前﹐要進行多少次重試。默認值是7個﹐至關於 50秒 - 16分鐘﹐視 RTO 而定。若是您的系統是負載很大的web服務器﹐那麼也許須要下降該值﹐這類 sockets 可能會耗費大量的資源。另外參的考tcp_max_orphans 。(事實上作NAT的時候,下降該值也是好處顯著的,我本人的網絡環境中下降該值爲3)
tcp_fin_timeout :INTEGER
默認值是 60
對於本端斷開的socket鏈接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開鏈接或一直不結束鏈接或不可預料的進程死亡。默認值爲 60 秒。 過去在2.2版本的內核中是 180 秒。您能夠設置該值﹐但須要注意﹐若是您的機器爲負載很重的web服務器﹐您可能要冒內存被大量無效數據報填滿的風險﹐FIN-WAIT-2 sockets 的危險性低於 FIN-WAIT-1 ﹐由於它們最多隻吃 1.5K 的內存﹐可是它們存在時間更長。另外參考 tcp_max_orphans。(事實上作NAT的時候,下降該值也是好處顯著的,我本人的網絡環境中下降該值爲30)
tcp_max_tw_buckets :INTEGER
默認值是180000
系統在同時所處理的最大 timewait sockets 數目。若是超過此數的話﹐time-wait socket 會被當即砍除而且顯示警告信息。之因此要設定這個限制﹐純粹爲了抵禦那些簡單的 DoS 攻擊﹐千萬不要人爲的下降這個限制﹐不過﹐若是網絡條件須要比默認值更多﹐則能夠提升它(或許還要增長內存)。(事實上作NAT的時候最好能夠適當地增長該值)
tcp_tw_recycle :BOOLEAN
默認值是0
打開快速 TIME-WAIT sockets 回收。除非獲得技術專家的建議或要求﹐請不要隨意修改這個值。(作NAT的時候,建議打開它)php
tcp_tw_reuse:BOOLEAN
默認值是0
該文件表示是否容許從新應用處於TIME-WAIT狀態的socket用於新的TCP鏈接(這個對快速重啓動某些服務,而啓動後提示端口已經被使用的情形很是有幫助)
tcp_max_orphans :INTEGER
缺省值是8192
系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量﹐那麼不屬於任何進程的鏈接會被當即reset,並同時顯示警告信息。之因此要設定這個限制﹐純粹爲了抵禦那些簡單的 DoS 攻擊﹐千萬不要依賴這個或是人爲的下降這個限制(這個值Redhat AS版本中設置爲32768,可是不少防火牆修改的時候,建議該值修改成2000)
tcp_abort_on_overflow :BOOLEAN
缺省值是0
當守護進程太忙而不能接受新的鏈接,就象對方發送reset消息,默認值是false。這意味着當溢出的緣由是由於一個偶然的猝發,那麼鏈接將恢復狀態。只有在你確信守護進程真的不能完成鏈接請求時纔打開該選項,該選項會影響客戶的使用。(對待已經滿載的sendmail,apache這類服務的時候,這個能夠很快讓客戶端終止鏈接,能夠給予服務程序處理已有鏈接的緩衝機會,因此不少防火牆上推薦打開它)
tcp_syncookies :BOOLEAN
默認值是0
只有在內核編譯時選擇了CONFIG_SYNCOOKIES時纔會發生做用。當出現syn等候隊列出現溢出時象對方發送syncookies。目的是爲了防止syn flood攻擊。
注意:該選項千萬不能用於那些沒有收到攻擊的高負載服務器,若是在日誌中出現synflood消息,可是調查發現沒有收到synflood攻擊,而是合法用戶的鏈接負載太高的緣由,你應該調整其它參數來提升服務器性能。參考:
tcp_max_syn_backlog
tcp_synack_retries
tcp_abort_on_overflow
syncookie嚴重的違背TCP協議,不容許使用TCP擴展,可能對某些服務致使嚴重的性能影響(如SMTP轉發)。(注意,該實現與BSD上面使用的tcp proxy同樣,是違反了RFC中關於tcp鏈接的三次握手實現的,可是對於防護syn-flood的確頗有用.)
tcp_stdurg :BOOLEAN
默認值爲0
使用 TCP urg pointer 字段中的主機請求解釋功能。大部份的主機都使用老舊的 BSD解釋,所以若是您在 Linux 打開它﹐或會致使不能和它們正確溝通。html
tcp_max_syn_backlog :INTEGER
對於那些依然還未得到客戶端確認的鏈接請求﹐須要保存在隊列中最大數目。對於超過 128Mb 內存的系統﹐默認值是1024 ﹐低於 128Mb 的則爲 128。若是服務器常常出現過載﹐能夠嘗試增長這個數字。警告﹗假如您將此值設爲大於1024﹐最好修改 include/net/tcp.h 裏面的 TCP_SYNQ_HSIZE ﹐以保持TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog ﹐而且編進核心以內。(SYN Flood攻擊利用TCP協議散佈握手的缺陷,僞造虛假源IP地址發送大量TCP-SYN半打開鏈接到目標系統,最終致使目標系統Socket隊列資源耗 盡而沒法接受新的鏈接。爲了應付這種攻擊,現代Unix系統中廣泛採用多鏈接隊列處理的方式來緩衝(而不是解決)這種攻擊,是用一個基本隊列處理正常的完 全鏈接應用(Connect()和Accept() ),是用另外一個隊列單獨存放半打開鏈接。這種雙隊列處理方式和其餘一些系統內核措施(例如Syn-Cookies/Caches)聯合應用時,可以比較有 效的緩解小規模的SYN Flood攻擊(事實證實<1000p/s)加大SYN隊列長度能夠容納更多等待鏈接的網絡鏈接數,因此對Server來講能夠考慮增大該值.)
tcp_window_scaling :INTEGER
缺省值爲1
該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數值爲布爾值,爲1時表示可變,爲0時表示不可變。tcp/ip一般使用的窗口最大可達到 65535 字節,對於高速網絡,該值可能過小,這時候若是啓用了該功能,可使tcp/ip滑動窗口大小增大數個數量級,從而提升數據傳輸的能力(RFC 1323)。(對普通地百M網絡而言,關閉會下降開銷,因此若是不是高速網絡,能夠考慮設置爲0)
tcp_timestamps :BOOLEAN
缺省值爲1
Timestamps 用在其它一些東西中﹐能夠防範那些僞造的 sequence 號碼。一條1G的寬帶線路或許會重遇到帶 out-of-line數值的舊sequence 號碼(假如它是因爲上次產生的)。Timestamp 會讓它知道這是個 '舊封包'。(該文件表示是否啓用以一種比超時重發更精確的方法(RFC 1323)來啓用對 RTT 的計算;爲了實現更好的性能應該啓用這個選項。)
tcp_sack :BOOLEAN
缺省值爲1
使用 Selective ACK﹐它能夠用來查找特定的遺失的數據報--- 所以有助於快速恢復狀態。該文件表示是否啓用有選擇的應答(Selective Acknowledgment),這能夠經過有選擇地應答亂序接收到的報文來提升性能(這樣可讓發送者只發送丟失的報文段)。(對於廣域網通訊來講這個選項應該啓用,可是這會增長對 CPU 的佔用。)
tcp_fack :BOOLEAN
缺省值爲1
打開FACK擁塞避免和快速重傳功能。(注意,當tcp_sack設置爲0的時候,這個值即便設置爲1也無效)
tcp_dsack :BOOLEAN
缺省值爲1
容許TCP發送"兩個徹底相同"的SACK。
tcp_ecn :BOOLEAN
缺省值爲0
打開TCP的直接擁塞通告功能。
tcp_reordering :INTEGER
默認值是3
TCP流中重排序的數據報最大數量 。 (通常有看到推薦把這個數值略微調整大一些,好比5)
tcp_retrans_collapse :BOOLEAN
缺省值爲1
對於某些有bug的打印機提供針對其bug的兼容性。(通常不須要這個支持,能夠關閉它)
tcp_wmem(3個INTEGER變量): min, default, max
min:爲TCP socket預留用於發送緩衝的內存最小值。每一個tcp socket均可以在建議之後均可以使用它。默認值爲4096(4K)。
default:爲TCP socket預留用於發送緩衝的內存數量,默認狀況下該值會影響其它協議使用的net.core.wmem_default 值,通常要低於net.core.wmem_default的值。默認值爲16384(16K)。
max: 用於TCP socket發送緩衝的內存最大值。該值不會影響net.core.wmem_max,"靜態"選擇參數SO_SNDBUF則不受該值影響。默認值爲131072(128K)。(對於服務器而言,增長這個參數的值對於發送數據頗有幫助,在個人網絡環境中,修改成了51200 131072 204800)
tcp_rmem (3個INTEGER變量): min, default, max
min:爲TCP socket預留用於接收緩衝的內存數量,即便在內存出現緊張狀況下tcp socket都至少會有這麼多數量的內存用於接收緩衝,默認值爲8K。
default:爲TCP socket預留用於接收緩衝的內存數量,默認狀況下該值影響其它協議使用的net.core.wmem_default 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默認值狀況下,TCP窗口大小爲65535。默認值爲87380
max:用於TCP socket接收緩衝的內存最大值。該值不會影響 net.core.wmem_max,"靜態"選擇參數 SO_SNDBUF則不受該值影響。默認值爲 128K。默認值爲87380*2 bytes。(能夠看出,.max的設置最好是default的兩倍,對於NAT來講主要該增長它,個人網絡裏爲 51200 131072 204800)
tcp_mem(3個INTEGER變量):low, pressure, high
low:當TCP使用了低於該值的內存頁面數時,TCP不會考慮釋放內存。(理想狀況下,這個值應與指定給 tcp_wmem 的第 2 個值相匹配 - 這第 2 個值代表,最大頁面大小乘以最大併發請求數除以頁大小 (131072 * 300 / 4096)。 )
pressure:當TCP使用了超過該值的內存頁面數量時,TCP試圖穩定其內存使用,進入pressure模式,當內存消耗低於low值時則退出pressure狀態。(理想狀況下這個值應該是 TCP 可使用的總緩衝區大小的最大值 (204800 * 300 / 4096)。 )
high:容許全部tcp sockets用於排隊緩衝數據報的頁面量。(若是超過這個值,TCP 鏈接將被拒絕,這就是爲何不要令其過於保守 (512000 * 300 / 4096) 的緣由了。 在這種狀況下,提供的價值很大,它能處理不少鏈接,是所預期的 2.5 倍;或者使現有鏈接可以傳輸 2.5 倍的數據。 個人網絡裏爲192000 300000 732000)
通常狀況下這些值是在系統啓動時根據系統內存數量計算獲得的。
tcp_app_win : INTEGER
默認值是31
保留max(window/2^tcp_app_win, mss)數量的窗口因爲應用緩衝。當爲0時表示不須要緩衝。
tcp_adv_win_scale : INTEGER
默認值爲2
計算緩衝開銷bytes/2^tcp_adv_win_scale(若是tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(若是tcp_adv_win_scale <= 0)。web
tcp_rfc1337 :BOOLEAN
缺省值爲0
這個開關能夠啓動對於在RFC1337中描述的"tcp 的time-wait暗殺危機"問題的修復。啓用後,內核將丟棄那些發往time-wait狀態TCP套接字的RST 包.算法
tcp_low_latency : BOOLEAN
缺省值爲0
容許 TCP/IP 棧適應在高吞吐量狀況下低延時的狀況;這個選項通常情形是的禁用。(但在構建Beowulf 集羣的時候,打開它頗有幫助)apache
tcp_westwood :BOOLEAN
缺省值爲0
啓用發送者端的擁塞控制算法,它能夠維護對吞吐量的評估,並試圖對帶寬的總體利用狀況進行優化;對於 WAN 通訊來講應該啓用這個選項。服務器
tcp_bic :BOOLEAN
缺省值爲0
爲快速長距離網絡啓用 Binary Increase Congestion;這樣能夠更好地利用以 GB 速度進行操做的連接;對於 WAN 通訊應該啓用這個選項。cookie