前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >openstack网络设计-(一)试探

openstack网络设计-(一)试探

作者头像
惠伟
发布2021-02-24 11:28:45
1.4K0
发布2021-02-24 11:28:45
举报
文章被收录于专栏:虚拟化笔记虚拟化笔记

总体思想

openstack的api只能扩展并且向前兼容,不能影响已经开发的云管和监控等业务。

在机房中虚拟机和非云物理机共存,有些业务因为各种各样的原因一时半会上不了云,要预留好云的扩展能力。

计算存储网络解耦。如果存储用ceph,ceph有api,ceph可以单独作为云盘业务用,完全可以不搭配openstack玩。再比如开发的NAT节点和LB节点,要有NAT api和LB api,可以作为单独的功能用于非云环境,云中也可以把非云中组件纳管进来进行云化管理和使用。

云上VPC和物理网络解耦,物理网络交换机统一管理,如果有耦合也是少数机架和交换机。

网络组件内部计算节点,NAT节点,LB节点有独立技术演进能力,不同节点可以用不同的技术栈,不同的开源软件,同时能互相配合得来就行。

用开源软件集成,管理和控制尽量用python实现的开源项目,涉及内核和性能相关的软件选用C语言实现。

主机overlay和网络overlay

虚拟网络和物理网络解耦,物理网络纯三层互通,没有overlay虚拟网络二层不能互通,问题是用主机overlay还是网络overlay,主机overlay就是把encap/decap功能放物理服务器上,网络overlay就是把encap/decap功能放在TOR交换机上。如果要用网络overlay,neutron得知道服务器连接到TOR那个接口上,创建port有多层次绑定,如果没有厂商的控制器,这点就不好实现。虚拟network/虚拟router都得在交换机上配置,没有标准的配置方法,每个厂商不一样,对接起来不容易,还容易被厂商绑定。好处是交换机处理encap/decap性能强大,而且可以利用厂商的控制面,neutron只下配置就行。主机overlay最大的问题就是性能瓶颈,处理encap/decap太费CPU,有了网卡offload能好很多,好处就是灵活。如果对厂商不熟,那肯定得用主机overlay。

分布式网关和集中式网关

原生openstack外网是二层网络,DVR模式下公网IP在计算节点上,而且公网IP地址要随虚拟机在不同TOR下迁移,但TOR已经是三层转发,这就要求主机和TOR之间运行路由协议对公网IP做通告,按这样说又不解耦了,如果能把公网IP集中配置在几台服务器上,把这些服务器固定到几个机架上,这些服务器南向连接内网TOR,北向连接外网TOR,和外网TOR之间运行路由协议,这样能尽量解耦,能大大减小交换机配置和管理的难度。和外面通信的都集中起来,NAT节点/VPN节点/LB节点都集中在几个机架,只有这些机架通外网,内外网实现隔离,比较安全。

剩下东西向三层转发网关,不通外网,到底是用分布式网关还是集中式网关?

如果用分布式网关,子网之间防火墙规则配置到哪个网关中,防火墙状态能不能跟随虚机迁移,neutron原生还是非对称转发,防火墙状态能不能正常建立,同节点三层都不用封装,流量探针在哪个地方镜像流量。

如果不用集中式网关,东西向三层转发集中点有性能瓶颈,同一计算节点三层还要绕网关节点一圈,好处是防火墙问题就解决了,三层QOS/ACL好找地方落地,而且不管虚拟机怎么迁移转发路径长度一样,时延是固定的。

NAT/VPN/LB节点都需要主备或者多活,甚至好扩展,如果有好的方案,那东西向三层转发用集中式网关更好。

SDN和分布式控制面

SDN控制器北向提供API,什么样的api,能提供什么样的功能,从来没有人说清楚过,南向用标准协议如ovsdb/openflow/netconf控制数据平面,SDN思想是集中式控制,但SDN控制器分身是可以分布式运行的,数据平面如果不知道怎么转发的包就上送控制器,通过什么途径上送控制器,这个途径是怎么建立起来的,到了控制器怎么决定包的转发路径,控制器怎么收集每个数据面的接口和转发能力,控制面挪个地方也不好干,核心问题并没有解决。云可以用SDN也可以不用,反过来说SDN可以控制虚拟交换机/路由器也可以控制物理交换机/路由器。

