写点什么

Cable:360 实现的新虚拟网络架构

  • 2019-03-27
  • 本文字数:1254 字

    阅读完需:约 4 分钟

Cable:360实现的新虚拟网络架构

前言

OpenStack 架构中,Neutron 作为虚拟网络模块,管理虚机的网络。随着容器技术的发展,越来越多的应用部署到 Kubernetes 等容器编排系统中,而 Kubernetes 也有自带的网络管理模块,如 Flannel,Calico 等。分别维护 OpenStack、Kubernetes 网络模块,不仅增加管理成本,且无法满足虚机和容器网络互通等需求。为了统一管理不同编排系统的网络模块,简化虚拟网络功能的开发流程,虚拟网络工作组实现了新的虚拟网络架构 Cable。

需求背景

目前公司的虚拟网络架构有如下不足:


  • 物理机、虚机和容器网络分开管理,无法达到直接互联互通。

  • Neutron agent 里的 DHCP、metadata 采用集中式服务,健壮性不足。

  • vxlan 实现时需要外部路由器的支持,较为复杂。


新的网络架构需要满足统一管理物理机、虚机和容器网络,实现直接互联互通;简化 Neutron agent,分布式架构实现 DHCP、metadata 等功能;在虚拟网络层面实现 vxlan;提供流量镜像等新功能。

方案实现

为了满足上诉需求,Cable 架构实现了如下两个关键点:


  1. 虚拟数据平面不再基于 OVS,而是采用功能更为丰富虚拟路由器 vrouter.ko。vrouter.ko 是 Juniper 的虚拟网络架构 OpenContrail 中的开源数据模块。相比于 OVS 的简单数据包转发,vrouter.ko 支持虚拟网络路由、vxlan、流表配置安全组、流表配置 nat/snat、流量镜像等功能。丰富的数据平面功能,简化了网络功能模块的开发难度。

  2. 重新自研开发管理平面。管理平面统一管理 OpenStack 和 Kubernetes 网络模块;采用 Kubernetes 里的 watch 方式,主动监控平台资源变化情况,并执行相关操作;分布式实现 DHCP;用 vrouter.ko 中的 flow 功能实现 nat、安全组等。


Cable 的整体框架如图 1 所示。



图 1 Cable 整体框架图


Cable 工作流程如图 2 所示。当用户请求到达 Neutron Server 后,Contrail Neutron Plugin 将请求转发至 Cable 的控制节点(Control Node)。控制节点的 proxy 转换请求发送至 API,API 将接收到的请求发送至相应模块,其中 controller 负责具体的计算和分配工作,IPAM 模块负责网络地址的管理。每台计算节点部署了 Cable agent,通过 Rest API 监听 Control Node 的资源,如监听到资源变化,则调用 vrouter.ko 执行相应请求(添加/删除/修改网络信息)。



图 2 Cable 工作流程

与 OpenStack 兼容

Cable 需要考虑如何与现有的虚拟网络结构兼容,使得 Neutron 能够平滑过渡到新的架构上。所以在保持 Neutron 原有接口不变的基础上,将 Neutron 的 db 替换为 etcd,并将 DHCP-agent,metadata-agent,l3-agent 替换为统一的 cable-agent。将 Neutron 用 Cable 替代后,OpenStack 的相关命令行和 Restful API 都没有变化,实现无缝切换,方便运维管理。



图 3 Cable 替代 Nuetron 后 OpenStack 架构图

总结

新的虚拟网络架构,兼容了不同网络平面,简化了网络功能模块,使得网络更为健壮。目前 Cable 的整体架构已经基本开发完成,实现了 DHCP、metadata 和 VLAN 架构网络,后续将实现安全组、VXLAN 等更多功能,并实现自动化部署,完善监控功能。


本文首发于微信公众号“360 技术“( id: qihoo_tech)


2019-03-27 14:313339

评论 2 条评论

发布
用户头像
开源?
2019-03-31 20:52
回复
用户头像
这个不错,可以关注下
2019-03-28 17:55
回复
没有更多了
发现更多内容

MapReduce排序以及序列化

五分钟学大数据

大数据 hadoop mapreduce

如何做一场高质量的分享

阿里巴巴云原生

深度学习 开发者 云原生 分享

Newtonsoft.Json的使用整理

happlyfox

json netcore 5月日更

手把手 Golang 实现静态图像与视频流人脸识别

天黑黑

音视频 人脸识别 Go 语言

堪称完美!淘宝内部百亿级Java高并发系统架构设计PDF手册分享

Java架构追梦

Java 架构 高并发 淘宝网 亿级架构设计

2021年5月国产数据库排行榜:“华为高斯模式”取得成功,阿里OPA持续攀升

墨天轮

数据库 dba tdsql TiDB Gauss DB

论好文章和烂文章

阿里巴巴云原生

程序员 开发者 云原生 写作技巧 成长与思考

怎么进大厂?166位Java工程师的大厂面试经验分享

北游学Java

Java 面试 大厂

为啥你写的代码总是这么复杂?

华为云开发者联盟

软件 代码 代码注释 bug 复杂度

Spring Cloud Bus 消息总线介绍

阿里巴巴云原生

Java 微服务 云原生 中间件 数据格式

云图说|不要小看不起眼的日志,“小日志,大作用”

华为云开发者联盟

运维 日志 云日志服务 安全监控审计

官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox

阿里巴巴云原生

容器 云原生 k8s 监控 Go 语言

Linux C/C++ 学习路线总结!助我拿下腾讯offer

赖猫

后台开发 C/C++ Linux服务器开发

我崩溃了!BTAJ面试有关散列(哈希)表的面试题详解,电子版已问世

欢喜学安卓

android 程序员 面试 移动开发

新思科技发现开源安全、许可证合规性和维护问题依然很普遍

InfoQ_434670063458

新思科技 OSSRA 开源安全

智慧党建三维云展厅可视化

一只数据鲸鱼

数据可视化 智慧党建 三维可视化

阿里开源的“SpringCloudAlibaba笔记”这么细节的吗?真秀!

Java架构师迁哥

不要盲目跟风:中小企业运营自媒体需三思而后行

石头IT视角

数据采集之js自定义采集

大数据技术指南

大数据

Apache Flink Meetup 北京站,1.13 新版本发布 x 互娱场景实践分享的开发者盛筵!

Apache Flink

大数据 flink

数据库学习笔记

lenka

5月日更

BIP研发课堂:领域、单据类型、交易类型

paraboy1

再次荣获最受观众喜爱奖

Serverless Devs

阿里云 云原生 cncf #Serverless

高性能JavaScriptの笔记(一)

空城机

JavaScript 性能优化 大前端 5月日更

Fedora 34成哑巴了?

吴脑的键客

fedora

阿里开源的“高并发设计笔记”就这水平!?我反正是跪着看完的

Java架构师迁哥

更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性

阿里巴巴云原生

容器 运维 云原生 中间件 边缘计算

打破思维定式(七)

Changing Lin

5月日更

阿里出品还是香,这份Redis笔记”从头到尾,全是精华

Java架构师迁哥

客户营销:4P理论

石云升

创业 营销 职场经验 5月日更

来了,Anolis OS 8.2 正式版首发!100% 兼容 CentOS 8

阿里云基础软件团队

Cable:360实现的新虚拟网络架构_服务革新_360技术_InfoQ精选文章