☰
万兆三层交换芯片RTL9303-CG数据手册关键设计解读
2026/10/24 12:29:09 网站建设 项目流程

简介:RTL9303-CG 数据手册(Rev.1.1-1,2018 年 6 月版)面向万兆交换机硬件设计、底层驱动开发人员,以及需要评估 Realtek 三层交换方案的网络设备研发者。文档系统给出这颗三层管理型 8 端口 10G 交换控制器的总体描述、特性列表、引脚定义、寄存器说明与电气时序参数,涵盖 IP 路由、QoS 调度、VLAN 划分、ACL 安全、硬件校验和加速等模块,可作为原理图设计、PCB 布线与时序核对的直接依据。压缩包仅含 1 个 PDF 文件,约 2.45MB,单文件即完整手册,便于检索与离线查阅。目前已有 3590 人学习下载,在万兆交换方案选型中具备一定参考价值。翻阅时可重点留意 10GBase-R 差分输出幅度、主 SPI 时序等修订条目,以及卷首的 ESD 防护与使用声明。

1. 一块芯片的数据手册为什么值得单独讲:从"8 个万兆口"说起

整理网络设备资料的时候,常会翻到这样一个文件:文件名是一串型号加 Datasheet,打开是几百页引脚表和时序波形,第一页还印着一行小字——保密,仅限开发伙伴。RTL9303-CG 的这一份就是典型。它描述的是一颗三层管理型 8×10G 端口交换控制器:8 个万兆口同时对外收发,芯片自己完成 IP 路由,不必再外挂一台路由器来做网段间的转发。多数人看到"三层""管理型""10GbE 交换机"这几个词会本能跳过,觉得那是硬件工程师才关心的事。可只要你想弄明白一台万兆交换机凭什么能划 VLAN、能限速、能把两个网段连起来又不掉速,答案就写在这类数据手册里。它是整台设备的"说明书 + 契约",别的文档都只是它的注解。

2. 三层交换到底在交换什么:二层转发与三层路由的分水岭

2.1 二层转发:只认门牌号,不认街道

二层交换机会在正常工作之前先维护一张表,记录"哪个 MAC 地址对应哪个端口"。这张表里的条目不是厂商预置的,而是交换机自己在收发过程中学出来的:收到一个帧,先把源 MAC 和收到它的端口记下来,再看目的 MAC 有没有在表里。命中就从对应端口发出去,没命中就向同 VLAN 内除入口外的所有端口泛洪一份。这个过程完全由硬件流水线完成,一次哈希查找通常只要几十纳秒,所以二层转发能做到"线速",端口跑多快它就转多快。

打个比方,二层转发像小区里的快递柜:柜子只关心"3 号楼 502",不关心这个人是从哪条路走过来的,也不关心他要去哪座城市。只要门牌号在册,格口一开一关,事情就办完了。也正因为只认门牌号,它天然有一个盲区——它不知道"网段"这回事。192.168.10.5 和 192.168.20.5 在二层眼里就是两个普通 MAC 地址,它没有理由把它们隔开,也不负责把它们连起来。

这个盲区决定了二层交换机的能力上限:它能把一个广播域内的设备高速互联,但广播域一旦大到几千台主机,广播包和未知单播就会把带宽吃掉一大块。于是有了 VLAN,也有了后面的三层。

2.2 三层路由:跨网段的那一跳到底发生在哪

当一台主机发现目的 IP 不在自己所在的网段,它不会去查 MAC 表,而是把包发给"默认网关"。这个网关的 MAC 地址,主机是用 ARP 问出来的;包在二层上被送到网关那块网卡,三层的事情才真正开始。网关查自己的路由表,找到去往目的网段的下一跳和出接口,把原来的二层帧头拆掉,换上新的源 MAC(自己的出接口 MAC)和目的 MAC(下一跳的 MAC),再从另一个接口发出去。

