Calico 简介

查看原文

Calico 是构建数据中心网络的技术,它不使用 Overlay Network 技术,而采用 Pure Layer 3 的方式,可以做到更简单,更大容量,性能更好更高效。具体做法是用 BGP 做路由,用纯 IP 网络排线。它可以和 OpenStack & Docker 这些编排系统无缝结合。他不需要在 Layer 2 的数据报文里面再额外封装东西(Packet encapsulation)。也不需要再做 NAT,隧道,VRF 表等等等等。

普通的 Overlay Network 要在实际的 payload 外面包上好些个信息,例如 Outer MAC, Outer IP, Outer UDP, VXLAN, VM MAC, VM IP, VM TCP/UDP 等等。这一层一层包起来,每层都要 debug 体验很不好。跨数据中心需要配置 inter-dc tunnels。引入 VLAN,隧道还会导致 state-heavy,不利于扩展。links 还需要额外的高可用/负载均衡保障。

Calico 在数据包上要封装的层简化成了 Host MAC, VM IP, VM TCP/UDP。Overlay Network 中的 vSwitch 这个方案里面就不需要了,取而代之的是每个节点上部署 vRouter;vRouter 基于 Linux Kernel 提供的 L3 转发,此外它也配置 security policy 做 ACLs。vRouter 使用 Border Gateway Protocol (BGP) 互联,为数据包寻找最好的路径。

在这样的系统里面 debug,就是简单的 ping traceroute 即可。系统节电的 CPU / network 压力也小。要让外部访问到节点,简单地分配一个公网 IP 即可。Calico 保证 host 总是可以得到下一个 hop 的 MAC 地址。如果想要 Provision 新的连接进来,Calico agent 加一条规则到 routing table 里面,BGP client 可以感知到并会分发到其他相邻的节点去。