我有一个关于OpenFlow交换机运行的问题:如果我们想在这样的PC或路由器上运行OpenFlow作为OpenFlow交换机工作,我们应该怎么做?那个设备的CPU类型或平台是否重要? 有什么区别吗?
提前致谢。
我有一个关于OpenFlow交换机运行的问题:如果我们想在这样的PC或路由器上运行OpenFlow作为OpenFlow交换机工作,我们应该怎么做?那个设备的CPU类型或平台是否重要? 有什么区别吗?
提前致谢。
在 PC 上尝试任何东西之前,请在 VM(可能是 Ubuntu)上安装 Open vSwitch 并尝试其 OpenFlow 功能。
要在 ubuntu 上安装 Open vSwitch(OVS),
sudo apt-get install openvswitch-switch
您可以使用Floodlight或Ryu SDN 框架之类的控制器作为交换机的控制器。
这是一个 OpenFlow 教程。它已经过时但仍然提供信息http://archive.openflow.org/wk/index.php/OpenFlow_Tutorial
或者您也可以按照@EricSorensen 在上一个答案中的建议尝试 mininet。Mininet 允许您模拟带有主机和交换机的网络。在使用 mininet 时,您可以使用其内置的“nox”控制器。不过我更喜欢泛光灯。
希望能帮助到你!
这就是您所需要的:http: //mininet.org/ 查看下载和教程。使用虚拟机或从源代码本地安装(在 Linux 上)
您可以在具有至少两个物理接口的基于 linux 的 PC 中安装 openvswitch 或使用https://github.com/CPqD/ofsoftswitch13中的softswitch13。这样可以看到数据包路由。
同样使用 mininet https://github.com/mininet/mininet可以运行 OF(这个接口就足够了),它支持创建各种网络拓扑。
正如测试所建议的那样,您可以简单地在最新的 Linux 发行版上执行 apt-get install 或类似的操作。openvswitch 有两个组件,一个内核模块和用户空间 openvswitch。用户空间进程不需要任何特定数量的内核或处理器类型,并且在大多数情况下,您可以使用少于一个内核来完成。
除了 ovs,您还需要 ovsdb,apt-get install 或类似工具会自动为您设置(因此是最简单的方法)。再次非常轻量级,它只是一个 json 键值数据库。
对于控制器,有很多选项,但为了玩游戏,您也可以使用内置的命令行工具。
ovs-apptctl:设置交换机http://openvswitch.org/support/dist-docs/ovs-appctl.8.txt
ovs-oftcl:添加/mod/flows http://openvswitch.org/support/dist-docs/ovs-ofctl.8.txt
ovs-dpctl:查看内核流程
我强烈建议在选择 Pox、Daylight 等之前先了解一下命令行工具、OpenFlow 命令以及流程的工作原理。
除了 mininet 之外,还有 Oftest ( https://github.com/floodlight/oftest ),它主要用于为 openflow 编写测试,但它对于在受限环境中学习和调试问题非常有用。
运行 OpenvSwitch
如果你想用裸机构建 OpenvSwitch,我建议你使用官方 tarball 来安装 OpenvSwitch 守护进程。请按照以下步骤操作:
#/bin/bash
# In root permission
aptitude install dh-autoreconf libssl-dev openssl
wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
tar zxvf openvswitch-2.4.0.tar.gz && cd openvswitch-2.4.0
./boot.sh
./configure # If you want to build kernel module, please append --with-linux=/lib/modules/`uname -r`/build
make modules_install
modprobe gre
modprobe openvswitch
modprobe livcrc32c
ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach --log-file
您可以使用ovs-vsctl show
来ovs-ofctl show
检查 OpenvSwitch 状态。下一步,我们需要将物理或逻辑(如 veth pair)接口添加到 OpenvSwitch 网桥
# Create OpenvSwitch is named 'ovs-br'
ovs-vsctl add-br ovs-br
# Add interface to OpenvSwitch bridge
# If you want to check, please use `ovs-vsctl` to check again.
ovs-vsctl add-port ovs-br eth0
# Set OpenFlow controller
# You should ready one controller
# If not, I have two installation solutions can give you
# Ryu installation: https://github.com/sdnds-tw/ryu-installer
# ONOS installation: https://github.com/pichuang/onos-ansible
ovs-vsctl ovs-br set-controller tcp:x.x.x.x:6653
# Use ovs-vsctl to check controller attribute is UP
一旦你让另一个服务器(这里我们称之为控制器)来决定你的本地机器(这里是你的 PC)的数据包转发行为,它就变成了所谓的 SDN 机制。所以你选择什么样的CPU或硬件并不重要,基本上,你可以将SDN视为一种软件解决方案。
安装支持SDN的软件的过程可以选择open vswitch,上面的帖子已经回答过了。