跨层 · 控制面与数据面
★★★★ 先看图上两种线
紫色虚线 = 控制面:交换路由、算出最优、把结论下发成表。★★ 一天可能只跑几次,每次几十毫秒。
蓝色实线 = 数据面:包真的从这里穿过去 —— 查表、改 TTL、换二层头。★★ 一秒钟几百万次,每次几微秒。
★★★★ 差别不在难易,在频率:一次决策,百万次转发。
★★★ 两张表,和数据面为什么能快
★★★ 控制面的表是 RIB(所有候选 + 属性);下发给数据面的 FIB 只留选中的结果:前缀 → 出口 + 下一跳。★★ 属性全丢,查表用不上。
★★★★ 正因为要做的事少而固定,数据面才压得下成本:扔进芯片(查表线速,CPU 不碰包)、绕过内核(轮询代替中断、省掉 sk_buff)、窄带上还能顺手压头(拿 CPU 换带宽)。
★ 常见误解
★★★★ 「包来了才去算路」 —— 不算。算路早算完了,包来的时候只是查一张已经算好的表。
★★★★ 「控制面挂了就断网」 —— 不会立刻断,蓝线还在跑(场景②)。但新路由学不到,拓扑一变就成黑洞。
★★★ 「这只是路由器的事」 —— 二层也一样:STP 算树是控制面,查 MAC 表转发是数据面。每一层都有这两面。