OpenStack(4)--NameSpace实现不同项目(租户)重叠网段

openstack通过namespace将不同项目(租户)的网络隔离,每个项目的管理员都需要对项目网络进行规划建设,这就导致不同项目之间会重复使用到某些网段,例如192.168.X.X就是管理员习惯使用的网段。

上一次我们新建位于vxlan10_net的cirros-vm1和位于vxlan11_net的cirros-vm3的实例并成功通信,今天讲一下原理。

 cirros-vm1和cirros-vm3位于不同vxlan,tar设备的网卡信息并没有ip,但却可以通过router实现三层通信,如果没有 Gateway IP,router_100_101 是如何完成路由的呢?

router通过将ip网关信息封装在namespace实现不同vxlan之间的通信,但为何要多此一举呢?明明不需要namespace就可以实现不同vxlan之间的通信。答案就是为了实现不同项目(租户)可以重叠使用网络。

[root@localhost ~(keystone_admin)]# nova list
+--------------------------------------+------------+---------+------------+-------------+--------------------------+
| ID                                   | Name       | Status  | Task State | Power State | Networks                 |
+--------------------------------------+------------+---------+------------+-------------+--------------------------+
| 791556ab-6231-4370-8a81-972862da200f | cirros-vm1 | SHUTOFF | -          | Shutdown    | vxlan10_net=172.16.10.11 |
| 6173f9bf-bbed-4d71-96d3-f7ae660dc21c | cirros-vm2 | SHUTOFF | -          | Shutdown    | vxlan10_net=172.16.10.9  |
| ea42b670-c084-4e76-ae84-23d6617eb420 | cirros-vm3 | SHUTOFF | -          | Shutdown    | vxlan11_net=172.16.11.4  |
+--------------------------------------+------------+---------+------------+-------------+--------------------------+

###查看tap设备

[root@localhost ~(keystone_admin)]# virsh dumpxml 791556ab-6231-4370-8a81-972862da200f | grep tap
      <target dev='tap2c798bf4-8e'/>
[root@localhost ~(keystone_admin)]# virsh dumpxml ea42b670-c084-4e76-ae84-23d6617eb420 | grep tap
      <target dev='tap00515be6-9e'/>

###查看tap设备的网卡信息

[root@localhost ~(keystone_admin)]# ifconfig tap2c798bf4-8e
tap2c798bf4-8e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet6 fe80::fc16:3eff:feee:1305  prefixlen 64  scopeid 0x20<link>
        ether fe:16:3e:ee:13:05  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 90 (90.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~(keystone_admin)]# ifconfig tap00515be6-9e
tap00515be6-9e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet6 fe80::fc16:3eff:febf:c0eb  prefixlen 64  scopeid 0x20<link>
        ether fe:16:3e:bf:c0:eb  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1368 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1382 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

l3 agent 会为每个 router 创建了一个 namespace,而router下的接口信息同样会同步到namespce的接口信息,通过 veth pair 与 TAP 相连,然后将 Gateway IP 配置在位于 namespace 里面的 veth interface 上,这样就能提供路由了。

###查看路由(namespace)列表

[root@localhost ~(keystone_admin)]# neutron router-list
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| id                                   | name         | tenant_id                        | external_gateway_info                                                                                                                                                                  | distributed | ha    |
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| 30bba1f4-96bb-459c-9760-dba01bde3a01 | router_10_11 | 26f0265d7ca347239ea13ed32279ff7a | {"network_id": "463adb80-e2f3-4a18-9629-cf966fc0b360", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "00897e13-a522-4b8a-943e-7943b652af5a", "ip_address": "172.24.4.4"}]} | False       | False |
| 341a7e57-463d-411b-af0a-8cddc56777d1 | router1      | e035103daab74f818fcb4a8a7dbcfda6 | {"network_id": "463adb80-e2f3-4a18-9629-cf966fc0b360", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "00897e13-a522-4b8a-943e-7943b652af5a", "ip_address": "172.24.4.2"}]} | False       | False |
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+

###查看具体路由(namespace)的接口信息

[root@localhost ~(keystone_admin)]# ip netns
qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01 (id: 5)
qdhcp-53c25734-40ea-421e-8744-31d3e14819d0 (id: 4)
qdhcp-e64a94b3-3256-4a3d-9833-cc3c9f421e70 (id: 3)
qdhcp-d6c09c69-8bb0-476d-9c71-457251af87b9 (id: 1)
qdhcp-fcf7d046-0937-43af-8b94-32cc1edb24e1 (id: 2)
qrouter-341a7e57-463d-411b-af0a-8cddc56777d1 (id: 0)

