OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机)

2023-05-16

OVN Manual install & Configuration

Open vSwitch 官网

参考
OVN学习(一)

OVN实战一之GNS3操作指南及OVN入门

简单理解和知识

  1. 按照 OVN Manual install & Configuration 分别叫做 Controller 节点和 Compute 节点 ,其他一般叫做 Central 节点和 Node 或 Host 节点

  2. Open vSwitch(OVS)是一款开源的“虚拟交换机”

  3. Overlay协议方面它支持GRE, VXLAN, STT, Geneve四种主流Overlay数据包

  4. 2015年OVS社区宣布了一个子项目——Open Virtual Network(OVN)。它旨在为OVS提供一个控制平面,通过一个统一的网络模型为容器、虚拟机提供相同的网络服务。

  5. OVN的功能

     L2功能,叫Logical switches(逻辑交换机)
     
     L3功能,叫Logical Router(逻辑路由器)
     
     ACL,就像我们物理交换机可以配置ACL,OVN可以针对逻辑交换机添加ACL
     
     NAT,SNAT、DNAT都支持
     
     Load Balancer,支持面向内部的负载均衡和提供外部访问的负载均衡
    

学习环境

学习 OpenStack

2 个 Hyper-V 虚拟机

  1. Controller 节点 : Ubuntu 20.04
    Management : 192.168.0.101/24 ( 网关:192.168.0.81)
    Provider : 203.0.113.101 /24 ( 网关:203.0.113.1 )

  2. Compute 节点 :Ubuntu 20.04
    Management : 192.168.0.103/24 ( 网关:192.168.0.81)
    Provider : 203.0.113.103 /24 ( 网关:203.0.113.1 )

本文目的只在理解 Open vSwitch ,不在配置OpenStack

apt 安装

Ubuntu 20.04 上学习Open vSwitch :VxLAN
简单抄录一下

apt install openvswitch-switch

apt install python3-pip

pip3 install networking-ovn==4.0.4

apt install ovn-central ovn-common ovn-host

配置 OVN 2 L2 网络

  1. 在 Controller 节点 ( 203.0.113.101 )上

    ovn-nbctl set-connection ptcp:6641:203.0.113.101
    ovn-sbctl set-connection ptcp:6642:203.0.113.101

    root@ubuntu2004-101:/home/dhbm# netstat -lntp

     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
     tcp        0      0 203.0.113.101:6641      0.0.0.0:*               LISTEN      820/ovsdb-server    
     tcp        0      0 203.0.113.101:6642      0.0.0.0:*               LISTEN      821/ovsdb-server    
     ......
    

    ovs-vsctl set open . external-ids:ovn-remote=tcp:203.0.113.101:6642
    ovs-vsctl set open . external-ids:ovn-encap-type=geneve
    ovs-vsctl set open . external-ids:ovn-encap-ip=203.0.113.101

  2. 在 Compute 节点 ( 203.0.113.103 )上

    ovs-vsctl set open . external-ids:ovn-remote=tcp:203.0.113.101:6642
    ovs-vsctl set open . external-ids:ovn-encap-type=geneve
    ovs-vsctl set open . external-ids:ovn-encap-ip=203.0.113.103

    root@ubuntu2004-103:/home/dhbm# netstat -antp |grep 6642

     tcp        0      0 203.0.113.103:53342     203.0.113.101:6642      ESTABLISHED 948/ovn-controller 
    
  3. 网络拓扑

在这里插入图片描述

构建 L2 网络 (逻辑交换机)

  1. 查询 203.0.113.101 和 203.0.113.103 的 eth1 网卡 mac 地址,后续需要用到

root@ubuntu2004-101:/home/dhbm# ip a

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:5a:a6:91 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.101/24 brd 203.0.113.255 scope global eth1

