calico 网络模型的简单笔记
calico 简单笔记
calico 是一种基础 vRouter 的3层网络模型 (BGP 网络)。 在应用到 k8s 中,可以提到常见的 flannel。 使用节点主机作为 vRouter 实现 3层转发。 提高网络性能。
calico 的网络模型
calico 可以通过设置 IP-in-IP 控制网络模型:
https://docs.projectcalico.org/v3.5/usage/configuration/ip-in-ip
ipipMode=Never
: BGP 模型。 完全不使用 IP-in-IP 隧道, 这就是常用的 BGP 模型。ipipMode=Always
: calico 节点直接通过 IP 隧道的的方式实现节点互通。 这实际上是一种 overlay 网络模型, 可以认为这是一种使用与跨3层通信的妥协。ipipMode=CrossSubnet
: BGP 和 Overlay 的混合模型。通过策略控制在指定的子网内使用 BGP 模型。出子网则使用 overlay。 注意,具体设置还没看,可能是指定的使用 overlay,其他使用 bgp
calico 的缺陷
由于calico的通信机制是完全基于三层的,这种机制也带来了一些缺陷,例如:
- calico目前只支持TCP、UDP、ICMP、ICMPv6协议,如果使用其他四层协议(例如NetBIOS协议),建议使用weave、原生overlay等其他overlay网络实现。
- 基于三层实现通信,在二层上没有任何加密包装,因此只能在私有的可靠网络上使用。
- 流量隔离基于iptables实现,并且从etcd中获取需要生成的隔离规则,有一些性能上的隐患。(待商榷)
calico 与 flannel 等对比
性能对比
https://blog.csdn.net/ganpuzhong42/article/details/77853131 整个过程中始终都是根据iptables规则进行路由转发,并没有进行封包,解包的过程,这和flannel比起来效率就会快多了。
** calico 原理**
** flannel 原理**
由于 calico BGP 模式走的是 3层转发,没有 overlay 网络实现时的封包解包操作。 因此
- 资源消耗上更少(不封包解包,cpu消耗更少)
- 转发效率上更优,带宽消耗更少(包更小)
calico BGP 路由学习
- 在节点较少的情况下, calico 可以使用
mesh
使节点之间两点相连宣告 BGP。 随着节点增多, 连接会呈指数级的增加。 - 当节点较多(30以上),可以使用 BGP 路由反射(BGP Route Reflectors)方式宣告 BGP。 反射模式配置 calico-bgp-rr.md
calico 组件清单
- etcd: 保存路由信息
- Fliex: 管理接口,编写路由,配置 ACLs,报告状态。
- BGP Client:
- BGP Router Reflectors:
- Orchestrator. Plguin: 管理 API
calico 支持的公有云
- 青云: 仅限
同一个私有网络(vxnet)下的主机
。 - AWS: 同子网
- 原文链接:https://typonotes.com/posts/2019/11/26/calico-simple-note/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。