OpenStack Network --- introduction部分 阅读笔记
Basic Networking
1、混杂模式(promiscuous mode):当网卡被配置为混杂模式时,它们会将所有的frame传递给操作系统,即使MAC地址不匹配。
2、交换机(switch)是一种拥有多个端口的网络硬件,能将frame从连接的一个主机转发到另一个主机。它会维护一张叫做forwarding table或者交forwarding information base(FIB)的表,用于记录MAC地址和端口的关系,该表由交换机转发frame的过程中学习获得。交换机还可以级联在一起,这些连接在一起的交换机和主机可以看成是单个网络。
3、VLAN可以让单个交换机看起来像多个独立的交换机一样,即连接在同一个交换机上的主机,如果它们不属于同一个VLAN就看不见对方。每一个VLAN有一个编号从1到4095的ID。
当多个交换机连接在一起时,连接的端口(即trunck port)必须能够转发来自任何VLAN的Ethernet frames,而且发送frame的交换机必须给frame加上VLAN ID,这样接收的交换机才能保证合适的主机收到该frame。
4、如果两个主机的IP地址的网络号相同,那么它们属于同一个subnet,而以太网中位于同一个local network的两台主机之间可以互相通信。ARP协议假设,同一个subnet中的主机都位于同一个local network。
5、有两种方式来表示一个子网:
dotted quad: 255.255.255.0
classless inter-domain routing(CIDR): 192.168.1.5/24
6、DHCP(Dynamic Host Configuration Protocol)用于在主机启动时自动为其分配IP。
DHCP client由端口67向地址255.255.255.255的端口68发送一个UDP包,DHCP server会从端口68向client的端口67发送响应。具体交互过程如下:
- client发送一个discover(我是MAC地址为08:00:27:b9:88:74的client,需要一个IP地址)
- server发送一个offer(好的,08:00:27:b9:88:74,我给你一个IP地址10.10.0.112)
- client发送一个request(Server 10.10.0.113,我愿意接受IP 10.10.0.112)
- server返回一个acknowledgement(好的,08:00:27:b9:88:74, IP 10.10.0.112是你的了)
DHCP server通常会在发送给DHCP client IP地址和子网掩码的同时,还会发送default gateway的IP地址。OpenStack用dnsmasq来实现DHCP server。
7、因为TCP能够检测(detect)和重传(retransmit)丢失的包,因此它被称为reliable protocol。
8、应用可以用多播(IP multicast)技术将UDP数据包发送到指定的主机集合。接收的应用必须首先通过给UDP socket绑定一个合法的multicast group address来加入一个multicast group。接收主机和发送主机不需要在同一个local network,但是中间经过的路由器必须被配置成支持IP多播的。VXLAN就是一种使用IP多播基于UDP的协议。
Network Components
1、防火墙(Firewalls) 用于对流量进行管理。防火墙可以是用来连接两个网络的定制的设备,也可以是在操作系统中基于软件的过滤规则。它可以基于源IP地址,目标IP地址,端口号以及连接状态等条件对包进行过滤。主要用来让主机避免未经授权的登陆以及恶意的攻击。Linux系统一般使用iptables来实现防火墙。
Overlay(tunnel)protocols
使用隧道的原因是在不兼容的网络上传输数据,或者在不安全的网络上提供一个安全的路径。通常被传输的数据都会进行加密,从而让那些私密的数据也能公开进行传输。
1、GRE(Generic routing encapsulation)
2、VXLAN(Virtual extensible local area network)是为了提供可扩展的网络隔离。它运行在多个三层网络之上构建一个二层的overlay网络。每个overlay都被称为一个VXLAN segment。只有处于同一个VXLAN segment中的虚拟机才能互相通信。
Network Namespace
1、Linux启动时存在一个default namespace,所有的网络设备都存在其中。但是我们也可以新建network namespace,并且在其中创建新的设备,或者将已有的设备从一个namespace转移到另一个namespace。
2、每个network namespace都有它自己的路由表,这是network namespace存在的主要原因。路由表的关键是目标IP地址,而如果想要同样的目标IP地址在不同的时候代表不同的含义,network namespace正是我们需要的。而这对OpenStack Networking对于不同的虚拟网络提供有重复的IP地址的特性是非常重要的。
3、VRF(Virtual routing and forwarding)是一种能够让多个路由表实例存在于同一个路由器的IP技术。
Network Address Translation
1、NAT可以在IP包传输的过程中改变其头部的源地址或目标地址。通常IP包的发送者和接收者通常都不会意识到包被修改过了。在OpenStack中,通常是Linux服务器用iptables软件包来实现NAT的。
2、RFC 1918保留了以下三个子网作为私有地址:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
3、SNAT(Source Network Address Translation)在数据包进入公网之前,NAT路由器会将IP数据包头部的源地址改成它自己的公网IP,并且修改源TCP或者UDP端口,同时路由器会维护一个表,用于记录源IP地址以及端口到修改后的IP地址和端口的映射关系。这种既改变端口也改变IP地址的SNAT方式称为PAT(Port Address Translation)或者NAT overload。
4、DNAT(Destination Network Address Translation)显然就是用于修改IP数据包头部的目标IP地址。OpenStack使用DNAT将实例的数据包转发到OpenStack metadata service。通常,OpenStack实例中的应用都是通过发送一个HTTP GET请求给IP地址为169.254.169.254的web server来访问OpenStack metadata service。不过事实上OpenStack中并没有主机有这么一个地址。所以OpenStack使用DNAT用于转换这些包中的目标IP,从而让它们能访问metadata service的网络接口。
5、One-to-one NAT,在这种NAT路由器中维护了私有IP和公网IP之间的一对一映射关系。OpenStack通常使用one-to-one NAT来实现floating IP address。
OpenStack Networking
Networking service,又称neutron,提供了能够让我们在云中定义网络的连接性和寻址的API。同时,它也提供了能够配置和管理各种网络服务,包括L3 forwarding, NAT到负载均衡,外围防火墙和VPN等等。它主要包括了以下三个组件:
- API server: OpenStack的Networking API支持二层网络,IPAM以及一个三层路由结构的扩展,用于二层网络,网关到外部网络的路由。
- OpenStack Networking plug-in and agents:用于plug或者unplug端口,创建网络或子网,提供IP寻址。需要注意的是,一次只能使用一个plug-in
- Message queue:用于在agents之间接收并且路由RPC请求。
在OpenStack中有project network和provider network两种类型的网络。
Provider networks
Provider networks提供虚拟机实例之间的二层连通性,同时对于DHCP和metadata services提供可选的支持。这些网络会连接或者映射到数据中心的二层网络上,通常用VLAN tag来标识和划分它们。Provider networks在牺牲灵活性的情况下,能够提供简单性,性能和可靠性。默认只有管理员能够创建和更新provider network,因为它需要对基础物理网络的设置。
Routed provider networks
Routed provider networks提供了虚拟机实例之间的三层连通性。这些网络通常映射到数据中心已有的三层网络。事实上,它们会映射到多个layer-2 segments,每一个segment其实就是一个provider network。每一个网络都有一个router gateway与它相连,用于在它们之间以及外部路由流量。Networking service是不提供路由的。
Self-service networks
Self-service network 是完全虚拟化的并且需要虚拟路由器来连接provider network和external network。通常它们还给虚拟机实例提供DHCP和metadata service。一般情况下,self-service network使用overlay network例如VXLAN和GRE,因为它们相比于使用VLAN tag的layer-2 segmentation可以支持更多的网络。而且,VLAN一般需要对基础物理网络进行设置。
IPv4 self-service network一般使用私有IP地址段并且通过虚拟交换机的SNAT和provider进行交互。而Floating IP能够让provider network通过虚拟路由器的DNAT访问虚拟机实例。IPv6 self-network通常使用公网IP地址段并且通过虚拟路由器的静态路由和provider network进行交互。
Networking service使用在之上一个Network node中的layer-3 agent来实现router。与provider Network直接将实例连接到物理网络中不同的是,self-service network必须经过一个layer-3 agent。因此layer-3 agent或者network node的故障都会对self-service network和使用它们的实例产生巨大的影响。
OpenStack主要支持Flat,VLAN,GRE和VXLAN这四种网络拓扑结构
Subnets
Subnets用于新的ports在一个network中创建时,为其分配IP地址。
Subnet pools
Subnet pools是一个预先定义的地址池,从而让规定了可以使用的IP地址的范围,让所有子网都在给定的地址池内。以此来避免同一个地址池内地址的重用以及子网之间地址的重合。
Ports
port是设备和虚拟网络的连接点,同时,port描述了相关的网络配置,例如该port使用的MAC和IP地址
Routers
路由器用于在self-service和provider network之间,或者属于同一个project的self-service network之间提供layer-3 services,例如路由和NAT。Networking service通常使用layer-3 agent,通过namespace,来管理路由。
Security groups
每个project都包含一个default security group,它允许所有的出口流量并且拒绝所有的入口流量。
Service and component hierarchy
- Server:提供API,管理数据库等等
- Plugin-ins:管理agents
- Agents:提供实例间的二层或三层连接,处理物理和虚拟网络之间的转换,处理元数据
OpenStack Network --- introduction部分 阅读笔记的更多相关文章
- “Triplet network”三元组网络阅读笔记
记录<DEEP METRIC LEARNING USING TRIPLET NETWORK>阅读笔记 文章总体内容: 作者在前人提出的多个特征提取方法的基础上提出Triplet netwo ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
- [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati
[论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...
- [论文阅读笔记] Community aware random walk for network embedding
[论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- [论文阅读笔记] Structural Deep Network Embedding
[论文阅读笔记] Structural Deep Network Embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 现有的表示学习方法大多采用浅层模型,这可能不能 ...
- [论文阅读笔记] Unsupervised Attributed Network Embedding via Cross Fusion
[论文阅读笔记] Unsupervised Attributed Network Embedding via Cross Fusion 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 (1 ...
- [论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding
[论文阅读笔记] Adversarial Mutual Information Learning for Network Embedding 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 ...
- Mina源码阅读笔记(一)-整体解读
今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者类的方法.我倒是想从mina源码的结构和功能上对这个框架进行剖析.源码的阅 ...
随机推荐
- iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链
iptables常用规则:屏蔽IP地址.禁用ping.协议设置.NAT与转发.负载平衡.自定义链 时间 -- :: IT社区推荐资讯 原文 http://itindex.net/detail/4772 ...
- ruby之各种概念
一.引言 刚开始接触ruby,遇到问题于是上网查资料,但是有时候却又看不懂,这很大一部分原因是我不知道一些关于ruby的概念名词是什么意思,所以看了别人的回答也理解不了. 二.各种名词 ruby:这个 ...
- Fly (From Wikipedia)
True flies are insects of the order Diptera, the name being derived from the Greek δι- di- "two ...
- flask 邮箱配置
http://blog.csdn.net/stan_pcf/article/details/51098126 先进入邮箱设置 POP3/SMTP/IMAP 下面代码来自知乎 https://www.z ...
- mogndb 慢查询
0 摘要 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的 ...
- [Bayes] *Bayesian Deep Learning for Transparency Improvement
为何有必要进修统计机器学习? 因为你没有那么多的数据 因为未知的东西最终还是需理论所解释 基于规则?基于概率? ---- 图灵奖得主.贝叶斯之父 Judea Pearl 谈深度学习局限,想造自由意志机 ...
- 向量类Vector
Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能.在Java语言中.正如在一开始就提到过,是没有指针概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量, ...
- sql server 2008安装要求
sql server 2008安装要求 新部署的R2需要被安装在格式化为NTFS格式的磁盘上: 微软的.NET Framework 3.5 SP1 微软Windows Installer 4.5或以上 ...
- 【vijos】1543 极值问题(数论+fib数)
https://vijos.org/p/1543 好神奇的一题.. 首先我竟然忘记n可以求根求出来,sad. 然后我打了表也发现n和m是fib数.. 严格证明(鬼知道为什么这样就能对啊,能代换怎么就能 ...
- 获取WPF的DataGrid控件中,是否存在没有通过错误验证的Cell
/// <summary> /// 获取DataGrid的所有行是否存在验证错误. /// </summary> /// &l ...