未来用户会抛弃SDN迎接网络虚拟化?
- +1 你赞过了
SDN在这几年一直是个热词,但冷静思考一下,似乎业界并没有取得太大的进展。回溯到SDN产生的契机:数据中心虚拟化之后,南北向的数据交换或配置走到了传统网络的极限。陈建民(Rick Chen)认为SDN所讨论的是,如何集中控制平面的设定到一个中央处理单元,但对于转发的路径还有物理层上的限制并没有针对性的议题,是一个过于简化设定的实现。他认为引入网络东西向的概念,实现Network Virtualization才是解决之道。以下为原文:
这两个月来,不论在公司内部还是外部,我都收到一样类似的老问题:SDN和网络虚拟化有什么不一样,你们为什么用网络虚拟化来替代SDN?
其实这是一个讲了很多年的问题了,说到胡须打结可能还是说不清楚,因为在问这个问题的人,他其实已经接收了部分技术讯息而产生疑惑,所以如果我还用纯协议技术的角度作为讨论的切入,其实只会越搞越混乱。 但是我之前还老是想不通用什么更好的方法来解释这个部分,直到有一天看到麻将的东西南北,这才给我了一点启发。
现在我们先不讲上面那两个是什么东西,我们就先讨论一下,我们认识20多年的网络对于数据交换的路径是什么型态?就是我们传统认识的三层架构,数据从access -> distribution -> core layer做数据路径端到端的交换。 如果你是这样想,那你完全命中我想问的问题。 没错,所以你可以很清楚的了解,今天我们所有的以物理网络设备为基础的通信路径都是以南北向为数据流的方向。 所以L2的通信在跨交换机的时后,是南北向透过ethernet trunking穿过distrbution layer作为数据交换点,L3通信在跨subnet的时候,也是通过distrbution/core layer作为南北向的数据交换点,把问题在延伸的大一点,你的L4的ACL control 也是透过北向的路由器或是防火墙作为政策过滤的把关者,执行过滤之后才回归到南向去。 所以做出一个简单的总结,你总是需要有什么东西在北向帮你作为数据交换/过滤的点,才能完成你的端到端的通信。
作为一般用户网路存取的架构,上面的三层式架构大概短期也不需要有什么太大的变化。作为数据中心内部的需求而言,尤其是服务器虚拟化后的IaaS数据中心,这个问题可能就很大了。我别用太复杂的技术观点来说明这其中的问题,只提出两个问题,有实务经验的人马上就知道这其中的痛苦。
>> 路径都是通过北向作为数据交换的点,造成多余的配置复杂和增加数据旅行的延迟。
>> 在提供IaaS云服务的数据中心,这架构限制的租户网络配置的扩展性和之后的一致性。
所以这也是网络虚拟化为什么会在服务器虚拟化市场成熟后的几年才被大幅讨论,甚至开始应用起来。因为在虚拟化后的数据中心之内,南北向的数据交换或是配置的确已经走到了传统网络配置的极限,越来越多的营运问题陆续浮上台面,所以才有人开始关注这个议题。但是网络虚拟化对于南北向的问题有什么帮助呢?不就是建立隧道打通物理二层限制,透过controller实现SDN的概念嘛?我想网络虚拟化和SDN的差别从这里就开始有所不同了。
SDN所讨论的是,如何集中控制平面的设定到一个中央处理单元(Controller),但对于转发的路径还有物理层上的限制并没有针对性的议题,所以我们可以把它想成,这是一个简化设定的实现,但是如我之前的文章所提及的,他依然在实际应用的规模上出现的很大的限制。但是网络虚拟化也不是隧道这种很肤浅的技术概念所可以实现的,或是多加了一个controller作为策略配置的工具,他所包含的其实是更多的深层的营运问题需要被解决的技术,这边我也会替大家来解说我个人的想法。
东边到西边
这个部分我过去没有在一般的演讲的场合讲过这个思维,但是随着越来越多人询问这方面的问题,我想现在因该是最佳的时机来讨论这个概念。网络虚拟化另一个重要的课题就是网络功能分散化。过去网络功能都是在南北向被实现,所以造成了上述的两个问题。但是我们想要相同的结果,又不要被那些问题所困扰,网络功能在东西向被实现成为了一个契机。但是如台湾人说的,唱的比说的好听,这种分散式的网络处理有这么容易嘛?过去20年来这些网络大厂为什么没有去实现?我不知道该如何回答这个问题,只能说套用老祖宗的经验”时候到了”,没有服务器虚拟化后所造成的网络问题,这个东西大概也没有机会可以诞生。
最早东西向的网络概念,就是透过STT/VxLAN/GRE 所建立的L2 逻辑网络,或称为overlay network。在我过去几年在这方面的工作经验,这方式的确解决了部分问题,但是对于产业或是应用环境上,不是太吸引人。这个问题是整体的,不是片面的。所以我所属的公司,在过去的两年内陆续开发了分散式的三层路由器,分散式的ACL等网络功能分散化,把原本需要在北向被执行的功能,全部拉回在本地所属的hypervisor被执行,及透过隧道的媒介,分散式的运算后的结果可以直接在HV-HV之间发送,无需透过北向作为数据交换的点,甚至跨Hypervisor平台也可以得到同样的结果。分散运算后的北向只负责提供配置,完全不干涉数据的转发和学习。这个技术所带来的好处就可以更简化逻辑网络结构上的配置,让网络跟你的大脑的想法更贴近,并且降低南北向数据流所带来的延迟,管理员不再需要每天在南跟北之间来回进行大脑奔波,最后跟我一样,需要买特殊眼镜才能继续工作。
所以网络虚拟化又被别人称为下一代的SDN,对于我来说,我还是不想说SDN这个名词,因为这个字眼被市场过度炒作及浮滥,所以当别人问我在做什么的时候,我的标准回答都是“Network Virtualization”。
为什么只有Hypervisor的环境去实现这个网络虚拟化的议题,物理网络为什么不也使用这个技术呢? 其实谁要去implement这个技术都无所为,重点在于,业务需求在哪里? 如果未来物理服务器也会飞来飞去的时候,也会动态的改变策略的时候,我相信物理网络设备也会有这种东西向分散式配置的需求的。
所以当下次如果有人在问我网络虚拟化跟SDN有什么不同的时候,我认识的人我会先打他一顿在跟他说,我不认识的人我会很有礼貌的请他看看这篇文章。因为技术其实很多时候是白板笔打架打出来的,工程师嘴巴争吵吵出来的,如此的技术才有实战可用的价值,没有被挑战过的技术,也只能是温室的花朵,一捏就碎。