传统组网里,这一跳是由一台独立路由器完成的。交换机在下面负责接入,路由器在上面负责网段互通。这种"交换机 + 路由器"的组合用了很多年,问题也很明确:路由器的以太网口通常比交换机端口少、贵,而且路由转发要靠 CPU 或专用转发引擎,时延比二层交换高一个量级。当网络里存在几十上百个 VLAN 时,所有跨 VLAN 的流量都要挤到那台路由器的一两个口上,这条链路立刻成了瓶颈。

三层交换机要解决的就是这个瓶颈:把"查路由表"这件事也做到交换芯片里去。于是同一台设备既能做二层高速转发,又能在 VLAN 之间做路由,跨网段流量不用再出门绕一圈。

2.3 为什么非要把路由塞进交换芯片

关键在于"一次路由,多次交换"这个老说法。第一个包到达时,芯片还没有对应的转发信息,于是把它送到 CPU,由软件查路由表、做 ARP、决定出接口,同时把结果写成一条硬件表项。从第二个包开始,只要五元组(源 IP、目的 IP、源端口、目的端口、协议)能匹配上,就直接走硬件快路径,跟二层转发一样线速通过。CPU 只处理"没见过"的流量,不参与"见过"的流量。

RTL9303-CG 的数据手册里,这一块单列在"L3 UNICAST AND MULTICAST ROUTING"之下,分成 IP Unicast Routing 和 IP Multicast Routing 两部分。单播路由解决的是"不同网段之间怎么通",组播路由解决的是"一路视频流怎么同时送给很多个接收者而不重复占用上行带宽"——后者在有电视直播、视频会议、批量系统部署的网络里是刚需,缺了它,一份流复制 N 份,上行口立刻被打满。

用命令行来描述这件事最直观,下面这几行是三层交换机最核心的配置骨架:

# 示意:把两个万兆口划进不同网段,并让交换芯片自己承担两者之间的路由 interface vlan 10 ip address 192.168.10.1 255.255.255.0 # 网段 A 的网关地址,落在这颗交换芯片上 ! interface vlan 20 ip address 192.168.20.1 255.255.255.0 # 网段 B 的网关地址 ! ip routing # 三层转发的总开关,不开则上面两条地址形同虚设

interface vlan 10建的是一个三层接口(业内常叫 SVI),它把某个 VLAN 变成一个"有 IP 的网段";ip address给它指定网关地址和掩码,掩码决定了这个网段能容纳多少台主机;ip routing是总闸,很多新手配完地址发现两个网段还是不通,八成就是漏了这一行。这三条放在一起,才构成一台"三层交换机"的最小可用形态。

3. 8 个万兆口背后的账:带宽、包转发率和一堆接口名字

3.1 万兆口的账不能只算 80G

8 个 10Gbps 端口,直觉上就是 80Gbps。这个数字没错,但它只是单向线速的理论值,而且几乎不是实际组网里的瓶颈所在。真正决定一台万兆交换机"能不能扛住"的指标是包转发率,单位是每秒多少百万包(Mpps)。原因很简单:网络设备转发每一个包都要消耗一次查表、一次调度、一次缓冲写入的固定开销,包越小,同样带宽下包的个数越多,开销就越大。

按行业通用的算法,一个 10GbE 端口在最小帧(64 字节)下的理论包转发率是这样算出来的:

# 10GbE 端口在 64 字节小包下的理论包转发率 line_rate = 10 * 10**9 # 端口线速,单位 bit/s frame_bits = (64 + 8 + 12) * 8 # 64B 最小帧 + 8B 前导码 + 12B 帧间隙,统一换算成 bit pps_per_port = line_rate / frame_bits print(round(pps_per_port / 1e6, 2)) # 约 14.88,单位 Mpps print(round(pps_per_port * 8 / 1e6, 1)) # 8 个口合计约 119 Mpps

