编译
- boot.sh遇到如下错误
原因在于libtool没有安装,安装即可saking@saking-server:~/dev/ovs/ovs$ ./boot.sh
configure.ac:39: error: possibly undefined macro: LT_INIT
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
sudo apt-get install libtool-bin
调试
控制器
faucet是一个简易的openflow控制器实现,通过docker容器运行即可docker pull faucet/faucet
。
配置文件路径
/etc/faucet/faucet.yaml
dps: switch-1: dp_id: 0x1 timeout: 3600 arp_neighbor_timeout: 3600 interfaces: 1: native_vlan: 100 2: native_vlan: 100 3: native_vlan: 100 4: native_vlan: 200 5: native_vlan: 200 vlans: 100: faucet_vips: ["10.100.0.254/24"] 200: faucet_vips: ["10.200.0.254/24"] routers: router-1: vlans: [100, 200]
运行日志
/var/log/faucet/faucet.log
,调试过程中通过这个来查看。- faucet openflow table的实现(可以在faucet的document里面查看) ``` Table 0 Port-based ACLs
Table 1 Ingress VLAN processing
Table 2 VLAN-based ACLs
Table 3 Ingress L2 processing, MAC learning
Table 4 L3 forwarding for IPv4
Table 5 L3 forwarding for IPv6
Table 6 Virtual IP processing, e.g. for router IP addresses implemented by Faucet
Table 7 Egress L2 processing
Table 8 Flooding
<a name="mt0Pa"></a>
#### 交换机
```bash
$ ovs-vsctl add-br br0 \
-- set bridge br0 other-config:datapath-id=0000000000000001 \
-- add-port br0 p1 -- set interface p1 ofport_request=1 \
-- add-port br0 p2 -- set interface p2 ofport_request=2 \
-- add-port br0 p3 -- set interface p3 ofport_request=3 \
-- add-port br0 p4 -- set interface p4 ofport_request=4 \
-- add-port br0 p5 -- set interface p5 ofport_request=5 \
-- set-controller br0 tcp:127.0.0.1:6653 \
-- set controller br0 connection-mode=out-of-band
- ofport_request=port_num,port_num为openflow的端口号,需要和控制器一致。
- datapath-id需要和控制器一致。
- 日志路径,
prefix-dir/var/log/openvswitch/ovs-vswitchd.log
,prefix-dir为编译指定的prefix。默认为根目录 - 交换机流表查看
ovs-ofctl dump-flows br0
- 流量的仿真调试:
ovs-appctl ofproto/trace br0 in_port=p1
ovs常用工具
系统工具
- ovs-ctl:用于控制ovs所有进程及内核模块的启动停止。
ovs-appctl:可以用于连接ovs的各个进程查看进程保存的数据等。
模块工具
ovs-vswitchd
- ovs-vsctl:控制ovs-vswitchd的配置,通过将配置写入数据库实现。可以认为是管理ovs-vswitchd的工具。
- datapath
- ovs-dpctl:创建,删除,修改datapath。这个和ovs-vswitchd的功能一样,只不过绕过了ovs-vswitchd,直接管理内核的datapath。可以认为是命令行级别的ovs-vswitchd。
- ovs-dpctl-top:datapath的top工具,可以实时查看datapath的数据包统计。
- ovs-ofctl:流表查看,可以查看openflow/megaflow/microflow
- ovsdb
- ovsdb-client:针对ovsdb-server的工具,可以执行数据库的命令。管理数据库的命令行工具。
- ovsdb-tool:针对数据库的小工具,比如初始化数据库,合并等。