用Spirent Testcenter Virtual 建立Openflow 交换机演示和测试系统

  • 格式:docx
  • 大小:2.59 MB
  • 文档页数:15

1.拓扑和环境搭建步骤1.1拓扑和环境:Hypervisor: VMWare workstation.图1 :vNimbleOpenflow测试演示系统为了便于理清环境,下图显示上述拓扑对应如下测试床:图2:vNimbleOpenflow测试演示系统简易拓扑框图1.2环境建立步骤1.2.1创建Virtual License Server VM详见文档” vNimble-Instructions.docx”1.2.2创建STCv详见文档” vNimble-Instructions.docx”。

在这个STCv上创建5个vNIC,其中一个是管理端口,另外4个是测试端口1.2.3创建被测系统VM创建一个虚机,Guest OS 是Fedora 操作系统(我用的是Fedora 20)。

在这个虚机上创建5个vNIC,其中第一个是用于管理,另外四个后面要连到OVS上,作为OVS 的4个端口。

1.2.4创建连接Virtual License Server,STCv和DUT VM的虚拟网络在VMWare Workstation 中创建5个虚拟网桥vnet0-vnet4。

其中vnet1-vnet4 是Host only的虚拟网桥。

然后一次进行下列连接:a.把license server VM的网卡,STCv的管理网卡,DUT VM的管理网卡,连接到Vnet0 上。

配置IP地址网络使得可互相联通:License Server VM 和STCv的管理网卡的IP,通过仪表提供的命令行配置。

DUT VM的管理网卡IP ,在Fedora 操作系统中配置(选择一块网卡作为管理口用):ifconfig eno16777736 192.168.0.104/24b.把STCv的test port1 和DUT VM的OVS port1 通过vnet1 连接起来:c.按如上,把:STCv的test port2和DUT VM的OVS port2通过vnet2 连接起来;STCv的test port3和DUT VM的OVS port3通过vnet3 连接起来;STCv的test port4和DUT VM的OVS port4通过vnet4 连接起来;d.启动所有虚机。

2.在DUT VM上的Fedora 操作系统中,安装OpenvSwitch2.1下载OpenvSwtich在下面URL上挑选一个版本下载,然后用Winscp传到DUT VM上的Fedora 系统中。

