虚拟交换和路由
两个最重要的网络功能是路由和交换功能。NFV的目标是通过运行于商业硬件或虚拟机上来支持各种标准协议,例如BGP & OSPF。下面,我们将介绍一些用于实现交换和路由功能流行的开源软件。

交换:
Linux网桥:这是一种通过IEEE 802.1D协议基于软件的交换机,自带的Linux发行版作为内核模块。它包括FDB (转发DB) , STP(生成树) ,混杂模式以接收所有数据包过滤和流量×××支持 - 这使得它比通过硬件实现的网桥功能更强大。

OpenVswitch ( OVS ) : OVS可能是目前最流行和广泛使用基于软件的交换机。它支持OpenFlow,并且可作为一个通用的交换机。它包括各种功能,例如asVLAN标记, VXLAN ,GRE ,粘接(bonding),基于流的转发(flow based forwarding),用户空间的控制台(user space control plane)等。

Lagopus:这是另外一种兼容OpenFlow 1.3的软件交换机。类似OVS 一般,它也与Intel DPDK非常匹配。,他们在他们的路线图中计划集成其他控制台方案,如Quagga和GoBGP ,对此我相信会非常有利于开放的各种用户解决方案。

Vale/Netmap:类似于Linux网桥和OVS,Vale连接了物理或虚拟网络接口。然而,较之其他软件的交换机,它拥有更高性能(高吞吐 量和低CPU使用率)和可扩展性。更好的性能是通过Netmap的API来实现的,事实上,Vale 是作为Netmap分发(distribution)的一部分提供的。

路由:

Quagga:Quagga是个拥有许多小型后台进程的集合,每一个后台进程都有一个特定的任务。这个任务可能是运行一个OSPF或BGP等路由协 议。Zebra后台进程负责与内核进行交互,并提供了一个简单的API (称为Zserv )供其他后台进程使用,所以它们并不需要直接调用内核。其他的后台进程运行各自的协议。用户可以配置Quagga,使所有这些后台进程从同一个位置查看它 们的配置文件,或者单独配置每个后台进程。

BIRD:BIRD是一个由布拉格查理大学数学和物理学院教授们开发的项目。目前,它由CZ.NIC实验室开发和支持。BIRD项目旨在开发一个功 能齐全的动态IP路由程序,主要是针对于(但不限于)Linux , FreeBSD和其他类UNIX系统和GNU通用公共许可证下发布的系统。它同时支持 IPv4和IPv6 (需要使用-enable - IPv6来进行配置)的, 多种路由表BGP ,RIP,OSPF ,静态路由及IPv6路由器公告等。

VYoS:VyOS是一款基于Linux的网络操作系统,它提供基于软件的路由功能,包括各种OSPF,BGP路由协议,集成了防火墙和×××的支持功能。 VyOS其实是Vyatta(被博科通讯Brocade Communications收购)的一个分支。

虚拟商网元(个人网络设备)
研究人员认为,虽然核心路由器的虚拟化是不可行的,但是至少在不久的将来,由于高性能(吞吐量)的需求,骨干网边缘(PE)路由器的虚拟化将是一个更可行的选择。

虚拟专用网络的服务,如L3 ×××的IP (每个PE设备的作用就像一组虚拟路由器) ,L2 ×××, E×××和伪线(pseudowires)在被当虚拟化时,这些功能会体现出灵活性和可扩展性,这将是对供应商的一个主要收益之处,许多供应商已经考虑通 过执行在云中执行相同的虚拟化来实现例如PE的功能。

与PE路由器相类似,宽带远程接入服务器(B -RAS )是供应商网络将各种互联网流量来源,如DSL ,有线网络,无线宽带网络和以太网等,而汇聚于一个单一由从DSLAM设备出入的网络。它可以是一个简单的路由器从核心到客户端转发数据包(反之亦然), 或一个复杂的路由器(通过每个用户)实现IP政策,Qos,包处理(packet manipulation),限制器等虚拟化功能. BRAS的虚拟化功能也被证明 无论是在成本和灵活性/可扩展性方面 都有益于 用于网络服务供应商。

开源个人网络设备
之前提到的大多数路由类开源软件如路由,如Quagga,VyOS和BIRD,都可以用来实现众多PE的功能。这些例如 IPtables(netfilter)和Radius-server(freeRADIUS) 之类的软件都属于标准Linux发行版的一部分,可分别用于虚拟防火墙和虚拟AAA 。软件snort在一些NFV应用部署中被用于虚拟入侵检测系统(virtual IDS)。

此外,其他的软件如MPLS-Linux和xl2tp-daemon也可用于虚拟化的PE的功能。最近,AT&T和爱立信共同通过OpenDaylight控制器提出了基于SDN的L3××× 。

虚拟CPE
客户端设备或CPE是指那些通常位于企业或住宅宽带用户端的网络终端设备,用于与电信服务运营商网络对接服务。通常情况下,服务运营商可以通过从不同的硬件厂商,企业用户和住宅用户来配置和管理客户端设备。

如果不使用虚拟化的CPE,每当任何新技术的应用,增加新的服务,或对安全性,保密性和计量功能的升级都可能会显著增加服务运营商的成本。

通过虚拟的CPE,大多数的CPE功能被拉出客户端并移入运营商的网络(可能是在其数据中心) 。这样产生了一个“简化”的CPE ,CPE充当了连接到服务运营商网络的简单Layer-2转发设备。通常情况下,如DHCP ,防火墙,NAT,路由,×××等服务通过在运营商的数据中心作为一个虚拟机( VM)实例中运行的虚拟网络功能( VNFs )提供。

开源vCPE :
网络服务,如DHCP ,防火墙,NAT, DNS( vDHCP , VFW , vNAT , VDNS , ) ,都可以通过开源实现,并且可以作为许多标准的Linux发行版的一部分发行。例如, DNS和DHCP可以用dnsmasq来部署。而用于实现NAT和防火墙的IPtables,一直没有有针对于NFV 和致力于构建虚拟客户端设备的独立的开源项目,例如客户路由器,虚拟机顶盒和虚拟的家庭路由器。

虚拟访问网元
驻留在混合光纤的DSL “远程”节点,例如FTTcab和FTTdp ,通常位于街道或建筑物接入网络的功能,正逐渐成为虚拟化的热点。出于经济上的考量,这些节点应尽量紧凑,具有非常低的功率消耗和非常低的维护成本。对这 些远程节点的简化可以通过对某些功能如 OLT , DSLAM ,ONU, ONT , MDU和DPU等的虚拟化,把复杂的工作转移到虚拟化环境来达到经济上的可行性。目前尽管还没有任何开源软件来实现这些用于虚拟化的网络功能,但一些大型 电信运营商,如AT&T,正在朝着虚拟化这些功能的方向努力,我们期望他们在不久的将来也许会开放源码,但愿这个希望能够早日成为现实!