root@ubuntu2004-103:/home/dhbm# ip a

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:5a:a6:92 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.103/24 brd 203.0.113.255 scope global eth1
       valid_lft forever preferred_lft forever
  1. 在 Controller 节点 ( 203.0.113.101 )上
    创建一个逻辑交换机,然后添加两个交换机端口,并为端口设置物理地址,分别对应 2 个节点服务器上的 eth1 网卡

    在 OpenStack 中,这 2 个 eth1 网卡,充当了 Provider 角色,为每一个 instance ( 虚拟机 ) 提供Provider network 和 Self-service network 地址

    1). 创建 logical switch

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl ls-add ls-test
    

    2). 第一个端口 ( mac 地址 00:15:5d:5a:a6:91)

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-add ls-test lsport-101
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-addresses lsport-101 00:15:5d:5a:a6:91
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-port-security lsport-101 00:15:5d:5a:a6:91
    

    3). 第二个 ( mac 地址 00:15:5d:5a:a6:92)

     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-add ls-test lsport-103
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-addresses lsport-103 00:15:5d:5a:a6:92
     
     root@ubuntu2004-101:/home/dhbm# ovn-nbctl lsp-set-port-security lsport-103 00:15:5d:5a:a6:92
    
  2. 查看确认
    root@ubuntu2004-101:/home/dhbm# ovn-nbctl show

     switch 9d86d6cb-f4d9-4969-b675-e6becddf52da (ls-test)
         port lsport-103
             addresses: ["00:15:5d:5a:a6:92"]
         port lsport-101
             addresses: ["00:15:5d:5a:a6:91"]
    

    root@ubuntu2004-101:/home/dhbm# ovn-sbctl show

     Chassis "cc2e2b70-3a89-4dd5-b53c-71e9116d687a"
         hostname: ubuntu2004-101
         Encap geneve
             ip: "203.0.113.101"
             options: {csum="true"}
         Port_Binding lsport-101
     Chassis "c5ea0556-ef1a-4d7f-a5ff-cf1cc52e4389"
         hostname: ubuntu2004-101
         Encap geneve
             ip: "203.0.113.103"
             options: {csum="true"}
         Port_Binding lsport-103
    

模拟伪造虚拟机

这个相当于 OpenStack 中 Launch an instance

通过名称空间将全局系统资源包装在一个抽象中,使名称空间中的进程看起来拥有自己的全局资源的独立实例

详细解读Linux网络命名空间,veth, birdge与路由

以上构建的是 L2 逻辑交换机,所以,虚拟机只能处于同一个网段 10.0.0.0/24

  1. 在 Controller 节点 ( 203.0.113.101 )上模拟一个虚拟机:vm1-101,并将它的网卡 link 到上一步创建的交换机端口 lsport-101 (address 00:15:5d:5a:a6:91),分配内网地址: 10.0.0.101/24

     # ip netns add vm1-101
     
     # ovs-vsctl add-port br-int vm1-101 -- set interface vm1-101 type=internal
     
     # ip link set vm1-101 netns vm1-101
     
     # ip netns exec vm1-101 ip link set vm1-101 address 00:15:5d:5a:a6:91
     
     # ip netns exec vm1-101 ip addr add 10.0.0.11/24 dev vm1-101
     
     # ip netns exec vm1-101 ip link set vm1-101 up
     
     # ovs-vsctl set Interface vm1-101 external_ids:iface-id=lsport-101
    

2, 查看虚拟机 vm1-101 地址信息
root@ubuntu2004-101:/home/dhbm# ip netns exec vm1-101 ip addr show

	1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
	    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
	7: vm1-101: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
	    link/ether 00:15:5d:5a:a6:91 brd ff:ff:ff:ff:ff:ff
	    inet 10.0.0.101/24 scope global vm1-101
	       valid_lft forever preferred_lft forever
	    inet6 fe80::215:5dff:fe5a:a691/64 scope link 
	       valid_lft forever preferred_lft forever
  1. 在 compute 节点 ( 203.0.113.103 )上模拟一个虚拟机:vm1-103,并将它的网卡 link 到上一步创建的交换机端口 lsport-103 (address 00:15:5d:5a:a6:92),分配内网地址: 10.0.0.101/24

     # ip netns add vm1-103
     
     # ovs-vsctl add-port br-int vm1-103 -- set interface vm1-103 type=internal
     
     # ip link set vm1-103 netns vm1-103
     
     # ip netns exec vm1-103 ip link set vm1-103 address 00:15:5d:5a:a6:92
     
     # ip netns exec vm1-103 ip addr add 10.0.0.103/24 dev vm1-103
     
     # ip netns exec vm1-103 ip link set vm1-103 up
     
     # ovs-vsctl set Interface vm1-103 external_ids:iface-id=lsport-103
    
  2. 查看虚拟机 vm1-103 地址信息

    root@ubuntu2004-103:/home/dhbm# ip netns exec vm1-103 ip addr show

     1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
         link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     7: vm1-103: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
         link/ether 00:15:5d:5a:a6:92 brd ff:ff:ff:ff:ff:ff
         inet 10.0.0.103/24 scope global vm1-103
            valid_lft forever preferred_lft forever
         inet6 fe80::215:5dff:fe5a:a692/64 scope link 
            valid_lft forever preferred_lft forever
    

