浅谈openstack中使用linux_bridge实现vxlan网络

openstack环境:

1 版本:ocata

2 系统:ubuntu16.04.2

3 控制节点 1个 + 计算节点 1个

4 控制节点网卡为ens33,ip = 172.171.5.200 ens34 manual模式 无IP

(为什么外网网卡ens34没有IP地址?这是另一个故事,后面有专门章节讲解。)

计算节点网卡 ens33 ,ip = 172.171.5.201

一 vxlan配置

1 控制节点:

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件

配置tenant_network_types = vxlan。该配置意义是项目中创建的内部网络为vxlan类型。

配置flat外部网络的标签为provider,在创建外部网络时使用。

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件

配置物理网卡的映射,通俗讲即指定外网网卡。ens34为本环境中出外网网卡。

指定vxlan的封装IP,即外层IP。

2 计算节点

同理配置计算节点,标签label要和控制节点一致

隧道的封装IP为ens33的IP地址

重启网络服务。

service neutron-server restart
service neutron-linuxbridge-agent restart

二 在dashboard上创建网络过程

1 admin用户创建公网

这里首先创建的是外网。外网的类型有两种:falt和vlan。当指定为flat类型时,物理网络中填写的就是上面配置的label。指明该flat网络使用label所绑定的网卡出外网。

一定要区分创建外部网络和非外部网络。如下图,勾选了外部网络一定是创建公网,是所有VM出公网的网络。admin用户也可以为某个项目创建内网,不勾选外部网络。

flat网络创建子网。子网网段是能够出外网的网段。比如这里填写的172.171.5.0/24网段,该网段中每一个IP地址都能出外网。

填写地址池,DNS服务器。外网到这里创建结束。接下来创建本环境中的项目demo项目的内网。

当创建好外部网络之后,对应的控制节点底层网桥发生变化。由于写博文截图不够及时,这里已经是创建好网络,实例之后的截图。

当创建好外部网络之后,会出现红框中的网桥信息。其中,该网桥连接了ens34网卡和dhcp节点tap543aa81e。

如下图所示(画功一般,见谅)

以demo用户登录

创建内部网络。使用demo用户登录demo项目中,创建的内部网络类型是由tenant_network_types中指定,为vxlan。

该配置能指定内部网络类型,如flat,vlan,gre等。

分配内网的ip地址。内网地址指定网段为任意网段,因为该网段的地址要经过路由器的转换,转换到外网的IP地址出外网。

推荐使用私网地址。本环境使用192.168.0.0/24。

配置地址池,不配置即可使用全部。

配置内网之后创建路由器,连接内网和外网。如下创建router,外部网络选择上面创建的外部网络名称。本环境为out_side_net。

再添加接口为内部网络。子网是指上面创建的内部网络。

最后开启一个实例。创建实例时选择的网络是内部网络。

创建好内部网络和实例之后,vxlan隧道就建立起来。系统会在控制节点创建一个vxlan 的VTEP,在计算节点创建一个vxlan的VTEP。

如下图,第一张为控制节点,创建vxlan12;第二张为计算节点创建也为vxlan12。这两个VTEP设备组成了vxlan隧道的两个端点。

通过查看计算节点上vxlan12的详细信息可以看到其连接ens33网卡。

此时隧道的网络如下图所示

如下图所示为创建好外部网络,内部网络,以及路由器之后的网络拓扑。

内部网络的情况大概如下图所示。

登陆实例,ping外网,通。此时的除外网的网络流量过程如下:

1. VM产生ICMP包,发往网桥。数据包源IP为192.168.0.X。
 2.通过网桥在vxlan12上封装外层数据包。
 3.数据通过ens33网卡出计算节点,到控制节点,即网络节点。
 4.在控制节点的vxlan12处解开外层封装,还原VM的ICMP包。
 5.数据流到达router路由器,经过路由器NAT地址转换。从192.168.0.X转换成外网地址172.171.5.230~240中一个。
 6.数据流经过网桥,从ens34出去到达公网。

回包过程大概是反过来的,不再累叙。

