1. IPIP
IPIP(IP-in-IP)是一种网络协议封装技术,它允许将一个IP数据包封装在另一个IP数据包中进行传输。这一过程也称为IP隧道技术,主要用于在网络之间传输数据包,尤其在需要跨网络边界传递数据,或者需要绕过某些网络限制时特别有用。IPIP隧道可以用来创建一个虚拟的直连通道,使得两个不同网络段的节点可以直接通信,而不需要在每个中间网络节点上配置特定的路由规则。
1.1 IPIP的工作原理
在IPIP隧道中,原始的数据包(称为“payload packet”)被当作新数据包(称为“encapsulating packet”或“tunnel packet”)的数据部分。这个新数据包的IP头部包含了隧道两端的IP地址,即隧道入口点(源IP)和出口点(目的IP)。这样,原始数据包就可以通过隧道穿越那些原本可能因为路由限制而无法直接到达的目的地。
1.2 应用场景
跨网络通信:当两个网络没有直接的路由可达性时,可以通过在两个网络的边缘路由器上配置IPIP隧道,使它们看起来像是直接相连的,从而实现通信。
安全性和隐私:隧道可以提供一定程度的隐私保护,因为封装后的数据包对外部观察者而言只是一个普通的IP数据包,内部的源和目的地址被隐藏。
虚拟专用网络(VPN):IPIP是构建点到点或点到多点VPN的基础之一,常用于企业内部网络的远程分支互联。
云计算和容器网络:在云计算和容器编排平台(如Kubernetes)中,IPIP隧道被用来创建覆盖网络,以便在不同物理网络上的容器能够相互通信,同时保持网络策略和隔离性。
1.3 注意事项
MTU问题:由于封装增加了额外的IP头部,可能会导致原始数据包的总大小超过链路的MTU(最大传输单元),从而需要进行IP分片,这会降低网络效率。因此,配置适当的MTU值是必要的。
性能影响:相比于直接的IP传输,IPIP封装和解封装过程会增加一定的处理延迟。
安全性:虽然IPIP可以提供一定程度的隐私,但隧道本身并不提供加密,因此对于需要高度安全性的应用,通常会结合使用IPSec等加密协议。
2. Vxlan
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)是一种网络虚拟化技术,旨在解决大型云数据中心和多租户环境中传统VLAN(虚拟局域网)技术的局限性。VXLAN通过在UDP(User Datagram Protocol)之上封装第二层以太网帧,实现在第三层(IP)网络上的二层网络扩展,从而允许创建多达1600万个隔离的虚拟网络,远超VLAN的4096个网络限制。
2.1 工作原理
封装与解封装:VXLAN的核心在于其封装机制。它将原始的以太网帧(包含源MAC地址、目的MAC地址和数据)封装在一个UDP报文中,UDP报文又封装在IP报文内。封装后的报文可以在现有的三层网络基础设施上传输,而底层网络只需识别外层的IP报文,无需理解内部的VLAN信息。
VNI(VXLAN Network Identifier):每个VXLAN网络都有一个唯一的24位VNI标识符,这使得数百万个VXLAN网络可以共存于同一个物理网络中,每个VNI对应一个独立的二层隔离域。
VTEP(VXLAN Tunnel End Point):VXLAN隧道的起点和终点,通常是网络设备(如交换机、路由器或服务器上的软件)负责封装和解封装VXLAN帧。VTEP通过UDP建立隧道,使得二层通信能够跨越三层网络。
多租户和网络隔离:VXLAN非常适合多租户环境,因为它提供了极高的网络隔离能力,每个租户的应用可以拥有独立的VXLAN网络,彼此之间完全隔离,同时共享底层物理基础设施。
2.2 应用场景
云计算环境:在公有云和私有云中实现资源的灵活分配和租户间隔离。
数据中心间互联:通过VXLAN隧道连接不同地理位置的数据中心,扩展二层网络范围。
网络虚拟化:在虚拟机和容器密集的环境中,为每个应用或服务提供独立的网络平面。
2.3 优势
扩展性:极大扩展了二层网络的规模,支持数百万个逻辑网络。
网络灵活性:通过第三层网络自由移动二层网络,实现了数据中心间的无缝迁移。
多租户隔离:为每个租户提供独立的网络,提高了安全性。
与现有网络兼容:不需要对现有网络基础设施做重大改动,只需在边缘设备(VTEP)上实施VXLAN。
3 Calico选择IPIP还是Vxlan
3.1 IPIP(IP-in-IP 隧道)
适用场景:当您的所有节点位于单一或连续的IP子网中,且底层网络支持BGP时,IPIP 是一个不错的选择。它更轻量,只有 20 字节的额外头部开销,因此提供了更好的网络性能。
优点:性能较高,配置相对简单,适合规模较小或中等、网络环境较为简单的场景。
缺点:对于跨不同子网的部署不够灵活,需要底层网络支持IP转发,并且所有节点的IP地址需要规划在同一网段或有正确的路由配置。
3.2 VXLAN
适用场景:当您的节点分布在不同的子网或需要更强大的网络隔离能力时,VXLAN 更为合适。它支持大规模网络部署,且不依赖于节点间必须处于同一子网。
优点:提供出色的网络扩展性和多租户隔离能力,能够在不同的三层网络间传输二层流量,适合大型、复杂或云原生环境。
缺点:相较于 IPIP,VXLAN 每个数据包有更高的封装开销(约 50 字节),可能略微影响网络性能,尤其是对于小包传输。配置和维护也更为复杂。
3.3 小结
网络规模与拓扑:如果您的网络规模较小且拓扑简单,优先考虑 IPIP 以获得更好的性能。
隔离需求:如果您需要高度的网络隔离或多租户支持,VXLAN 的灵活性和扩展性更优。
底层网络限制:考虑您的底层网络设备是否对 IPIP 或 VXLAN 有特定的支持要求或限制。
性能与复杂度权衡:如果性能是首要考虑,且网络环境允许,IPIP 是更直接的选择;若需灵活扩展和隔离,则倾向于 VXLAN。