如何在Linux,FreeBSD和NetBSD的安装与Open vSwitch ================================================== ====== 本文档介绍了如何在构建和安装与Open vSwitch 通用Linux,FreeBSD的,或NetBSD的主机。周边的安装细节 在特定平台上,请参阅这些文件中的一个: - INSTALL.Debian - INSTALL.Fedora - INSTALL.RHEL - INSTALL.XenServer 建设要求 ------------------ 为了编译用户空间程序在打开的vSwitch分布, 您将需要以下软件: - 使用GNU make。 - C编译器,如: * GCC 4.x的 *锵。铛3.4及更高版本提供有用的静态语义 分析和线程安全检查。对于Ubuntu,有 可在铿锵的网站每夜构建的软件包。 - 的libssl,从OpenSSL的,如果你打算,是可选的,但建议 连接与Open vSwitch到OpenFlow的控制器。的libssl是 建立保密性和真实性的要求 从与Open vSwitch连接到一个OpenFlow的控制器。如果 已安装的libssl,然后与Open vSwitch会自动建立 与它的支持。 编译Linux上的内核模块,您还必须安装 以下。如果你不能建立或安装内核模块,你可以 使用用户空间的唯一实现,在性能上的代价。该 用户空间实现也可能缺少某些功能。请参阅 INSTALL.userspace获取更多信息。 - 受支持的Linux内核版本。请参阅自述文件一 受支持的版本的列表。 在与Open vSwitch数据通路需要桥接支持 (CONFIG_BRIDGE)要建成一个内核模块。(这是常见的 在由Linux发行版提供的内核。)桥模块 不能被加载或在使用中。如果桥模块运行 (请用“lsmod的| grep的桥”),您必须删除它(“rmmod的 在开始之前,数据通路的桥“)。 对于可选支持入口监管的,您必须启用内核 配置选项NET_CLS_BASIC,NET_SCH_INGRESS和 NET_ACT_POLICE,是内置的或作为模块。(NET_CLS_POLICE是 过时的和没有必要的。) 要在Linux 2.6.37或更新版本,内核支持使用GRE隧道 对于GRE必须被编译或可作为一个模块 (CONFIG_NET_IPGRE_DEMUX)。 要配置HTB或与Open vSwitch服务HFSC质量, 您必须启用相应的配置选项。 要使用TAP设备与Open vSwitch的支持,您必须启用 CONFIG_TUN。 - 要构建一个内核模块,你需要的GCC相同的版本, 被用于构建内核。 - 对应的Linux内核映像内核构建目录 该模块上运行。在Debian和Ubuntu,例如, 包含一个内核二进制文件每个linux-image包有 与所需的构建相应的linux-头文件包 基础设施。 如果您是从一个Gi??t树或快照(而不是从工作 发布包),或者如果您修改与Open vSwitch构建系统 或数据库模式,还需要下列软件: - Autoconf的版本2.64或更高版本。 - Automake的版本1.10或更高版本。 - Python 2.x的,当x> = 4。 如果修改了ovsdbmonitor工具,那么你也将需要 以下内容: - 从PyQt4的pyuic4(http://www.)。 要运行单元测试,你还需要: - Perl的。版本5.10.1是众所周知的工作。早期版本应该 同时工作。 该OVS-vswitchd.conf.db(5)联机帮助将包括ER图,在 格式纯文字以外,只有当你有以下几点: - 从graphviz的“点”(http://www./)。 - Perl的。版本5.10.1是众所周知的工作。早期版本应该 同时工作。 - Python 2.x的,当x> = 4。 如果你要大幅修改与Open vSwitch,请考虑 安装下面以获得更好的警告: - “疏”版本0.4.4或更高版本 (http://www./pub/software/devel/sparse/dist/)。 - 使用GNU make。 - 铛,3.4或更高版本 此外,您可能会发现在公共事业/ OVS-dev.py发现有用的OVS-dev的脚本。 安装要求 ------------------------- 在机器上的虚拟交换机打开要安装必须具有 以下软件: - libc中与用于编译的libc的兼容。 - 的libssl与用于构建,如果OpenSSL的是兼容的libssl 用于构建。 - 在Linux上,相同的内核版本配置作为构建的一部分。 - 对于Linux,有“TC”计划的可选支持入口警务 从iproute2的所有主要的分布(部分,可在 http://www./en/Net:Iproute2)。 在Linux上,你应该确保为/ dev / urandom的存在。为了支持TAP 设备,您还必须确保为/ dev /网络/ TUN存在。 要运行ovsdbmonitor刀具,机床还必须具备以下 软件: - Python 2.x的,当x> = 4。 - Python的扭曲海螺。 - Python的JSON。 - PySide或PyQt4的。 - Python的Zope的接口模块。 (在Debian的“lenny”上面可以以“apt-get安装进行安装 Python的json的蟒蛇 - QT4蟒蛇 - zopeinterface蟒蛇 - 双绞线海螺“)。 建设和安装与Open vSwitch用于Linux,FreeBSD的NetBSD的或 ================================================== =============== 一旦你已经安装了所有在基地上面列出的先决条件 先决条件部分,按照下面的步骤来构建。 1。如果您是直接从与Open vSwitch的Git树拉到来源, 在顶级源目录中运行boot.sh: %。/ boot.sh 2。在顶部的源目录,通过运行配置包 配置脚本。通常你可以调用配置没有任何 参数: %在。/ configure 默认情况下所有的文件都在/ usr /本地安装。如果你想 安装到,例如,在/ usr和/ var,而不是在/ usr /本地和 在/ usr /本地的/ var,如下所示添加选项: %/配置 - 前缀= / USR - 的localstatedir = /无功 要使用特定的C编译器来编译与Open vSwitch用户 节目,还configure命令行上指定它,像这样: %在。/ configure CC = gcc的-4.2 使用'铛'的编译器: %在。/ configure CC =铛 要构建Linux内核模块,这样就可以运行 基于内核的开关,通过内核构建的位置 目录上使用 - with-linux的。例如,要构建一个运行 实例的Linux: %。/配置 - 与 - = linux的/ lib目录/模块/`uname-r后`/ build中 如果你想建立一个架构等核心模块 比用于构建的计算机,您可以架构 指定使用了karch变量的内核体系结构的字符串 调用configure脚本的时候。例如,要构建MIPS 使用Linux: %/配置了 - with-linux的= /路径/到/ linux下了karch = MIPS configure脚本接受了其他一些选项和荣誉 额外的环境变量。对于一个完整的列表,调用 配置使用 - help选项。 3。运行GNU make工具在顶源目录,例如: %使 或者如果使用GNU make安装为“gmake命令”: %的gmake 为了提高警告,如果你安装了“疏”(见 “先决条件”),C = 1添加到命令行。 4。考虑运行的测试套件。请参阅“运行测试套件” 下面的说明。 5。通过运行“苏”或其他程序成为root。 6。运行“make install”会在可执行文件和联机帮助页安装到 正在运行的系统,通过在/ usr /本地默认。 7。如果您构建内核模块,您可以安装并加载它们,例如: %使modules_install安装 %/ sbin目录/ modprobe的openvswitch 为了验证该模块已经加载,运行“/ sbin目录/ lsmod的”和 检查openvswitch列出。 如果“modprobe的”操作失败,看看过去几年内核日志 讯息(例如用“的dmesg |尾”): - 消息“openvswitch:出口复制符号 br_should_route_hook(由桥所拥有)“指的是桥 模块被加载。运行“/ sbin目录/ rmmod的桥梁”,将其删除。 如果“/ sbin目录/ rmmod的桥”与失败“错误:模块桥接器 不存在在/ proc / modules中“,那么桥被编译成 在内核中,而不是作为一个模块。与Open vSwitch不 支持此配置(请参阅“建设要求”,上面)。 - 消息“openvswitch:出口复制符号 dp_ioctl_hook(由ofdatapath拥有)“是指该ofdatapath 从OpenFlow的参考实现模块加载。 运行“/ sbin目录/ rmmod的ofdatapath”将其删除。(您可能需要 事先删除任何现有的数据通路,使用“dpctl” 程序包含在OpenFlow的参考实现。 “OVS-dpctl”将无法正常工作。) - 否则,最有可能的问题是,与Open vSwitch是 建立从一进,你是不同的内核 试图加载它。运行“modinfo命令”的openvswitch.ko和 专为正在运行的内核,例如一个模块: %/ sbin目录/ modinfo命令openvswitch.ko %/ sbin目录/ modinfo命令/ lib中/模块/`uname-r后`/内核/网络/网桥/ bridge.ko 通过这两个命令比较“vermagic”线路输出。如果 它们之间的区别,然后与Open vSwitch是专为错误的内核。 - 如果你决定要报告错误或要求相关的问题 模块加载,请注明来自“dmesg的”输出和 上面提到的“modinfo命令”命令。 有一个可选的模块参数来openvswitch.ko叫 vlan_tso,使TCP分段卸载过的VLAN上网卡 支持它。许多驱动程序不公开的TSO支持的VLAN上 在与Open vSwitch可以使用,但一个办法是没有办法来检测 是否是这种情况。如果你知道你的特定的驱动程序可以 处理它(例如通过测试过的VLAN发送大量的TCP数据包) 然后通过在一个1值可以提高性能。内置的模块 Linux内核2.6.37及更高版本,以及特别版本的补丁 早期的内核,不需要这一点,并没有这个参数。如果 你不明白这是什么意思或不知道,如果你的驱动程序 将工作,不设置此。 8。使用ovsdb刀具初始化配置数据库,例如: %MKDIR-P的/ usr /本地/ etc / openvswitch %ovsdb-工具创建/ usr /本地/ etc / openvswitch / conf.db vswitchd / vswitch.ovsschema 启动 ======= 开始OVS-vswitchd本身之前,你需要开始其 配置数据库,ovsdb服务器。每台机器上打开 vSwitch上安装应该运行它自己的ovsdb服务器的副本。 其配置为使用您创建的数据库中的第7步 安装,上面,听在Unix域套接字,连接到 在数据库本身中指定的任何管理人员,以及使用SSL 配置数据库: %ovsdb - 服务器 - 远程= punix :/ USR /本地的/ var /运行/ openvswitch / db.sock \ - 远程= DB:Open_vSwitch,Open_vSwitch,manager_options \ - 私钥= DB:Open_vSwitch,SSL的private_key \ - 证书= DB:Open_vSwitch,SSL证书\ - 引导 - CA证书= DB:Open_vSwitch,SSL CA_CERT \ - pid文件 - 分离 (如果你建立了与Open vSwitch不支持SSL,那么省略 - 私钥, - 证书, - 引导 - CA证书)。 然后使用OVS-vsctl初始化数据库。这是唯一的 需要您创建数据库后的第一时间 ovsdb - 工具(但在任何时候运行它是无害的): %OVS-vsctl - 无等待初始化 然后启动主与Open vSwitch守护进程,告诉它连接到 同样的Unix域套接字: %OVS-vswitchd - pid文件 - 分离 现在你可以使用OVS-vsctl设立桥梁和其他与Open vSwitch 功能。例如,要创建一个名为网桥BR0和添加端口 eth0和vif1.0是给它: %OVS-vsctl附加BR BR0 %OVS-vsctl外接端口BR0为eth0 %OVS-vsctl外接端口BR0 vif1.0是 请参阅OVS-vsctl(8)了解更多详情。 升级 ========= 当您升级与Open vSwitch从一个版本到另一个,你应该 同时升级数据库模式: 1。停止与Open vSwitch守护程序,例如: %杀灭`CD的/ usr /本地/无功/运行/ openvswitch &&猫ovsdb-server.pid OVS-vswitchd.pid` 2。安装新的Open vSwitch上发布。 3。升级数据库,在以下两种方式之一进行: - 如果在你的数据库中没有重要的数据,那么你可能 删除数据库文件和ovsdb - 工具重新创建它, 下列房屋下“中的说明和安装开 vSwitch上的Linux,FreeBSD的或NetBSD的“。 - 如果你想保持你的数据库的内容,备份它 先上去,然后使用“ovsdb刀具转换”来升级吧,比如: %ovsdb刀具转换的/ usr /本地/ etc / openvswitch / conf.db vswitchd / vswitch.ovsschema 4。启动Open vSwitch上的守护进程大厦下“的描述和 对于Linux,FreeBSD的或NetBSD的“上面安装Open vSwitch上。 热升级 ============= 升级与Open vSwitch从一个版本到下一个版本以最小 交通经历一个使用了Open vSwitch上的系统中断 需要一些注意事项: 1。如果升级只涉及升级的用户空间工具和守护进程 与Open vSwitch的,请确保新用户空间的版本是兼容 以前加载的内核模块。 2。用户空间的守护进程的升级意味着他们必须重新启动。 重新启动守护进程意味着,OpenFlow的在OVS-vswitchd守护程序流 将丢失。还原的流量的一种方法是让控制器 重新填充它。另一种方法是使用一个应用程序来保存先前的流程 像OVS-ofctl,然后在重新启动后重新添加它们。恢复旧的流 准确只有在新打开的vSwitch接口保留旧'ofport“ 值。 3。当新的用户空间守护进程得到重新启动后,它们会自动刷新 老流向设置在内核中。这可能是昂贵的,如果有几百个 新的流量正在进入内核,但用户空间的守护进程都很忙 建立新的用户空间无论是从控制器或类似工具流 OVS-ofctl。与Open vSwitch数据库提供了一个选项来解决这个问题 通过other_config:流恢复,等待Open_vSwitch表的列。 请参阅OVS-vswitchd.conf.db(5)联机帮助页。 4。如果升级还涉及升级的内核模块,旧内核 模块需要卸载和新的内核模块应该被加载。这 也就是说,属于与Open vSwitch的核心网络设备被重建 和内核流量丢失。交通的停机时间可以减少 如果用户空间的守护进程会立即重新启动,用户空间流 是尽快恢复。 该OVS-CTL实用的“重新启动”功能只能重新启动用户空间的守护进程, 可确保“ofport'值保持跨越重启一致,恢复 用户空间的流量使用OVS-ofctl公共事业以及使用 other_config:流量恢复等待柱保持车辆的停机时间到 最小。该OVS-CTL实用程序的“强制重载-KMOD”功能做了所有的 同上,但也替换为新的旧的内核模块。与Open vSwitch 为Debian,XenServer和RHEL的启动脚本使用OVS-CTL的功能和它 建议用于其他软件平台太这些功能。 运行该测试套件 ===================== 与Open vSwitch包括一个测试套件。在你提交补丁 逆流而上,我们建议您运行测试,并确保它们通过。 如果要添加新的功能,打开的vSwitch,然后加入测试的 功能确保您的功能不会破坏作为开发商修改 其他地区与Open vSwitch的。 您必须配置和建立与Open vSwitch(步骤1至3 “建筑及安装与Open vSwitch用于Linux,FreeBSD的或NetBSD的”以上) 在运行测试套件之前。您不需要安装与Open vSwitch 或建或加载内核模块来运行测试套件。你这样做 不需要主管权限来运行测试套件。 运行在与Open vSwitch,一是所有的单元测试的时间: 做检查 这需要在5分钟在现代桌面系统。 运行所有的单元测试与Open vSwitch,最多可并联8: 做检查TESTSUITEFLAGS =-J8 这需要在一个现代化的四核台式机系统一分钟。 要查看所有可用的测试的列表,请运行: 做检查TESTSUITEFLAGS = - 列表 要运行测试的一个子集,例如测试123和477的测试通过484: 做检查TESTSUITEFLAGS = '123 477-484' (测试不具有相互依存性,所以你可能会遇到任何一个子集。) 要运行测试,匹配关键字,如“ovsdb”: 做检查TESTSUITEFLAGS ='-K ovsdb“ 要查看测试选项的完整列表: 做检查TESTSUITEFLAGS = - 帮助 测试运行的结果报告在测试/ testsuite.log。 请报告测试失败的bug和包括testsuite.log中 您的报告。 如果您安装了“Valgrind的”,那么你也可以运行测试套件 根据Valgrind的使用代替“做”让入住的valgrind“ 勾选“全部相同的选项通过TESTSUITEFLAGS可供选择。当 你这样做,“Valgrind的”业绩<N>测试中报告的文件 名为测试/ testsuite.dir / <N> / Valgrind的。*。你可能会发现, Valgrind的结果更容易解释,如果你把“-Q”在 ?/。valgrindrc,因为这降低了输出量。 有时,一些测试可能在某些运行,但不是别人失败。这是 在测试包中,而不是在与Open vSwitch本身的错误通常是一个错误。如果 你会发现一个测试间歇性故障,请报告它,因为 开发人员可能没有注意到。 错误报告 ------------- 请至bugs@openvswitch.org报告问题。 |
|