网络设备硬核技术内幕 路由器篇 15 从鹿由器到路由器 (下)

2022-07-27 13:23:11 浏览数 (1)

在前两期专题中,我们分析了家庭宽带(PPPoE)和IPTV(IPoE)业务认证和数据转发平面的异同。

我们发现,IPoE和PPPoE的转发面对硬件的要求差别较大,IPoE只需要能够终结QinQ(剥离两层QinQ TAG)即可,而PPPoE则还需要处理PPP的状态机。那么,能不能用不同的转发面处理同一用户的这两类业务呢?

这种设想在SDN日趋成熟的今天,已经成为了现实。

SDN有一大流派,称之为NFV(Network Function Virtualization)。在局域网中,NFV主要用于虚拟化安全资源,来应对专用设备无法承载的超大业务量。而在运营商网络中,NFV则可以用于WLAN控制器(vAC)和宽带远程接入服务(vBRAS)。

vBRAS采用了所谓的转控分离技术。

vBRAS本身是一个运行于标准x86服务器上的软件,拥有终结QinQ,处理PPPoE、IPoE等能力。来自OLT的流量会进行不同的处理,如下表:

PPPoE信令

vBRAS

PPPoE数据转发

vBRAS(x86)/SR(NP)

IPoE认证

vBRAS

IPoE数据转发

交换机(ASIC)

我们发现,流量最大的IPTV业务,在vBRAS方案中,从成本较高的NP承载变成了价廉物美的交换机ASIC承载。路由器NP则依然处理家庭宽带上网的PPPoE数据转发业务。vBRAS的x86 CPU处理认证过程,也就是控制平面的业务。

这就是所谓的转控分离的设计思想。x86 CPU擅长处理复杂的逻辑,如状态机等,因此用来进行网络控制平面的数据包处理。而NP可以处理较为复杂的PPP QinQ业务,被用于处理PPPoE转发。最简单的IPoE交给交换机ASIC。

当然,对于VoIP这样的大会话小流量业务,是可以在vBRAS上直接处理的,这样可以充分利用x86低廉价格的RAM处理大量会话资源。

随着在x86上处理的网络业务越来越多,x86也遇到了一些麻烦。

我们知道,x86上运行的操作系统,无论是Linux,还是windows,实际上都是不适合处理网络密集型的任务的。这是因为,x86的网络适配器(网卡),每收发一个数据包都会触发一次处理器的中断。中断会消耗大量的CPU时间,并引起指令缓存的cacheline miss。

此外,传统的Linux内核在收到数据包时,会将数据包缓存(mbuf)从网卡驱动的地址空间(内核态)拷贝到应用程序的地址空间(用户态)。这更是在数据平面无法接受的。这也限制了x86在网络领域的应用。

为了提升x86在网络领域的份额,英特尔启动了DPDK(Data Plane Develop Kit)计划,帮助用户在x86上实现高速的数据转发。而其他非Intel的RISC多核处理器厂商也在持续发力,CISC和RISC多核在网络领域的竞争已经进入白热化。

明天,我们将从多核开始,介绍路由器的另一种实现方式。敬请期待。

0 人点赞