"kernel: tcp_parse_options: Illegal window scaling value 154 >14 received" error ?

環(huán)境

  • CentOS Linux

問題

  • 在 var/log/messages 文件中發(fā)現(xiàn)以下日志。
Oct  6 21:01:05 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 154 >14 received.
Oct  6 21:01:05 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 154 >14 received.
Oct  7 10:57:22 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 154 >14 received.
Oct  7 10:57:23 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 154 >14 received.

解決

  • 如果系統(tǒng)收到的數(shù)據(jù)包的窗口比例 TCP 選項(xiàng)值大于 14,則會(huì)導(dǎo)致這種情況,在本例中它顯示為 154。問題似乎出在遠(yuǎn)程主機(jī)上。請(qǐng)注意,連接仍然被接受,系統(tǒng)只是使用 14 作為比例值。

  • 我們可以使用 tcpdump 捕獲數(shù)據(jù)包跟蹤來識(shí)別發(fā)送數(shù)據(jù)包的主機(jī)。

根本原因

  • RFC1323 中將 TCP 窗口比例定義為最多 14:

    /* Maximal number of window scale according to RFC1323 */
    #define TCP_MAX_WSCALE          14U
    
    
  • tcp_parse_options解析并測(cè)試此選項(xiàng)是否符合所需條件。如果比例因子高于最大比例,且所有其他條件均符合,則系統(tǒng)輸出消息,將比例因子設(shè)置為最大比例因子,并接受該選項(xiàng)。

    void tcp_parse_options(const struct net *net,
                         const struct sk_buff *skb,
                         struct tcp_options_received *opt_rx, int estab,
                         struct tcp_fastopen_cookie *foc)
    {
    ...
                          case TCPOPT_WINDOW:
                                  if (opsize == TCPOLEN_WINDOW && th->syn &&
                                      !estab && net->ipv4.sysctl_tcp_window_scaling) {
                                          __u8 snd_wscale = *(__u8 *)ptr;
                                          opt_rx->wscale_ok = 1;
                                          if (snd_wscale > TCP_MAX_WSCALE) {
                                                  net_info_ratelimited("%s: Illegal window scaling value %d > %u received\n",
                                                                       __func__,
                                                                       snd_wscale,
                                                                       TCP_MAX_WSCALE);
                                                  snd_wscale = TCP_MAX_WSCALE;
                                          }
                                          opt_rx->snd_wscale = snd_wscale;
                                  }
                                  break;
    ...
    
    
  • 根據(jù)其他因素,系統(tǒng)可能會(huì)或可能不會(huì)接受連接。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容