硬汉嵌入式论坛

 找回密码
 立即注册
查看: 833|回复: 14
收起左侧

[以太网] 百兆全双工下实际速度才几十kB

[复制链接]

34

主题

206

回帖

308

积分

高级会员

积分
308
发表于 2025-6-10 18:32:15 | 显示全部楼层 |阅读模式
本帖最后由 LinY 于 2025-6-10 18:34 编辑

H743+LAN8742 LWIP
自协商100Mb 全双工

同一个设备和网线,
测试环境正常,网速8-9MB/s
生产环境网速才几十kB/s

看寄存器也是100Mb全双工的,网线插电脑上测试又是正常的千兆的,强制改到百兆速度也正常的

有可能是什么原因?

试过禁用EEE模式、自协商只允许100M、强制100M 都解决不了这个问题。

有大佬指点下吗

求有偿技术支持! +V MK1278830721

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-11 07:40:28 | 显示全部楼层
这种情况有必要测试下是不是丢包严重,百万ping包最快速度试试

https://forum.anfulai.cn/forum.p ... %B0%D9%CD%F2%2Bping

如果没有丢包,基本可以确定是你的网络环境问题,有限制操作。
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

积分
89
发表于 2025-6-11 08:57:23 | 显示全部楼层
TCP?  这个硬件我当时用Jperf测速都能到70~80MBps,  一些参数对TCP测速影响很大, 你可以试着改一改
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-11 15:44:46 | 显示全部楼层
eric2013 发表于 2025-6-11 07:40
这种情况有必要测试下是不是丢包严重,百万ping包最快速度试试

https://forum.anfulai.cn/forum.php?mod=vi ...

QQ图片20250611154352.png

试了没什么问题
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-11 15:46:34 | 显示全部楼层
本帖最后由 LinY 于 2025-6-11 15:48 编辑
capw 发表于 2025-6-11 08:57
TCP?  这个硬件我当时用Jperf测速都能到70~80MBps,  一些参数对TCP测速影响很大, 你可以试着改一改

参数就改了这些,其他默认
而且本地测试都好的,就是到线上这样。
待客户这边一周了还没解决,求指导

[C] 纯文本查看 复制代码
/*----- Default Value for MEM_SIZE: 1600 ---*/
#define MEM_SIZE (1024 * 240)
/*----- Default Value for TCP_MSS: 536 ---*/
#define TCP_MSS 1460
/*----- Default Value for TCP_SND_BUF: 2920 ---*/
#define TCP_SND_BUF (TCP_MSS * 10)


// 至少 MEM_SIZE ≥ (TCP_WND + TCP_SND_BUF + (PBUF_POOL_SIZE × PBUF大小) + MEMP内存开销),一般 350KB~500KB稳妥
/*----- Default Value for MEMP_NUM_TCP_SEG: 16 ---*/
// #define MEMP_NUM_TCP_SEG LWIP_MEM_ALIGN_SIZE(TCP_SND_QUEUELEN + 4)
#define MEMP_NUM_TCP_SEG 256
/*----- Default Value for MEMP_NUM_TCP_PCB: 5 ---*/
#define MEMP_NUM_TCP_PCB 20
/*----- Default Value for MEMP_NUM_RAW_PCB: 4 ---*/
#define MEMP_NUM_RAW_PCB 10
/*----- Default Value for MEMP_NUM_PBUF: 16 ---*/
#define MEMP_NUM_PBUF 256
/*----- Default Value for PBUF_POOL_SIZE: 16 ---*/
#define PBUF_POOL_SIZE 256
/*----- Default Value for TCP_WND: 5840 ---*/
// #define TCP_WND (TCP_MSS * 40)
#define TCP_WND (1024 * 64 - 1)
// // 禁止 TCP 乱序缓存(节省内存)
// #define TCP_QUEUE_OOSEQ  0
// #define LWIP_TCP_KEEPALIVE 1

回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

积分
89
发表于 2025-6-11 16:47:42 | 显示全部楼层
[C] 纯文本查看 复制代码
/*
 * Copyright (c) 2019 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * [url]www.apache.org/licenses/LICENSE-2.0[/url]
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef LWIP_LWIPOPTS_H
#define LWIP_LWIPOPTS_H

/* Options managed by RTE */
#include "lwipopts_rte.h"

/* See "lwip/opt.h" for all available configuration options */

/*
   ------------------------------------
   -------------- NO SYS --------------
   ------------------------------------
#define NO_SYS               managed by RTE
#define LWIP_TIMERS          managed by RTE
#define SYS_LIGHTWEIGHT_PROT managed by RTE
*/