openstsack网络复杂,自身知识能力也有限,难免出现理解错误的地方。欢迎指正和交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • openstack使用openvswitch实现vxlan的方法

    openstack使用openvswitch实现vxlan,分享给大家,具体如下: openstack环境: 1 版本:ocata 2 系统:ubuntu16.04.2 3 控制节点 1个 + 计算节点 1个 4 控制节点网卡为ens33,ip = 172.171.5.200 ens34 manual模式 无IP 一 下载openswitch controller : apt-get install neutron-openvswitch-agent compute : apt-get inst

  • 浅谈openstack中使用linux_bridge实现vxlan网络

    openstack环境: 1 版本:ocata 2 系统:ubuntu16.04.2 3 控制节点 1个 + 计算节点 1个 4 控制节点网卡为ens33,ip = 172.171.5.200 ens34 manual模式 无IP (为什么外网网卡ens34没有IP地址?这是另一个故事,后面有专门章节讲解.) 计算节点网卡 ens33 ,ip = 172.171.5.201 一 vxlan配置 1 控制节点: 编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件 配

  • 浅谈Angular中ngModel的$render

    在我开始着手ngModel的领域时候,有一个问题很令我纠结,那就是$render()到底是做什么的呢?查了很多资料都只是简单的描述一下,这就令我很纠结了,终于在一个阳光明媚的晚上,我终于解决了这个大问题 那么这个$render方法到底是干什么的呢?他的用处就是在$viewValue改变的时候可以重新绑定model数据,但是我们要注意一点($viewValue和DOM节点的value是不同的),我觉得他们的区别有点类似setTimeout和$timeout的区别,但是又不太一样.ps:其实mode

  • 浅谈Java中Unicode的编码和实现

    Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值."A"是一个字符,"€"也是一个字符.字符集是字符的集合.编码字符集是一个字符集,它为每一个字符分配一个唯一数字. Unicode 最初设计是作为一种固定宽度的 16 位字符编码.也就是每个字符占用2个字节.这样理论上一共最多可以表示216(即65536)个字符.上述16位统一码字符构成基

  • 浅谈python中copy和deepcopy中的区别

    在下是个编程爱好者,最近将魔爪伸向了Python编程.....遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy). 首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响. 然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数. 一.字典数据类型的copy函数

  • 浅谈python中列表、字符串、字典的常用操作

    列表操作如此下: a = ["haha","xixi","baba"] 增:a.append[gg] a.insert[1,gg] 在下标为1的地方,新增 gg 删:a.remove(haha) 删除列表中从左往右,第一个匹配到的 haha del a.[0] 删除下标为0 对应的值 a.pop(0) 括号里不写内容,默认删除最后一个,写了,就删除对应下标的内容 改:a.[0] = "gg" 查:a[0] a.index(&q

  • 浅谈PHP中的数据传输CURL

    确认是否安装了CURL扩展 Linux下命令: [root@fengniu020 ~]# php -i | grep -i curl Additional .ini files parsed => /etc/php.d/curl.ini, curl cURL support => enabled cURL Information => 7.19.7 curl操作步骤解析: CURL实例 1.一个简单的curl,抓取百度首页 2.下载一个网页并把内容中的"百度"替换为&

  • 浅谈django中的认证与登录

    认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否正确 一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的.当我们试图登陆一个从数据库中直接取出来不经过authent

  • 浅谈Vim中的Tab与空格缩进

    vim缩进参数解析 缩进用 tab 制表符还是空格,个人爱好问题.但是在大多项目中,习惯使用空格.关于缩进,vim中可以通过如下四个参数进行配置 set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab / expandtab1 解析: tabstop 表示按一个tab之后,显示出来的相当于几个空格,默认的是8个. softtabstop 表示在编辑模式的时候按退格键的时候退回缩进的长度. shiftwidth 表示每一级缩

  • 浅谈mysql中多表不关联查询的实现方法

    大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join).右联结(right join).内联结(inner join).外联结(outer join).这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了.这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是多个表的时候,这些表又是没有互相关联的,比如要查user表和user_history表中的某一些数据

  • 浅谈jquery中的each方法$.each、this.each、$.fn.each

    jquery.each 方法 方法一 $("img").each(function(i,elem){ // i 下标 从零开始, // elem == this // $(elem).toggleClass("example"); $(this).toggleClass("example"); }); 方法二 $.each([1,2,3,4],function(){ //$(this)==数组中的每一个数组(如果数组是对象,就是对象) }); 方

随机推荐