那两个"额外"的字节数不是凑数:以太网帧在线上传输时,前面要加 8 字节前导码(用于时钟同步),后面要留 12 字节帧间隙(给接收方留出处理时间)。这两段不写进抓包结果,但确确实实占用了物理带宽。所以 64 字节小包的实际线速永远达不到标称带宽的 100%,这也是为什么大包吞吐好看、小包一压就掉速的设备在测试里经常"翻车"。

提示:数据手册的 Features 章节会给出这颗芯片的交换容量与转发能力口径。看这类参数时,先确认它是"单向"还是"全双工合计",两者的数字差一倍,很容易被拿来当营销话术。

3.2 接口不是一种:每种接口在板子上对应什么

把数据手册的引脚描述那几节摊开,会发现"端口"这个词在这里被拆成了好几种完全不同的东西。搞混它们的代价,往往是一版板子白打。

10GBASE-R 是那 8 个万兆口的物理层形态,走差分对、交流耦合,通常直接接光模块。这一块在 Rev 1.1-1 里有一处改动值得单独提:SDS 10GBASE-R 的 VTX-DIFFp-p 从 900mV 调整到了 1200mV。对硬件工程师来说,这是会直接影响眼图余量和模块兼容性的参数,属于"看一眼就得回去改原理图"的级别。

SGMII 则是另一回事。它是一条 1.25Gbps 的串行链路,常用来接千兆 PHY 或者做管理口、低速上行口。它和 10GBASE-R 在名字上都带"串行""差分",但速率、编码方式、应用位置都不同,这是初学者最容易搞混的一对。

SPI 接口在这颗芯片上有两个方向。SPI Master 用来主动去读外部 Flash 或者配置外围器件,SPI Slave 则是让外部主控来配置这颗芯片。Rev 1.1-1 的更新记录里专门提到了"更新 master SPI 时序"——时序这种事平时没人看,一旦时序余量不够,表现就是"板子偶尔起不来",属于典型的玄学故障,排查起来极其消耗耐心。

DDR3 SDRAM 接口挂内存,存的是路由表、ACL 规则、统计计数和报文缓冲;UART 是调试串口,板子点不亮的时候,第一眼就该看它有没有输出;EJTAG 是 CPU 的调试接口;GPIO 和 LED 接口负责面板灯、复位按键、风扇控制这类"看起来不重要但少一个就不像产品"的东西。

还有一类容易被忽略:配置引脚(Pin Strapping)。上电的一瞬间,芯片会采样几个特定引脚的电平,据此决定启动方式、时钟源、端口模式等。这些电平不是软件能改的,只能靠板上的上下拉电阻定死。如果哪天遇到"同一份固件在这块板子上能跑、在那块板子上不跑",先别怀疑固件,去核对这几个电阻。

3.3 那些"看不懂但出错就致命"的章节

引脚分配表、电气 AC/DC 特性、复位时序、ESD 防护,这四块内容在数据手册里通常排在最前面或最后面,读起来最枯燥,出问题的时候也最要命。

复位分两种。硬件复位是拉 RESET 引脚,整颗芯片回到初始状态;软件复位是写寄存器,只重置指定模块,不影响已经配置好的其他部分。做产品的时候两者都要用:上电走硬件复位,运行中出异常走软件复位,能省掉一次整机断电。

ESD 那一页的措辞通常很严肃,因为它讲的是"这产品会被静电打死,而且这种损坏不在保修范围内"。要求也写得很具体:防静电工作台、接地腕带、拿芯片前先摸一下接地金属、焊接时用标注 ESD 安全的烙铁、在给原型板通电前先断开调试器。这些都是重复到让人麻木的步骤,但真被静电打穿过一颗芯片,往后每次上手都会老老实实做完。

4. "管理型"三个字到底管什么:VLAN、ACL 和 QoS 的分工

4.1 VLAN:把一台物理交换机切成好几台

