随着软件定义网络概念的提出,NFV也得到了极大的关注,围绕SDN/NFV的课题研究也是层数不穷。本实验基于mininet+ODL+flowvisor实现网络的虚妄隔离。

1.5 flowspaces深入

(1)命令格式:

fvctl add-flowspace [options] <flowspace-name> <dpid> <priority> <match> <slice-perm>

在上文中添加的flowspace是这样的: 上图中的8888是在config.json文件中自定义的flowvisor控制端口,add-flowspace后面跟上的5个参数的分别是:

  • fs1:新创建的flowspace名,这个flowspace名是可以重名的。
  • all:指定数据通路,这里的all指的是虚拟网络中所有的数据通路。以下图的的topo结构为例:

如果想要h1能够ping通h2,只需要指定S3为数据通路即可。而想要平通h1和h8则需要指定S3、S2、S1、S5、S7为该flowspace规则的数据通路。

  • 100:指定该规则的优先权,值范围为:0-65535。
  • any:指定该规则的匹配项,any代表匹配所有字段。(可以指定一个或多个字段)
  • S1=7:指定slice对该flowspace规则拥有的权限。DELEGATE=1, READ=2, WRITE=4。值为这3个值的和,取值范围为{1,2,3,4,5,6,7}。

(2)组网实验 这里采用的是上文提到的划分两个切片,一个连接到odl控制器,一个连接到floodlight控制器。下面创建flowspace规则,只允许h1与h2、h7与h8互相ping通。

  • 为连接到odl的s1创建sp1规则(分开创见两个,分别指定h1->h2和h2->h1),因为h1和h2连在同一个交换机上(拓扑图见图 30),所以数据通路只需要指定S3即可:
  • 为连接到floodlight的s2创建创建sp2规则,同样的,h7和h8连接在同一交换机上,数据通路也只需要指定S7即可:
  • 查看已添加的flowspace规则信息:
  • 重启切片 这一步骤可以省略,但由于flowvisor并不稳定,有时新建的规则生效需要重启该规则对应的切片:
  • pingall 在mininet中输入pingall命令查看连通情况: 如图所示,虚拟网络中只有h1和h2、h7和h8可以互相ping通,其他虚拟主机则不能。

(3)补充实验 这里补充一个h1与h8之间互相ping通的实验(拓扑图建图 30)。由于fvctl命令只支持一次指定一个数据通路,所以想要将S3、S2、S1、S5、S7都指定为数据通路,需要多次添加规则: 从图中可以看出,除了之前fs1和fs2中指定的h1和h2、h7和h8之间能互相ping同之外,sp3指定的h1和h8之间也能互相ping通了。