网络事件
- 在 SDN 网络中,控制层对网络的控制管理是保证网络运行的重要因素。
- SDN 控制层对网络的控制管理主要通过网络事件来触发。
- 网络事件是网络运行过程中出现的反常现象,如节点中断,链路断开等,一般会对网络设备的运行带来影响
- 当 SDN 网络出现网络事件时,邻近的交换机会产生相应的网络事件信息,并向控制层转发该信息以对网络事件进行处理。
- 为了使网络尽快恢复正常功能,控制层必须及时响应网络事件,做出网络更新,并发出指令让交换机执行正确的操作。
这是 SDN 网络控制的一般过程,也是控制层只有单个控制器时的控制过程。
SDN分布式
在大规模的网络场景中,单个控制器由于计算能力限制无法管理过多的网络节点
- 这时 SDN 网络通常会使用多个控制器构成 SDN 控制层对网络进行控制管理,即为SDN 分布式控制。
SDN 分布式控制缓解了单个 SDN 控制器中可能会出现的可扩展性差、单点故障、性能瓶颈等不良问题,有更广阔的应用前景。
强一致性
在分布式控制中,网络的一致性始终是研究的重点。
- 早期传统方法通常遵循强一致性规则对 SDN 网络进行分布式控制。
- 强一致性规则要求各个控制器在对网络事件进行处理的每一个阶段,即网络事件确认——计算网络更新——网络更新确认,都须保持网络状态信息的一致。
- 网络状态信息通常存储在控制器的事件与更新记录中。
- 因此,强一致性算法优先保证了控制层的一致,再对网络事件进行处理。
- 通常采用一致性算法(如 Raft 算法)保证各个控制器网络状态信息的一致。
- Raft 算法确保控制器在进行每一项网络操作前,所有控制器中的网络信息是一致的。
但这种控制方式会在各个控制器协商阶段引起较大的延时,不适用于快速响应网络事件的场景。
最终一致性
为了达到对网络事件快速处理的目标,基于最终一致性的 SDN 分布式控制开始受到研究学者的关注。
- 在基于最终一致性的分布式控制方式中,控制器在接收到数据层的网络事件时会直接触发该控制器的更新计算,因此能够缩短响应延时。
- 但最终一致性分布式控制仍然需要保证 SDN 控制层的信息一致,它强调一致不应必须出现在对网络事件的处理过程中,而是在网络更新结束之后。
与强一致性控制方式相比,最终一致性控制方式将一致过程放在了网络更新之后,从而加快了控制层对网络事件的响应速度,但在最终一致实现的过程中可能会带来控制冗余与一致时延等问题。
最终一致指当网络中的节点需要做出更新操作时,先执行更新操作,再向网络中的其它节点发送该更新信息以达到整个网络对该次更新的一致。
- 因此,最终一致应用于 SDN 分布式控制中,对于网络事件的更新处理,各个控制器网络信息的收敛总是发生在网络更新之后,且最终会收敛于正确的网络状态信息。
- 最终一致性认为在 SDN网络中,网络状态的变化主要由网络节点引起,因此控制器应当及时对网络事件做出处理,恢复网络功能;并且变化的网络状态信息最终总是会被控制层监测到,因此可以将更新执行之前的一致协调过程放在更新之后。
- SCL 机制为快速响应网络事件提供了新的思路,它提出响应先于协调的想法,并强调“最终一致”这一概念。
为了达到网络控制层的最终一致,SCL 利用 Gossip 机制进行控制器之间的信息交换。
SDN 控制层进行最终一致需要网络处于静止期。
- 在静止期内,网络中不会出现网络事件的发生或控制器自发地调整网络规则的情况。
在网络事件被处理之后,当下一个网络事件尚未发生之前,网络中总是存在这样一个静止期使得控制层的网络信息能在这段时间内收敛至一致。
在静止期内,当网络满足以下条件,则可以认为控制层达到最终一致:
- 控制层已收到该网络事件;
- 控制层确认对此事件的网络更新;
- 数据层配置正确。
第一个条件指的是控制层中至少一个控制器已经接收到该网络事件,从而得到当前的网络状态;
- 第二个条件指的是控制层中的控制器确认了该事件相应的网络更新;
- 第三个条件指的是数据层在经过网络更新后进行了正确的网络信息配置。
静止期内,上述条件一旦满足则会一直保持至控制层最终一致完成。
Gossip机制
Gossip 机制起源于 Demers 等人为管理数据库系统而提出的“流行病”算法[24]
- 通常应用于传感器网络、无线蜂窝网络等对等通信网络中
- 在这些网络中,通信设备通常只含有网络的局部信息,当网络出现变动时,为了将新的网络信息扩散到全网
- 采用 Gossip 的分布式算法可由起始点通过两两交换节点网络记录的方式,将新的网络信息传递给整个网络
- 两两交换信息与周期性是 Gossip 机制的两大特点。
两两交换保证了网络信息传递的稳定性与安全性;而周期性是整个网络最终收敛一致的必要条件。
Gossip 机制具体过程为:
- 网络中的某个控制节点对接收的网络事件计算了新的网络更新信息并储存在该节点的网络更新记录后,该节点的邻居节点会经过一定的周期,从该节点中获取新的网络信息并储存在自己的网络更新记录中;
- 同样,这些邻居节点的邻居节点会在每一个 Gossip 周期重复执行上述信息交换操作;
- 依此类推,直到所有的控制节点都获取到此次更新信息,Gossip 过程结束,整个网络控制节点达到对该次网络更新的最终一致。
应注意到的是,虽然上述过程的描述有先后,但 Gossip 机制执行期间所有节点都会同时进行,即其余节点即使没有新的网络信息同样会进行 Gossip信息交换,直到最终一致。
Gossip 机制基于最终一致性的原则,要求网络节点对网络的变动是有应必答的,即当网络控制节点接收到网络事件后,无须先向其它控制节点转发等待确认,而是直接进行网络的更新处理。
- 因此在响应速度上基于 Gossip 机制的分布式控制具有较低的时延。但 Gossip 机制仍会存在如最终一致时延、信息交换的正确性等问题。