【OpenStack】network相关知识学习
network
类型
local:通信不跨主机,必须同一网段,主要做单机测试使用;
flat:统计可以跨主机,但是需要在同一网段;
每个 flat network 都会独占一个物理网卡
计算节点上 bridge 的名称与控制节点上一致,都是 brqf153b42f-c3,表明是同一个 network
- vlan: 工作在二层广播域(链路层),二层隔离,跨主机通信,可以不必在同一网段(待确认),同一vlan下的网络,都可以进行通信,但是vlan之间通信必须使用路由器,即:vlan内网络互通,vlan间网络隔离;
注意: 因为物理网卡 eth1 上面可以走多个 vlan 的数据,那么物理交换机上与 eth1 相连的的 port 要设置成 trunk 模式,而不是 access 模式。
cirros-vm1(172.16.100.3) 与 cirros-vm2(172.16.100.4) 位于不同节点,通过 vlan100 相连,可互相通信。
cirros-vm1 位于控制节点,属于 vlan100。
cirros-vm2 位于计算节点,属于 vlan100。
cirros-vm3 位于计算节点,属于 vlan101。
cirros-vm1 与 cirros-vm2 都在 vlan100,它们之间能通信。
cirros-vm3 在 vlan101,不能与 cirros-vm1 和 cirros-vm2 通信。
- Vxlan: 隧道技术
- gre:
port
可以看做是vSwitch上的一个端口,主要包括两个属性:
- ip (在network、subnet约束)
- mac
目前官方文档可以看出,port可以与3种device关联;
- vm的vif(虚拟网卡):compute:nova (server instance),port绑定到vm的VIF,则该port的ip和mac会分配给这个VIF ==> 用于为虚拟机提供网络服务;
- router的interface上: network:router_interface (router interface),用于不同的subnets之间互相通信
- dhcp: network:dhcp (DHCP agent)
Switches
- 连接处于相同二层网络的hosts;
- 运行在layer-2层网络;
- 基于Mac地址转发数据包;
Routers
- 运行在layer-3层网络;
- 基于IP地址转发数据包
接入的物理 router 有两个 interface ip:
172.16.100.1 对应 vlan100 的网关。
172.16.101.1 对应 vlan101 的网关。
当 cirros-vm1 要跟 cirros-vm3 通信时,数据包的流向是这样的:
1. 因为 cirros-vm1 的默认网关指向 172.16.100.1,cirros-vm1 发送到 cirros-vm3 的数据包首先通过 vlan100 的 interface 进入物理 router。
2. router 发现目的地址 172.16.101.3 与 172.16.101.1 为同一个 vlan,则从 vlan101 的 interface 发出。
3. 数据包经过 brq1d7040b8-01 最终到达 cirros-vm3
vlan
VLAN is a networking technology that enables a single switch to act as if it was multiple independent switches
一种网络技术:可以将1个switch当做多个独立的switchs使用;
示例:
两台host连接到同一台switch上,如果这两个主机处于不同的vlan网络下,则这两台主机的流量是隔离的,互相不可见。
上述场景: 1个switch实际上扮演着2个独立switch的角色;
不同的vlan网络,流量是相互隔离的,不同的vlan网络间进行通信,需要使用route
Floating IP
作用和原理
- floating IP 能够让外网直接访问租户网络中的 instance。这是通过在 router 上应用 iptalbes 的 NAT 规则实现的。
- floating IP 是配置在 router 的外网 interface 上的,而非 instance,这一点需要特别注意
创建和绑定
ext_net创建 floating ip
:只能在外部网络上创建浮动IP,创建时,需要指定外部网络的networkId;绑定到内部port
:创建完 FIP 后,需要绑定到 1个 内部port上(这个 内部port 对应的ip就是 fixed ip);
Vxlan
实现方式:
- Linux vxlan 创建一个 UDP Socket,默认在 8472 端口监听。
- Linux vxlan 在 UDP socket 上接收到 vxlan 包后,解包,然后根据其中的 vxlan ID 将它转给某个 vxlan interface,然后再通过它所连接的 linux bridge 转给虚机
- Linux vxlan 在收到虚机发来的数据包后,将其封装为多播 UDP 包,从网卡发出。
vxlan-100 的 VNI 是 100
- cirros-vm1(172.16.100.3) 与 cirros-vm2(172.16.100.4) 位于不同节点,通过 vxlan100 相连
- 可以互相通信
防火墙 vs 安全组
相同点
- 底层都是通过 iptables实现
不同点
- Fwaas:iptables规则应用在router上,保护整个租户网卡;
- 安全组:iptables规则应用在虚拟网卡上(在宿主机上实现iptables),保护的是单个instance;
- Fwaas可以定义allow和deny规则;安全组只能定义allow规则;
VPC互通
参考
https://docs.openstack.org/neutron/queens/admin/intro-basic-networking.html
《每天5分钟玩转 OpenStack》教程目录
【OpenStack】network相关知识学习的更多相关文章
- 客户端相关知识学习(十二)之iOS H5交互Webview实现localStorage数据存储
前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...
- 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储
前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...
- 客户端相关知识学习(六)之deeplink技术
Deeplink应用描述 Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页.不似web,一个链接就可以直接打开web的内页 ...
- Python 多线程相关知识学习
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...
- 服务端相关知识学习(三)Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
- View相关知识学习总结
(一)LayoutInflater原理分析 LayoutInflater主要用于加载布局.通常情况下,加载布局的任务都是在Activity中调用setContentView()方法来完成的,该方法内部 ...
- Python 网络编程相关知识学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- jmeter相关知识学习记录
基于Jmeter5.2.1 断言之响应断言 响应断言:对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确. 测试字段就是指要断言的内容的匹配处. 响应文本:就是响应的body部分: ...
- 客户端相关知识学习(十)之app给h5传递数据
方法一: app可以把参数传到h5的链接里,用类似?xx=xx&xx=xx的形式拼接,js解析参数即可. 方法二: 情况一:app调用h5 原生app都可以对js的function进行触发,前 ...
随机推荐
- 解决安卓UI刷新卡屏,只显示最后一处刷新的问题
---恢复内容开始--- 错误1 安卓的机制决定了只有UI线程(也就是主线程)才能更新UI界面 否则会导致UI界面混乱的问题 这就说明了在new Thread中直接showImage是会报“出现非主线 ...
- prefixspan python
from:https://github.com/chuanconggao/PrefixSpan-py API Usage Alternatively, you can use the algorith ...
- oracle中 trunc 处理日期的用法
方法/步骤 1 select trunc(sysdate) from dual 结果是 截止到当日 不设置,默认是截止到”日“ 2 select trunc(sysdate,'year') fr ...
- day_7
r 读w 写a 追加写 f = open('s.txt',mode='r',encoding='utf-8') ff = f.readline() #读取时一行一行的时候末尾会跟着\nprint(ff ...
- 基于lnmp环境安装Discuz
安装环境 Linux:CentOS Linux release 7.5.1804 (Core) nginx:1.14.2 php-fpm:5.4.16 mariadb-server:5.5.60 基本 ...
- OC关于项目里面的代码统计次数
备注:这里只是个人的观点,有的地方也是copy,多多指教,个人笔记,有侵犯你们版权的地方还望海涵!!! 1.打开终端 2.cd 进入项目根目录 3.输入命令 find . "(" ...
- Hadoop学习笔记01_Hadoop搭建
想往大数据方向转, 难度肯定是有的. 基础知识肯定是要有的,如果是熟悉JAVA开发的人,转向应该优势大. 像我这样的,只有Linux基础以及简单的PHP基础的人,转向难度很大.但是事在人为,努力学习多 ...
- 团队项目(MVP------新能源汽车无线充电管理网站)(个人任务1)
个人任务:1.设计问卷调查了解电动车目前的市场需求情况 2.收集问卷,并且进行总结和分析 3.后台管理系统界面的登录和注册界面的编写(主要用到html,css,javascript,其中用户的合法性检 ...
- chown语法
chown 作用:改变某个文件或目录的所有者和所属的组, 该命令可以向某个用户授权,使该用户编程指定文件的所有者或者改变文件的所属组, 用户可以是用户或者是用户ID, 用户组可以是组名或者租ID, ...
- 关于vuex和Promise reject 或.catch 的报错处理。
在我们开发过程中,经常会使用vuex来管理接口请求和返回数据. 在vue组件页面使用computed来读取vuex中state的数据. getTaskList({ commit }, payload) ...