VTN SFC功能

SFC(Service Function Chaining),即服务功能链,该功能可将不同网络服务灵活的连接起来。可以任意改变网络链路路径,控制云主机的网络流向,一般配合NFV(网络功能虚拟化)使用。
Mininet环境准备
VTN的SFC功能试验场景:通过mininet模拟虚拟主机和虚拟服务,调用VTN接口修改网络链路及下发流表策略。试验拓扑如下:

如图构建该场景,srvc1虚拟服务作用是延迟200ms,srvc2虚拟服务作用是延迟300ms。拓扑脚本如下sfc.py:

构建mininet拓扑:

添加流规则:

安装brctl工具:sudo apt-get install bridge-utils配置mininet(主要是配置srvc1延迟200ms,srvc2延迟300ms):

配置VTN
VTN的虚拟网络拓扑如下图所示:

修改VTN的拓扑

创建vtn

创建控制器

创建虚拟桥

创建虚拟接口

创建接口映射

创建流条件:dst=host22

为流条件设置属性为drop

服务链设置
在之前的基础上,为主机添加服务链,使得主机的流量通过srvc1_1及srvc1_2。服务链流向拓扑如下图所示:

下面调用接口来实现。

创建虚拟终端,srvc1_1对应srvc1主机的进终端,srvc1_2对应srvc1主机的出终端。

为虚拟终端创建接口

创建接口映射,和实际的of交换机接口映射。

创建流条件:目标为host22

创建流条件,所有匹配cond_1数据包,即目标地址为10.0.0.4(h22)。

创建流过滤规则,这里的作用是将srvc1_2的流量重定向到h22主机,即从srvc1出来的流量将到达h22主机,这里还有匹配条件为cond_any,即只有目标地址为h22的数据包才匹配该流表项。

创建流过滤规则,这里将h12的流量重定向到srvc1_1,条件是如果数据包的目标地址是h22。

此时sfc引流已经成功,进行测试:

引流前:

引流后:

可以看到time多了200ms,因为srvc1的作用就是延迟200ms。

查看流表项,进行分析:

其中02:21:37:91:ac:c0是h12的mac,ae:33:fc:c2:05:3a是h22的mac。s1的2号端口是s1-eth2(连接h12),3号端口是s1-eth3(连接s2-eth4),4号端口是s1-eth4(连接s3-eth2),由此可分析s1的流表,第一条的作用是从2号口进来(h12出去)的访问h22的数据包,将从3号口出去,即被发送到s2交换机,这条流表的优先级是11(这是之前遗留的流表,即还没有添加重定向规则的)。第三条流表和第一条基本相同,但是其优先级高是12,并且多了条件如果目标地址是10.0.0.4(h22),将被发送到4号口(s3-eth2),这就是重定向的规则。

查看s3交换机的流表,s3的2号口是s3-eth2(连接s1-eth4),3号口是s3-eth3(连接srvc1-eth0),第二条流表的作用是入口是2号口,源mac是h12,目标mac是h22,且目标地址是10.0.0.4的数据包,被发送到3号口,即到达srvc1主机,这样就完成了1阶段的重定向。这里srvc1-eth0和srvc1-eth1是桥接模式,所以流量将会到达srvc1-eth1(连接s4-eth3)。

查看s4交换机的流表,s4的3号口是s4-eth3(连接srvc1-eth1),1号口是s4-eht1(连接s2-eth5),第二条流表的作用是入口是3号口,源mac是h12,目标mac是h22被发送到1号口,即到达s2交换机。

查看s2交换机的流表,s2的4号口是s2-eth4(连接s1-eth3),2号口是s2-eth2(连接h22-eth0),第一条流表的作用就是将s2-eth4进入且源mac是h12目的mac是h22的数据包发送给h22主机。

这些流表项的过期时间都是300秒,过期后会重新向sdn控制器请求规则。

添加第二个服务srvc2进入sfc链路,即h12->srvc1->srvc2->h22。

创建虚拟终端,srvc2_1对应srvc2主机的进终端,srvc2_2对应srvc2主机的出终端。

为虚拟终端创建接口

创建接口映射,和实际的of交换机接口映射。

创建流过滤规则,这里的作用是将srvc2_2的流量重定向到h22主机,即从srvc2出来的流量将到达h22主机,这里还有匹配条件为cond_any,即只有目标地址为h22的数据包才匹配该流表项。

修改流过滤规则,这里将srvc1_2的流量重定向到srvc2_1,条件是如果数据包的目标地址是h22。

这样就把服务srvc2也加入到sfc中,验证发现延迟变成500ms。

h12到h23不会受到任何影响。

查看流表


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

登录后才可以评论

杨振宇 发表于16-03-04
3