虚拟机之间连通性测试

这个相当于 OpenStack 中各个 instance 之间互相连通和访问

  1. 从 vm1-101 ping vm1-103 的 IP

root@ubuntu2004-101:/home/dhbm# ip netns exec vm1-101 ping -c 2 10.0.103

	PING 10.0.103 (10.0.0.103) 56(84) bytes of data.
	64 bytes from 10.0.0.103: icmp_seq=1 ttl=64 time=1.64 ms
	64 bytes from 10.0.0.103: icmp_seq=2 ttl=64 time=0.433 ms
	
	--- 10.0.103 ping statistics ---
	2 packets transmitted, 2 received, 0% packet loss, time 1002ms
	rtt min/avg/max/mdev = 0.433/1.038/1.644/0.605 ms
  1. 从 vm1-103 ping vm1-101 的 IP

    root@ubuntu2004-103:/home/dhbm# ip netns exec vm1-103 ping -c 2 10.0.101

     PING 10.0.101 (10.0.0.101) 56(84) bytes of data.
     64 bytes from 10.0.0.101: icmp_seq=1 ttl=64 time=1.56 ms
     64 bytes from 10.0.0.101: icmp_seq=2 ttl=64 time=0.425 ms
     
     --- 10.0.101 ping statistics ---
     2 packets transmitted, 2 received, 0% packet loss, time 1002ms
     rtt min/avg/max/mdev = 0.425/0.994/1.564/0.569 ms
    

