pica8交换机搭建SDN网络
一 网络拓扑
说明:
1、千兆交换机与万兆交换机均为pica8交换机,与控制器连接的交换机为普通交换机;在该物理实验环境中,控制器所在PC只能与一台交换机相连,则将所有OVS交换机的管理端口都连接到同一台普通交换机业务端口上再与控制器相连。
2、该实验环境设置在同一网段下。
二 pica8交换机配置
1 登录交换机
交换机开箱后的初始登录,可以通过串口 (RJ45) 来进行,找到交换机的 console 口。通过 putty终端工具,采用serial连接类型,配置串口参数为 115200, 8/N/1, 硬件流控设为没有(关闭)后即可登录。默认用户名 admin,密码 pica8。
ubuntu使用putty串口助手时出现“Unable to open connection to /dev/ttyS0”时的解决方法
因为没有开放权限
输入sudo putty即可
2 设定默认启动模式
1.验证当前 Pica8 模式
通过发出下面的命令检查 PICOS 交换机的当前模式。
admin@XorPlus$ps -ef | grep xorp | grep -v grep
admin@XorPlus$ps -ef | grep ovs | grep -v grep
如果有 xorp 进程输出表明目前处于传统模式(可通过 crossflow 支持混杂),如果有 ovs 输出则为纯 SDN 模式。
默认启动模式可以通过如下命令向导进行切换,以切换到 SDN 模式为例:
2.运行 Pica8 安装实用程序
由于我们建立 Pica8 交换机的 SDN 应用程序,我们将把交换机设为 OVS 模式以支持OpenFlow。
要做到这一点,我们将运行 Pica8 安装程序。
在命令行中输入’sudo picos_boot’ ,当系统提示时输入’ 2 ’ 选择 OVS 模式。
admin@XorPlus$sudo picos_boot
Please configure the default system start-up options:
(Press other key if no change)
[1] PicOS L2/L3
[2] PicOS Open vSwitch/OpenFlow
[3] No start-up options * default
Enter your choice (1,2,3):2
接下来的一系列提示将设置 eth0 接口 IP 地址。OpenFlow 的包和 SSH 通信将使用这个 IP 地址。输入 IP 地址,子网掩码和默认网关。千兆交换的IP地址为192.168.16.101,万兆交换机的IP地址为192.168.16.104。
PicOS Open vSwitch/OpenFlow is selected.
Note: Defaultly, the OVS server is runned with static local management IP and
port 6640.
The default way of vswitch connecting to server is PTCP.
Please set a static IP and netmask for the switch (e.g. 128.0.0.10/24) :
192.168.16.101/24
Please set the gateway IP (e.g 172.168.1.2):192.168.16.1
admin@XorPlus$
3.启动 PicOS 服务
验证 PICOS 模式的改变。启动 PICOS 服务’sudo service picos start’ 来应用这个改变
admin@XorPlus$sudo service picos start
[....] Stopping enhanced syslogd: rsyslogd.
[....] Starting enhanced syslogd: rsyslogd.
[....] Stopping internet superserver: xinetd.
[....] Restarting OpenBSD Secure Shell server: sshd.
[....] Create OVS database file.
RTNETLINK answers: No such process
[....] Starting: PicOS Open vSwitch/OpenFlow.
[....] Starting web server: lighttpd.
4.验证 PicOS 模式
验证对 ‘picos_start.conf’ 文件的改变。
admin@XorPlus$more /etc/picos/picos_start.conf
# configuration file for PicaOS
[PICOS]
picos_start=ovs
[XORPPLUS]
xorpplus_rtrmgr_verbose=
xorpplus_log_facility=local0
xorpplus_finder_client_address=127.0.0.1
xorpplis_finder_server_address=127.0.0.1
[OVS]
ovs_database_file=/ovs/ovs-vswitchd.conf.db
ovs_db_sock_file=/ovs/var/run/openvswitch/db.sock
ovs_switch_ip_address=192.168.16.101
ovs_switch_ip_netmask=255.255.255.0
ovs_switch_gateway_ip=192.168.16.1
ovs_switch_tcp_port=6633
ovs_host_name=PicOS-OVS
[ZTP]
ztp_disable=false
验证 OVS 进程正在运行:
如果进程输出如下,则 Pica8 交换机运行在 OVS/Openflow 模式下。
admin@XorPlus$ps -ef | grep ovs | grep -v grep
root 3182 1 0 05:26 ttyS0 00:00:00 ovsdb-server /ovs/ovsvswitchd.conf.db --remote=ptcp:6633:192.168.16.101 --remote=punix:/ovs/
var/run/openvswitch/db.sock
root 3184 1 0 05:26 ttyS0 00:00:00 ovs-vswitchd --pidfile=ovsvswitchd.pid --overwrite-pidfile
现在重新启动交换机,以确保配置是持久的。这可能需要几分钟的时间才能完成。
admin@XorPlus$sudo reboot
Broadcast message from root@PicOS-OVS (ttyS0) (Tue Oct 21 05:47:19 2014):
The system is going down for reboot NOW!
5.验证 Pica8 网络连通性
一旦重启完成后,作为管理员重新登录,检查和验证 eth0 接口到默认网关的网络连接。需要注意的是主机名已经按照 ‘ picos_start.conf “文件更改。
admin@PicOS-OVS$ifconfig eth0
eth0 Link encap:Ethernet HWaddr 48:6e:73:02:00:22
inet addr:192.168.16.101 Bcast:192.168.16.255 Mask:255.255.255.0
inet6 addr: fe80::4a6e:73ff:fe02:22/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:608 (608.0 B) TX bytes:3082 (3.0 KiB)
Base address:0x2000
admin@PicOS-OVS$
admin@PicOS-OVS$ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1) 56(84) bytes of data.
64 bytes from 192.168.16.1: icmp_req=1 ttl=64 time=32.7 ms
64 bytes from 192.168.16.1: icmp_req=2 ttl=64 time=2.00 ms
64 bytes from 192.168.16.1: icmp_req=3 ttl=64 time=0.939 ms
^C
--- 192.168.16.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.939/11.900/32.754/14.752 ms
3 设置 Openflow SDN 网络
1.创建虚拟交换机
接下来的步骤将指导如何创建使用 OpenFlow 的一个基本的桥 (虚拟交换机)。
在开始设定之前需要确认交换机的 license 是否激活,在交换机的命令行界面里执行
license -s
如果显示:
No license installed.Use below information to create a license
请将输出的 Hardware ID,发邮件到 service@tooyum.com, 我们会帮助申请license,并发回。您收到 file.lic 文件后将该文件复制到交换机的 /etc 目录下。或者创建一个新的文件并将 file.lic 文件的内容复制到该文件中。然后在交换机上执行
sudo license -i /etc/file.lic
并再次执行
license -s
以确认 license 成功导入。
在成功激活所有端口后,可以使用如下 open vSwitch 命令, 创建一个虚拟交换机 br0。在两台pica8交换上分别创建两个br0:
admin@PicOS-OVS$ovs-vsctl add-br br0 -- set bridge br0 datapath_type=pica8
device ovs-pica8 entered promiscuous mode
device br0 entered promiscuous mode
admin@PicOS-OVS$
2.验证虚拟交换机
下一步验证桥已成功创建。
admin@PicOS-OVS$ovs-ofctl show br0
这时,br0不包含物理接口,需要将接口添加到虚拟交换机上。
3.给虚拟交换机加入接口接下来,我们将添加物理接口给虚拟交换机 br0。
实验拓扑结构,我们在千兆交换上加入 ge-1/1/1 ,te-1/1/49。 ge-1/1/1连接PC,te-1/1/49连接万兆交换机。
admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/1 vlan_mode=trunk tag=1 -- set interface ge-1/1/1 type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 te-1/1/49 vlan_mode=trunk tag=1 -- set interface te-1/1/49 type=pica8
在万兆交换上加入 te-1/1/1 ,te-1/1/33。te-1/1/1连接PC,te-1/1/33连接千兆交换机。
admin@PicOS-OVS$ovs-vsctl add-port br0 te-1/1/1 vlan_mode=trunk tag=1 -- set interface te-1/1/1 type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 te-1/1/33 vlan_mode=trunk tag=1 -- set interface te-1/1/33 type=pica8
一般来说采用outband模式进行SDN网络管理无须额外设定,但是如果测试时 为了方便将SDN交换机的数据端口和管理端口挂接在相同的二层网络里可能 会导致交换机触发inband相关配置(因为在PicOS 2.4 以后默认的连接方式 为 in-band),为了规避可能的问题,可以用如下命令禁用:
ovs-vsctl set bridge br0 other_config=disable-in-band=true
4.验证虚拟交换机连接
我们可以使用相同的命令验证对 br0 的修改。
admin@PicOS-OVS$ovs-ofctl show br0
该交换机默认运行OpenFlow1.4。
5.验证控制器可达
我们必须配置交换机连接到通过 OpenFlow 的控制器。
admin@PicOS-OVS$ping 192.168.16.100
6.配置 Pica8 交换机连接到 Ryu Openflow 控制器。
配置两台 Pica8 交换机连接到通过对应的 Ryu 控制器。
admin@PicOS-OVS$ovs-vsctl set-controller br0 tcp:192.168.16.82:6633
7.验证 OpenFlow 的连接
在装有控制器的PC上运行ryu
ryu-manager --verbose simple_switch_14.py
验证 Pica8 交换机有一个到端口 6633 的连接。
admin@PicOS-OVS$netstat -n | grep 6633
tcp 0 0 192.168.16.101:56974 192.168.16.100:6633 ESTABLISHED
admin@PicOS-OVS$
显示ESTABLISHED则表示已经通过ryu控制器连接到Pica8交换机。
三 验证网络连通性
1 关闭防火墙
关闭两台主机与控制器所在PC的防火墙。
ubuntu系统:在终端输入sudo ufw disable即可
windows系统:找到安全防火墙设置为关闭
2 ping
运行ryu APP
ryu-manager --verbose simple_switch_14.py
分别在两台主机上ping对方,即
ping 192.168.16.106
ping 192.168.16.200
若能互相ping通即组网成功。
3 查看流表项
分别在两台OVS交换机上查看生成的流表项。
千兆交换机:
admin@PicOS-OVS$ovs-ofctl dump-flows br0
OFPST_FLOW reply (OF1.4)(xid=0x2):
flow_id=15, cookie=0x0, duration=413.331s, table=0, n_packets=n/a, n_bytes=8039, priority=0 actions=CONTROLLER:65535
flow_id=17, cookie=0x0, duration=398.493s, table=0, n_packets=n/a, n_bytes=580, priority=1, in_port=1, dl_src=c4:17:0e:fa:03:cb, dl_dst=c4:17:0e:fa:04:6e actions=OUTPUT:49
flow_id=16, cookie=0x0, duration=398.499s, table=0, n_packets=n/a, n_bytes=682, priority=1, in_port=49, dl_src=c4:17:0e:fa:04:6e, dl_dst=c4:17:0e:fa:03:cb actions=OUTPUT:1
万兆交换机:
admin@PicOS-OVS$ovs-ofctl dump-flows br0
OFPST_FLOW reply (OF1.4)(xid=0x2):
flow_id=24, cookie=0x0, duration=352.747s, table=0, n_packets=n/a, n_bytes=682, priority=1, in_port=1, dl_src=c4:17:0e:fa:04:6e, dl_dst=c4:17:0e:fa:03:cb actions=OUTPUT:33
flow_id=25, cookie=0x0, duration=352.734s, table=0, n_packets=n/a, n_bytes=580, priority=1, in_port=49, dl_src=c4:17:0e:fa:03:cb, dl_dst=c4:17:0e:fa:04:6e actions=OUTPUT:1
flow_id=23, cookie=0x0, duration=367.150s, table=0, n_packets=n/a, n_bytes=1885, priority=0 actions=CONTROLLER:65535