/*
   ------------------------------------
   ---------- Memory options ----------
   ------------------------------------
*/
#define MEM_LIBC_MALLOC                 0
#define MEMP_MEM_MALLOC                 1
#define MEMP_MEM_INIT                   0
#define MEM_ALIGNMENT                   4
#define MEM_SIZE                        (36*1024)
#define MEMP_OVERFLOW_CHECK             0
#define MEMP_SANITY_CHECK               0
#define MEM_OVERFLOW_CHECK              0
#define MEM_SANITY_CHECK                0

/* ------------------------------------------------
   ---------- Internal Memory Pool Sizes ----------
   ------------------------------------------------
 */
#define MEMP_NUM_PBUF                   10
#define MEMP_NUM_RAW_PCB                4
#define MEMP_NUM_UDP_PCB                6
#define MEMP_NUM_TCP_PCB                10
#define MEMP_NUM_TCP_PCB_LISTEN         6
#define MEMP_NUM_TCP_SEG                12
#define MEMP_NUM_REASSDATA              16
#define MEMP_NUM_FRAG_PBUF              15
#define MEMP_NUM_ARP_QUEUE              10
#define MEMP_NUM_IGMP_GROUP             8
#define MEMP_NUM_NETBUF                 2
#define MEMP_NUM_NETCONN                4
#define MEMP_NUM_SELECT_CB              4
#define MEMP_NUM_TCPIP_MSG_API          8
#define MEMP_NUM_TCPIP_MSG_INPKT        8
#define MEMP_NUM_NETDB                  1
#define MEMP_NUM_LOCALHOSTLIST          1
#define PBUF_POOL_SIZE                  16

/*
   ---------------------------------
   ---------- ARP options ----------
   ---------------------------------
#define LWIP_ETHERNET      managed by RTE
*/
#define LWIP_ARP                        1
#define ARP_TABLE_SIZE                  10
#define ETHARP_SUPPORT_VLAN             0
#define ETH_PAD_SIZE                    2
#define ETHARP_SUPPORT_STATIC_ENTRIES   0

/*
   --------------------------------
   ---------- IP options ----------
   --------------------------------
#define LWIP_IPV4          managed by RTE
*/
#define IP_FORWARD                      0
#define IP_REASSEMBLY                   1
#define IP_FRAG                         1
#define IP_OPTIONS_ALLOWED              1
#define IP_REASS_MAX_PBUFS              10
#define IP_DEFAULT_TTL                  128
#define IP_SOF_BROADCAST                1
#define IP_SOF_BROADCAST_RECV           1

/*
   ----------------------------------
   ---------- ICMP options ----------
   ----------------------------------
*/
#define LWIP_ICMP                       1

/*
   ---------------------------------
   ---------- RAW options ----------
   ---------------------------------
*/
#define LWIP_RAW                        1

/*
   ----------------------------------
   ---------- DHCP options ----------
   ----------------------------------
*/
#define LWIP_DHCP                       0
#define LWIP_DHCP_CHECK_LINK_UP         0
#define LWIP_DHCP_BOOTP_FILE            0
#define LWIP_DHCP_GET_NTP_SRV           0
#define LWIP_DHCP_MAX_NTP_SERVERS       0

/*
   ------------------------------------
   ---------- AUTOIP options ----------
   ------------------------------------
*/
#define LWIP_AUTOIP                     0
#define LWIP_DHCP_AUTOIP_COOP           0
#define LWIP_DHCP_AUTOIP_COOP_TRIES     9

/*
   ----------------------------------
   ---------- IGMP options ----------
   ----------------------------------
*/
#define LWIP_IGMP                       1

/*
   ----------------------------------
   ---------- DNS options -----------
   ----------------------------------
*/
#define LWIP_DNS                        0
#define DNS_TABLE_SIZE                  4
#define DNS_MAX_NAME_LENGTH             256

/*
   ---------------------------------
   ---------- UDP options ----------
   ---------------------------------
*/
#define LWIP_UDP                        1
#define LWIP_UDPLITE                    0

/*
   ---------------------------------
   ---------- TCP options ----------
   ---------------------------------
*/
#define LWIP_TCP                        1
#define TCP_QUEUE_OOSEQ                 0
#define LWIP_TCP_SACK_OUT               0
#define LWIP_TCP_MAX_SACK_NUM           4
#define TCP_MSS                         1460
#define TCP_OOSEQ_MAX_BYTES             0
#define TCP_OOSEQ_MAX_PBUFS             0
#define TCP_LISTEN_BACKLOG              1
#define TCP_DEFAULT_LISTEN_BACKLOG      0xff
#define LWIP_EVENT_API                  0
#define LWIP_CALLBACK_API               1
#define LWIP_WND_SCALE                  0
#define TCP_RCV_SCALE                   0
#define LWIP_TCP_PCB_NUM_EXT_ARGS       0
#define LWIP_ALTCP                      0
#define LWIP_ALTCP_TLS                  0

