DesignSpark Electrical Logolinkedin
菜单 搜寻
提问问题

利用 Raspberry Pi、OpenFlow 和 Zodiac FX 实现软件定义的网络

以最少的花费获得真正意义上的 SDN 硬件和软件。

在这篇文章中,我们来看看您可以如何利用 Zodiac FX、Raspberry Pi 和开源 OpenFlow 控制器实现以适度的花费获得通常用于高端数据中心设备的软件定义网络 (SDN) 技术。

什么是 SDN

SDN 架构概览(来源:维基百科/开放网络基金会

在传统的网络解决方案中,负责决定在何处必须转发数据包的控制层与执行实际转发的转发层紧密集成。集成发生在网络硬件层面,这意味着整个网络都具有复杂性,而且为了能够修改数据流,您可能需要配置许多设备。

虽然设备供应商确实能提供网络管理工具,但是这些工具可提供的灵活性参差不齐,且倾向于采用十分静态的网络配置,而且互操作性有限。此外,控制层智能仍然深深地嵌入设备中,其能力和任何漏洞等随供应商、产品和固件版本的不同而异。

软件定义网络的作用是分开控制层和转发层,使得用户能使用通用平台对前者进行集中和构建。现在已有专用的体系架构能实现这一点,但与 SDN 最相关的是开放式标准,这也有利于提高互操作性和减少供应商束缚问题,大大提高了可利用的机会。

OpenFlow

OpenFlow 协议是由开放网络基金会 (ONF) 开发的,它支持远程访问通过 TCP 端口 6653(更早版本使用 6633 端口)连接到控制器的交换机和路由器中的控制层。然后,控制器能够添加、修改和删除与网络设备上以“线速”执行的规则和操作相匹配的数据包。

图片来源:ONOS 项目

另外还能通过与 OpenFlow 兼容的软件实施网络功能,例如 Lagopus,它是基于软件的交换机和路由器,可以直接在英特尔系统和虚拟机上运行。虽然在服务器中装满网络接口卡对于办公室交换机来说可能没有意义,但是网络功能虚拟化 (NFV) 在与服务器虚拟化结合使用时便是一种强大的解决方案,将在许多其他高度动态的环境中被证明是非常有用的。

典型硬件

FS.COM 公司生产的 48x 10GbE + 6x 40GbE SDN 交换机。

当您了解到 Facebook 和谷歌等众多巨头公司都是 OpenFlow 背后的推动力量时,您或许不会感到惊讶。事实上,德国电信、微软、Verizon 和雅虎于 2011 年共同创立了 ONF。

所以,设备的设计倾向于围绕这种“互联网规模”组织的需求来进行,同时与供应商的产品结合使用,例如,带有 48 个 10Gb 以太网端口和 6 个 40Gb 以太网端口的机架式交换机产品,发生这种情况也就不足为奇了!这种设备令人印象深刻,但很显然也不是大多数实验者和那些希望使用 SDN 的人能够负担得起的。

Zodiac FX

Zodiac FX 是一种 4 端口 10/100M 以太网交换机,作为一种低成本产品,专为满足用户的 SDN 实验和家用需求而推出,并通过众筹活动最终实现。这款产品结合 Microchip KSZ8795CLX 托管型以太网交换机和 SAM4E8CA 处理器以及开源固件,打造出一种紧凑且完美可控的解决方案。

除了 4 个以太网端口外,Zodiac FX 还具有一个用于供电和提供命令行界面串行端口访问的微型 USB 连接器、一个用于从不良的固件上传中恢复的 JTAG 排针,以及一个用于扩展的 SPI 排针。

硬件安装

Zodiac FX 需要有一个为 OpenFlow 通信而配置的“本机”端口,默认情况下是端口 4。交换机 IP 地址、网络掩码和网关的配置视情况而定。

Pi 3 B+ 型 (137-3331) eth0 接口使用一个静态 IP 进行配置,因此不能将 Zodiac FX 配置为连接此接口,而且还启用了 SSH 以通过网络进行远程登录。

Zodiac FX 端口 4 和 Pi 以太网均连接到另一台交换机,这样能通过连接到现有网络的笔记本电脑对它们进行管理。

交换机端口 1-3 被配置为 OpenFlow 类型,在配置数据流之前,它们之间不会传递任何数据。现在我们已经完成了硬件设置,接下来我们需要一个 OpenFlow 控制器。

Ryu

可选的开源 OpenFlow 控制器有很多,例如 OpenDayLight,它能提供这方面功能,而且它是 Linux 基金会的一个合作项目的开发成果。Linux 基金会是由惠普、IBM、英特尔等公司联合创立的。

然而,对于初步探索而言,像 Ryu 这种也是不错的选择,它是一个用 Python 语言编写的 SDN 框架,而且它的部署和运行更简单。

假设已完成 Pi 网络接口的配置,并且按照惯例运行了 apt-get update,然后运行了 apt-get dist-upgrade,那么我们可以按照如下方式继续安装操作系统的相关内容了:

$ sudo apt-get install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev python-pip

安装了 Python 的包管理器后,我们现在可以安装 Ryu:

$ sudo pip install ryu

所以我们现在有了一个软件开发框架和一组例子。要运行一个简单的使用 OpenFlow v1.3 的第 2 层学习型交换机配置,我们只需键入:

$ ryu-manager --verbose /usr/local/lib/python2.7/dist-packages/ryu/app/simple_switch_13.py

OpenFlow 控制器随后开启,而我们也可以启动 Zodiac FX 了。

如果我们前往网页界面上的“Flows”(数据流)部分,我们现在就能看到已安装了一个数据流。

如果我们将设备连接到端口 1-3 中的一个,我们将会看到控制器在事件中报告数据包。

下一步是什么呢?

到目前为止,我们已创建了一台 L2 学习型交换机,当然,您也可以购买现成的产品。但是,智能功能是由在 Raspberry Pi 上运行的 Python 应用程序提供,而且它的行为十分容易被改变。如需详细了解该简单的交换机应用程序是如何工作的,请参阅 Inside OpenFlow 网站上的文章

由于 Zodiac FX 目前最高支持 OpenFlow v1.3,这意味着可以在以下层级设置了操作的情况下配置数据流,例如:

    • 交换机端口
    • 以太网源/目标 MAC 地址和 VLAN 优先级
    • MPLS 标签和其他参数
    • IPv4 和 IPv6 源/目标地址
    • UDP/TCP/SCTP 源/目标端口

照此便可很容易地知道如何为添加防火墙、排列通信优先级等需求创建应用程序。不仅如此,还可以创建能够更容易地与其他工具和管理系统集成的应用程序,而且特别重要的是,所有的复杂性集中到了一起。

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.

23 Oct 2018, 6:02