DPDK based Open vSwitch热升级设计与实现

  • 同时,老的 ovs 会将所有的 OpenFlow 规则进行备份。

  • 这一切完成之后,老进程会返回 JSON-RPC 的请求的响应。如果上述过程无问题,则返回成功,升级继续。否则返回失败,新进程会退出,升级失败。同时老进程会状态回滚,将之前释放的资源又重新申请回来,回到正常的工作状态。

  • 新进程获得各种状态信息,开始正常初始化。包括 DPDK 初始化内存,ovs 从 ovsdb 中获取网桥、网卡等各种配置开始初始化等。在这个过程中,如果出现异常,新进程 crash,会导致 JSON-RPC 这个 unix socket 连接中断。一旦老进程检测到这个连接中断,就认为新进程初始化失败,自动回滚。

  • 新进程加载之前备份的 OpenFlow 规则。这之间的 OpenFlow 规则变更,会由 local controller 记录并下发。

  • 新进程发起第二阶段 JSON-RPC 请求。

  • 第二阶段:

    • 老进程退出。
  • 新进程开启 pmd 线程开始转发。

  • 升级结束。

下图简单的描述了升级时序图:

由升级时序图可以看出,热升级第一阶段里新 ovs 进程完成了最耗时的初始化工作,同时老 ovs 进程一直在进行转发,并没有断网。断网只是在第二阶段老 ovs 退出和新 ovs 启动 PMD 线程之间发生。

在升级过程中,我们利用了 MLNX 网卡一个特性:同一个网卡设备可以被两个独立的 dpdk 进程同时打开,并且流量会被同时镜像到两个进程中去。如果使用其他的网卡,可以通过多 VF 配合流表规则切换的方法达到同样效果。这里就不再展开叙述了。

断网时间评估

======

我们考察了两种虚拟网卡后端的断网时间:

  1. 采用 representer + VF 的方式,

  2. 采用 vhost-user + virtio 的方式。

测试方法

  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值