VLAN 的本质是在二层帧里插一个 4 字节的标签(802.1Q),里面 12 位是 VLAN ID,可用范围是 1 到 4094。带上标签的帧到了交换机,芯片按 VID 查表决定往哪些端口发;同一个 VID 的端口构成一个广播域,跨 VID 的帧在二层上根本看不见彼此。于是一台 24 口交换机,可以被切成"办公网""监控网""访客网"三个互不干扰的独立网络,而不用买三台设备。

Q-in-Q 是在这个标签外面再套一层标签。外层标签由运营商网络使用,内层标签留给用户自己规划,这样企业内部的 VLAN 编号就不会和运营商的冲突。数据手册里同时列了 IEEE 802.1Q 和 Q-in-Q,说明这颗芯片面向的是需要接入多个客户或者多租户的场景。

还有一组容易看漏的功能:ingress 和 egress VLAN 转换。入口方向把收到的 VID 换成另一个,出口方向再换一次。这在多交换机堆叠、或者把两套历史遗留的 VLAN 规划对接起来时特别好用——不用逐台改终端配置,在边缘做一次标签翻译就行。

4.2 PIE 和 ACL:给每个包过一次安检

PIE 是 Packet Inspection Engine 的缩写,直译是"包检查引擎"。它做的事就是拿着规则表逐条比对每个进来的包:源 MAC、目的 MAC、VLAN ID、源 IP、目的 IP、端口号、协议号,这些字段的任意组合都可以作为条件。命中之后可以执行的动作不止"放行/丢弃",还包括重定向到某个端口、限速、镜像一份给监控口、以及给这条规则加一个计数器。

这个计数器(Log Counter)是个很实用的东西。安全规则写完不知道有没有生效,看计数器涨不涨就知道了;网络里某类流量到底有多少,加一条只计数不动作的规则就能量出来,比抓包省事得多。

为什么非要用硬件做?因为 ACL 需要逐包匹配,一台万兆设备每秒要过一千多万个包,靠 CPU 一条条比对,第一个包就超时了。芯片内的 PIE 是把规则预编译成硬件表项,匹配和转发在同一个流水线里完成。

# 示意:只允许 192.168.10.0/24 访问,其余源地址一律丢弃 access-list 100 permit ip 192.168.10.0 0.0.0.255 any access-list 100 deny ip any any interface vlan 10 ip access-group 100 in # in 表示在入口方向生效,越早拦下越省后续资源

第一行的0.0.0.255是通配符掩码,写法与子网掩码相反,0 表示"这一位必须匹配",255 表示"这一位随便"。第二行的deny ip any any是兜底规则,没有它的话,未匹配的流量默认放行,整条 ACL 就等于没写。第三行把规则组挂到接口的入口方向——挂入口而不是出口,是因为被丢弃的包根本不需要走一遍查表和调度。

4.3 QoS:堵车的时候谁先走

QoS 不是某一个功能,而是一条链路上的四个环节:分类、标记、排队、调度。

分类是看这个包属于谁——可以按端口、按 802.1p 优先级位、按 IP 里的 DSCP 值、也可以按 ACL 匹配结果。标记是给包打上一个内部优先级,出口的时候还可以重标记(Egress Packet Remarking),把内部优先级翻译成对端认识的格式。排队是把不同优先级的包放进不同的队列,调度则是决定这些队列按什么顺序往外发。

调度算法里,SP(严格优先)保证高优先级队列只要有包就先发,代价是低优先级可能被饿死;WRR(加权轮询)给每个队列一个权重,按比例分配带宽,公平但高优先级得不到绝对保证。实际设备通常混着用:语音和数据放 SP,剩下的按权重分。

拥塞这一侧还有两个名字很唬人的机制。SRTCM/TRTCM 是三色标记器,按承诺速率和峰值速率给包染上绿、黄、红三种颜色,绿色放行、黄色降级、红色丢弃,用一套温和的梯度代替"要么全过要么全丢"。SWRED 则是加权随机早检测,在队列快满但还没满的时候就开始随机丢一小部分包,让发送方提前降速,避免队列彻底溢出后一次性丢掉一大片——后者对 TCP 流量的打击是灾难性的,一丢就是全局重传。

