首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

软路由那么强大, 为什么硬路由不上 x86 平台呢?

  •  1
     
  •   snail00 · 174 天前 · 7764 次点击
    这是一个创建于 174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    软路由, 内存大, 存储大, cpu 也给力, 为什么硬路由不上呢.

    硬路由的优势是什么, 稳定性 /系统 /无线 还是什么?

    45 回复  |  直到 2018-11-02 01:19:27 +08:00
        1
    coderluan   174 天前
    成本呗......
        2
    maxxxxx   174 天前
    功耗?
        3
    lcatt   174 天前
    强大? 高吞吐量高带宽下比不过硬路由的
        4
    snail00   174 天前
    @lcatt #3 2600 的 cpu , 千兆 nat 可以跑满.
        5
    snail00   174 天前
    @coderluan #1 还好吧, ap 用 k2p, 300 搞定(2600 的 cpu)
        6
    snail00   174 天前
    @maxxxxx #2 功耗是大了点, 20w 以内?
        7
    jackietsui72   174 天前 via Android
    我感觉主要还是功耗问题
        8
    mhycy   174 天前
    因为硬路由更便宜、
        9
    redsonic   174 天前
    本质是 FPGA+arm 与 x86cpu+通用 OS 的区别。传输级别的网络设备都要求 64byte 小包线速转发,前者可以轻松实现,而后者就算加了 DPDK 还有抖动的问题。如果不是用在承载和传输方面,x86 确实已经可以替代之,功耗也不高,但体积和价格.......
        10
    snail00   174 天前
    @mhycy #8 那如果是 300-800 这个区间, 定位家用, 是不软路由吊打硬路由
        11
    mhycy   174 天前
    @snail00 这个价格区间你找不到性能价格都合适的软路由方案
        12
    lcatt   174 天前
    @snail00 同等的条件下,硬路由更快,家用或许感觉不出来,对于企业来说就比较明显, 思科 4000 华为 AR 系列最低端的转发性能都不是软路由能比的,软路由还有一个问题就是经常有各种奇怪的 bug,运维崩溃。
        13
    snail00   174 天前
    @redsonic #9
    可以理解为硬路由可以通过 硬件 转发, 在小包比较多的情况下有优势,
    软路由转发都要经过 cpu , 处理大量小包比浪费资源, 负载大了延迟就会不稳定

    价格其实还好, 退役的工控主板就行, 便宜还小, 就是不知道稳定性怎么样
        14
    oovveeaarr   174 天前
    软路由主要是搞一些奇怪的应用有优势,其他的优势真不大
    而且通过多网卡模拟 BRIDGE 的效果,非常之差,对性能要求呈指数级别
    可以试试 800 内的路由,跑 LAN-WAN 的 1G,看看 sirq 会有多少,就知道差别啦
    (多说句,就算是家用路由刷 openwrt 之类的,性能也会遍地很多)
        15
    fnscar   174 天前
    我还纳闷 300 块买的是 i7-2600 还是 ryzen 2600,好久才反应上来是阿童木 N2600。
    我感觉不一定干得过 MT7621。
        16
    snail00   174 天前
    @lcatt #12 嗯嗯, 这个应该和转发方式不一样有关系, 企业级硬路由基本都可以线速转发, 对丢包和抖动都有控制,
    企业级还是得硬路由, 稳定第一.
        17
    snail00   174 天前
    @fnscar #15 那啥, 硬路由转发有专用的交换芯片, cpu 负载不大. 软路由转发全靠 cpu 了.
        18
    snail00   174 天前
    @oovveeaarr #14 好的, 有机会找个试试, 那是不硬路由最好用官方固件, 驱动什么都比较全.
        19
    oovveeaarr   174 天前
    @snail00 #18 对的,而且有 HWNAT,这才是最重要的。如果没有 HWNAT 那就直接退化成软路由了,尤其是无线路由,跑 WPA2 加密的时候,支不支持硬件加速很重要的。
        20
    snail00   174 天前
    @oovveeaarr #19 了解了, 谢谢

    这应该也是软路由不自己加无线网卡, 通常使用 ap 扩展无线的原因.
        21
    Maskeney   173 天前
    单纯的转发用 x86 就是大炮打蚊子 这么说你懂了吧
        22
    silencefent   173 天前
    FPGA 太强了,软路由的稳定性在增加到成百上千的规模后,宕机概率不是前者可比
        23
    alcarl   173 天前 via Android
    思科几十年前就是 x86 架构。。。。。。。
        24
    ADragon3   173 天前 via iPhone
    我觉得是稳定性和连续运行吧,毕竟很多家用路由器都几个月甚至一年不断电一次。x86 不太清楚,直觉感觉故障率高一些
        25
    tcsky   173 天前
    硬件路由效率更高吧. 都实时系统 硬件加速的
        26
    abcbuzhiming   173 天前   ♥ 1
    x86 这种复杂指令集架构,如果专门用来做某个特定领域的事情,远不如精简指令,特别定制的芯片好。至于为啥不上?没需求呗
        27
    xenme   173 天前 via iPhone
    看看防火墙啥的不都是软路由么,只是功能更复杂而已,所以选择通用 CPU 更方便,开发成本更低。

    吞吐几十上百 G 都不是问题。


    单纯路由,上面也提到了,功能单一,选择通用 CPU 更浪费和不划算
        28
    annoy1309   173 天前   ♥ 1
    那我举个不太恰当的例子,专业交换机,单板上 30+的 100G 口,50+的万兆口,单机总交换能力 500T 起步,你用什么 x86 能撑住?
    再举个例子,台式机 /服务器插 pcie 口的网卡,双 QSFP,两条 56G 的聚合,你 x86 拿什么抗?
        29
    mydns   173 天前
    功耗 发热
        30
    Mac   173 天前 via Android
    讲道理,现在博通的几个高端路由,未必比 j1900 和 n3150 的功耗低。讲购买成本,其实差不多。
        31
    msg7086   173 天前
    同样的转发速度,软路由方案比硬路由成本和性能要求高得多,更不提 @annoy1309 说的在高吞吐量情况下你上一万刀的 8180 都不见得能跑起来。

    PS 如楼上所说,为什么要把 N2600 说成 2600,完全两个东西好吗。
        32
    wwhc   173 天前
    楼上的几位,WPA2 加密使用的是 AES 算法,x86 CPU 早就包含 AES 指令集,软件无线路由实现毫无压力
        33
    sinxccc   173 天前
    Control plane 用 x86 的挺多的啊,倒是 data plane 没人敢用 x86 …
        34
    dndx   173 天前   ♥ 3
    如果是家用网络,那软路由的确是足够了。只要规模稍微大一点,谁敢用软路由啊...

    原来工作的地方用的是 ASR 9006,供 40000 多人同时上网,跑 Full BGP,多条 10Gbps 光纤接入然后用 100Gbps 的线卡连接内网:

    1. 内存大存储大没什么用。路由做为转发设备,把包用最快的速度发出去才是王道,buffer 太大只是在增加转发延迟,内存的用处主要也就是存一存有限的路由表信息,不是越大越好。而 ASR 的包 buffer 用的是 SDRAM,虽然比较小但是速度要比 x86 的 DRAM 快了太多。另外 ASR 的路由查询是通过 TCAM 这种专门的内存进行的,只需要一个时钟周期就可以搜寻完整个路由表,试问 x86 有什么算法能做到这种效率?这也是为什么硬路由可以轻松做到小包线速,而 x86 就很难的原因。
    2. CPU 给力同理,专用转发硬件基本上都是 ASIC 处理的转发,追求 CPU 性能意义不大。
    3. 硬路由支持各种高级的防灾措施,比如带电带流量更换线卡,路由卡,电源等等。而硬件也都有冗余,就算一张卡坏了,另一张会自动顶上,用户甚至都不会察觉。x86 如果 CPU 坏了或者主板、网卡坏了就只能哭了。
    4. 硬路由总线带宽大,ASR 9006 这种比较低端的型号吞吐都已经 12 Tbps 了,x86 还没有发布的 PCI Express 5.0 x16 也只有 63GB/s 的带宽,差不多 0.5Tbps。而 ASR 9922 这种顶尖型号已经能达到了 160Tbps。对这种用户来说,x86 根本就无法考虑。

    当然软路由也不是没有意义。如果对成本比较敏感,流量没有到一定规模,偶尔宕机可以接受,那是完全可以考虑的。
        35
    wwhc   173 天前
    给楼上某位,x86 主板可以按芯片组不同提供多条 PCIe 通道,几年前的 intel 主板已经可以提供 8 GT/s 的总带宽了,服务器上的多端口网卡也早就具有各类容灾功能
        36
    tangbao   173 天前 via iPhone
    @dndx 40000 多人!敢问是什么地方?
        37
    dndx   173 天前
    @wwhc Intel 最高端的 Xeon Platinum 8180 这种 $10000+ 的 CPU 最高也就是 48 条 PCIe 3.0。就算全部用来插网卡,想跑到 10 Tbps 恐怕也有点困难吧。如果要跑 10 几个槽位,又牵扯到 CPU 之间的数据交换,故障率也增加了,而且成本不见得就比直接买硬路由要低。

    容灾的话,我不知道 x86 能不能做到在一个 CPU 或者主板坏了的情况下继续正常服务。CPU 热插拔这种似乎也没见有多少软路由支持。
        38
    cloudyi666   173 天前 via iPhone
    @dndx 是的涉及到一堆的规则,路由表项的查询 x86 是扛不住的
        39
    sinxccc   173 天前
    这种鸡同鸭讲的问题…

    我觉得基本上见过大点的交换机或者边缘路由器长什么样的自然不会问出这种问题,至于家用 /小企业用的十几二十个口的「路由器」,随便什么方案都是能应付的。
        40
    zhjits   173 天前
    谁说没有? DPDK 了解一下?
        41
    wwhc   173 天前
    @dndx ASR 9922 的背板好像用上了 intel 的 6 或 8 核 cpu ? 服务器主板或 cpu 坏的机率太低,只要软件方面不太过激进,稳定性绝对不比思科那些功耗可以过 KW 的柜子差,以前查万兆网卡的时候,厂家居然把 MTBF 定到一百多年,我都怀疑有没有标错了
        42
    dndx   173 天前
    @wwhc Intel 的 CPU 是有。Cisco Nexus 系列的控制面操作系统也是 Linux 跑在 x86 上,但是转发面跟 x86 没有任何关系,都是走的 ASIC。x86 也就是跑个 BGP 协议啥的这种性能要求不高的操作。

    稳定性的保证并不是靠硬件永远不坏,而是在坏的时候能够继续提供服务以及不下线更换故障部件的能力,这应该算是硬路由冗余设计的精髓。如果只是说单块板子的 MTBF 硬路由也不见得就比普通的服务器主板好到哪去。
        43
    dndx   173 天前
    @tangbao 高等院校
        44
    memorybox   173 天前   ♥ 2
    其实还是一个性价比问题。比如 DPDK,E5-2680 V3 处理器上其实可以达到 1000w pps 的转发速率了;

    但是成本呢?不光是 CPU,分配 Huge memory 也要 8G 以上,而且同样的 FPGA 达到 1000w pps 转发只是一个入门指标。

    看网络处理性能,还是要看 pps,bps 其实没有多大参考意义。

    其实像 DPDK 这样的方案,并不是要和 FPGA 去拼性能,而是拼灵活性。

    比如在 openstack 和 docker 的云环境里面,大部分虚机之间的网络通信并不需要这么高的 pps,更需要配置的灵活性,迁移的便利性等等,所以可以想见的未来,肯定是 DPDK 实现大部分网络协议栈和支持大部分的上层工具,比如现在的 linux 绝大部分网络命令都链接到 DPDK 重新实现编译一遍,然后打入 SDN,和 openstack 或者 docker 容器云结合,才是正道。


    至于物理的网络设备,肯定把以前一些非常繁琐的处理下放到软件层面,比如 ARP 冲突检测,一些路由协议等等,集中精力搞好性能相关的东西。这样应该是今后网络中心比较经济划算的方案。

    不过有个方向我觉得可以用 DPDK+X86 做一下,就是软 TAP,现有的 TAP 设备配置起来实在太繁琐了,而且很多小型的监控项目其实用不到那么大的流量,而且很多项目做 Demo 实施的时候,可能现有的路由器设备不支持 span 功能,如果有个 DPDK 基础的软 TAP 套件,直接装到一台小型服务器上接入网络,然后设置一个混杂模式把所有流量拿进来,然后实现 TAP 的所有功能,我觉得挺有用的。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2880 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 11:50 · PVG 19:50 · LAX 04:50 · JFK 07:50
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1