目录
3.2.3、以实例分析在Vxlan数据包转发过程中流经各节点发生的变化
????????SDN,(software Defined Networking )即软件定义网络
????????广义概念:泛指向上层应用开放接口,实现软件编程控制的各类基础网络架构,涉及技术包括:OpenFlow、以Vxlan为代表的Overlay技术、I2RS,并有越来越多的技术纳入到SDN范畴。
? ? ? ??狭义概念:将网络控制功能与转发功能分离,实现控制可编程的新兴网络架构。
????????如下图,如果想从A访问D,那么就需要对ABCD每个设备配置路由协议。当B到C的流量满载后,传统网络并不会自动调整路由,如果此时想通过A-B-E-F-D路由实现访问,同样需要对每个设备配置转发策略。
? ? ? ? 可以看出,传统网络存在三大问题:
? ? ? ? 1)管理难、部署难。各厂商配置命令不一,且无法统一管理;
? ? ? ? 2)流量控制难。缺少控制大脑对全网链路流量动态调整;
? ? ? ? 3)无法灵活调控。无法便捷编程进行借口调用。
? ? ? ? SDN能够完美解决上述传统网络存在的问题,其具有以下三大特征
? ? ? ? 1)转控分离。将控制层面集中控制器统一控制;
? ? ? ? 2)软件与硬件解耦。不再局限硬件设备只能部署某个厂商的网络操作系统;
? ? ? ? 3)业务与网络解耦。实现新业务快速上线。
????????以道路交通为例,如下图
? ? ? ? 3+2架构:3层架构,2个接口
? ? ? ? 第1层:开放可编程接口的应用层,主要实现网络业务的抽象,允许用户以自定义的方式对网络业务进行编程;
? ? ? ? 第2层:实现集中化网络控制的控制层,整个网络的控制中枢,管理转发设备的运行状态和数据转发;
? ? ? ? 第3层:专注于数据转发的转发设备层,基于控制层指令完成数据处理和转发的设备
? ? ? ? 三层架构之前形成了2个接口,以控制层为核心,控制层与应用层之间的接口为北向接口,控制层与转发设备层之间的接口为南向接口。
? ? ? ? 北向接口是网络开放的核心,主要为http,restful
? ? ? ? 南向接口是集中控制的基础,主要为openflow,netconf,ovsdb
????????1、按需:用户能够自定义其网络架构和网络分区分域,例如能够自定义网段地址,划分Vlan,设置网关。
? ? ? ? 2、动态:根据用户的需求能自动化部署网络资源,并能支持客户随时频繁地调整。
? ? ? ? 3、安全:用户之间能进行隔离,网络边界能进行防护。
? ? ? ? VM:虚拟服务器
? ? ? ? vswitch:虚拟交换机? ? ? ??
? ? ? ? 挑战一:在传统数据中心解决方案中,通常采用Vlan或VRF的技术实现用户虚拟网络的隔离,但是这两项技术都存在用户数最大为4096的限制
? ? ? ? 挑战二:为保障业务平滑迁移上云,用户期望业务规划的私网ip保持不变,会引发不同用户的私网ip地址冲突问题
? ? ? ? 控制平面:南向接口采用openflow协议实现控制
? ? ? ? 数据转发平面:采用Vxlan协议构建overlay叠加网络实现用户网络的安全隔离。
? ? ? ? SDN采用openflow协议会通过SDN控制器下发openflow流表至转发设备指导数据包转发,也就是说,SDN转发网元不在通过三层路由表或二层MAC地址表来完成数据转发,因此,首先要读懂openflow流表。下图为流表的流表项:? ? ??
????????不同厂家流表不一致
????????例1:
????????1)该流表为Table160的优先级为90的流表项内容
????????2)匹配项为ip数据包,目的MAC:fa:16:3f:00:02:d1,目的ip:192.168.1.4
????????3)若是数据包的包头与流表匹配项完全匹配,则执行下面动作:
? ?actions=mod_dl_dst:fa:16:3e:54:20:6a,mod_dl_src:fa:16:3e:2c:f0:e3,strip_vlan,output:3(修改数据包的目的MAC,修改数据源MAC地址,剥掉vlan标签,从交换机的3端口转发数据包)
????????例2:
? ? ? ? 1)该流表隐藏了超时和cookie
? ? ? ? 2)匹配项为数据包来自虚拟交换机的端口2,源MAC:fa:16:3e:83:38:47,目的MAC:16:3e: 54:db:6a,源IP:192.168.100.1/0.0.0.0,目的IP:192.168.100.200/0.0.0.0。
?????????3)若是数据包的包头与流表匹配项完全匹配,则执行下面动作:
actions:set(tunnel(tun_id=0xd33d57,src=0.0.0.0, dst=10.0.6.1, tos=0x0,ttl=64,flags(key))),2
(将数据包封装为VNI=d33d57的vxlan隧道,vxlan隧道的源IP为0.0.0.0,目的IP为10.0.6.1,并从端口2转发出去)
????????Vxlan:可扩展虚拟局域网络,是基于IP 网络,采用“MAC in UDP”封装形式的二层VPN 技术
? ? ? ? VTEP:?Vxlan的边缘设备,Vxlan的封装和解封都在VTEP上进行,两个VTEP之间的点到点的逻辑隧道叫Vxlan隧道
????????Vxlan通过Vxlan ID标识,类似于二层网络中的VLAN ID
? ? ? ? Vxlan数据包在SDN环境中转发模式如下图:
????????Vxlan封装会在原始二层数据桢外添加8字节Vxlan头、8字节UDP头和32字节IP头。
????????8字节Vxlan包头中,主要介绍标记位和Vxlan ID
????????标记位为图中的I位,I位为1,则Vxlan ID有效
????????Vxlan ID(VNI)为24比特,因此支持2的24次方个ID,该Vxlan ID为内层VLAN。
????????外层UDP包头,8字节,Vxlan包含在UDP里面,即“MAC in UDP”,UDP包头中,源端口随机,目的端口固定为4789
? ? ? ? 外层IP包头,18字节,源IP为VTEP隧道的本端IP地址,目的IP为VTEP隧道的目的端IP地址
????????数据包二层包头,14字节,源MAC为VTEP隧道的本端MAC地址,目的MAC为VTEP隧道的目的端MAC地址,VLAN ID为VTEP隧道的VLAN ID,该VLAN ID为外层VLAN。