流控分全双工和半双工两套。全双工用 IEEE 802.3x 的 PAUSE 帧,告诉对端"先别发了";半双工没有独立的控制通道,只能靠碰撞式背压(Jam Mode)或者载波式背压(Defer Mode)间接示意。半双工在今天基本只剩历史意义,但数据手册里仍然保留,因为总有一些老设备还在跑。

4.4 表项、计数和那颗内置 CPU

一台交换机能被"管理",前提是它能被问出话来。MIB(管理信息库)就是这套问答的词典:每个端口收了多少包、错了多少包、丢了多少包、当前协商到什么速率,都在这套结构里。配合 SNMP、CLI 或者 Web 界面,网络管理员不用蹲在机房里也能知道设备的状态。

表访问(Table Access)和外部 PHY 寄存器访问是给软件留的两个后门。前者让 CPU 能读写 MAC 表、路由表、ACL 表这些硬件表项;后者让芯片能通过 MDIO 之类的总线去配置外接的 PHY 芯片,比如协商速率、读取光模块信息。

RTL9303-CG 内部集成了一个 MIPS 34KC 级别的 CPU,外加 SPI Flash 控制器和 DDR 内存控制器。这意味着它不需要外挂主控就能跑起一套完整的交换机系统:固件放在 SPI Flash 里,运行时数据放 DDR 里,CPU 负责协议栈和管理面,交换芯片负责数据面。NIC 和 CPU Tag 转发是这个分工的接口——特定的流量被打上标记送到 CPU,CPU 处理完再送回去,管理协议和转发数据就这样在同一条链路上共存。

另外两个不起眼但越来越常见的能力是 OAM 和 EEE。OAM 用于链路故障检测和定位,出问题时能告诉你是哪一段断了,而不是只报一个"不通";EEE 是节能以太网,链路空闲时降低功耗,在端口多、常年开机的设备上,省下来的电费不算少。

5. 五个最容易混的概念:搞错一个就会翻车

5.1 二层交换和三层路由混为一谈

易混点:两者都是"把一个包从 A 口送到 B 口",看起来只是查的表不一样。为什么混:很多设备的配置界面上,二层和三层功能挨着放,命令长得也像,加上"三层交换机"这个名字本身就带"交换机"三个字。怎么区分:看它改不改二层头。二层转发不改任何头部字段,进什么样出什么样;三层路由一定会改写源和目的 MAC,因为跨网段之后,原来的二层地址已经没有意义了。判断一台设备有没有真正做路由,最直接的办法是看跨网段通信时 TTL 有没有减一。

5.2 数据手册和参考设计、驱动源码混为一谈

易混点:都叫"开发资料",都从厂商那里拿。为什么混:新手拿到资料包,看到一堆 PDF 和代码,很容易以为翻开数据手册就能找到"怎么配 VLAN"。怎么区分:数据手册回答的是"这颗芯片有什么、引脚怎么接、寄存器什么含义",它描述的是硬件能力和边界;参考设计回答的是"板子该怎么画",驱动和 SDK 回答的是"软件怎么调"。三者是三个层次,数据手册永远不会告诉你业务该怎么配。

5.3 10GBASE-R 和 SGMII 混为一谈

易混点:都是差分串行接口,都接光模块或 PHY。为什么混:名字里都带字母数字,原理图上都画成一对差分线,引脚描述里又挨得很近。怎么区分:看速率和位置。10GBASE-R 跑 10Gbps,对应那 8 个万兆口;SGMII 跑 1.25Gbps,通常出现在管理口、低速上行或者芯片之间的互联。速率差八倍,接错了不是降速的问题,是根本不通。

5.4 VLAN 隔离和 ACL 混为一谈

