SDN在云数据中心的应用之VPC产品篇

作者简介:刘瑛,中国移动高级网络运维工程师,负责云数据中心的SDN网络架构设计、运维、优化等工作,具有丰富的运维实战经验。

云数据中心最基础的网络产品就是VPC(虚拟私有云),简单理解就是1个三层路由+若干个IP地址可自定义的网络。一个VPC可允许有多个子网,同子网内部二层互通,不同子网间三层互通。用户在云数据中心订购了一个VPC产品,类似于购买了一台路由器和若干台二层交换机来连接服务器。


在传统网络中分析网络功能,通常是从控制平面和数据转发平面同时入手。在传统网络控制平面中,二层是生成树协议,转发依据是mac地址表;三层是路由协议,转发依据是路由表。数据包基于网络设备中mac表和路由表来完成数据转发。为了便于大家理解,我们也从控制和转发两个方面来分析SDN云数据中心的VPC产品实现。在SDN控制平面,比较常见的控制转发依据是openflow流表;数据转发平面是vxlan协议封装。下面我们来分析SDN云数据中心网络设备的流表如何指导数据包转发及vlan/vxlan的封装过程,以便更好的理解SDN技术原理。

一、必须掌握的基础知识

1、具备看懂流表的能力

OpenFlow流表是常用的SDN云数据中心转发依据。要搞明白控制转发机制,首先就得具备读懂流表的能力。流表由很多个流表项组成,每个流表项就是一个转发规则。每个流表项由匹配字段、优先级、计数器、指令、超时、cookie这六部分组成。流表项中关键的两个内容是匹配字段和指令。匹配字段包括inport、报文的12元组信息等。指令是用来描述OpenFlow的处理方式,修改数据包的行动集或触发流表的流水线处理。流表的匹配原则是“table0—table255”,优先从table0开始匹配。同一table内部按照优先级匹配,优先级高优先匹配。需要特殊说明一下,不同商业解决方案的流表格式存在一定差异性,但是本质上都是一致的。抓住流表的六要素和流表匹配原则,就能读懂并理解不同厂家的流表。

以某商业解决方案的两个流表项为例,说明下流表的含义:

这是table160的一个优先级为90的流表项内容,它的匹配项是“IP数据包,目的MAC地址是fa:16:3f:00:02:d1,目的IP地址是192.168.1.4”,若是数据包的包头与流表匹配项完全匹配后,则执行下面动作“修改数据包的目的MAC地址为fa:16:3e:54:db:6a,修改源MAC地址为fa:16:3e:2c:f0:e3,剥掉vlan标签,从交换机的3端口转发数据包”。

这是table200的一个优先级为90的流表项内容,它的匹配项是“vlan id是6,目的MAC地址是d4:94:e8:5b:4e:01”,若是数据包的包头与流表匹配项完全匹配后,则执行下面动作“剥掉vlan标签,将数据包封装为vni为20060的vxlan隧道,隧道的源IP地址是10.0.5.245,隧道的目的IP地址是10.0.3.45,从交换机的2端口转发数据包”。

下面给出了常见的匹配字段和动作,供参考。

Match field

说明

in_port

Switch input port

dl_dst

Ethernet destination address

dl_src

Ethernet source address

dl_vlan

VLAN id

nw_src

IPv4 source address

nw_dst

IPv4 destination address

tcp_src

TCP source port

tcp_dst

TCP destination port

udp_src

UDP source port

udp_dst

UDP destination port

Action

动作

resubmit

跳转表

drop

丢弃

load:$local_vlan->NXM_NX_REG0[0..11]

local_vlan放在寄存器里

CONTROLLER

上送控制器

mod_vlan_pcp

修改vlanpcp

move

将报文的dst设置为src

mod_dl_src

修改目的mac

load

设置某个报文头部的值

output

从指定端口发出

IN_PORT

从入端口发出

set_tun_id

设置vni

2、具备看懂vxlan数据包的能力

在网络运维中,常常会用到wireshark软件进行数据包的抓取和分析,从而进一步分析网络转发平面的运作机制。在SDN云数据中心的数据平面会用到vxlan隧道封装技术,因此需要了解vxlan的数据封装格式,并能够通过抓取的vxlan数据包进行网络分析。

以下是wireshark的一个vlan数据包示例。这是一个ICMP(ping)数据包。Ethernet 是以太网封装,src为源mac地址,dst为目的mac地址。Internet是IP层封装,src是源IP地址,dst是目的IP。

我们来看一个vxlan数据包的wireshark示例。这也是一个ICMP(ping)数据包,跟vlan数据包相比,多了一层数据封装。。Vxlan隧道的源IP地址是10.0.3.45,目的IP地址是10.0.5.169,隧道的VNI标识是20022。原始数据包的源IP地址是114.114.114.114,目的IP地址是192.168.1.4.

