VXLAN 用VNI来标识vlan,有24位,大约是1600万个
而VLAN用VLAN id来标识vlan,只有12位。
在spine和leaf之间用三层协议的原因是OSPF收敛快,而且三层路由有负载分担的功能,也便于横向扩展。
leaf有三种:
IaaS,PaaS,SaaS
VDC,分配给租户的资源配额
LAG:链路聚合
VPC,虚拟私有云
VTEP,vxlan的角度,隧道的端点,两个VTEP可以确定一条VXLAN隧道,每个NVE至少有一个VTEP。VTEP的ip就是封装后的源、目的ip。给我的感觉是NVE是个设备,VTEP是一个VXLAN的端点。
NVE,隧道的起点(用于解封装?),是两层网关(vlan->vxlan/vxlan->vlan),虚拟化实现的角度,是指哪个设备来实现。要是host overlay,NVE就是距离虚机最近的vs,要是network overlay,NVE就是距离服务器最近的leaf。
把sdn控制器的功能放到openstack中固然可以,但是耦合程度就大了,open stack平台和控制器一体化了(捆绑销售)不太好。
交换机在不在机柜里面:
TOR:上图左
EOR:上图右
underlay:物理网络,设备和线路都已经配好,是不变的
overlay:按需定制的虚拟化网络–可由SDN来实现,给租户用的,VMs间互通的安全隔离的网络环境,是动态的
如果没有隧道(overlay),那么由于ip fabric是三层的,而服务器到leaf是二层的trunk,那么就成了孤岛,没法和与其他leaf连接的服务器/防火墙/LB互通。
bridge-domain(好像华为在用这个,其他的不清楚):将vlan和vxlan联系起来,只在本地有意义,可以在本地绑定一个/多个vlan(不推荐),然后再通过vxlan隧道和其他leaf下的VMs相连,用子接口终结的方式。
有两种配置的方式:
水平分割:leaf1与leaf2、leaf3都有相同的vxlan vni隧道,现在leaf1发送一个广播,会到达l2和l3,那么l2收到后不会继续向l3广播,防止环路出现。
设上图三台leaf全互联5010vxlan隧道已经配置完毕:
上表也叫头端复制表
接下来主机1.1向1.2发送数据,那么1.1首先会查转发表,发现没有1.2的mac地址,所以要发送arp(目标mac全f)请求。经过vswitch到leaf1,发现这个包是vlan10的,因此进到bd10,再到5010。接下来5010会泛洪,如果leaf1下面的接口还有连接5010的也会一并发出,此外还会向leaf2和leaf4泛洪。leaf4收到后继续向和5010绑定的bd泛洪,没有命中1.2因此不做响应,但这时leaf4会有一条关于1.1的记录(自学习):
leaf2也受到了arp请求,解封装进到bd10,bd10再进到vlan10,vlan10泛洪,1.2响应(单播响应):目标mac M1,源mac M2,又走到了leaf2,接着查表,刚才1.1的arp请求已经到过leaf2,因此leaf2也会学习到1.1的信息。因此会继续将这个回复发给leaf1,收到后解封装,查表,发现有1.1的信息,因此arp完成。
所以1.1知道了1.2的mac地址M2,现在ping1.2就可以了,报文格式是:
这个消息到了leaf1之后,会直接发给leaf2(因为刚刚1.2的回复消息经过leaf1已经被学习了)
leaf交换机由于下面接服务器(二层),上面接ip fabric(三层),所以里面的桥表有两种:
注意BUM帧,这些都是需要广播/多播的。头端复制,有多少个隧道就向相应的VTEP发送单播帧,这样底层不需要开启多播,甚至不支持多播也可以。
下图中的1.1想访问2.1,流程是怎样的?
目前的猜想是:1.1想访问2.1,首先要知道2.1的MAC地址,因此1.1发出一个arp请求报文,源ip是1.1,目标ip是1.254,源MAC为M1,目的MAC为M2。发给leaf1,leaf一看ip为1.1,因此判定属于vlan10,而vlan10与bd10(假设已经配置好)与vxlan5010联系,因此会将这个arp请求泛洪到所有VNI=5010的隧道,收到这个arp请求的有:
现在同属租户A的设备如上图,1.1想访问3.1,用分布式网关,应该怎么走?经过几个路由器?
VXLAN的RFC中需要组播路由,但现在支持这种实现的网络很少,因此需要其它的一些方法,例如:
VXLAN、EVPN、NVGRE等等都是虚拟化网络的一种实现,而SDN基于物理设备定义虚拟化网络。
用户点击服务->云os(openstack)->驱动SDN来构建overlay。
云os可以驱动不同的SDN控制器,但前提是云os要有纳入异构SDN控制器的能力。
IRB:集成路由桥接(既路由又交换)
对称
非对称:EVPN(使用BGP),是vxlan的数据平面,生成三张表:
Type2负责传自己的交换机或VRF学到的信息,Type3负责传vxlan号和回环地址(用于BUM帧,相当于之前的头端复制,只不过现在是通过协议动态的配置了)
是用tcp的,由于传输的都是一些控制信息,因此有时需要用TLS加密。
三种类型的报文:
packetin/out:数据/控制报文的封装
flowmod:配置流表
三种消息类型:
controller-to-switch,asynchronous(异步),symmetric(对称),第一个由控制器发起,第二个由交换机发起,第三个都可以发起
在x86服务器上实现的4-7层的网络功能,用虚机来实现,而不是在物理防火墙上虚出多个虚墙(网络虚拟化?)
在这种模式下,交换机是ce交换机(里面有传统网络的2、3层功能,也有支持openflow的功能),而且南向协议也不止是openflow,还有NetConf、SNMPV3(上面这些是在数据中心中)
南向协议分类:
如果是VMware的V center,那么虚机就是ESX;如果是华为的VRM,那么虚机就是CNA。
基于ovs开发,功能比ovs强大了很多(使用dpdk),是在服务器上运行的,但华为更希望交换机在TOR上,因为专用的交换机芯片更强大。
就要用到BGP+EVPN来将每个leaf后的VMs位置发布到网络中。
华为现在的数据中心中,SDN的of协议已经不怎么用了(似乎hybrid overlay中还要用of协议来同步VMs间的位置信息,以及主机overlay场景中,由于BGP不能在服务器上配置,所以还需of来下发位置信息),现在主要用NetConf来推配置。
DVR,分布式虚拟路由,分以下两种情况讨论:
AVR:南北网关,是虚拟的路由器(也是在服务器上),vxlan经过它就能访问外网?
OSPF、ISIS、BGP
OSPF和ISIS是链路状态路由协议,拓扑的一点变动就能泛洪到全网。
BGP又分IBGP和EBGP,是矢量路由协议,隔离、控制比较方便。
MALG在leaf到server之间用,LAG在leaf和spine之间用
分为共有和私有:
一个VPC想访问另一个VPC要穿过自己的和另一个VPC的防火墙