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网络复杂,自身知识能力也有限,难免出现理解错误的地方。欢迎指正和交流。

参考博文:http://www.cnblogs.com/CloudMan6/。

openstack中使用linux_bridge实现vxlan网络的更多相关文章

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

    openstack环境: 1 版本:ocata 2 系统:ubuntu16.04.2 3 控制节点 1个 + 计算节点 1个 4 控制节点网卡为ens33,ip = 172.171.5.200 ens ...

  2. SDNLAB技术分享(四):利用ODL下发流表创建VxLAN网络

    邓晓涛,当前就职于江苏省未来网络创新研究院,是CDN团队的一名研发人员,主要从事SDN相关的研发相关工作.曾就职于三星电子于先行解决方案研发组任高级工程师.思科系统于云协作应用技术部(CCATG)任工 ...

  3. [转载]OpenStack OVS GRE/VXLAN网络

      学习或者使用OpenStack普遍有这样的现象:50%的时间花费在了网络部分:30%的时间花费在了存储方面:20%的时间花费在了计算方面.OpenStack网络是不得不逾越的鸿沟,接下来我们一起尝 ...

  4. openstack pike 创建vxlan网络

    #openstack pike 创建vxlan网络 openstack pike 集群高可用  安装部署 汇总 http://www.cnblogs.com/elvi/p/7613861.html # ...

  5. OpenStack 网络总结之:openstack中网络的基本概念

    原文:openstack-install-guide-yum-icehouse.pdf/7. Add a networking service/Networking concepts OpenStac ...

  6. VXLAN学习之路-结合VRF在Linux中实践VXLAN网络

    一.概述 近期在在搞网络安全HCIE.CISP的认证的事,顺便将VXLAN技术再次系统的学习一下,学习过程中看到云原生实验室里的一篇文章,就是关于VXLAN在Linux系统中的实践,感觉文章写得很好, ...

  7. openstack中虚拟机和其网络的联系方法 instance and network

    instance和network的连接关系: 在neutron数据库中,ports存储了instance和端口的关系,其中device_id表示了instance的id,在nova数据库中的insta ...

  8. CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)

    上一章介绍了独立的nova计算节点的安装方法,本章分享openstack的网络服务neutron的安装配制方法 ------------------- 完美的分割线 ----------------- ...

  9. OpenStack Train版-12.创建虚拟网络并启动实例(控制节点)

    使用VMware虚拟机创建网络可能会有不可预测到的故障,可以通过dashboard界面,管理员创建admin用户的网络环境 1.第一种: 建立公共提供商网络在admin管理员用户下创建 source ...

随机推荐

  1. 使用 bufferedreader 的好处

    简单的说,一次IO操作,读取一个字节也是读取,读取8k个字节也是读取,两者花费时间相差不多.而一次IO的来回操作却要耗费大量时间.好比是一辆大型汽车(设装100人),要去车站接人到公司,接一个人也是接 ...

  2. centOS6.4安装python3.5,并且安装pip

    前言: 如果你也是用的centos系统,打算装python3.0以上版本,再装python下载工具pip,那么恭喜你,你可能也会像我一样遇到各种各样的问题! 另外非常重要的一点:centos都会自带p ...

  3. jquery的几个国内CDN加速节点

    分享几个jquery的几个国内国外的CDN加速节点,方便广大的开发设计者调用和节约空间,官网的总是最新版本的jquery所以不用去担心版本更新问题,其他加速节点可能不会在更新版本,所以取舍问题自己决定 ...

  4. Dockerfile命令详解(超全版本)

    制作Dockerfile为Docker入门学习的第一步(当然,除了环境搭建). 本文收集.整理了官网关于制作Dockerfile的全部命令(除SHELL没整理,这个就不弄了),可帮助大家快速进入Doc ...

  5. 有关LinkedList常用方法的源码解析

    上文里解析了有关ArrayList中的几个常用方法的源码——<有关ArrayList常用方法的源码解析>,本文将对LinkedList的常用方法做简要解析. LinkedList是基于链表 ...

  6. jquery判断对象是否显示或隐藏

    if($('a.specail2').is(":visible")){ /**jquery判断对象是否显示或隐藏**/ $('a.one').hide(); $('a.specai ...

  7. Android混淆

    一.为什么要混淆 为了避免apk在发布后被用户通过反编译拿到源代码和资源文件,然后修改资源和代码之后就变成一个新的apk.而经过混淆后的APK,即使被反编译,也难以阅读,注意混淆不是让apk不能阅读, ...

  8. 13.如何生成订单号,用uuid

    String orderNum = UUID.randomUUID().toString().replaceAll("-", "");

  9. MySQL实例

    建表实例: CREATE TABLE command_content( ID ) PRIMARY KEY NOT NULL AUTO_INCREMENT, CONTENT ), COMMAND_ID ...

  10. c++有关构造函数和析构函数中调用虚函数问题

    今天看了一道迅雷的笔试题目,然后引起一段思考,题目如下: 下列关于虚函数的说法正确的是()A.在构造函数中调用类自己的虚函数,虚函数的动态绑定机制还会生效.B.在析构函数中调用类自己的虚函数,虚函数的 ...