Wednesday, August 22, 2012

OpenvSwitch 代码分析(零)

虚拟交换机是云计算和网络虚拟化的基础。
作为目前唯一一个事实上的标准,OpenvSwitch几乎占据了所有的优势。唯一一个开源的虚拟交换机软件实现(注意,竟然是产品级实现),集成到了大部分的云计算和虚拟化产品中,被主流厂商所追捧,支持SDN的相关协议……好了,更多的介绍还是自己看官方网站吧。
为什么要做软件交换机?并不是说软件交换机灵活、廉价,更重要的原因,云计算的发展太快了,SDN的发展太快了,大家对网络要求的发展太快了,硬件设计和制造的缓慢让像样的虚拟交换机迟迟无法release。能简单支持OpenFlow协议的交换机本身就屈指可数,更不要说在实际应用中的各种复杂需求了。
而OpenvSwitch偏偏做到了,在关键的时刻挺身而出。nicira能让vmware掏出10亿+的美金,除了高层的政治和寥寥数个核心的开发人员,很重要的就是它的两大产品——OpenvSwitch和Onix!Onix姑且不提,OpenvSwitch已经被开源届广泛关注并应用,其意义不下于操作系统届当年的minix甚至linux,大大小小的厂家都借鉴它来进行虚拟交换设备的开发。
因此,OpenvSwitch的源码设计,很值得大家仔细研究,无论是对交换的抽象和各个子功能的分离,以及考虑到扩展性的设计思想,甚至数据结构,每一个真正搞网络技术的人都很值得进行深入的分析。
考虑到国内对OpenvSwitch代码进行分析的人还不多,希望能抽空写个系列,谈谈OpenvSwitch设计上的一些独到之处。当然,很推荐大家直接阅读源码,只要具备一定的内核编程基础,并对网络协议栈的实现,特别Linux上的,有所熟悉,并能理解网络虚拟化和SDN的核心理念,应该问题还是不大的。从接触代码到打通流程,大概花了两三周的时间。当然,肯定还有不少细节之处没有完全理解透彻,需要进一步的探索。

No comments:

Post a Comment