/releases/我下载的是openvswitch-2.3.2.tar.gz2.2安装OpenvSwtich*在openvswitch-2.3.2.tar.gz文件所在目录下解压缩:tar -xvf openvswitch-2.3.2.tar.gz*同时把openvswitch-2.3.2.tar.gz拷贝一份到/root/rpmbuild/SOURCE 目录下:cpopenvswitch-2.3.2.tar.gz /root/rpmbuild/SOURCE/*在原来的目录下进入解压缩后的目录中:cd openvswitch-2.3.2/*创建OpenvSwitch用户空间模块的RPM 安装包:rpmbuild -bb rhel/openvswitch-fedora.spec请注意:运行时候,可能会提示缺少一些包,如Python等,请通过yum install, 安装提示的包。

在yum install 过程中,可能会和vi 有冲突,需要卸载vi,看到提示用yum remove 提示的文件名卸载即可进行即可。

安装完后,重新运行上述命令创建OVS 的用户空间模块的rpm包。

*创建OpenvSwitch内核空间模块的RPM安装包,首先查看内核版本:[root@localhost openvswitch-2.3.2]# uname -r3.11.10-301.fc20.x86_64*然后创建和内核对应的内核空间的RPM 安装包:[root@localhost openvswitch-2.3.2]# rpmbuild -bb -D "kversion 3.11.10-301.fc20.x86_64" -D "kflavors default" rhel/openvswitch-kmod-fedora.spec*到/root/rpmbuild/RPMS/x86_64/ 目录下,你将看到两个RPM安装包:openvswitch-2.3.2-1.fc20.x86_64.rpm和openvswitch-kmod-2.3.2-1.fc20.x86_64.rpm。

安装这两个rpm包:rpm -ivh openvswitch-kmod-2.3.2-1.fc20.x86_64.rpmrpm -ivh openvswitch-2.3.2-1.fc20.x86_64.rpm*启动openvswitch服务:service openvswitch start2.3把DUT VM 上出了管理网口之外其他4个网口加到OpenvSwitch上创建的br,并配置Openflow参数:*创建br1,激活,并配置IP地址:ovs-vsctl add-br br1ifconfig br1 upifconfig br1 10.1.1.1/24*把DUT VM 上出了管理网口之外其他4个网口加到OpenvSwitch上br1ovs-vsctl add-port br1 eno33554984ovs-vsctl add-port br1 eno50332208ovs-vsctl add-port br1 eno67109432ovs-vsctl add-port br1 eno83886656*指定Openflow控制器地址和端口,本例中假设控制器地址为10.1.1.2:ovs-vsctl set-controller br1 tcp:10.1.1.2:66333.Openflow基本操作3.1单播业务*在STCv端口4上创建Openflow Controller, IP: 10.1.1.2, 控制器上TCP 端口6633。

* 选上”Add Default Flows For Discovery”。

控制器会向OVS下发一条flow,让OVS把所有LLDP 报文上发给控制器。

*在STCv上启动控制器和OVS建立OF 1.3 连接:*创建OVS端口自动发现。

在Port 4 的Openflow控制器仿真Tab上,创建端口1-3的自动发现:接下来全部点“next”按钮,在STCv port1-3上创建LLDP 协议仿真device。

*启动STCv端口1-3 上LLDP协议* 启动Openflow switch上discovery,学习OVS上连接STCv测试端口的端口号:*把学习到的OVS 端口信息更新到Openflow Controller 仿真中的交换机配置中*在STCv Port1, Port2 和Port 3之间创建Full mesh 三层流量,注意,不要覆盖Port1-3上的LLDP 仿真device:*从流量中提取产生流表:*把流表下发到交换机上:* 发送流量,流量通, OVS上看到流表:在OVS上输入命令查看br1 上流表:ovs-ofctl dump-flows br1* 在OVS 上删除一条流表,观察对应流量中断:ovs-ofctl del-flows br1 dl_type=0x0800,nw_src=101.0.0.1,nw_dst=100.0.0.13.2组播业务(使用Group表)* 用custom方式创建流表:* 为239.0.0.1-239.0.0.10创建10个组播组创建group 表项添加Group Action Bucket,设置组播流量要转发的组播出口在STC 端口2 上创建对应的组播流量:发送流量,应该看到流量不通:下发流表项和group 项:查看流量,可以看到已经在STC 端口3和4上收到流量:查看OVS,可以看到flow entries 和group entries[root@localhost ~]# ovs-ofctl dump-flows br1NXST_FLOW reply (xid=0x4):cookie=0x0, duration=5.490s, table=0, n_packets=501, n_bytes=62124, idle_age=0, ip,nw_dst=239.1.1.8 actions=drop cookie=0x0, duration=5.488s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.9 actions=dropcookie=0x0, duration=5.492s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.6 actions=drop cookie=0x0, duration=5.495s, table=0, n_packets=517, n_bytes=64108, idle_age=0, ip,nw_dst=239.1.1.1 actions=drop cookie=0x0, duration=5.494s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.3 actions=drop cookie=0x0, duration=5.487s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.10 actions=drop cookie=0x0, duration=5.493s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.5 actions=drop cookie=0x0, duration=5.491s, table=0, n_packets=501, n_bytes=62124, idle_age=0, ip,nw_dst=239.1.1.7 actions=drop cookie=0x0, duration=5.494s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.2 actions=drop cookie=0x0, duration=5.493s, table=0, n_packets=502, n_bytes=62248, idle_age=0, ip,nw_dst=239.1.1.4 actions=drop cookie=0x0, duration=52.113s, table=0, n_packets=3, n_bytes=180, idle_age=24, dl_type=0x88cc actions=CONTROLLER:5000[root@localhost ~]# ovs-ofctl dump-groups br1 -O Openflow13OFPST_GROUP_DESC reply (OF1.3) (xid=0x2):group_id=1,type=all,bucket=weight:0,actions=output:1,bucket=weight:0,actions=output:4。