易混点:两者都能实现"这两拨人互相看不见"。为什么混:需求描述是一样的,都是"隔离",而实现手段完全不同。怎么区分:VLAN 是划范围,划完之后两边在二层上就处于不同的广播域,天然不通,配置一次长期有效,开销几乎为零;ACL 是设关卡,两边还在同一个广播域里,只是每个包都要过一遍规则表,规则越多开销越大。想清楚"是永久分开还是临时管控",选择就不难了。

5.5 "管理型交换机"和"网管软件"混为一谈

易混点:都带"管理"两个字。为什么混:采购清单上写"管理型",实际交付时又配了一套网管平台,很容易让人觉得是一回事。怎么区分:管理型说的是设备自身具备可配置、可监控、可诊断的能力,这个能力来自芯片和固件;网管软件是在这个能力之上做集中呈现和批量下发。设备本身不支持,软件再强也问不出数据来。

易混对一句话分辨
二层 / 三层看是否改写二层头、TTL 是否减一
数据手册 / 参考设计描述能力 / 描述实现
10GBASE-R / SGMII10Gbps 万兆口 / 1.25Gbps 管理或互联
VLAN / ACL划范围 / 设关卡
管理型设备 / 网管软件能力来源 / 能力呈现

6. 什么时候该翻这份手册,什么时候翻它纯属浪费时间

判断标准其实只有一条:你要回答的问题,是不是关于"这颗芯片本身能做什么"。

该翻的场景很明确。做硬件选型或者原理图评审时,引脚分配表、接口电平、复位时序、Pin Strapping 电阻这几块必须逐条核对,任何一处对不上,板子回来就是一堆飞线。做驱动移植或者底层调试时,寄存器定义、表访问方式、CPU Tag 的格式,这些只有手册里有,网上搜不到也猜不出来。做故障定位时,如果现象是"某个万兆口协商不上""小包一压就丢""上电偶尔起不来",手册里的电气特性、时序图和复位章节往往能直接给出方向。还有一种情况也值得翻:想搞清楚一台设备的宣传参数到底是怎么算出来的,比如标称的交换容量是单向还是双向、包转发率是按 64 字节还是按混合包长。

不该翻的场景同样明确。业务配置类的问题——怎么划 VLAN、怎么写 ACL、怎么配链路聚合——数据手册一个字都不会提,那是配置指南和命令手册的领域。协议原理类的问题,比如 STP 为什么会环路、OSPF 怎么选路,去看协议标准或者专门的教材,手册只会告诉你"支持 802.1D/1W/1S",不会解释它是怎么收敛的。至于"这个功能好不好用""这套方案适不适合我的网络",那属于设计与选型的判断,任何一份手册都替代不了。

你手上的问题该不该翻手册优先看哪部分
这颗芯片能不能做 VLAN 间路由该翻L3 单播路由、PIE
板子上某个差分对怎么接该翻引脚分配、10GBASE-R 电气特性
上电不启动,串口无输出该翻复位时序、Pin Strapping、UART
怎么给某个端口限速不用翻配置指南
STP 收敛慢是怎么回事不用翻协议标准
设备标称的交换容量怎么算该翻Features 章节参数口径
这套方案适不适合我的机房不用翻自己的需求和预算

有一年做一块万兆板子,原理图评审时觉得 Pin Strapping 那几个电阻"反正有默认值",就照参考设计抄了一遍没细看。样机回来,第一批十块里有三块上电后串口一声不吭,剩下七块正常。查了两天才发现,其中一个配置引脚的上拉电阻选得偏大,在低温环境下电平被判错,芯片进了另一种启动模式。从那以后我每次拿到一份新的数据手册,都先把复位时序和 Pin Strapping 那两页单独打印出来,用荧光笔把每个引脚的上电电平、采样时刻、允许范围标一遍,再拿去和原理图逐条对。这个习惯很笨,但确实再没在这上面栽过跟头。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询