id为5的路由(namespace)就是router_10_11的具体id,ip netns exec ID 可查看详细信息。 

###查看路由(namespaceID:qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01)详细信息

[root@localhost ~(keystone_admin)]# ip netns exec qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
33: qg-f86168a4-fc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:b9:54:91 brd ff:ff:ff:ff:ff:ff
    inet 172.24.4.4/24 brd 172.24.4.255 scope global qg-f86168a4-fc
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:feb9:5491/64 scope link 
       valid_lft forever preferred_lft forever
34: qr-03ede9be-8d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:5f:04:7f brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.1/24 brd 172.16.10.255 scope global qr-03ede9be-8d
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe5f:47f/64 scope link 
       valid_lft forever preferred_lft forever
35: qr-3b2b1f99-dc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:9a:3f:f7 brd ff:ff:ff:ff:ff:ff
    inet 172.16.11.1/24 brd 172.16.11.255 scope global qr-3b2b1f99-dc
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe9a:3ff7/64 scope link 
       valid_lft forever preferred_lft forever

 新建网络时候没有设置网关,默认子网首个地址为该网络的网关地址,此处可以看到router有三个接口,分别是33、34、35,33为对外网关,新建路由时默认就有,34、35则对应vxlan10、vxlan11接口,172.16.10.0网络在没有设置网关的情况下默认网关为172.16.10.1。

1. qr-03ede9be-8d 上设置了 Gateway IP 172.16.10.1,与 root namespace 中的 tap03ede9be-8d 组成 veth pair。

2. qr-3b2b1f99-dc 上设置了 Gateway IP 172.16.11.1,与 root namespace 中的 tap3b2b1f99-dc 组成 veth pair。

这里将路由信息封装在namespace中,在外部理解可以直接把namespace当做是路由,并不需要管理员去管什么是namespace,项目管理员只需要配置好vxlan网络和路由就可以实现三层通信,但在openstack的管理员视角,却巧妙地解决了网络重叠的问题。

名称不一致,只关注拓扑关系就行。

不使用namespace

使用namespace

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33096.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【TCP/IP】多进程服务器的实现(进阶) - 多进程服务器模型及代码实现

经过前面的铺垫&#xff0c;我们已经具备实现并发服务器的基础了&#xff0c;接下来让我们尝试将之前的单任务回声服务器改装成多任务并发模式吧&#xff01; 多任务回声服务器模型 在编写代码前&#xff0c;先让我们大致将多任务&#xff08;回声&#xff09;服务器的模型抽象…

通过USB和wifi连接真机编写第一个脚本

目录 一、连接手机 1、通过usb数据线连接手机 2、无线连接手机 二、编写第一个脚本 一、连接手机 1、通过usb数据线连接手机 数据线连接手机并允许调试 cmd命令行执行&#xff1a; adb devices 如果没有显示device信息&#xff0c;请检查&#xff1a; 手机是否开启usb调…

配置了git config --global credential.helper store后,还是弹出输入密码框

使用http协议拉取代码时,每次pull/push都会弹出账号密码框,可以使用git的配置credential.helper来保存每次输入的账号密码到硬盘上,命令git config --global credential.helper store,store表示存到硬盘中,但是按照这样操作后git pull还是弹出密码框,通过git config --list发现…

【雕爷学编程】Arduino动手做(137)---MT8870语音解码

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

云原生之深入解析Dapr安全性之访问控制策略

一、服务调用范围访问策略 ① 跨命名空间的服务调用 Dapr 通过服务调用 API 提供端到端的安全性&#xff0c;能够使用 Dapr 对应用程序进行身份验证并设置端点访问策略&#xff1a; Dapr 应用程序可以被限定在特定的命名空间&#xff0c;以实现部署和安全&#xff0c;当然仍然…

Istio 什么是服务网格

什么是服务网格 服务网格(Service Mesh)这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互。随着规模和复杂性的增长&#xff0c;服务网格越来越难以理解和管理。 它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求&am…

oracle字符集

1、查看oracle字符集 如果操作系统或者客户端的字符集设置和数据库设置不一样就会出现乱码 查询NLS_LANG即操作系统环境变量要设为 NLS_LANGUAGE_NLS_TERRITORY**.NLS_CHARACTERSET**&#xff0c;如&#xff1a; export NLS_LANG“AMERICAN_AMERICA.AL32UTF8”

Hadoop环境搭建