二、控制和转发的联动分析

物理服务器上的虚拟交换机是SDN云数据中心较为常用的网络设备。需要特殊说明一下,在不同商业解决方案中,流表内容和用户流量/vxlan映射关系存在一定差异性。下面以一个商用虚拟交换机的流表和数据包为例,抛砖引玉,分析vpc产品的技术实现。

1、同子网虚拟机的流量互访:


(1)控制平面:分别查看PM1和PM2虚拟交换机的流表。
PM1的虚拟交换机有如下流表:

这条流表的含义是:流表的匹配字段是“数据包来自虚拟交换机的端口5,源MAC地址(src=fa:16:3e:79:b7:62),目的mac地址(dst=fa:16:3e:eb:2b:1e),源IP地址(192.168.1.3),目的IP地址(192.168.1.5)”,若是数据包完全匹配,则执行的指令是“将数据包封装为VNI为3257333的vxlan隧道,vxlan隧道的源IP为自身,目的IP为10.0.4.84,并从端口6转发出去”。

PM2的虚拟交换机有如下流表:

这条流表的含义是: 流表的匹配字段是“vxlan数据包的VNI为3257333,vxlan源IP地址(10.0.4.119),vxlan目的IP地址(10.0.4.84),数据包来自OVS的端口6,原始数据包的源MAC地址(src= fa:16:3e:79:b7:62),目的mac地址(dst= fa:16:3e:eb:2b:1e),源IP地址(192.168.1.3),目的IP地址(192.168.1.5)”,若是数据包完全匹配,则执行的指令是“将数据包解封,并从端口5转发出去”。
(2)转发平面:分别在PM1和PM2上OVS的tap1和bond1口进行抓包分析,分析“数据包经过虚拟交换机后做了哪些变化”。
PM1的tap1的数据包格式如下,是vlan格式:

PM1的bond1的数据包格式如下,是vxlan格式:

PM2的bond1的数据包格式如下,是vxlan格式:

PM2的tap1的数据包格式如下,是vlan格式:

通过对上面四个节点的数据包分析,可以得到:PM1的虚拟交换机对来自VM1的数据包进行了vxlan隧道封装,VNI标识是3257333。在underlay交换机上,基于vxlan 的隧道IP地址完成数据包的转发,对隧道里面封装的VM数据包内容处于无感知状态。PM2的虚拟交换机则是相应的完成的vxlan数据包的解封装过程,并将数据包送至VM2。

2、跨子网虚拟机的流量互访

跨子网通信的控制转发联动原理,与同子网场景下的是一致的,只是在流表内容上有一定差异性。跨子网的流量交互涉及到网关联动处理,存在原始数据包的MAC地址转化,同时vxlan隧道封装的VNI也会不同。以PM1的发送端为例,分析如下。

PM1上的流表:

这条流表的含义是: 流表的匹配字段是“数据包来自虚拟交换机的端口21,源MAC地址(src=fa:16:3e:79:b7:62),目的mac地址(dst=68:54:ed:00:00:36),源IP地址(192.168.1.3),目的IP地址(192.168.8.74)”,若是数据包完全匹配,则执行的指令是“将数据包封装为VNI为3709754的vxlan隧道, vxlan隧道的源IP为自身,目的IP为10.0.4.129,同时修改原始数据包的源地址为(src=68:54:ed:00:00:0c),目的MAC地址为(fa:16:3e:fc:4c:1f),最后从端口6转发出去”。

PM1上bond1的数据包:

从抓包可以看出,VM1的数据包经过虚拟交换机后被封装为vni为3709754的vxlan数据包,与流表的动作集一致。

三、分析

通过前面的流表分析可以看出,承载业务的虚拟交换机不再依赖于传统MAC表或者路由表,而是基于SDN控制器下发的精细流表完成数据包的转发。这对控制器的性能及业务编排能力提出了较高的要求。

通过前面的数据包封装可以看出,在数据中心业务域网络中出现了underlay和overlay两张网络。underlay设备间交互的是vxlan数据包。租户虚拟机流量被封装在vxlan数据包里面,underlay设备不可见。不同vxlan隧道的数据流量是隔离的,满足了云数据中心租户隔离和允许IP地址冲突的需求。

更多SDN在云数据中心的应用请关注视频直播课:当SDN邂逅云计算-SDN在云数据中心的应用。
课程链接:https://edu.sdnlab.com/training/470.html


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19257.html
分享到:
相关文章
条评论

登录后才可以评论

echoliu 发表于17-05-22
4