#define TCP_WND                         (6 * TCP_MSS)
#define TCP_SND_BUF                     (6 * TCP_MSS)

/*  TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
  as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
#define TCP_SND_QUEUELEN        (2* TCP_SND_BUF/TCP_MSS)

/*
   ----------------------------------
   ---------- Pbuf options ----------
   ----------------------------------
*/
#define PBUF_LINK_ENCAPSULATION_HLEN    0

/*
   ------------------------------------------------
   ---------- Network Interfaces options ----------
   ------------------------------------------------
*/
#define LWIP_SINGLE_NETIF               0
#define LWIP_NETIF_HOSTNAME             0
#define LWIP_NETIF_API                  0
#define LWIP_NETIF_STATUS_CALLBACK      1
#define LWIP_NETIF_EXT_STATUS_CALLBACK  0
#define LWIP_NETIF_LINK_CALLBACK        1
#define LWIP_NETIF_REMOVE_CALLBACK      0
#define LWIP_NETIF_HWADDRHINT           1

/*
   ------------------------------------
   ---------- LOOPIF options ----------
   ------------------------------------
*/
#define LWIP_HAVE_LOOPIF                0
#define LWIP_LOOPIF_MULTICAST           0
#define LWIP_NETIF_LOOPBACK             0
#define LWIP_LOOPBACK_MAX_PBUFS         0

/*
   ------------------------------------
   ---------- Thread options ----------
   ------------------------------------
*/
#define TCPIP_THREAD_NAME               "tcpip_thread"
#define TCPIP_THREAD_STACKSIZE          1024
#define TCPIP_THREAD_PRIO               osPriorityNormal2
#define TCPIP_MBOX_SIZE                 10
#define SLIPIF_THREAD_NAME              "slipif_loop"
#define SLIPIF_THREAD_STACKSIZE         1024
#define SLIPIF_THREAD_PRIO              osPriorityNormal2
#define DEFAULT_THREAD_NAME             "lwIP"
#define DEFAULT_THREAD_STACKSIZE        1024
#define DEFAULT_THREAD_PRIO             osPriorityNormal2
#define DEFAULT_RAW_RECVMBOX_SIZE       10
#define DEFAULT_UDP_RECVMBOX_SIZE       10
#define DEFAULT_TCP_RECVMBOX_SIZE       10
#define DEFAULT_ACCEPTMBOX_SIZE         10

/*
   ----------------------------------------------
   ---------- Sequential layer options ----------
   ----------------------------------------------
*/
#define LWIP_NETCONN                    1
#define LWIP_TCPIP_TIMEOUT              0
#define LWIP_NETCONN_SEM_PER_THREAD     0
#define LWIP_NETCONN_FULLDUPLEX         0

/*
   ------------------------------------
   ---------- Socket options ----------
   ------------------------------------
*/
#define LWIP_SOCKET                     0
#define LWIP_COMPAT_SOCKETS             1
#define LWIP_POSIX_SOCKETS_IO_NAMES     1
#define LWIP_TCP_KEEPALIVE              1
#define LWIP_SO_SNDTIMEO                0
#define LWIP_SO_RCVTIMEO                0
#define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0
#define LWIP_SO_RCVBUF                  0
#define LWIP_SO_LINGER                  0
#define SO_REUSE                        0
#define SO_REUSE_RXTOALL                0
#define LWIP_SOCKET_SELECT              1
#define LWIP_SOCKET_POLL                1

/*
   ----------------------------------------
   ---------- Statistics options ----------
   ----------------------------------------
*/
#define LWIP_STATS                      0

/*
   ---------------------------------------
   ---------- IPv6 options ---------------
   ---------------------------------------
#define LWIP_IPV6           managed by RTE
*/
#define LWIP_IPV6_FORWARD               0
#define LWIP_IPV6_FRAG                  1
#define LWIP_IPV6_REASS                 1
#define LWIP_IPV6_AUTOCONFIG            1
#define LWIP_ICMP6                      1
#define LWIP_IPV6_MLD                   0
#define MEMP_NUM_MLD6_GROUP             4
#define LWIP_ND6_NUM_NEIGHBORS          10
#define LWIP_ND6_NUM_DESTINATIONS       10
#define LWIP_ND6_NUM_PREFIXES           5
#define LWIP_ND6_NUM_ROUTERS            3
#define LWIP_ND6_ALLOW_RA_UPDATES       1
#define LWIP_ND6_TCP_REACHABILITY_HINTS 1
#define LWIP_IPV6_DHCP6                 0
#define LWIP_IPV6_DHCP6_STATEFUL        0
#define LWIP_IPV6_DHCP6_STATELESS       1
#define LWIP_DHCP6_GET_NTP_SRV          0
#define LWIP_DHCP6_MAX_NTP_SERVERS      1


