SDN在云计算中的应用与实践

定义

SDN全称为Software Defined Network,软件定义网络。在云计算中,让网络实现多种功能,包括:软件编排、开放API、构建云平台租户组网、支持云原生。使整个计算网络垂直开放,能够有效解决网络资源规模扩展受限、组网灵活性差的问题。

应用场景

租户网络tenant network

不同租户间的资源相互隔离,每个租户独享私有网络,一个租户可以在自己的私有网络内创建多个子网。租户可以创建虚拟路由器vrouter,将虚拟网络virtual network和外部网络external network连接起来。

跨数据中心网络

在传统大二层网络中,采用SDN技术,可以将分布在不同数据中心的资源,跨中心整合在同一个网络内。多用于跨数据中心业务容灾,或用于跨数据中心灵活调配资源。

网络虚拟化

通过SDN的可编程方式,可以在很短的时间内,实现交换机、路由器、防火墙、QoS、负载均衡等网络设备的整合。

平面划分

把行驶路线作为对比:由于乘客只关心目的站点的到达,所以只需记住乘坐某某交通工具即可,不关心具体路线、交通状况等其他因素。


城市的公路、辅路、高架桥等基础设施为underlay网络;公交车的具体行驶路线为overlay网络。

underlay网络

物理网络,由交换机、路由器等设备组成,负责传递数据包,使用路由协议确定ip地址的连接。

overlay网络

虚拟网络,使用网络虚拟化技术,在物理基础设施之上构建的逻辑。

OpenFlow

在Open Networking Foundation SDN方案中,OpenFlow充当南北向接口,使控制平面control plane、数据平面data plane交互的协议。

Flow就是具有相同特征的数据包集合。例如,源mac地址1、目的mac地址2的所有数据包集合就可以视为一条流,可见流具有方向性。

流表

Flow Table由若干条流表项Flow Entry组成,用于指导OF交换机对收到的数据包进行转发,相当于统一了二层的mac地址表、三层的路由表。

流表项

匹配域Match Fields:定义以及匹配流表的依据,拥有多个可选字段,例如可以根据源ip地址、目的ip地址来定义一条流;

指令Instructions:处理流的动作,最普遍的动作集Action Set(添加、修改、清空);

优先级Priority:流表项的优先匹配程度;

计数器Counters:统计该条流的信息;

生存时间Timeouts:流表项的有效存活时间;

Cookie:控制器设置的、用来过滤被动作集Action Set影响的流表项;

过程对比

传统网络

二层:生成arp表,数据包成功匹配,则基于目的mac地址转发,失败则向除入端口外其他所有端口转发;

三层:分布式路由协议,数据包成功匹配相应的路由规则,则基于目的ip地址转发,失败则丢弃;

结论:采用基于数据包独立转发的模式,设备不知道具体路径,发送给大致知晓的其他设备。

SDN

控制层:SDN控制器构建流表;

数据层:OF交换机先向SDN控制器查询流表,再转发数据包,匹配成功则基于匹配域(比如源地址、目的地址)转发;匹配失败时,则问询SDN控制器;

结论:基于流进行转发的,对相同特征的数据包集合采用同样的处理,设备知晓最佳路径。

详细举例

1、OF交换机接收ip数据包;

2、OF交换机解析数据包头部并查询流表,由于流表为空,向控制器询问;

3、OF交换机向控制器发送Packet-In消息;

4、控制器计算主机1到主机2的路由;

5、控制器下发由FlowMod消息承载的流表信息,OF交换机加载流表;

6、控制器发送Packet-Out消息,指示OF交换机按照流表转发IP数据包;

7、OF交换机转发数据包;

EVPN

evpn运行在控制面,负责虚拟网络的管理和控制,通过BGP协议来学习跨数据中心的mac地址、路由表,支持多租户隔离、高效的数据转发等。

路由类型

Type-2路由:用于通告mac地址。每个 Type-2 路由包含一个mac地址、一个vtep的ip地址,用于指示该mac地址所在的vtep;

Type-3路由:用于租户隔离,直接通告二层vlan信息,并不直接携带隧道的相关信息,但配合Type-2路由,间接实现vxlan隧道的建立和维护;

Type-5 路由:用于通告三层ip前缀信息。每个Type-5路由包含一个ip前缀和下一跳ip地址,用于指示路由信息。

二层arp表

学习:EVPN通过BGP通告mac地址,使得不同数据中心的设备能够了解到对端的mac地址及其对应的VTEP;

分发:当一个数据中心内的设备发送一个arp请求或广播帧时,EVPN通过BGP协议将mac地址分发出去,从而实现跨数据中心的二层通信;

三层路由表

ip前缀学习:EVPN通过BGP学习不同数据中心之间的ip前缀信息;

路由分发:EVPN 可以将三层路由信息(ip前缀、下一跳)分发到其他数据中心,从而实现跨数据中心的三层通信;

vxlan

vxlan运行在数据面,负责数据包的封装和传输。使vm、pod可以在不同的物理数据中心之间迁移,而不需要改变其二层网络配置。

VTEP

隧道端点Tunnel Endpoints,运行vxlan的边缘设备,可以是网络设备、服务器、虚拟机、pod,是隧道的起点和终点,负责数据包的封装和解封装。

VNI

网络标识符Network Identifier,可以将一个VNI对应一个租户身份,容量空间总共有2^24=1600万个实例。

BD

桥域Bridge Domain,类似传统网络中采用vlan划分广播域。VNI与BD一一对应,一个BD就表示着一个桥域,同一个BD内的主机就可以进行二层互通。

BDIF

桥域接口Bridge Domain Interface,作为某BD的网关,提供三层转发接口。如果数据包从某二层广播域出去,必须经过BDIF。

NVE

网络虚拟化边缘节点Network Virtualization Edge,是实现网络虚拟化功能的物理设备。在三层网络建立的基础上,实现二层网络。

数据包结构

VTEP将运行在overlay的内层原始二层数据包(绿色),先添加vxlan包头(黄色),然后添加上外层UDP数据包头(蓝色),在underlay网络传输,到达目的VTEP,收到数据包后,依次剥离外层的ip包头、UDP包头,通过vxlan的VNI发送给对应的BD桥域,接收原始二层数据包。

抓包举例

可以看出:overlay的数据包通过VXLAN建立隧道后 ,从underlay网络的10.2.12.18传递到10.2.12.10,从而实现192.168.0.102、192.168.0.108的跨设备二层打通。

相关推荐
dessler1 小时前
云计算&虚拟化-kvm-扩缩容cpu
linux·运维·云计算
学Linux的语莫2 小时前
Ansible Playbook剧本用法
linux·服务器·云计算·ansible
cloud studio AI应用5 小时前
腾讯云 AI 代码助手:产品研发过程的思考和方法论
人工智能·云计算·腾讯云
何遇mirror20 小时前
云原生基础-云计算概览
后端·云原生·云计算
嚯——哈哈21 小时前
轻量云服务器:入门级云计算的最佳选择
运维·服务器·云计算
请你喝好果汁6411 天前
Kingfisher 下载ENA、NCBI SRA、AWS 和 Google Cloud)序列数据和元数据
云计算·aws
九陌斋1 天前
如何使用AWS Lambda构建一个云端工具(超详细)
云计算·aws
嚯——哈哈1 天前
AWS云服务器:开启高效计算的新纪元
服务器·云计算·aws
徒步僧1 天前
ThingsBoard规则链节点:AWS SNS 节点详解
云计算·aws
九河云1 天前
如何对AWS进行节省
大数据·云计算·aws