1.前言
无论你是基于SDN做物理网络的大二层,还是基于SDN做云计算的网络支撑。商用的基于SDN产品都有一个不可避免的门槛,就是SDN controller的高可用。
交换机已经失去了对网络的控制权,控制转发分离意味着SDN controller需要更加稳固。如果SDNcontroller出现单点故障,这样整个网络系统都会失去控制,甚至会带来不可逆的灾难。
在我们设计SDN controller的部署模式的时候,就需要充分考虑SDNcontroller的单点问题。目前也有一种常用的手动去解决SDNcontroller的单点问题,就是HA。
大部分的开源SDN controller都支持HA(如:ODL、Flooldlight),哪怕我们开发设计一个HA模式也不是一件代价很大的事情。HA模式确实可以解决SDN controller的单点故障,但是无法解决SDNcontroller的首包处理的单点性能瓶颈。这也是我们今天讨论的重点,分析几种SDN controller的部署模式。
2.SDN controller如何做高可用?
在讲述SDN controller的部署模型之前,我们还是先了解一下SDN controller的高可用实现原理。有了原理的支撑,对于后续的模型会有更清晰的理解。
其实OpenFlow(>= 1.2)协议本身就支持对交换机的角色管理。对于交换机,SDN controller有Master、Slave两种角色,并且在同一时间只有一个Master。
不同的角色有不同的权限,当然这个可以通过SDN controller修订。简要说Master角色可以接收首包、推送流表、监听交换机的信息(交换机的A