/*
   --------------------------------------
   ---------- Checksum options ----------
   --------------------------------------
*/

/* 
The STM32H7xx allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
 - To use this feature let the following define uncommented.
 - To disable it and process by CPU comment the  the checksum.
*/
#define CHECKSUM_BY_HARDWARE 


#ifdef CHECKSUM_BY_HARDWARE
  /* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
  #define CHECKSUM_GEN_IP                 0
  /* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
  #define CHECKSUM_GEN_UDP                0
  /* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
  #define CHECKSUM_GEN_TCP                0 
  /* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
  #define CHECKSUM_CHECK_IP               0
  /* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
  #define CHECKSUM_CHECK_UDP              0
  /* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
  #define CHECKSUM_CHECK_TCP              0
  /* CHECKSUM_GEN_ICMP==1: Check checksums by hardware for outgoing ICMP packets.*/
  /* Hardware TCP/UDP checksum insertion not supported when packet is an IPv4 fragment*/
  #define CHECKSUM_GEN_ICMP               1
  /* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
  #define CHECKSUM_CHECK_ICMP             0
#else
  /* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
  #define CHECKSUM_GEN_IP                 1
  /* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
  #define CHECKSUM_GEN_UDP                1
  /* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
  #define CHECKSUM_GEN_TCP                1
  /* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
  #define CHECKSUM_CHECK_IP               1
  /* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
  #define CHECKSUM_CHECK_UDP              1
  /* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
  #define CHECKSUM_CHECK_TCP              1
  /* CHECKSUM_GEN_ICMP==1: Check checksums by hardware for outgoing ICMP packets.*/
  #define CHECKSUM_GEN_ICMP               1
  /* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
  #define CHECKSUM_CHECK_ICMP             1
#endif


/*
   --------------------------------------
   ---------- IP ------------------------
   --------------------------------------
*/
/* Static IP address */
#define IP_ADDR0                    192
#define IP_ADDR1                    168
#define IP_ADDR2                    0
#define IP_ADDR3                    210
   
/* NET mask*/
#define NETMASK_ADDR0               255
#define NETMASK_ADDR1               255
#define NETMASK_ADDR2               255
#define NETMASK_ADDR3               0

/* Gateway address */
#define GW_ADDR0                    192
#define GW_ADDR1                    168
#define GW_ADDR2                    0
#define GW_ADDR3                    1


#endif /* LWIP_LWIPOPTS_H */
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

积分
89
发表于 2025-6-11 16:48:27 | 显示全部楼层
你按eric的改改TCP参数试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-11 17:31:06 | 显示全部楼层
LinY 发表于 2025-6-11 15:44
试了没什么问题

最关键的选项没勾选,然后这里设置为最大包

12134.png
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-12 15:29:53 | 显示全部楼层
eric2013 发表于 2025-6-11 17:31
最关键的选项没勾选,然后这里设置为最大包

试了最大MTU1472 也正常的
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-12 16:43:06 | 显示全部楼层

上传抓包
23.zip (4.48 MB, 下载次数: 2)


不到5MB的zip
回复

使用道具 举报

10

主题

36

回帖

66

积分

初级会员

积分
66
发表于 2025-6-12 16:44:43 | 显示全部楼层
生产网络中间有没有路过什么设备?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-13 07:08:04 | 显示全部楼层
LinY 发表于 2025-6-12 15:29
试了最大MTU1472 也正常的

方便的话,截图下最终结果,最终这个ping速度的数据量换算下每秒有多少。应该不会也是几十KB吧
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-13 13:30:31 | 显示全部楼层
Devil_920 发表于 2025-6-12 16:44
生产网络中间有没有路过什么设备?

中间有台交换机
型号锐捷S7810
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
 楼主| 发表于 2025-6-17 11:28:25 | 显示全部楼层
排查到原因了,傻逼网管,光纤插错针了。
同网段不影响,跨网段小包不影响,大包掉包。
我这排查这么久,根本排查不出来。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-6-18 07:57:10 | 显示全部楼层
LinY 发表于 2025-6-17 11:28
排查到原因了,傻逼网管,光纤插错针了。
同网段不影响,跨网段小包不影响,大包掉包。
我这排查这么久, ...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:59 , Processed in 0.051016 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表