
组网第十课编码、速率与排障——从比特到信号的最后一公里文章目录组网第十课编码、速率与排障——从比特到信号的最后一公里一、为什么需要编码比特不能裸奔二、编码家族谱从曼彻斯特到 PAM4三、波特率 vs 比特率一个信号符号能装几个比特四、物理层四大杀手断·弱·污·超长五、速率协商与双工千兆为什么变百兆六、用 Python 验算网线千兆为什么只有 940M小结下期预告某单位报障新换的千兆宽带办公室电脑测速只有 95M。“链路、路由、防火墙全查了正常。最后在机柜前蹲下来一看——那台千兆交换机的端口协商成了 100M 半双工而网线是那批便宜超五类”8 芯只压了 4 芯只够百兆。我把两根线芯压全、重插端口啪地协商到 1000M 全双工测速直接 940M。客户恍然大悟“原来’千兆’不是插上就有还得看物理层这层’编码和协商’合不合拍。”这一课就把物理层的最后一环讲透编码怎么把比特送上线路、速率怎么算、物理层四大杀手怎么定位。一、为什么需要编码比特不能裸奔一串 0101 没法直接上线路——线路上传的是电压/光强的连续变化需要一个翻译规则把比特变成信号这就是线路编码Line Coding。它解决三个问题时钟同步接收端要知道每个比特的边界在哪信号里得有节拍直流平衡长串连续的 0 或 1 会让电平长期不变接收端失去同步、器件发热编码要保证电平均匀变化效率同样一根线编码效率决定能跑多少有效比特。打个比方编码就是给比特配了辆合适的车——曼彻斯特是老牛车8B10B 是货车64B66B 是高铁PAM4 是一次拉四个乘客的公交车。二、编码家族谱从曼彻斯特到 PAM4以太网四十多年线路编码换了好几代编码规则效率用在哪儿曼彻斯特每个比特中间必有一次跳变1低→高0高→低50%10M 以太网最早8B10B8bit 数据 → 10bit 符号加控制字80%千兆1000BASE-X64B66B64bit 数据 2bit 同步头97%万兆/25G/100G以太网光口PAM4用 4 个电平1 个符号承载 2bit200%相对 NRZ50G/100G/400G数据中心关键认知曼彻斯特效率只有 50%——传 10M 数据线路要跑 20M 的信号变化早被淘汰8B10B 通过编码表保证直流平衡和时钟密度代价是 20% 带宽64B66B 只加 2bit 同步头效率冲到 97%但要求线路质量更好PAM4 不是1bit1电平而是 1 符号2bit——不提高线路频率直接翻倍吞吐是 400G/800G 时代的关键。规划认知同样一根光纤接口换 64B66B 或 PAM4速率就能翻倍——物理层的提速不全是换介质编码也在偷偷进化。三、波特率 vs 比特率一个信号符号能装几个比特这是物理层最容易被绕晕的一对概念波特率Baud每秒钟信号变化的次数符号率单位 Baud比特率Bit rate每秒钟传输的比特数单位 bps。关系很简单比特率 波特率 × 每符号比特数。每符号 1bitNRZ比特率 波特率每符号 2bitPAM4比特率 波特率 × 2加上编码开销有效数据率 线路速率 × 编码效率。用 Python 把线路速率→有效速率算一遍概念就清楚了# 编码效率与有效速率换算codings[(曼彻斯特,1,2,10),(8B10B,8,10,1000),(64B66B,64,66,10000),(PAM4(忽略开销),2,1,10000)]print(编码 线路速率 有效速率)forname,data,sym,line_rate_mbpsincodings:ifname.startswith(PAM4):eff2.0# 每符号 2 bit无编码开销假设else:effdata/sym validline_rate_mbps*effprint(f{name:15s}{line_rate_mbps:7}Mbps{valid:7.0f}Mbps)# 实际工程1G 网口理论 ~1000MbpsTCP 吞吐 ~940Mbps扣除帧头/协议开销print(\n注: 10G 光口用 64B66B有效 ~9.7Gbps若换 PAM4 且线路速率不变吞吐翻倍)一句话千兆是线路速率真正能用的要乘以编码效率。这也是为什么千兆网实际测速到不了 1000M——940M 才是正常值。四、物理层四大杀手断·弱·污·超长排障物理层90% 的问题集中在四类杀手现象特征手段断完全不通、灯灭线缆/接头物理断开打灯、万用表、通断测试仪弱通但不稳、丢包信号幅度不足长线、劣线、光衰测光功率/线缆衰减、换线换模块污误码、CRC 涨接头氧化、脏污、受潮、串扰清洁接口、重新压接、换屏蔽线超长时延大、吞吐减半超 100 米铜缆、超规格距离上光纤或加中继/交换机装维口诀断是灯不亮弱是通得虚污是错码多超是距离顶。物理层先按这四类对号入座能省下一大半排查时间。五、速率协商与双工千兆为什么变百兆千兆变百兆、全双工变半双工是物理层最经典的哑故障链路正常、灯亮着就是速度不对。根因通常是线缆只有 4 芯只压了 1/2、3/6 两对——千兆需要 4 对全通线缆类别不够/超长——超过 100 米或劣质线协商自动降级两端自动协商异常——一端固定速率、一端自动出现以低者为准端口配置错——有人手动指定了 100M。设备上查看与修复速率协商的命令华为/思科通用思路# 华为 VRP查看端口协商结果display interface GigabitEthernet0/0/1# Speed(duplex) : 1000M(a-full) # a-full 自动协商 全双工# 若显示 100M(a-half)协商异常查线缆或强制# 强制端口速率/双工与对端保持一致interface GigabitEthernet0/0/1 undo negotiation auto# 关闭自动协商speed1000duplex full# 查物理错包协商降级后常伴随 CRC/碰撞计数display interface GigabitEthernet0/0/1# Input errors / CRC errors 持续增长 物理层脏/劣/超长六、用 Python 验算网线千兆为什么只有 940M# 千兆理论 vs 实测帧开销从哪来# 一个最大帧 1518B含 8B 前导 12B 帧间隙有效载荷 1500Bframe_total1518# 一个以太网帧在线上占用的字节含前导IFGpayload1500# 实际数据字节line_rate1e9# 线路速率 1 Gbps# 每秒最多能传多少帧frames_per_secline_rate/(frame_total*8)# 有效吞吐valid_bpsframes_per_sec*payload*8print(f千兆线路每秒最多 ~{frames_per_sec:,.0f}个最大帧)print(f有效吞吐上限:{valid_bps/1e6:,.0f}Mbps)print(f损失占比:{(1-valid_bps/line_rate)*100:.1f}%帧头帧间隙前导)# 结论千兆实测 940M 左右 协议开销的必然结果不是故障print(结论: 940M 是千兆的协议天花板测速低于 940M 才需要查物理层)结论物理层提分不靠加快线路而是——选对介质、认对接口、保证编码、管好协商。把这几件事做对物理层基本没有故障空间。小结线路编码把比特变成信号解决时钟、直流平衡、误码率编码家族曼彻斯特50%→8B10B80%→64B66B97%→PAM4200%波特率 vs 比特率比特率 波特率 × 每符号比特数有效速率还要乘以编码效率物理四杀手断、弱、污、超长先对号入座再排障千兆 940M 是正常低于 940M 才怀疑物理层协商、线缆、超长物理层结尾也是整个物理介质层收官——下一步进入数据链路层。思考题一根标称六类网线压接正确、端口协商 1000M但跑 iPerf3 只有 500M。它属于物理层四杀手里的哪一类除了换线还有哪些手段可以快速确认提示先用线缆测试仪验证链路质量再考虑是否串入级联设备或中间断点下期预告物理层十课讲完从 DDN 老线到同轴从网线到光纤从编码到速率。接下来进入组网的实战主场——政企专线全景一条专线从 CPE 到局端、到对端到底经过哪些盒子怎么一眼认出它用了什么承载技术下一课组网第十一课政企专线全景图谱与五层看灯法。本系列其他课程组网第一课从一根 2M 专线说起——DDN 与电路交换的黄金时代组网第二课X.25 与帧中继——第一次让带宽拼车组网第三课ATM——53 字节信元的巅峰与谢幕组网第四课以太网革命与 IP 一统天下组网第八课同轴与 BNC——2M 专线背后那条老线专栏主页《组网那点事》——从 DDN 到 AIDC 智算组网 100 课