一、简介 1.1、概念 Hadoop是一个由Apache基金会所创建的分布式系统基础架构&#xff0c;主要解决海量数据的存储和海量数据的分析计算问题&#xff0c;从广义上来说hadoop是数据存储分包器&#xff0c;可以存储大量的数据。 1.2、优势 Hadoop具有高可靠性&#xff08;Hado…

electron+vue3+ts+vite

首先使用vite工具创建一个vue3ts的项目 npm create vite创建好vuets项目后启动项目 cd electron-vue3-ts-vitenpm installnpm run dev 访问http://127.0.0.1:5173/地址可以看到项目已经启动成功 安装Electron 接下来我们安装electron&#xff0c;使用以下命令 npm i -D el…

CV什么时候能迎来ChatGPT时刻?

卷友们好&#xff0c;我是rumor。 最近看了几篇CV的工作&#xff0c;肉眼就感受到了CVer们对于大一统模型的“焦虑”。 这份焦虑让他们开始尝试统一一切&#xff0c;比如&#xff1a; 统一复杂的自动驾驶任务的优化目标[1]&#xff0c;来自今年CVPR最佳论文。统一典型的CV任务&…

360手机 360手机刷机最高安卓版本参考

360手机 360手机刷机最高安卓版本参考 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【360手机(最高)安卓版本】 以下列举为常见360手机机型&#xff1b;其它早期系列&#xff0c;一般为Android4-6左右360手机UI界…

doker安装RabbitMQ以及用java连接

目录 doker安装&#xff1a; RabitMq安装&#xff1a; java链接 doker安装&#xff1a; 参考链接&#xff08;非常详细&#xff09;&#xff1a; docker安装以及部署_docker bu shuminio_春风与麋鹿的博客-CSDN博客 安装好后开启doker //启动docker服务 systemctl start do…

保偏产品系列丨5款保偏光纤产品简介

保偏光纤应用日益扩大&#xff0c;特别是在干涉型传感器等测量方面&#xff0c;利用保偏光纤的光无源器件起着非常重要的作用&#xff0c;种类也很多。 本文来介绍5款保偏光纤系列产品以及它们的性能&#xff0c;欢迎收藏转发哦&#xff01; 01、保偏光纤跳线-TLPMPC 保偏光纤跳…

梯度下降法求函数的解

题目 例如 y x^ 5 e^x3x−3&#xff0c;求解y 0的解 问题分析 首先要构造y 0的损失函数&#xff0c;让这个损失函数是凸的&#xff0c;也就是可以有最优解&#xff0c;并且是可到的&#xff0c;比较容易想到的是mse平方误差&#xff0c;我们要让y和0之间绝对误差最小。lo…

css 背景颜色级别高于背景图

<div class"bg-parent"> <img :src"employeeImg" class"bg-url" /> <div class"bg"> <el-icon class"plus-icon"> <Plus /> </el-icon> </div> </div> .bg-parent{ //父级…

python3套接字编程之socket和socketserver(TCP和UDP通信)

socket和socketserver是python3中socket通信模块&#xff0c;关于其使用做如下总结。 目录 1.socket 1.1模块引入 1.2套接字获取 1.3套接字接口 1.3.1 服务端 1.3.2 客户端套接字函数 1.3.3 公共套接字函数 1.3.4 面向锁的套接字方法 1.3.5 面向文件的套接字的函数 …

CNN卷积类型总结(标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等)

目录 标准卷积 卷积的运算 conv2d conv1d 其他卷积类型 空洞卷积&#xff08;膨胀卷积&#xff09; 反卷积&#xff08;转置卷积&#xff09; 深度可分离卷积 分组卷积 参考文章 上学时&#xff0c;卷积常在各个课程中出现&#xff0c;现代、信号与系统这些&#xff…

【MySQL】SQL的高阶用法

文章目录 条件查询使用关系运算符查询使用IN关键字查询使用BETWEEN AND关键字查询使用空值查询使用AND关键字查询使用OR关键字查询使用LIKE关键字查询(模糊查询)使用LIMIT分页查询使用GROUP BY进行分组查询GROUP BY和聚合函数一起使用GROUP BY和聚合函数以及HAVING一起使用 使用…

热点探测技术架构设计与实践

1. 概述 说到热点问题&#xff0c;首先我们先理解一下什么是热点&#xff1f; 热点通常意义来说&#xff0c;是指在一段时间内&#xff0c;被广泛关注的物品或事件&#xff0c;例如微博热搜&#xff0c;热卖商品&#xff0c;热点新闻&#xff0c;明星直播等等&#xff0c;所以…

2-css-2

一 复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09;。 1 后代选择器 后代选择器&#xff1a;选中某元素的后代元素。 选择器写法&#xff1a;父选择器…