前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器网络硬核技术内幕 (16) 燕归来

容器网络硬核技术内幕 (16) 燕归来

作者头像
用户8289326
发布2022-07-28 08:56:36
2290
发布2022-07-28 08:56:36
举报
文章被收录于专栏:帅云霓的技术小屋

上一期中,我们提到了,由于基于etcd的flannel存在种种限制,硬件SDN方案的开发工程师们研究出了通过CNI插件,让基于EVPN + 硬件VXLAN网关的硬件SDN方案能够通过CNI插件,适配Kubernetes容器编排平台。这一类型的硬件SDN方案,最经典的有CISCO的ACI和H3C的SeerEngine。

由于CISCO的ACI中,私有协议的实现过多,我们先以SeerEngine SDN控制器为例:

假设我们已经熟悉了基于EVPN和VXLAN的硬件SDN方案,实际上可以很轻松地对二者做出对比——

  1. 对于OVS (宿主机或Node上的软件虚拟交换机)的配置:SeerEngine对接Neutron时,这一操作由OVS提供给Neutron的ML2 Mechanism Driver实现,而SeerEngine对接Kubernetes时,Kubelet在创建POD时,通过CNI的ADD操作,向SeerEngine传递POD的IP地址、网段等关键参数。SeerEngine控制器向OVS下发配置。
  2. 对于TOR和核心交换机的配置:SeerEngine对接Neutron和对接Kubernetes时,均由SeerEngine向TOR和核心硬件交换机下发EVPN等配置。

而这种方案的转发平面,与虚拟机体系中的转发平面类似。

我们先看同一个node内,两个pod之间的二层转发:

可见,这种情况下,OVS就可以自行搞定Node内转发,与其他方案别无二致。

当两个POD不在同一个VLAN(当然,也不在同一个网段)的情况:

如图,OVS会将来自VLAN 100的数据包增加VLAN 100的TAG,送到硬件交换机,进行三层转发,带着VLAN 200的TAG送回OVS,OVS剥离VLAN TAG送到目的POD。回程数据包也类似。

这种情况下,未知数据包的MAC/ARP学习过程,实际上和普通三层交换机的转发流程也是类似的。

再让我们看看复杂的跨TOR转发:

如图,两个POD都在VLAN 100中,但位于两个不同的TOR下。假设这两台TOR的underlay为10.1.1.254和10.1.2.254。

来自POD的数据包会在OVS上打上了VLAN 100的TAG送到TOR。由于TOR上配置了VLAN 100到VXLAN1001的映射关系,TOR会将这个数据包封装进VXLAN 1001。对端TOR解封VXLAN数据包,并将带着VLAN 100的数据包送到目的POD所在的Node上的OVS。目的Node上的OVS剥离VLAN,并将数据包送到目的POD,完成了二层转发的过程。

跨TOR的三层转发则采用分布式网关 + 对称IRB的实现:

如图,假设POD 100和POD 200分别在VLAN 100和VLAN 200,它们所在的TOR交换机的IP地址分别为10.1.1.254和10.2.1.254。

TOR交换机上配置的VLAN-VXLAN映射关系为VLAN 100-VXLAN 1001, VLAN 200-VXLAN 1002;

由于采用了对称IRB模型,需要公用的L3VNI,这个VNI的编号假设为8001;

POD 100向POD 200发送的数据包,在OVS上加上了VLAN 100的TAG。VLAN 100在TOR上映射到VXLAN 1001。

由于这是一个跨网段转发的数据包,目的MAC为VSI的MAC (对应的分布式网关IP为10.10.100.254),数据包会被送到VSI 1001处理,进入三层转发流程。

TOR交换机查找目的IP,发现这是一个VXLAN 1002的IP地址,并且目的IP在远端TOR,它会做一次VXLAN RIOT,通过VXLAN的VNI为L3VNI 8001的VXLAN隧道,送到远端TOR 10.2.1.254。

远端TOR 10.2.1.254收到这一数据包后,查找路由表,并根据路由表做RIOT,将VXLAN的VNI替换为1002,然后映射回VLAN 200,剥离VXLAN头部,送到目的OVS,并最终被送到目的POD。

这样一看,SeerEngine控制容器网络时,转发平面的机制实际上与接管虚机+OpenStack Neutron网络的机制是一致的。

这正是:似曾相识燕归来!

这样一来,我们还可以赋予容器网络更多扩展的能力。

敬请期待下期。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档