清理现场

  1. 在 Controller 节点 ( 203.0.113.101 )上
    删除逻辑交换机及其端口
    ovn-nbctl lsp-del lsport-101
    ovn-nbctl lsp-del lsport-103
    ovn-nbctl ls-del ls-test

    删除模拟虚拟机
    ip netns del vm1-101
    ovs-vsctl --if-exists --with-iface del-port br-int vm1-101

  2. 在 compute 节点 ( 203.0.113.103 )上

    删除模拟虚拟机
    ip netns del vm1-103
    ovs-vsctl --if-exists --with-iface del-port br-int vm1-103

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机) 的相关文章

  • MacOS设置终端代理

    前言 国内的开发者或多或少都会因为网络而烦恼 xff0c 因为一些特殊原因有时候网络不好的时候需要使用代理才能完成对应的操作 原来我一直都是使用斐讯路由器然后刷了梅林的固件 xff0c 直接在路由器层面设置转发代理 xff0c 把一些国内网
  • Linux SIGPIPE信号产生原因与解决方法

    TCP 四次握手 产生SIGPIPE的原因 SIGPIPE信号产生的原因 xff1a 简单来说 xff0c 就是客户端程序向服务器端程序发送了消息 xff0c 然后关闭客户端 xff0c 服务器端返回消息的时候就会收到内核给的SIGPIPE
  • Homebrew最新安装--解决安装超时的问题

    更新 2021 1 20 可以直接用下边的脚本进行安装 bin zsh c span class token string 34 span class token variable span class token variable spa
  • TIDB使用时的注意点笔记

    场景 xff1a 虽然TiDB号称完全兼容MySQL 5 7 协议 MySQL 5 7 常用的功能及语法 xff0c 但是其与MySQL数据库仍然存在一些差异 xff0c 可能会导致下游TiDB环境故障 以下是我们使用TiDB时需要重点关注
  • SpringBoot结合MyBatis-Plus快速CRUD笔记

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 DTO amp DO二 示例1 定义Controller2 定义Service和实现3 定义Mapper4 前端访问测试
  • Java最佳实践笔记

    一 常量定义最佳实践 span class token keyword public span span class token keyword final span span class token keyword class span
  • 聊聊JavaSPI

    文章目录 前言一 SPI 示例二 SPI原理与双亲委派机制1 MySQL Driver2 DataX 插件的热插拔也是破坏双亲委派的一种3 Tomcat类加载同样是破坏了双亲委托 总结参考文章 前言 SPI 全称为 Service Prov
  • 实时平台开发笔记

    文章目录 一 背景二 功能模块划分1 作业台主要功能任务生命周期 2 任务列表主要功能 3 项目管理4 模板管理5 UDF管理 三 问题解决1 kerberos认证问题2 分布式锁解决Job名称冲突问题3 自定义线程池用以监控线程运行情况4
  • 二叉树快速拾遗笔记

    文章目录 前言二叉树前中后序遍历反转二叉树二叉树最大最小深度对称二叉树判断是否是平衡二叉树构造最大二叉树前序遍历打印二叉树二叉树层次遍历二叉树中和为某一值的路径总结 前言 二叉树基础内容拾遗 xff0c 使用递归解题三部曲 xff1a 找整
  • 链表拾遗笔记

    文章目录 1 反转单链表2 打印单链表3 O 1 删除指定节点4 双指针法求求链表倒数第k个节点5 判断链表是不是有环6 合并两个单链表7 删除链表中的重复节点7 实现一个单链表总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下
  • 经典的排序算法拾遗笔记

    文章目录 选择排序插入排序冒泡排序快速排序二分查找交换两个位置的元素 总结 各种排序算法复杂度总结如下 xff1a 选择排序 分析 xff1a span class token comment 选择排序 4 3 5 1 4 3 5 1 le
  • BGP基本配置与总结

    使用BGP路由协议的意义是将自治系统中的路由通告到外部 xff0c 而自治系统内使用的是IGP路由 xff0c 这就是为什么内部BGP管理距离这么高 xff0c 而外部BGP管理距离这么低的原因了 1 建立BGP邻居的前提 xff1a 在B
  • Flink常见报错持续更新

    Flink 1 10 1 Job因为没有可用的任务slot而失败 2021 06 24 12 50 36 433 INFO org apache flink runtime executiongraph ExecutionGraph Job
  • IDEA一劳永逸设置默认maven

    前言 每次发现新建项目的时候maven设置便自动重置是不是很恼火 xff0c 别急这里记录下一劳永逸的办法 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 设置 示例 xff1a IntelliJ IDEA 20
  • 远程debug docker中应用

    前言 最近在研究kylin相关的内容 xff0c 采用官方提供的docker化一键部署的方式来进行 xff0c 作为远程服务本地debug的原理是相通的 xff0c 这里记录下来以便参考 提示 xff1a 以下是本篇文章正文内容 xff0c
  • Kylin接入外部Jdbc Mysql数据源

    前言 Kylin目前不仅仅支持Hive作为数据源构建cube xff0c 也可以支持使用外部jdbc作为数据源进行构建 xff0c 比如使用MySQL数据源的时候会让我们下载sqoop安装包 xff0c 本质上是使用sqoop全量同步我们要
  • SpringBoot有关数组对象转JSON

    文章目录 前言一 数据的插入二 查询数据1 插入数据2 查询数据 总结 前言 比如 xff0c 有个List lt AlarmInfo gt 对象需要存储到mysql中 xff0c 我们可以存储为varchar类型 xff0c 也可以存储为
  • 分页中遇到的一个传值问题

    文章目录 前言一 传入Integer值参数二 传入String值参数 前言 目的 xff1a 在前端传入一个参数对所选的结果进行分页过滤 xff0c 这应该是非常常见的一个需求吧 xff0c 但是如何传Integer值使用mybatis p
  • Python2.7升级版本记录

    文章目录 前言一 环境二 升级步骤1 安装各类依赖库2 编译3 编译安装4 添加软连接5 修改yum安装6 升级pip7 验证 参考 前言 python2 x版本已经废弃了 xff0c 有些软件安装的是会遇到如下提示 xff0c Sorry
  • MySQL笔记

    MySQL Version 5 7 25 一 常见面试问题汇总 1 select for update会锁表还是锁行 如果是纯select是不会加锁的 xff0c 但是这里会加锁 xff0c 而且还是悲观锁 xff0c 但是具体锁表还是锁行

