无论是什么答案,肯定会有很多人不同意,但我的看法是:
SDN
由一些软件(通常运行在服务器上)来决定某些用例的网络应该是什么样子的——谁可以与谁通信,应该存在什么路径,路径上数据包处理的属性,誓言之间的负载等等。为了达成这样的目标,实现上述这些决定(算法的结果),通过编程所有涉及到的节点,每个节点都执行自己的那部分工作。这些节点可以是交换机、虚拟交换机、网卡——如果它们位于相关数据包可以到达的某个路径上,则需要对它们进行编程。包括对它们进行编程以响应事件,比如链接或节点故障。 因为程序(“软件”)定义了网络将是什么,所以被称为“软件定义网络”(SDN)。
NV
当实际的、物理的NW元素被配置或编程时,网络的不同用户可以看到他们自己的网络,就像他们自己的网络一样,有自己的拓扑结构和属性。注意,这可以手动完成,没有SDN。
NFV
通常的网络实现都是由“盒子”实现的,路由器、负载平衡、防火墙、垃圾邮件过滤器、网络地址转换器、视频编码器/转换器等等。通常,每个这样的盒子都来自不同的供应商,有自己的硬件要维护(例如,每个盒子都有不同的电源模型)。NFV的想法非常简单,如果我们有一个软件运行在一个做同样事情的标准服务器上,那会怎么样?例如,我们可以有一个软件来模拟一个F5负载均衡器,或者一个Barracuda垃圾邮件过滤器,或者一个Palo-Alto网络防火墙等等。如果需要两倍的容量,那就运行两个这个软件的拷贝,如果需要更少,我就运行更少的拷贝,或者在一个较弱的系统上运行。不需要为每个供应商的特殊硬件付费。因此,如果我们把盒子的网络功能形成一个聚合名称,我们就得到了网络功能虚拟化,每个盒子的对应功能称为VNF的一个虚拟NW函数。