Pica8 白盒交换机快速上手

1. 初始设置和访问

1.1. 登陆交换机

交换机开箱后的初始登录,可以通过 串口(RJ45)来进行。 找到交换机 的console 口(一般会标有Con)。通过windows 主机上的超级终端工具,或者putty, securecrt 等 终端工具,配置串口参数为 115200, 8/N/1,硬件流控设为没有(关闭).后即可 登录。默认用户名 admin ,密码 pica8

rs232.png

PicOS-OVS login: admin
Password:

admin@XorPlus$

1.2. 设定默认启动模式

  1. 验证当前Pica8模式

    通过发出下面的命令检查PICOS交换机 的当前模式。

    admin@XorPlus$ps -ef | grep xorp | grep -v grep
    admin@XorPlus$ps -ef | grep ovs | grep -v grep
    admin@XorPlus$
    admin@XorPlus$
    

    如果有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地址,子网掩码和默认网关。

    
    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 PicOS
    
    [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/ovs-vswitchd.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=ovs-vswitchd.pid --overwrite-pidfile
    

    现在重新启动交换机,以确保配置是持久的。这可能需要几分钟的时间才能完成。(如果确认 /etc/picos/picos_start.conf 已经成功修改,则此步骤可以省略)

    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
    

1.3. 设置 Openflow SDN网络

  1. 创建虚拟交换机

    接下来的步骤将指导如何创建使用OpenFlow的一个基本的桥(虚拟交换机)。

    1. license 检查

      在开始设定之前需要确认交换机的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 成功导入。

    2. 创建虚拟交换机

      在成功激活所有端口后,可以使用如下 open vSwitch 命令,创建一个虚拟交换机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
    OFPT_FEATURES_REPLY (OF1.4) (xid=0x2): dpid:5e3ea67edf6c5f60
    n_tables:254, n_buffers:256
    capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS
    OFPST_PORT_DESC reply (OF1.4) (xid=0x4):
     LOCAL(br0): addr:a6:7e:df:6c:5f:60
         config:     0
         state:      LINK_UP
         current:    10MB-FD COPPER
         supported:  10MB-FD COPPER
         speed: 10 Mbps now, 10 Mbps max
    OFPT_GET_CONFIG_REPLY (OF1.4) (xid=0x6): frags=normal miss_send_len=0
    

    问:br0 包含物理接口吗?

    回答:不包含。虽然虚拟交换机已经创建,物理接口需要被添加到虚拟交换机。

  3. 给虚拟交换机加入接口

    接下来,我们将添加物理接口给虚拟交换机br0。实验拓扑结构,我们将加入 GE-1/1/1 , GE-1/1/2 ,和GE-1/1/48,请注意,务必正确输入下面命令。

    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 ge-1/1/2 vlan_mode=trunk tag=1 -- set interface ge-1/1/2 type=pica8
    admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/48 vlan_mode=trunk tag=1 -- set interface ge-1/1/48 type=pica8
    admin@PicOS-OVS$
    

    如果您需要连续的加入每个千兆端口则可以用一个 for 循环来简化输入,以24口千兆+4口万兆交换机为例:

    添加千兆端口1

    for i in $(seq 1 24);do ovs-vsctl add-port br0 ge-1/1/$i vlan_mode=trunk tag=1 -- set interface ge-1/1/$i type=pica8;done
    

    添加万兆端口,万兆端口的编号视不同平台不同,可能是 (25~28,49~52等请根据实际情况调整)。

    for i in $(seq 25 28);do ovs-vsctl add-port br0 te-1/1/$i vlan_mode=trunk tag=1 -- set interface te-1/1/$i type=pica8;done
    

    5101 添加所有端口可以采用如下命令:

    for i in $(seq 1 48);do ovs-vsctl add-port br0 te-1/1/$i vlan_mode=trunk tag=1 -- set interface te-1/1/$i type=pica8;done
    for i in $(seq 49 54);do ovs-vsctl add-port br0 qe-1/1/$i vlan_mode=trunk tag=1 -- set interface qe-1/1/$i type=pica8;done
    

    一般来说采用outband模式进行SDN网络管理无须额外设定,但是如果测试时 为了方便将SDN交换机的数据端口和管理端口挂接在相同的二层网络里可能 会导致交换机触发inband相关配置(因为在PicOS 2.4 以后默认的连接方式 为 in-band),为了规避可能的问题,可以用如下命令禁用:

    ovs-vsctl set bridge br0 other_config=disable-in-band=true
    
    1. 快速创建多个br的脚本

      以48口千兆交换机建8个br,每个br依次分配6个端口为例。

      #!/bin/bash
      for i in $(seq 1 8); do
      
           ovs-vsctl add-br br$i
      
          for j in $(seq 0 5)
      
          do  ovs-vsctl add-port br$i ge-1/1/$(($i*6+$j)) vlan_mode=trunk tag=1 -- set interface ge-1/1/$(($i*6+$j)) type=pica8”
      
          done
      done
      
  1. 验证虚拟交换机连接

    我们可以使用相同的命令验证对br0的修改。

    admin@PicOS-OVS$ovs-ofctl show br0
    OFPT_FEATURES_REPLY (OF1.4) (xid=0x2): dpid:5e3e486e73020023
    n_tables:254, n_buffers:256
    capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS
    OFPST_PORT_DESC reply (OF1.4) (xid=0x4):
     1(ge-1/1/1): addr:48:6e:73:02:00:23
         config:     0
         state:      LINK_UP
         current:    1GB-FD COPPER AUTO_NEG
         advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         peer:       10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER
         speed: 1000 Mbps now, 1000 Mbps max
     2(ge-1/1/2): addr:48:6e:73:02:00:23
         config:     0
         state:      LINK_UP
         current:    1GB-FD COPPER AUTO_NEG
         advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         peer:       10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER
         speed: 1000 Mbps now, 1000 Mbps max
     48(ge-1/1/48): addr:48:6e:73:02:00:23
         config:     0
         state:      LINK_UP
         current:    1GB-FD COPPER AUTO_NEG
         advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         supported:  10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
         peer:       10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER
         speed: 1000 Mbps now, 1000 Mbps max
     LOCAL(br0): addr:48:6e:73:02:00:23
         config:     0
         state:      LINK_UP
         current:    10MB-FD COPPER
         supported:  10MB-FD COPPER
         speed: 10 Mbps now, 10 Mbps max
    OFPT_GET_CONFIG_REPLY (OF1.4) (xid=0x6): frags=normal miss_send_len=0
    admin@PicOS-OVS$
    

    问:在交换机上运行什么版本的OpenFlow?

    答:如OFPT_GET_CONFIG_REPLY 所示,PicOS 2.4.1交换机默认运行OF1.4。

  1. 测试主机连接

    vBridge添加物理端口后,我们将试图通过Pica8交换机转发一些数据包。从连接在1口上的主机ping 2口上连接的主机。

    pica8@of-dev01-traff01:~$ ping 10.10.11.3
    PING 10.10.11.3 (10.10.11.3) 56(84) bytes of data.
    ^C
    --- 10.10.11.3 ping statistics ---
    3 packets transmitted, 0 received, +1 errors, 100% packet loss, time 2000ms
    

    ping失败,是因为Pica8交换机尚未连接到OpenFlow控制器。由 于Pica8遵循OpenFlow的标准,不匹配任何流规则的流量包,应首先通 过 OFPT_PACKET_OUT 消息重定向到控制器。

  2. 验证控制器可达

    我们必须配置交换机连接到通过OpenFlow的控制器。

    admin@PicOS-OVS$ping 192.168.16.82 -c 3
    PING 192.168.16.82 (192.168.16.82) 56(84) bytes of data.
    64 bytes from 192.168.16.82: icmp_req=1 ttl=64 time=3.28 ms
    64 bytes from 192.168.16.82: icmp_req=2 ttl=64 time=0.393 ms
    64 bytes from 192.168.16.82: icmp_req=3 ttl=64 time=0.458 ms
    
    --- 192.168.16.82 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    rtt min/avg/max/mdev = 0.393/1.378/3.284/1.348 ms
    
  3. 配置Pica8交换机连接到Ryu Openflow 控制器。

    配置Pica8交换机连接到通过对应的 Ryu 控制器。

    admin@PicOS-OVS$
    admin@PicOS-OVS$ovs-vsctl set-controller br0 tcp:192.168.16.82:6633
    admin@PicOS-OVS$
    
  4. 验证OpenFlow的连接

    验证Pica8 交换机 有一个到端口6633的连接 。

    admin@PicOS-OVS$
    admin@PicOS-OVS$netstat -n | grep 6633
    admin@PicOS-OVS$
    

    问:交换机和控制器是否打开了一个会话?

    答:不可以,要搞清楚OpenFlow的各种设备支持哪些版本。回想一下我们以前的步骤, 所述交换机默认为OF1.4 。也许我们的应用程序不支持默认版本。请注意,您还 可以看到会话状态处于TIME_WAIT或FIN_WAIT2 状态。

  5. 设置 OpenFlow 版本

    我们将试图通过设置交换机的OpenFlow的版本为1.3来解决交换机和控制器之间的问题: 。在交换机上使用下面的命令进行此更改。

    admin@PicOS-OVS$
    admin@PicOS-OVS$ovs-vsctl set Bridge br0 protocols=OpenFlow13
    admin@PicOS-OVS$
    
  6. 验证OpenFlow的连接

    运行'netstat -n | grep 6633'命令,看看是否已经解决了问题。

    admin@PicOS-OVS$netstat -n | grep 6633
    tcp        0      0 192.168.16.101:56974    192.168.16.82:6633      ESTABLISHED
    admin@PicOS-OVS$
    

    问:交换机打开了和控制器的会话吗?

    答:是的!成功,我们已经通过OpenFlow的控制器连接到Pica8交换机。

2. TAP简单上手

系统启动后,将需要设定的流表命令追加到/etc/rc3.d/S06tap,如果要确认效果,可以执行

source /etc/rc3.d/S06tap

用类似如下命令查看生效的流表:


ovs-ofctl dump-flows br0

3. CrossFlow 配置

4. 软件版本升级

5. 手册及参考

由于产品版本更新较快,随机并没有附操作手册。

Pica8 交换机的配置文档主要有:

在OVS模式下的纯OpenFlow配置手册及传统交换机(二、三层)配置手册请访问 https://pan.baidu.com/s/1c2zpZeK

如果要查找最新的文档请参考 Pica8 文档.

Footnotes:

1

可以使用命令 ovs-appctl pica/show 列出当前交换机所有端口,及对应的端口名。

blogroll

social