ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CH398 vs RTL8153:USB转千兆网卡国产替代实测与选型指南

CH398 vs RTL8153:USB转千兆网卡国产替代实测与选型指南 做硬件这一行久了会有一种感觉USB转千兆网卡这个品类过去十年几乎被Realtek一家包圆了。RTL8153这颗芯片从几十块钱的便携USB网卡到工业级带隔离的网卡你都能在里面看到它的影子。不管是淘宝爆款还是品牌原装方案几乎千篇一律。我自己做项目用到USB转网卡时第一反应也是打开立创商城搜RTL8153因为参考设计多、驱动成熟、资料齐全几乎不会翻车。直到去年年底我拿到了一颗国产的USB转千兆网卡芯片CH398才第一次认真开始思考“替代RTL8153”这件事。这颗芯片从规格书上看几乎就是冲着RTL8153去的USB 3.0转千兆以太网集成MAC和PHY支持多种唤醒和节能特性。但这东西不能光看规格书替代不替代得上板实测才知道。这篇文章就把我这几个月的实测过程、驱动适配踩坑、性能数据和选型思考完整记录下来给同样在关注USB转千兆网卡国产方案的工程师一个参考。1. 为什么我会盯上CH398从RTL8153的痛点说起1.1 项目背景在国产化需求里找可行性方案这个项目其实是一个工业设备的外置网络接口模块原方案用的是RTL8153B但客户提出了国产化率的要求整机BOM里非国产物料占比要降到某个比例以下。网卡芯片这种核心IC自然成了重点替换对象。刚开始我们翻了一圈发现国产USB转千兆网卡芯片的选项远比想象中少CH398是少数规格上能对得上RTL8153的产品。在做国产替代选型时我看重的东西其实很朴素接口和协议是否完全兼容、驱动是否能在主流系统上跑起来、性能是否够用、供应链是否稳定。规格书上的参数可以吹得天花乱坠但这些问题是规格书回答不了的只能通过实际测试。于是我找原厂申请了样片自己画了一个测试转接板开始了为期两个月的实测。1.2 RTL8153的强势与无奈说句公道话RTL8153能被这么多方案采用确实是因为底子好。它本质上是一颗USB 3.0-to-Gigabit Ethernet控制器内部集成了10/100/1000Mbps的MAC和PHY支持USB 3.0/2.0兼容性极佳。Windows、Linux、macOS、Android都有驱动特别是Windows和Linux基本是即插即用很少需要用户手动装驱动。但它的短板也很明显。第一是价格RTL8153B现在虽然比前几年便宜了不少但在整个BOM里占比依然不低。第二是供货周期在缺芯那几年瑞昱的USB网卡芯片交期一度拉长到二十周以上加价都抢不到货。第三是开发支持瑞昱的datasheet和参考设计虽然齐全但原厂在中小客户身上的技术支持资源非常有限遇到问题基本只能靠现场应用工程师的公共文档和自己摸索。这些痛点恰恰是国产芯片切入市场的机会。1.3 CH398给我的第一印象CH398是国产芯片厂商沁恒微电子WCH推出的一颗USB 3.0转千兆网卡芯片。说实话WCH给我印象最深的还是CH340这个USB转串口芯片没想到他们在网络接口方向上也有布局。拆开CH398的样片第一感觉是封装比RTL8153B要友好。CH398采用QFN32封装RTL8153B是QFN48CH398的外围电路也更简洁内部集成了LDO外围只需要很少的电容电阻就能工作。当然封装小有小的代价PCB布线的空间会紧张一些这个后面细说。上电之后插到电脑上Windows居然直接就识别出了网络适配器没有出现“未知设备”的灾难现场这让我对后续的测试有了信心。2. 核心规格对比CH398与RTL8153的参数差异在哪里2.1 硬件接口与协议层面的差异要说替代首先得看接口和协议对不对得上。CH398和RTL8153一样都是USB 3.0 Gen1接口理论带宽5Gbps实际千兆以太网的吞吐量在940Mbps左右带宽绰绰有余。两者都向下兼容USB 2.0在USB 2.0接口上会自动降速到480Mbps千兆网卡在USB 2.0下实际吞吐量会掉到200-300Mbps左右这是USB 2.0的带宽瓶颈所有方案都一样。网络协议方面CH398支持IEEE 802.3、802.3u、802.3ab也就是10Mbps、100Mbps、1000Mbps三个速率档位都能自适应。同时支持VLAN标签插入和移除、巨型帧Jumbo Frame最高9KB、Checksum OffloadIPv4/IPv6 TCP/UDP校验和卸载、Wake-on-LAN等功能。这些特性和RTL8153基本对齐至少在协议层面看不到明显短板。2.2 功能特性对比一览功能特性CH398RTL8153BUSB接口USB 3.0 Gen1 / USB 2.0兼容USB 3.0 Gen1 / USB 2.0兼容网络标准10/100/1000Mbps自适应10/100/1000Mbps自适应内部集成MAC PHY LDOMAC PHY LDOWake-on-LAN支持支持魔术包/链路唤醒支持支持魔术包/链路唤醒Energy Efficient Ethernet支持支持VLAN支持可配置插入/移除支持巨型帧最大9KB最大9KB硬件校验和卸载支持支持工作电压3.3V/1.8V内部LDO3.3V/1.05V内部LDO工作温度-40℃ ~ 85℃0℃ ~ 70℃工业级为-40~85封装QFN325x5mmQFN487x7mm驱动支持Windows/Linux/Android部分国产OSWindows/Linux/macOS/Android从这个表格能看出来CH398在功能上几乎是与RTL8153B针锋相对的。有一个让我比较惊喜的地方是CH398的工作温度范围标称-40℃到85℃覆盖工业级应用而RTL8153B的商用版本常温是0℃到70℃。做工业项目的话这一点很加分。2.3 封装与外围电路设计差异封装差异带来的影响说实话比我预想的要大。RTL8153B的QFN48是7x7mm引脚间距0.5mmPCB布局空间充裕。CH398的QFN32是5x5mm引脚间距0.5mm虽然面积小了快一半但器件密度上来了。如果主板的面积本身就紧张CH398会更好布局但如果你想在原有RTL8153的PCB上做pin-to-pin替换那基本不可能因为封装和引脚功能完全对不上。外围电路方面CH398的优势在于内部集成了LDO和上电复位电路外围只需要一颗25MHz晶振、若干去耦电容和电感以及一个网络变压器的接口电路。RTL8153B的外围电路就比较挑剔它需要两组电源轨3.3V和1.05V对电源纹波和上电时序有要求。CH398的电压轨简单很多对电源设计的容错度更高这对于研发周期紧的项目来说是非常实在的便利。3. 实测环境搭建硬件、系统与驱动准备3.1 测试硬件平台与工装设计为了公平对比我没有直接用官方的评估板而是自己画了一块兼容测试板主板通过PCIe转USB 3.0接口引出两个USB 3.0口分别插CH398和RTL8153B的转接板。转接板设计上尽可能一致同样的网络变压器型号、同样的电源方案、同样的晶振差别只有芯片本身的封装和外围匹配电路。主机平台选了一台Intel i5-12400的台式机搭配华硕B660主板操作系统用了Windows 11 Pro 22H2和Ubuntu 22.04 LTS双系统。对端测试设备是一台千兆交换机连着一台服务器服务器网卡是Intel I210驱动正常没有开启流控和巨型帧以保证测试条件保守且贴近日常使用。测试工具主用iperf3测TCP/UDP吞吐量用ping测延迟和丢包用ethtool和Windows性能监视器看链路速率和中断状况。另外还准备了一台FLIR热成像仪用于记录芯片表面温度。这样的组合基本能覆盖绝大多数应用场景下的性能评估需求。3.2 驱动安装的完整过程CH398在Windows下的驱动体验确实不错Windows 10/11的系统自带驱动可以直接识别系统设备管理器里会直接出现“USB 10/100/1000M Ethernet Adapter”这样的设备名称不需要额外安装。但如果你较真会发现这个名称并不显示CH398的型号。原厂提供的Windows驱动安装包从官网下载的CH398驱动安装后设备名称会变成“WCH CH398 USB 10/100/1000M Ethernet Adapter”同时驱动版本号也会更新建议在量产设备中统一安装原厂驱动避免某些老系统比如Windows 7自带的驱动不兼容。Linux下稍微费了点功夫。Ubuntu 22.04的内核版本是5.15内核里已经包含了r8152驱动模块CH398在Linux下走的不是独立驱动而是复用RTL8153的r8152驱动。把USB设备插上后内核会自动加载r8152并识别设备ID但前提是设备VID/PID在内核驱动的支持列表里。CH398的VID是1a86沁恒的USB VIDPID是3980我在Ubuntu 22.04上插上之后立刻被识别说明该版本内核已经加入了对CH398的支持。如果你用的是比较老的发行版比如Ubuntu 18.04这种内核版本4.15的建议手动升级r8152驱动或使用原厂提供的Linux源码编译否则大概率识别不了。3.3 测试方法与工具链说明测试方法参考了RFC 2544里的部分思路但考虑到USB网卡并非专业测试仪器我只做了以下关键项目TCP单流吞吐量iperf3默认参数测试60秒记录带宽。TCP多流吞吐量iperf3使用-P 4参数开4条并行流模拟实际应用中的多线程场景。UDP吞吐量与丢包率iperf3 UDP模式带宽从100Mbps到900Mbps逐级加压观察不同带宽下的丢包表现。双向吞吐量两端同时运行iperf3各打各的流测试双向并发。延迟测试ping对端服务器每5秒一次连续24小时统计平均延迟和抖动。所有测试在Windows下使用iperf3.exe在Linux下使用iperf3确保跨平台一致性。每个项目至少重复三次取中间值或平均值。测试数据量虽然比不上专业实验室但对于芯片选型评估来说是足够的。4. 性能实测数据从吞吐量到CPU占用的完整记录4.1 千兆吞吐量测试结果首先看TCP单流吞吐量。在Windows 11下CH398的TCP单流下行服务器发送测试机接收实测结果为941Mbps上行测试机发送服务器接收为938Mbps基本跑满了千兆物理链路因为以太网帧头、ACK包和TCP开销的存在千兆实际极限也就940Mbps左右CH398这个成绩已经说明它在满速传输时没有瓶颈。作为对比RTL8153B在同一平台同一链路上TCP单流下行940Mbps上行939Mbps两者差距可以忽略不计。这个结果其实符合预期——千兆网卡的瓶颈在物理链路单流小包也不可能超过线速只要芯片设计上没有明显缺陷大家都能跑到差不多的水平。4.2 双向传输与并发场景表现接下来是更能体现芯片真实能力的双向测试。使用两台服务器的iperf3做双向并发传输CH398的测试结果为下行942Mbps、上行505Mbps双向相加约1.45Gbps。RTL8153B的结果为下行941Mbps、上行506Mbps两者几乎一样。这个数据说明CH398的USB 3.0接口和MAC层在双向并发时没有出现明显的资源抢占问题DMA设计和老牌选手一样稳定。UDP多流并发测试中我用-P 4参数开了4条TCP流CH398的聚合吞吐量为942Mbps单流和4流结果相差无几说明在多队列并发处理上不存在单核瓶颈。UDP测试则从100Mbps逐步加到900MbpsCH398在每档带宽下丢包率都小于0.01%UDP延迟抖动最大不超过50微秒。这个成绩在USB网卡里属于优秀范畴应付音视频流、网络抓包这类应用足够了。4.3 CPU占用率与延迟实测CPU占用率是USB网卡和老牌PCIe网卡之间差距最大的地方。实测过程中我在Windows资源监视器里观察CH398的CPU占用。在i5-12400这个平台上TCP单流打满时CH398消耗约3%到4%的CPU资源RTL8153B消耗约2%到3%差距约1个百分点。虽然绝对值都不大但在低功耗的Atom平台或者嵌入式平台比如J1900上这个差距可能会放大到5%左右选型时要把CPU余量算进去。延迟方面24小时连续ping对端服务器CH398的平均延迟0.31ms最大延迟3.2ms最小延迟0.2msRTL8153B平均延迟0.29ms最大延迟2.8ms。两者的延迟分布都很集中没有出现周期性跳变说明驱动中断处理和DMA缓冲设计都没有明显问题。5. 兼容性深挖Windows、Linux与国产系统的驱动表现5.1 Windows系统下的即插即用体验Windows是USB网卡最常用的平台。我测试了Windows 11 Pro和Windows 10 LTSC两个系统CH398在两者下都能即插即用系统自带驱动直接识别为USB千兆以太网适配器。Windows 10 LTSC比较特殊它的系统库比较老但也能正确加载驱动只是设备名称显示的不是厂家名称。有一点需要提醒的是在Windows下如果使用系统自带驱动CH398的VLAN功能和巨型帧功能默认是关闭的。如果你需要用到这两个功能必须安装原厂提供的驱动并在网卡高级属性里的“VLAN ID”和“Jumbo Packet”配置项里手动开启。RTL8153B在Windows自带驱动下同样也是默认关闭这些功能所以两者在此处的行为一致。5.2 Linux内核驱动r8152适配细节Linux下CH398的驱动情况在前面已经提到了复用r8152驱动。但这个复用并不是零成本的有几个细节特别容易踩坑。首先是内核版本。我试过Ubuntu 20.04内核5.4默认r8152驱动虽然能识别CH398的网络接口但偶尔会在设备热插拔时出现oops或者设备节点不稳定的情况。升级到5.15内核后这种问题就消失了。具体原因大概率是旧版r8152驱动对VID/PID的支持不够完善新版内核中有针对性的修复。如果你的生产环境是CentOS 7这类老系统建议用原厂提供的驱动源码编译或者直接使用内核模块的r8152名下的最新版本。其次是设备命名和udev规则。Linux下USB网卡的接口名默认是enp0s20u2这类的随机名不方便脚本管理。我在项目中写了一条udev规则根据USB设备的序列号来固定网络接口名可以避免USB口插入顺序改变导致接口名漂移的问题。这个经验同样适用于RTL8153B因为两者的机制完全相同。5.3 国产OS平台的特殊处理既然做国产替代国产操作系统统信UOS、麒麟的适配就是绕不开的话题。我在统信UOS 1050和银河麒麟V10SP1上各测试了一轮。统信UOS 1050基于Debian内核版本5.10以上内置r8152驱动已经包含了CH398的识别信息插上USB网卡后能直接识别并联网体验和RTL8153B一致。银河麒麟V10的内核版本是4.19默认没有CH398的ID需要额外安装deb格式的驱动包。值得庆幸的是原厂提供了适配麒麟和UOS的驱动安装包安装流程很顺利没有出现内核头文件不匹配的严重问题。另外在ChromeOS和Android系统上由于它们的内核同样使用了r8152驱动CH398大概率也能正常识别但我没有做完整测试这里就不下定论了。6. 稳定性与发热七天不间断运行的真实体验6.1 长时间高负载测试方案性能数据只能代表短时工况芯片的长期稳定性才是工业项目最关心的。我设计了一个七天不停机测试CH398通过USB 3.0连接到测试主机主机向服务器持续发送UDP数据流带宽设置在500Mbps左右同时每5秒记录一次ping值。测试期间主机除了这个网卡的负载外还运行了一个持续的内存读写脚本以模拟实际工作中的多任务场景。之所以选择UDP 500Mbps而不是TCP满速是因为TCP有拥塞控制机制一旦链路出现偶发延迟增高TCP会自动降低发送速率来消除问题低延迟的CPU和内存压力。UDP没有这个保护任何丢包和抖动都会直接暴露出来对于USB网卡来说是更严苛的稳定性测试。6.2 丢包率与断流记录七天测试结束汇总数据总发送UDP包数约3.8亿接收端统计丢包数为0最大ping耗时3.6ms平均ping耗时0.35ms。这个丢包率数据在USB网卡里算是相当优秀的。RTL8153B在同样的环境中丢包率同样是0两者打平。断流是USB网卡最怕的问题表现为设备突然从系统里消失几秒钟然后重新出现通常是由于USB电源异常、芯片内部固件崩溃或者驱动bug导致。CH398在这七天测试中一次断流都没有发生设备一直在线。热插拔测试也做了50次每次都能被系统正确识别没有出现需要重启系统才能恢复的情况。6.3 发热量实测与散热建议发热是很多人忽略但实际很重要的指标。我用热成像仪记录了芯片表面温度。在室温25℃、连续满载传输1小时后CH398的芯片表面温度约为52℃RTL8153B约为55℃。这个差距不大但说明CH398的功耗控制确实不错。进一步用电流钳测试功耗CH398满载工作时总功耗约0.8WRTL8153B约1.0W低功耗产品选CH398会有一定优势。在小型化的USB网卡外壳里比如常见的铝壳3cm x 6cm芯片温度会再上升10℃左右实测最高到62℃依然在工作温度范围内。如果做的是极致紧凑的Type-C网卡建议在芯片位加一小块导热垫或开散热孔不要裸奔。7. 选型建议到底该选CH398还是RTL81537.1 选型决策矩阵维度CH398RTL8153B选型倾向成本批量约为RTL8153B的60%-70%较高成本敏感项目选CH398供货周期国产原厂直供周期稳定约4-6周受国际供应链波动影响供应链安全优先选CH398驱动成熟度Windows/Linux可用部分老内核需手动适配全平台驱动完善快速上线优先选RTL8153B参考设计资源相对较少原厂资料够用社区资源极丰富研发经验不足选RTL8153B工业温度-40℃~85℃商用0~70℃工业版需单独定制需要宽温选CH398封装大小QFN32 5x5mm紧凑QFN48 7x7mmPCB面积紧张选CH398功能完整度与RTL8153B基本对齐VLAN/WOL/EEE等成熟半斤八两7.2 我在实际项目中会怎么选如果让我现在做决策我的原则是新设计优先选CH398旧设计尽量别迁移除非有硬性国产化要求。新设计选CH398的理由很清晰价格更低、封装更小、外围更简洁、工业级温度范围而且目前实测性能不输RTL8153B。在开发阶段即使遇到问题原厂技术支持是国内的沟通效率远高于瑞昱这一点在项目紧张的时候能救命。旧设计不迁移的原因是显而易见的软件和PCB都要改动驱动兼容性需要重新做一遍功能测试如果没有国产化率或者成本压力迁移时间成本反而比采购成本更高。如果你正在做一个全新的USB转千兆网卡产品我认为CH398已经是一个成熟的选项了。7.3 给硬件工程师的几点提醒第一不要忽略USB 3.0高速信号的PCB设计要求。CH398封装小引脚密差分对等长和阻抗控制更重要。USB 3.0的SSTX差分对和SSRX差分对要走100Ω差分阻抗且与其它信号线距离保持至少3倍线宽否则很容易出现USB 3.0降级到USB 2.0的错误。我就在测试板上踩过这个坑后面详细说。第二电源去耦比RTL8153B更敏感。虽然CH398内部有LDO但如果USB接口的VBUS有严重的纹波会导致芯片工作不稳定。建议在VBUS到芯片电源脚之间增加一个220uF电解电容或者超级电容并搭配0.1uF和10uF陶瓷电容去耦。第三晶振不能选太次的。CH398和RTL8153B一样需要25MHz时钟源无源晶振的负载电容要和芯片匹配否则会导致网络丢包率异常。这部分内容也是原厂datasheet没有细写的但实际开发中极易踩坑。8. 绕不开的坑功耗、PCB布局与丢包问题排查8.1 电源设计不当导致的USB枚举失败我在测试CH398初期遇到过一个非常诡异的问题把测试板插到某些电脑的USB 3.0口上能识别插到另外一些电脑上就提示“USB设备描述符请求失败”设备管理器里出现黄色感叹号。排查了一整天最后发现是VBUS的5V电源纹波过大在芯片启动瞬间电压跌落超过200mV导致内部LDO无法正常启动。这个问题在RTL8153B上同样会出现只是CH398的启动时序更敏感。解决方法是把测试板上原来的100uF电解电容换成220uF低ESR电容并在USB Type-C插座引脚处加入一个ESD保护管和共模电感。改版后整个测试周期里再没出现过枚举失败的问题。如果你也遇到USB网卡在不同电脑上认不出来的现象先检查电源纹波和拉电流能力别急着怀疑芯片。8.2 PCB差分对布线与信号完整性另一个让我印象深刻的坑是USB 3.0降级。最开始画的测试板CH398在Windows下总是识别为USB 2.0设备带宽掉到480Mbps千兆网卡性能直接腰斩。我一开始以为芯片有问题但换到评估板上一切正常顿时意识到问题出在自己的PCB上。用示波器测了SSTX差分对信号发现上升沿明显变缓眼图几乎闭合典型的信号完整性劣化。原因很简单我为了让板子面积小把USB 3.0差分对布在了内层却又在差分对下面走了一条VCC走线导致阻抗不连续。后来重新规划了叠层把SSTX和SSRX放在外层并加粗走线严格做等长补偿间距拉开重新打板后USB 3.0识别就正常了。这里要特别提醒差分对的地平面不能抠不能跨越分割过孔要用回流地孔这些规则在高速信号中都是不能妥协的。8.3 驱动与固件版本兼容问题最后一个坑来自固件版本。CH398的芯片固件出厂时是某个版本原厂在后续发布了新版固件到官网。我拿到样片后直接进行了大量测试在Windows下发现一个现象当睡眠唤醒后偶尔会出现网络断开但设备管理器里没有异常的情况必须禁用再启用网卡才能恢复。后来联系原厂FAE确认这是我拿到的样片固件版本较低导致的更新固件后这个休眠唤醒问题彻底消失。所以如果你在做带休眠功能的设备笔记本扩展坞、一体机等建议拿到样片后第一时间在官网下载最新固件和更新工具不要用出厂老版本固件做完整验证。总的来说CH398在目前的表现可以称得上“RTL8153B的合格国产平替”它在性能、稳定性和兼容性上都经受住了我这几个月的实测考验。我个人的使用感受是在新设计上CH398值得作为首选方案认真评估存量设计若没有硬性国产化需求倒也不必白费功夫迁移。未来如果这颗芯片的驱动和资料进一步完善我相信它在USB转千兆网卡市场里的份额会越来越有存在感。
返回列表