作者: 赵怡
1. SFC底层实现原理
port chain和ovs driver/agent
Port Chain插件架构图:
SFC Port Chain Plugin +-------------------------------+ | +-------------------------+ | | | Port Chain API | | | +-------------------------+ | | | Port Chain Database | | | +-------------------------+ | | | Driver Manager | | | +-------------------------+ | | | Common Driver API | | | +-------------------------+ | | | | | +-------------------------+ | | | OVS Driver | | | +-------------------------+ | +---------------|--------------+ | rpc +----------------+ | OVS Agent | | ext sfc driver | +----------------+ |
目前networking-sfc项目中的基于ovs的sfc实现还是用的mpls, nsh可能要Pike版本才能支持。
以下下列配置为例, 创建业务链串联sf1, sf2, sf3 三台nfv虚拟机, 并从VM1处发包进入业务链:
+------+ +------+ +------+ | SF1 | | SF2 | | SF3 | +------+ +------+ +------+ p1| |p2 p3| |p4 p5| |p6 | | | | | | VM 1-->----+ +--------+ +-----------+ +---->
根据代码中的一些限制(参考后面"限制"章节), p1必须和logical-source-port在一个子网中, p2、p3必须在一个子网中, p4、p5必须在一个子网中。 所以, 本示例中, 我们定义p1的子网为: 1.0.0.0/24, p2的子网为: 2.0.0.0/24, p3的子网为: 2.0.0.0/24, p4的子网为: 3.0.0.0/24, p5的子网为: 3.0.0.0/24, p6子网为4.0.0.0/24。
$ openstack network create sfc-net-1 $ openstack network create sfc-net-2 $ openstack network create sfc-net-3 $ openstack network create sfc-net-4 $ openstack network create sfc-net-5 $ openstack network create sfc-net-6 $ openstack subnet create --network sfc-net-1 --subnet-range 1.0.0.0/24 sfc-subnet-1 $ openstack subnet create --network sfc-net-2 --subnet-range 2.0.0.0/24 sfc-subnet-2 $ openstack subnet create --network sfc-net-3 --subnet-range 3.0.0.0/24 sfc-subnet-3 $ openst |