博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Neutron local network 学习
阅读量:6307 次
发布时间:2019-06-22

本文共 2124 字,大约阅读时间需要 7 分钟。

local network 的特点是 不会与宿主机的任何物理网卡相连,也不关联任何的 VLAN ID。
 
对于每个 local netwrok,ML2 linux-bridge 会创建一个 bridge,instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 instance 会连接到相同的 bridge,这样 instance 之间就可以通信了。
 
因为 bridge 没有与物理网卡连接,所以 instance 无法与宿主机之外的网络通信。 同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间也不能通信,即使它们位于同一宿主机上。
下图是 local network 的示例:
  • 创建了两个 local network,分别对应两个网桥 brqXXXX 和 brqYYYY。
  • VM0 和 VM1 通过 tap0 和 tap1 连接到 brqXXXX。
  • VM2 通过 tap0 和 tap2 连接到 brqYYYY。
  • VM0 与 VM1 在同一个 local network中,它们之间可以通信。
  • VM2 位于另一个 local network,由于 brqXXXX 和 brqYYYY 没有联通,所以 VM2 无法与 VM0 和 VM1 通信。
下面我们将一步一步实现 local network。
 

在 ML2 配置中 enable local network

创建 local 网络之前请先确保 ML2 已经加载了 local type driver。 ML2 的配置文件位于  /etc/neutron/plugins/ml2/ml2_conf.ini。
type_drivers 告诉 ML2 加载所有 5 种网络的 type driver。
type_drivers = local,flat,vlan,gre,vxlan
这样所有类型的网络我们都可以创建(虽然在本节只创建 local 网络)。
普通用户和 admin 都可以通过 CLI 或者 Web GUI 创建网络,但只有 amdin 才能指定网络的 type,所以需要用 tenant_network_types 告诉 ML2 当普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络,这里 type 是 local。
tenant_network_types = local
tenant_network_types  可以指定多种 type,比如:
tenant_network_types =  vlan, local
其作用是先创建 vlan 网络, 当没有 vlan 可创建时(比如 vlan id 用完),便创建 local 网络。
 
当配置文件发生了变化, 需要重启 Neutron 相关服务使之生效。
 
 
在dashboard创建第一个local network后:
 
打开控制节点的 shell 终端,用 brctl show 查看当前 linux bridge 的状态。
 
 
可以看到 Neutron 自动创建了如下两个设备:
bridge 设备 brqbb9b6d21-c6
brqbb9b6d21-c6 对应 local network “first_local_net”,命名规则为 brqXXX,XXX 为 network ID 的前 11 个字符。
 
tap 设备 tapa5bd3746-3f
tapa5bd3746-3f 对应 port (a5bd3746-3f89),命名规则为 tapYYY, YYY 为 port ID 的前 11 个字符。 该 tap 设备已经连接到 bridge,即连接到该 local 网络。
 
virbr0 是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能。
virbr0 默认分配了一个IP,并为连接其上的其他虚拟网卡提供 DHCP 服务。
 
 
如果 cirros-vm2 launch 时被 schedule 到计算节点而非控制节点,它能获得 DHCP 的 IP 吗?
答案:
不能。 因为 DHCP agent 在控制节点上运行,cirros-vm2 在计算节点的 local 网络上,两者位于不同物理节点。 由于 local 网络的流量只能局限在本节点之内,发送的 DHCP 请求无法到达控制节点。
 

创建两个实例连接local network
 
创建第二个local network
 
连接一个实例
 
虽然分配了同个网段的地址,但是不同local network不能通信
 

 

小结

 

1. 位于同一 local network 的 instance 可以通信。
2. 位于不同 local network 的 instance 无法通信。
3. 一个 local network 只能位于一个物理节点,无法跨节点。

转载于:https://www.cnblogs.com/lsw-blogs/p/10782240.html

你可能感兴趣的文章
apache中文url日志分析--php十六进制字符串转换
查看>>
Ansible--playbook介绍
查看>>
浅谈代理
查看>>
php创建桌面快捷方式实现方法
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
TreeSet的用法
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>