SDN没有严格的定义,总得来说是一种思想,不管白猫黑猫能抓老鼠就是好猫,实践是检验真理的唯一标准,neutron就是实践出来的一个东西,neutron-ovs-agent是控制器,用openflow给本节点上ovs安装流表,而且流表是预先都安装好的,不存在首包上送,动态安装流表,控制器和数据面在一个节点,本地就收集到数据面的信息,也不能算是控制和转发分离,但neutron的牛逼之处是有api,能把虚拟的网络/路由落地到实处,云最大的问题也就是第一把虚拟网络/交换机/路由器落到实处,第二把虚拟网络/交换机/路由器打通。第一个问题neutron做的很好,有各种extension/plugin/driver对接各种各样的机制,能把虚拟网络/交换机/路由器落实到各处,并把资源预留出来,比如ovs bridge,router namespace,交换机vrf等等。第二个问题neutron就做得不太好,打通就是MAC表/路由表/ARP/Session/封装/Openflow等,网络路径很长,确实很难,集中控制大部分场景搞不定,就拿vxlan来说得知道remote ip,建立tunnel,绑定vni,同步MAC/IP,neutron是有l2 popluation,但任何数据面要用l2 population就得实现l2 population的rpc,不说l2 population的性能和扩展性,首先l2 population不是标准,实现了l2 population只能和neutron强绑定,不能用于其它场景,比如有NAT网关和VPN网关,在云中和VXLAN一起用,NAT网关和VPN网关提供api,在neutron-server中有plugin,plugin调用网关的api,难道NAT网关和VPN网关再运行agent实现l2 population,NAT网关和VPN网关还要用于其它非云场景应用,实现l2 population有什么好处,实现EVPN不香吗,和其它实现EVPN的设备都能一起用的起来。

再抽象一下,把设备分成配置面/控制面/转发面,把配置面集中到neutron,控制面和转发面放一起,分布式控制面,控制面之间运行分布式协议,这样似乎更好。

智能网卡和offload

网关节点需求:

vxlan/nat/ipsec offload

计算节点需求:

支持virtio/openflow/vxlan/qos/ct offload,几点结合才能完美实现少数报文上CPU,多数报文硬件加速从计算节点外直接到VM内或者VM内直接出计算节点。virtio支持live migration,不能用sr-iov,VM内不能安装厂商私有driver,最好网络和存储能同时加速。

裸机需求:

能解决vxlan接入的问题,支持virtio offload,并且裸机通过智能网卡能对接ceph,裸机和虚机一样只能用virtio驱动,不能麻烦用户要安装这驱动那驱动,用户觉得这台裸机性能不够,那换一台性能更强大的裸机,网络和原来一样,原来裸机上的数据新裸机上还都在。

DCI

跨DC之间二层互通怎么搞?出外网的节点放在哪个DC?出外网的流量存不存在绕路?出外网节点要不要在不同DC之间主备或者多活?

总结

任何东西说起来容易做起来难,有时间得一点一点想一点一点细化一点一点写,看有没有时间和能力把每一点细化出来单独成文章,好坏和成败在于细节中,魔鬼在于细节中,好的设计和方案肯定不是画画图吹吹牛,这简单那简单,这样一搞那样一搞就好了,嘴上说的只是代码中一个分支,真正写代码时各种情况都要考虑进去,很多分支,每个分支都有可能执行到都不能出问题,设计和方案要细化,最终要想象出代码有多少函数,每个函数多少个分支,如果自己想不出个大概样或者自己想代码时都觉得太复杂,那设计和方案就太扯蛋了,如果自己把代码想不出个模样,那别人实现起来就坑坑不息,上线了一定问题频出,并且定位问题困难。

其实我这儿写的也很扯蛋,大家一笑而过就行了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总体思想
  • 主机overlay和网络overlay
  • 分布式网关和集中式网关
  • SDN和分布式控制面
  • 智能网卡和offload
  • DCI
  • 总结
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档