首页 > 其他分享 >Why system logging "kernel: tcp_parse_options: Illegal window scaling value 15 >14 received&

Why system logging "kernel: tcp_parse_options: Illegal window scaling value 15 >14 received&

时间:2024-09-12 11:14:09浏览次数:1  
标签:kernel gt logging 14 received tcp scaling window options

环境

  • Linux

问题

  • 在 var/log/messages 文件中发现以下日志。
Oct  6 21:01:05 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 15 >14 received.
Oct  6 21:01:05 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 15 >14 received.
Oct  7 10:57:22 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 15 >14 received.
Oct  7 10:57:23 mplttaxsx101 kernel: tcp_parse_options: Illegal window scaling value 15 >14 received.

解决

  • 如果系统收到的数据包的窗口比例 TCP 选项值大于 14,则会导致这种情况,在本例中它显示为 15。问题似乎出在远程主机上。请注意,连接仍然被接受,系统只是使用 14 作为比例值。

  • 我们可以使用 tcpdump 捕获数据包跟踪来识别发送数据包的主机。

根本原因

  • RFC1323 中将 TCP 窗口比例定义为最多 14:

    /* Maximal number of window scale according to RFC1323 */
    #define TCP_MAX_WSCALE          14U
  • tcp_parse_options解析并测试此选项是否符合所需条件。如果比例因子高于最大比例,且所有其他条件均符合,则系统输出消息,将比例因子设置为最大比例因子,并接受该选项。

    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;
    ...
  • 根据其他因素,系统可能会或可能不会接受连接。

标签:kernel,gt,logging,14,received,tcp,scaling,window,options
From: https://www.cnblogs.com/yangq/p/18409820

相关文章

  • coca IN EFFECT 搭配 MI>2
      HELP FREQ ALL%MI 1  SAYING279 2742560.102.272  LAW226 2774540.082.053  REMAIN161 755130.213.014  REMAINS143 742600.192.915  WARNING106 356170.303.346  LAWS......
  • thinkphp5数据库迁移工具 migration(longtext/tinyint等)
    我用tp5创建文件phpthinkmigrate:createUser在User文件里面写publicfunctionup(){$this->table('a3')->addColumn('a','integer',['limit'=>'10','default'=>0,'signed'=&......
  • GtkSharp 获取触摸宽度高度面积尺寸信息
    本文将告诉大家如何在C#dotnet里面,从GTK里面获取到触摸的宽度高度信息,即触摸面积或触摸尺寸信息准确来说本文的方法是我在lsj的帮助下试出来的,我没有找到正式的文档对此有描述。本文测试的机器是在UOS系统搭配兆芯的CPU的机器上,这台机器采用的是希沃的某款触摸框的设......
  • position定位<img>标签【示例】
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><style>.header{width:100%;height:48px;background-co......
  • 《浪人崛起》游戏启动时闪退提示“找不到KernelBase.dll”该怎么解决?浪人崛起游戏崩溃
    启动《浪人崛起》时,游戏闪退并提示“找不到KernelBase.dll”,这着实令人烦恼。别着急,这个问题是可以解决的。可能需要重新安装相关组件,或者检查系统文件完整性。具体该如何操作才能顺利解决呢?本篇将为大家带来《浪人崛起》游戏启动时闪退提示“找不到KernelBase.dll”该怎么解决......
  • logging模块用于记录日志的标准库
    日志级别是监控和调试软件系统的关键组成部分,它们帮助开发者和运维人员区分不同严重程度的信息,从而更有效地响应和解决问题。以下是日志级别的详细说明及如何在Python中使用它们的示例。日志级别分类日志级别按严重程度从低到高排序如下:DEBUG:用于记录详细的调试信息,通常在开......
  • 使用nvim查看的linux kernel 源码(可以快速跳转等
    neovim使用的是lazyvim,开箱即用十分方便。linuxkernel源码,如果用clangd构建指定好LLVM还是可以使用下面的指令得到compile_commands.json这个文件的。compile_commands.json就是用来做clangd跳转支持的文件。./scripts/gen_compile_commands.py但是对于aarch64-linux-gnu......
  • 【C#】LINQ操作实现 IEnumerable<T> 接口的集合
    IEnumerable<TSource> 接口详解IEnumerable<TSource> IEnumerable<TSource>是C#中的一个泛型接口,它定义了如何遍历一组对象。这个接口是.NETFramework中LINQ(LanguageIntegratedQuery)的基础之一,用于提供一种统一的方式来访问不同类型的集合。IEnumerable<TSource>......
  • GT收发器
    1.GT触发器的IP使用第一页 第二页 第三页GTPIP提供了两种解决跨时钟域的方法:(1)RXElasticBuffer(RX弹性缓冲器);(2)RXPhaseAlignment(RX相位对齐电路),两种方法的比较:RXElasticBuffer优点在于稳定,易使用,执行相位校准的速度快,但是需要时钟和通道进行绑定;RXPhaseAlignme......
  • 解决python封装Logging模块后,log位置显示错误的问题
    引入今天由于项目需要,要将logging库二次封装成一个类,以实现一些自定义的功能。我将二次封装了一个logService类,然后在其中同样也实现info,warn,error等日志函数。额外加了一个将日志存入数据库的功能。大概是像下面这样子:但是在封装的过程中,出现了一个问题:log中,不能正确显......