@
libook #3 软硬的核心分界线是 Routing (包括部分特性如 NAT )是不是专用电路完成的,一般来说没有硬件加速的话小包很难达到线速,比如 G 口的 1.488Mpps
实际上现在常见的 NPU 很多都有内置的 NAT 模块,跑这部分功能的时候 CPU 负载基本为 0 ,但是因为闭源,所以你刷了第三方 op 之后要么不能用硬件加速,要么就是第三方固件内置官方闭源的二进制 so 等,可以调用,但是不能用防火墙规则控制(也就是和防火墙,QoS 队列等功能冲突。这部分设备出厂的时候系统可能就是个魔改版的 op ,这就不太好界定他是软路由还是硬路由。
我个人现在的区分界线是:
1. 全流程专用电路-->硬路由
2. 部分功能通过硬件加速-->(高性能 /能效的)软路由
3. 纯软件实现-->软路由
自用的网络结构是光猫桥接到一台 ROS 路由(类型 2 ),然后内网一台虚拟机(类型 3 )上的 debian 跑了一些 clash 等应用,再通过 bird2 走 bgp 把需要特殊处理的 ip 通告给 ROS ,这样的话普通的流量就从 PC 到 ROS 后,经过硬件加速 NAT 出去,访问外网则跳到虚拟机的 tun 设备隧道,然后出去。
这个结构下大部分流量通过一个很短的处理路径就可以发出去,也不需要多次 NAT 或者手动指定特殊的网关,特殊流量通过透明网关隧道到外面,最关键的是,如果虚拟机那边隧道炸了,探针会让 bird 心跳会在几秒内消失(如果虚拟机 boom 了那直接消失),随后 bgp 会自动将这部分路由表清除,回落到无加速直链的状态,也就是失去对部分被墙站点的访问能力( DNS 我有干净的来源),其它的什么 bing 国际版,apple 外区全都不受影响。
PS.这个结构下的 ROS 是可以用类型 1 的纯血硬路由取代的,因为只需要 NAT PPPoE DNS BGP 这些硬路由常见功能,所以可靠性下限可以做的很高,我是嫌二手硬路由太吵才用的 ROS