二层网络模型
物理交换机 有4096个vlan
基于目标mac地址通信,不可夸局域网通信,通常是由交换机实现报文转发。
vlan介绍
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理(交换机)的网络在逻辑上划分成多个广播域的通信技术
- VLAN内的主机间可以直接通信
- VLAN网络外的主机需要通过三层网络设备转发才可以通信
- 因此一个vlan可以将服务器的广播报文限制在一个VLAN内,从而降低单个网络环境中的广播报文,
- vlan采用12位标识vlan ID
- 即一个交换机设备最多为2^12=4096个vlan
三层网络模型
打通不同子网的通信
vxlan介绍
VxLAN: VxLAN全称是Virtual eXtensible Local Area Network(虚拟扩展本地局域网)
主要有Cisco推出,vxlan是一个 VLAN 的扩展协议,是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一
VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输, 即使用MAC in UDP的方法对报文进行重新封装
VxLAN本质上是一种overlay的隧道封装技术,它将L2的以太网帧封装成L4的UDP数据报文,然后在L3 的网络中传输 - 效果就像L2的以太网帧在一个广播域中传输一样,实际上L2的以太网帧跨越了L3网络传输,但是不受L3网络的限制
vxlan采用24位标识 vlan ID号
- 可以支持2^24=16777216个vlan,其可扩展性比vlan强大的多,可以支持大规模数据中心的网络需求
vxlan报文介绍
ssh包举例
容器内发起一个ssh请求
容器内
- 应用层封装 ssh playload
- 传输层 封装 source port, dest post
- 网络层 封装 source ip, dest ip
- 数据链路层 source mac, desc mac
经过vxlan封装
宿主机
- 应用层封装 在前面的包基础上 继续封装
- 传输层 封装 source port, dest post
- 网络层 封装 source ip, dest ip
- 数据链路层 source mac, desc mac
overlay网络简介
Overlay 叫叠加网络也叫覆盖网络
指的是在物理网络的基础之上 叠加实现 新的虚拟网络(即可容器网络)
将容器网络 进行封装 可以在物理网络上实现容器间的通信
- 优点是对物理网络的兼容性比较好,可以实现pod的夸宿主机 跨子网通信。
- calico与flannel等网络插件都支持overlay网络。
- 缺点是有额外的封装与解封性能开销。 可以忽略不计 除非非常大
- 目前私有云使用比较多
VTEP(VXLAN Tunnel Endpoint vxlan隧道端点)
VTEP是VXLAN网络的边缘设备,是VXLAN隧道的起点和终点,
VXLAN对用户原始数据帧的封装和解封装均在VTEP上进行,用于VXLAN报文的封装和解封装,
VTEP与物理网络相连,VXLAN报文中源IP地址为本节点的VTEP地址,VXLAN报文中目的IP地址为对端节点的VTEP地址,
一对VTEP地址就对应着一个VXLAN隧道,服务器上的虚拟交换机(隧道flannel.1 就是VTEP),比如一个虚拟机网络中的多个vxlan就需要多个VTEP对不同网络的报文进行封装与解封装。
查看worker节点的网络设备
VNI(VXLAN Network Identifier)
VXLAN网络标识VNI类似VLAN ID,用于区分VXLAN段
不同VXLAN段的虚拟机不能直接二层相互通信
一个VNI表示一个租户,即使多个终端用户属于同一个VNI,也表示一个租户
NVGRE:Network Virtualization using Generic Routing Encapsulation
主要支持者是Microsoft
与VXLAN不同的是,NVGRE没有采用标准传输协议(TCP/UDP),而是借助通用路由封装协议(GRE)
NVGRE使用GRE头部的低24位作为租户网络标识符(TNI)与VXLAN一样可以支持1777216个vlan
Overlay架构图:
pod通信的例子
1.VM A发送L2 帧与VM请求与VM B通信。
2.源宿主机VTEP添加或者封装VXLAN、UDP及IP头部报文。
3.网络层设备将封装后的报文通过标准的报文在三层网络进行转发到目标主机。
4.目标宿主机VTEP删除或者解封装VXLAN、UDP及IP头部。
5.将原始L2帧发送给目标VM。
underlay简介
Underlay网络就是传统IT基础设施网络,由交换机和路由器等设备组成,借助以太网协议、路由协议和VLAN协议等驱动
Underlay是Overlay网络的底层网络,为Overlay网络提供数据通信服务。
容器网络中的Underlay网络是指借助驱动程序将宿主机的底层网络接口直接暴露给容器使用的一种网络构建技术,较为常见的解决方案有
- MACVLAN
- IPVLAN
- 直接路由等
要求宿主机网络的掩码要大
MAC VLAN模式
支持在同一个以太网接口上虚拟出多个网络接口(子接口),每个虚拟接口都拥有唯一的MAC地址并可配置网卡子接口IP
MAC Vlan工作模式
Private(私有)模式---使用极少
在Private模式下,同一个宿主机下的容器不能通信,即使通过交换机再把数据报文转发回来也不行。
VEPA模式---使用极少
虚拟以太端口汇聚器(Virtual Ethernet Port Aggregator,简称VEPA
在这种模式下,macvlan内的容器不能直接接收在同一个物理网卡的容器的请求数据包,但是可以经过交换机的(端口回流)再转发回来可以实现通信
缺点: 消耗带宽
passthru(直通)模式---使用极少
Passthru模式下该macvlan只能创建一个容器,当运行一个容器后再创建其他容器则会报错。
bridge模式---推荐使用此模式
在bridge这种模式下,使用同一个宿主机网络的macvlan容器可以直接实现通信,
IP VLAN模式
IP VLAN类似于MAC VLAN,它同样创建新的虚拟网络接口并为每个接口分配唯一的IP地址
不同之处在于,每个虚拟接口将共享使用物理接口的MAC地址
网络通信-总结
Overlay
基于VXLAN、NVGRE等封装技术 实现overlay叠加网络。
- flanal
- calico
Underlay(Macvlan)
基于宿主机物理网卡虚拟出多个网络接口(子接口),每个虚拟接口都拥有唯一的MAC地址并可配置网卡子接口IP。
--有点像虚机的桥接模式
需要划分IP地址
kubernetes pod通信总结
Overlay场景
Flannel Vxlan、Calico IPIP、Calico Vxlan
靠隧道打通 不依赖底层网络(意思是 不需要使用物理网络IP MAC)
将pod 地址信息封装在宿主机地址信息以内,实现跨主机且可跨node子网的通信报文。
直接路由
Flannel Host-gw、Flannel VXLAN Directrouting、Calico Directrouting
基于主机路由,实现报文从源主机到目的主机的直接转发,不需要进行报文的叠加封装,性能比overlay更好
pod之间访问 需要在一个子网 不能跨网络
Underlay场景
性能最强
需要为pod启用单独的虚拟机网络,而是直接使用宿主机物理网络,pod甚至可以在k8s环境之外的节点直接访问(与node节点的网络被打通),相当于把pod当桥接模式的虚拟机使用,比较方便k8s环境以外的访问访问k8s环境中的pod中的服务
而且由于主机使用的宿主机网络,其性能最好