1.OVN(OpenvSwitch原生虚拟化网络方案)集群搭建和二三层网络连通性测试(ubuntu20.04)
2.OVS核心组件内容以及编译安装
3.安装Open vSwitch(入门级操作)
4.openvswitch的码安原理和常用命令
5.OpenWRT实践5:Feeds安装本地源
6.OpenWRT实践4:Open vSwitch
OVN(OpenvSwitch原生虚拟化网络方案)集群搭建和二三层网络连通性测试(ubuntu20.04)
OVN,Open Virtual Network,码安是码安一个开源虚拟化网络方案,作为OpenvSwitch项目组的码安SDN控制器,无额外运行平台要求,码安仅需支持OVS运行环境。码安相册生成app源码以下为OVN集群搭建与二三层网络连通性测试步骤:
第一步:搭建集群所需硬件与环境
1.1 使用vmware或virt-manager创建一台ubuntu.虚拟机。码安
1.2 进入虚拟机,码安手动配置虚拟网卡。码安
1.3 安装OVN依赖,码安确保安装成功。码安
第二步:虚拟机集群配置与初始化
2.1 关闭虚拟机,码安并克隆生成两台相同配置的码安虚拟机。
2.2 打开三台虚拟机并使用root登录。码安
2.3 修改每台主机的码安网卡IP配置项,确保其生效。
第三步:OVN服务配置与逻辑设备创建
3.1 在central节点与host节点上进行OVN服务配置与命令初始化。
3.2 创建逻辑交换机与逻辑路由器。
3.3 使用Linux命名空间模拟虚机环境,测试二三层网络连通性。
第四步:验证二三层网络联通性
4.1 完成前三步操作后,进行二三层网络联通性验证。
OVS核心组件内容以及编译安装
Open vSwitch(OVS)作为开源虚拟交换机,提供灵活、可编程的quagga源码编译网络基础设施管理能力。其核心组件包括ovs-vswitchd、ovsdb-server、ovs-vsctl、ovs-ofctl和ovs-appctl。
ovs-vswitchd为核心交换机进程,负责数据包转发与流量管理,支持多种协议与虚拟化平台集成。ovsdb-server作为数据库服务器,存储网络配置信息,为ovs-vswitchd等组件提供配置获取与更新服务。ovs-vsctl命令行工具用于管理网络配置信息,ovs-ofctl提供OpenFlow控制与流表管理功能,ovs-appctl用于管理运行状态与性能指标。
在进行OVS的编译安装时,首先从官网下载最新源码包或使用命令下载。安装依赖库,执行编译与安装命令,初始化ovs数据库,配置启动服务即可完成。安装后需进行数据库初始化,创建目录并加载数据库文件,启动ovsdb-server。配置与启动ovs-vswitchd组件。
此外,soyun源码搭建OVS组件提供了多种高级选项与命令行参数以满足不同需求,如ovs-appctl提供输出格式、调试模式与性能监测功能。在生产环境中使用时,需谨慎操作,只允许受信任的管理员进行管理。
安装Open vSwitch(入门级操作)
根据 RFC: OVSDB 管理协议规范,OVSDB 主要管理 OVS 交换机的数据库。OVS 包含 OVSDB-Server、OVS-vSwitchd 和内核模块这三个组件,分别负责配置管理、流表和转发。
通过 openvswitch.org 官网指导文档,可选择从源代码或包安装 Open vSwitch。本文以源代码安装为例。
首先,下载 Open vSwitch 版本并上传至系统,接着生成 makefile。在解压目录中执行 ./configure,构建 Open vSwitch 用户空间和内核模块。完成构建后,执行 make install 进行安装。
如果构建了内核模块,需要重新编译并安装。pesq 源码解析加载内核模块至系统后,通过 ovs-ctl 脚本启动 ovsdb-server 和 ovs-vswitchd。ovs-ctl 默认位于 "/usr/local/share/openvswitch/scripts"。
使用 ovs-ctl 启动守护程序,按顺序启动两个进程,ovsdb-server 在启动前会检查数据库是否存在。若无数据库,将创建一个新的空数据库。通过 ovs-ctl 可单独启动或停止守护进程。
配置 ovsdb-server 使用创建的数据库,设置监听 Unix 域套接字,并连接到数据库本身指定的管理器。数据库中使用 SSL 进行配置。确保 ovsdb-server 正常运行后,初始化数据库。
启动主 Open vSwitch 守护进程,连接至相同的 Unix 域套接字。根据上述步骤,正常操作流程为:安装、配置、启动、验证。
最后,验证 Open vSwitch 安装成功,跟谁学 源码可以查看版本、添加网桥等操作。
openvswitch的原理和常用命令
Openvswitch是基于开源Apache2.0许可的高性能虚拟交换机,专为大规模网络自动化设计,支持多种Linux虚拟化技术,如Xen、KVM和VirtualBox。其核心在于内核模块的数据路径(数据包处理机制)和流表(匹配规则)机制。每个数据路径包含多个vports,用户空间可以设置流表规则来决定数据包的转发行为。当数据包到达vport时,内核模块依据流表匹配规则执行相应操作,未匹配的则进入用户空间处理队列,等待进一步处理。
OpenvSwitch的架构包括内核模块、用户空间处理和物理接口。其工作流程涉及虚拟机内的数据包发送,通过vNIC到物理机的VNIC接口,再到虚拟交换机(如br),接着通过物理接口(如eth0)转发,最终按照物理网络规则进行路由。在多虚拟机环境中,通过设置VLAN TAG可以控制网络隔离。
在实际应用中,例如创建物理机到物理机的网络拓扑,可以通过简单的命令操作。Openstack中的Neutron则负责虚拟机网络配置,包括创建虚拟网桥、连接端口以及根据网络类型进行配置,如VLAN、VXLAN等。虚拟机间的通信,根据安全组设置和网络配置规则进行。
OpenWRT实践5:Feeds安装本地源
本文旨在探讨如何利用OpenWRT的feeds功能直接安装本地源。在实践过程中,我们通常将所有包放置于feeds目录下,然后进行编译。然而,这操作相对复杂,需要先下载所有包,再整合自定义部分,最后编译。能否简化此过程,直接通过feeds功能安装本地包?本文将对这一功能进行详细记录。
默认的feed.conf配置如下:
其中,添加的源可以是src-git形式的GitHub源,也可以是src-svn形式的SVN源。其实,还有一种方法,即通过src-link添加本地源。这种方式允许将自定义源文件以feed形式直接集成,例如在前两篇文章中提及的click和openvswitch。
以下是个人定制的content示例:
这里包含了对click和openvswitch组件的修改,与前两篇文章所述内容一致。
接着,可以通过feed直接进行更新。
步骤一:将本地源添加至feed系统中,可直接通过代码完成。
步骤二:利用feed功能,直接安装本地源。
如此,经过修改的click和openvswitch组件即可直接集成。
最后,在编辑镜像时,通过make menuconfig选择click和openvswitch即可,此步骤亦可通过代码实现,如以下示例所示:
以上即为利用feeds机制安装本地源的过程。本文主要作为个人笔记,仅供自己参考,如有问题,敬请谅解。
本文为原创内容,如需转载,请注明出处及原文链接。
欢迎关注我们的微信公众号:无线专家研习社,搜索公众号(WiFi_Professsional)。
OpenWRT实践4:Open vSwitch
本文介绍OVS在OpenWRT下的编译过程,通常编译OVS是为了SDN应用。与click不同,OVS的添加无需手动编译,可直接通过feeds方式进行,但配置过程较为复杂。
注:部分配置过程可参考:github。
Open vSwitch编译步骤如下:
第一步:安装依赖,可能需要额外安装一些程序包,建议添加。
第二步:在feeds配置文件中添加OVS源,使用以下命令:
该命令将内容添加到feeds.conf文件中,以便feeds软件下载OVS。具体命令解释如下:
第三步:更新和安装OVS源,以及安装一个patch(为了避免源失效,我们对patch进行了备份:OVS的patch文件 - 下载频道 - CSDN.NET)
第四步:编译组件,按照以下步骤操作:
1. 运行make menuconfig,勾选(Advanced configuration options (for developers) -> Toolchain Options 和 Advanced configuration options (for developers) -> Target Options),然后保存退出。
2. 勾选(Network -> openvswitch-switch, openvswitch-switch, openvswitch-ipsec (Optional))
3. 勾选(Advanced configuration options (for developers) -> Toolchain Options -> Binutils Version -> Linaro binutils 2.(SELECT)),取消勾选(Advanced configuration options (for developers) -> Target Options -> Build packages with MIPS instructions(UNSELECT)),然后保存退出。
注意:先执行步骤1,再执行该步骤,否则会发现(Advanced configuration options (for developers) -> Toolchain Options 和 Advanced configuration options (for developers) -> Target Options)两个文件夹内都是空的。
第五步:每次menuconfig之后,都需要执行运行命令,即取消Bridge。
第六步:编译固件,建议使用V=s配置,代替V=配置,编译时间较长,请耐心等待。
第七步:烧写固件到路由器,可参考之前的文档操作。
注意:烧写固件后,需要修改/etc/config/wireless文件,将wireless disable 1中的1改为0,然后进行reboot操作,以开启无线。
openvswitch å¯ä»¥å¨linux 3.1 å®è£ ä¹
1.ä¸è½½openvswitchæºæ件ï¼æ³¨æçæ¬è¦éåæä½ç³»ç»å æ ¸ã è¿ä¸ªå ³é®æ¯ä½ è¦æ¾å°éåççæ¬ï¼åºæ¬é½å¯ä»¥å®è£ çã
æ¨èopenvswitch2.0åå ¶ä»¥ä¸çæ¬ã
2.å¼å§å®è£ openvswitch
cd openvswitchsudo ./boot.shsudo ./configure --with-linux=/lib/modules/`uname -r`/build#è¿æ¯éæ©ä½¿ç¨å æ ¸ï¼ä¸å æ©ä½¿ç¨ç³»ç»é»è®¤å æ ¸sudo makesudo make installsudo insmod datapath/linux/openvswitch.ko
å¦æåºç°æ æ³å è½½.koï¼æ示unknown symbol in moduleï¼ä¸¤ç§æ åµï¼ä¸æ¯openvswitchçæ¬ä¸ç³»ç»å æ ¸çæ¬ä¸ä¸è´ï¼äºæ¯é¦å å è½½gre模åï¼modprobe greï¼åinsmodå è½½å³å¯ã
3.åå§åé ç½®openvswitch
å建ovsdbæ°æ®åº
sudo mkdir -p /usr/local/etc/openvswitchsudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
æ¤å¤ä½¿ç¨/usr/local/share/openvswitch/vswitch.ovsschemaè·¯å¾ï¼å 为åç°ä¹åvswitchdè·¯å¾åºç°é误ã
é ç½®å¯å¨ovsdb-server
sudo ovsdb-server /usr/local/etc/openvswitch/conf.db --remote=punix:/usr/local/var/run/openvswitch/db.sock --pidfile --detach
æ¤å¤æ²¡æå db:Open_vSwitch,manager_options çï¼å 为åç°å ä¸ä¹ååç§æ¥éã
åå§åæ°æ®åº
sudo ovs-vsctl --no-wait init
å¯å¨ Open vSwitch daemon,è¿æ¥å°åæ ·ç Unix domain socket ä¸
sudo ovs-vswitchd --pidfile --detach
è³æ¤openvswitchå®è£ é ç½®ç»æã
open vswitchOpen vSwitch的优点
Open vSwitch是一种灵活性极高的虚拟网络设备,它能够在多种环境下运作。作为一款可运行在管理程序上的开源软件,它能够作为独立的软件开关,也可以作为堆栈控制器,提供高度的灵活性。
Open vSwitch的应用场景广泛,已经被成功地整合进多个知名虚拟化平台,如XenServer的“波士顿”计划中的Xen云平台,它不仅是Xen、KVM、Proxmox VE和VirtualBox的默认交换机,而且还被众多其他系统如openQRM和OpenNebula所采纳,显示了其广泛的支持和兼容性。
Open vSwitch的一大优势在于其代码主要采用平台无关的C语言编写,这使得它具有极高的可移植性。无论是在不同的虚拟化环境中,还是在物理硬件上,都能轻松运行和适应,体现了其强大的适应性和通用性。
总的来说,Open vSwitch凭借其灵活性、广泛的平台支持和出色的可移植性,成为了虚拟网络管理中的重要工具,为构建和管理虚拟化网络提供了强大而可靠的解决方案。
2024-12-22 23:35
2024-12-22 23:07
2024-12-22 22:56
2024-12-22 22:53
2024-12-22 22:38
2024-12-22 22:29