随机推荐

  • mybatis-plus最好用的逻辑删除

    文章目录 前言一 逻辑删除1 添加全局配置2 设置实体中的字段 总结 前言 为了防止人为的因素导致误删除无法恢复的情况所以我们需要逻辑意义上的删除 xff0c 而通常最简便的方式就是打标记 xff0c 这个步骤可以由mybatis plus
  • IDEA Git常用操作

    前言 Git的操作可以使用命令行 xff0c 当然为了偷懒熟练使用IDEA的git未尝不是一个好办法 xff01 一 当前修改的分支想要暂存怎么办 xff1f 这个需要是因为当前修改的分支还没有修改完 xff0c 突然有另外的需求需要去处理
  • Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有一些软件包无法被安装 如果您用的是 unstable 发行版 xff0c 这也许是 因为系统无法达到您要求的状态造成的 该版本中可能会有一些您需要的软件 包尚未
  • 关于需求沟通的一点思考

    作为一名程序员 xff0c 可能会来自各方的需求沟通问题 xff0c 而且更多的时候是横插进来的任务 xff0c 每个人都说这个任务优先级高 xff0c 尽快做 xff0c 是不是有点焦头烂额了 xff0c 马上就开始啪啪敲代码了吗 xff
  • Go同目录下多个main声明会导致编译失败的问题

    问题 xff1a Go同目录下多个main声明会导致编译失败的问题 main redeclared in this block 表示在同级目录下main重复声明 xff0c 在学习中可以依照不同的文件夹进行分割 xff0c 也可以按照如下方
  • 嵌入式debian没有lsusb命令解决

    问题 bash lsusb command not found 解决
  • Python学习笔记-PyQt6状态栏

    QMainWindow有自带的状态栏 xff0c 可以通过statusBar 方法获取自身的状态栏 xff0c 或者通过实例化QStatusBar类 xff0c 然后使用QMainWindow setStatusBar 方法将状态栏添加到主
  • 未完成的IT路停在回车键---2014年末总结篇

    时间都去哪儿了 xff1f 一晃而过 xff0c 越来越能体会到这个词的真实感 特别是过了二十岁 xff0c 这种感觉越来越深刻 xff0c 越来越强烈 xff0c 犹如小编做公交车的时候一直向后排排倒的香樟树 xff0c 还记得有首歌叫时
  • 这一次,VR离我们真的很近

    从高考作文开始 今年号称是VR元年 xff0c 虽然目前VR还没能像手机一样走进千家万户 xff0c 但关于VR设备的关讨论是层出不穷 而今年高考 xff0c 浙江省的作文题就与VR相关 网上购物 视频聊天等在我们生活中越来越普及 有人预言
  • 补.从零开始学习C语言--scanf的%c前为什么加空格

    include lt stdio h gt int main void int i char ch scanf 34 d 34 amp i scanf 34 c 34 amp ch 这行的 C前有个空格 printf 34 i 61 d n
  • svn status 返回值详解

    转http blog linuxphp org archives 652 svn 是在提交前查看本地文本和版本库里面的文件的区别 返回值有许多种具体含义如下 xff1a url 61 L abc c svn已经在 svn目录锁定了abc c
  • ubuntu杀毒软件clamAV运维笔记

    1 安装 xff1a apt get install clamav 2 守护进程安装 xff1a apt get install clamav daemon 3 更新病毒库 xff1a freshclam 或手动下载安装 cvd文件 备注
  • shell 教程一:变量,字符串,传参

    一 xff0c hello shell strong span class pln style color rgb 72 72 76 vi hello span span class pun style color rgb 147 161
  • 树莓派Ubuntu20.04创建虚拟内存文件并设置开机自动启用

    目录 一 检查有没有虚拟内存 二 创建虚拟内存文件并设置权限 三 设置并激活虚拟内存文件 四 设置开机自动启用虚拟内存 五 重启后检测虚拟内存是否正常启用 一 检查有没有虚拟内存 树莓派Ubuntu20 04默认没有虚拟内存 xff0c 可
  • 随着稻香河流继续奔跑 ——致2016

    写在前面 xff0c 2016于我而言 xff0c 是丰收的一年 这一年 xff0c 我收获了能力与本领 xff0c 收获了美丽与自信 xff0c 收获了欣赏和肯定 2017 xff0c 我会不忘来时路 xff0c 继续前行 2016的驿站
  • 浅谈strtok函数的使用心得

    经常使用strtok函数进行文本操作 xff0c 其实他是一个很好用的函数 xff0c 很方便 xff0c 能够简单的实现一行文本的切分操作 xff0c 总结一下使用心得 函数原型char strtok char s const char
  • 局域网内Windows使用RealVNC远程连接CentOS6.5桌面

    1 进入root终端 xff0c 检查是否安装VNC server xff1a rpm q tigervnctigervnc server 2 如果未安装VNC server xff0c 则 xff1a yum install ytiger
  • CentOS7安装tigerVNC

    一 首先系统是已经安装了图形界面 并默认是启动到图形界面 xff0c 如果你的系统没安装图形界面 xff0c 就请给系统安装图形界面 xff1a yum y span class token function groups span spa
  • openstack主要版本亮点

    openstack主要版本亮点 1 Stein 在Stein新增的几十项功能特性中 xff0c 主要亮点有三 xff1a 容器功能的强化 用于支持5G 边缘计算和网络功能虚拟化 xff08 NFV xff09 用例的网络升级功能 资源管理和
  • OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机)

    OVN Manual install amp Configuration Open vSwitch 官网 参考 OVN学习 xff08 一 xff09 OVN实战一之GNS3操作指南及OVN入门 简单理解和知识 按照 OVN Manual