OpenStack 业务链networking-sfc介绍 (1) - 概述
原文链接:https://blog.csdn.net/bc_vnetwork/article/details/65630355
1. Service Function Chain概述
Neutron的SFC (Service Function Chaining, SFC, 业务链)是由华为主导并开发的一个neutron下的服务框架。
其目的是动态建立服务链使不同租户的流量可以按照不同顺序导向不同的服务功能模块。其概念类似于策略路由, 即SFC使网络报文流量走特定的路径,而不是通过IP目的地址来查看路由表得最终目的地。
SFC主要应用于SDN网络技术中, 通常用来联同NetworkFunction Virtualization(网络功能虚拟化)来实现特定功能。举个例子, 我们可以强制某流量从A到B必须经过中间的防火墙, 或者不经过防火墙,而不管当前的路由表。
2. Service Chain操作和API
Service Function:服务功能, 在这里可以认为就是提供业务的虚拟机。虚拟机上会有1个或多个的网络端口(port)。
Port chain(即Service Function Path)包括:
1.neutron ports的列表, 用于定义服务功能的顺序
2.flow classifiers(流分类器)的列表, 指定分类后的流进入哪个port chain
如果一个service function有1对port,那么第一个port为入口, 第二个port为出口。
Port Pair: port chain在实际使用中会以一连串port-pair(端口对)来呈现。 如下图:
SF1,SF2, SF3为三个不同的Service Function, 其port chain可以表示为: [{'p1': 'p2'}, {'p3':'p4'}, {'p5': 'p6'}]
{'p1','p2'}即为一个port-pair, 其中第1个端口为入端口, 第2个端口为出端口。
p1为整条port-chain的头部, 而p6为port-chain的尾部。
+------+ +------+ +------+ | SF1 | | SF2 | | SF3 | +------+ +------+ +------+ p1| |p2 p3| |p4 p5| |p6 | | | | | | ->---+ +---------+ +-----------+ +----> |
Port Pair Group: 在实际使用中, port-chain较多较复杂的时候, 为了简化操作, 把某些可以复用的多个port-pair定义为 port-pair-group, 类似于防火墙或qos中的policy。
同时,port-pair-group可指定lb_fields, 用来做多条业务链的负载均衡。
如: 有2条port-chain, port-chain-1定义为[{'p1': 'p2'}, {'p3': 'p4'}, {'p5': 'p6'}, {'p7': 'p8'}]
port-chain-2定义为[{'p5': 'p6'}, {'p7': 'p8'},{'p1': 'p2'}, {'p3': 'p4'}]
我们可以把其中相同部分: [{'p1': 'p2'}, {'p3': 'p4'}]定义为一个port-pair-group:port-pair-group-1
[{'p5':'p6'}, {'p7': 'p8'}]定义为一个port-pair-group:port-pair-group-2
那么: port-chain-1可以简化为: [port-pair-group-1,port-pair-group-2]
port-chain-2可以简化为: [port-pair-group-2, port-pair-group-1]
Flow classifier: 其作用在于选择能够访问port-chain的流量, 只要有流量匹配到了flow classifier则会被重定向到 port-chain的第 1个端口。
目前可以匹配的报文字段有: ethertype, protocol, source-port, dest-port. source-ip-prefix, dest-ip-prefix, logical-source-port(neutron中的port端口),logical-dest-port(neutron中的port端口), L7层某些字 段。
目前在openstack client上已经可以使用SFC相关命令行:
c) API规范
由于篇幅限制, API规范不再详细列出, 与命令行对应, 可参考官方文档: https://docs.openstack.org/developer/networking-sfc/api.htm