neutron相关知识(代码片段)

mrwuzs mrwuzs     2022-12-18     340

关键词:

Neutron 对虚拟三层网络的实现是通过其 L3 Agent (neutron-l3-agent)。该 Agent 利用 Linux IP 栈、route 和 iptables 来实现内网内不同网络内的虚机之间的网络流量,以及虚机和外网之间网络流量的路由和转发。为了在同一个Linux 系统上支持可能的 IP 地址空间重叠,它使用了 Linux network namespace 来提供隔离的转发上下文。

namespace技术

每个 netns 拥有独立的 (virtual)network devices, IP addresses, IP routing tables, /proc/net directory, ports 等等

新创建的 netns 默认只包含 loopback device(回环设备)。除了这个设备,每个 network device,不管是物理的还是虚拟的网卡还是网桥等,都只能存在于一个 netns。而且,连接物理硬件的物理设备只能存在于 root netns。其它普通的网络设备可以被创建和添加到某个 netns。

[[email protected] ~]# ip netns add test_namespace
[[email protected] ~]# ip netns
test_namespace
[[email protected] ~]# ip netns list
test_namespace
[[email protected] ~]# ip netns exec test_namespace bash
[[email protected] ~]# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
[[email protected] ~]# 

添加 virtual interfaces 到 network namespace

[[email protected] ~]# ip link add veth-a type veth peer name veth-b#创建一对虚拟网卡veth-a 和 veth-b,两者由一根虚拟网线连接
[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0f:09:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.246.138/24 brd 192.168.246.255 scope global dynamic ens33
       valid_lft 1225637sec preferred_lft 1225637sec
    inet6 fe80::20c:29ff:fe0f:989/64 scope link 
       valid_lft forever preferred_lft forever
3: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 7e:75:c5:5a:70:0b brd ff:ff:ff:ff:ff:ff
4: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 12:10:96:02:4c:f0 brd ff:ff:ff:ff:ff:ff

将 veth-b 添加到 network namespace

[[email protected] ~]# ip link set veth-b netns netns1
[[email protected] ~]# ip netns exec netns1 bash
[[email protected] ~]# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 7e:75:c5:5a:70:0b brd ff:ff:ff:ff:ff:ff link-netnsid 0
[[email protected] ~]# 

Linux下的IP设备已经少了一个

[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0f:09:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.246.138/24 brd 192.168.246.255 scope global dynamic ens33
       valid_lft 1224076sec preferred_lft 1224076sec
    inet6 fe80::20c:29ff:fe0f:989/64 scope link 
       valid_lft forever preferred_lft forever
4: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 12:10:96:02:4c:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 0
[[email protected] ~]# 

设置namespace的IP地址

[[email protected] ~]# ip addr add 10.0.0.2/24 dev veth-b
[[email protected] ~]#  ip link set dev veth-b up
[[email protected] ~]# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: [email protected]: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN qlen 1000
    link/ether 7e:75:c5:5a:70:0b brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.2/24 scope global veth-b
       valid_lft forever preferred_lft forever
[[email protected] ~]# 

设置Linux下的vth-a的IP地址

[[email protected] ~]# ip addr add 10.0.0.1/24 dev veth-a
[[email protected] ~]# ip link set dev veth-a up
[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0f:09:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.246.138/24 brd 192.168.246.255 scope global dynamic ens33
       valid_lft 1223891sec preferred_lft 1223891sec
    inet6 fe80::20c:29ff:fe0f:989/64 scope link 
       valid_lft forever preferred_lft forever
4: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 12:10:96:02:4c:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.1/24 scope global veth-a
       valid_lft forever preferred_lft forever
    inet6 fe80::1010:96ff:fe02:4cf0/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] ~]# 

ping

[[email protected] ~]# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.072 m

查看路由表和IPtables

[[email protected] ~]# ip netns exec netns1 bash
[[email protected] ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 veth-b
[[email protected] ~]# iptables -F
[[email protected] ~]# 

Iptables

?Neutron 主要用到 filter 表和 nat 表,其中, filter 用来实现安全组(Security Group)和 防火墙(FWaas);nat 主要用来实现 router。

技术分享图片

INPUT

可见在INPUT接受所有的数据包

[[email protected] ~]# iptables  --line-numbers -vnL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-l3-agent-INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-INPUT
Chain neutron-l3-agent-INPUT (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x1/0xffff
2        0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8775
[[email protected] ~]# 

OUTPUT

[[email protected] ~]# iptables --line-numbers -vnL OUTPUT
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-filter-top  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        0     0 neutron-l3-agent-OUTPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-filter-top
Chain neutron-filter-top (2 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-l3-agent-local  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-local
Chain neutron-l3-agent-local (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-OUTPUT
Chain neutron-l3-agent-OUTPUT (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
[[email protected] ~]# 

OUTPUT链没有什么规则

FORWARD

[[email protected] ~]# iptables --line-numbers -vnL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-filter-top  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        0     0 neutron-l3-agent-FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-filter-top
Chain neutron-filter-top (2 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-l3-agent-local  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-local
Chain neutron-l3-agent-local (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-FORWARD
Chain neutron-l3-agent-FORWARD (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 neutron-l3-agent-iv4a7700495  all  --  *      qr-+    0.0.0.0/0            0.0.0.0/0           
2        0     0 neutron-l3-agent-ov4a7700495  all  --  qr-+   *       0.0.0.0/0            0.0.0.0/0           
3        0     0 neutron-l3-agent-fwaas-defau  all  --  *      qr-+    0.0.0.0/0            0.0.0.0/0           
4        0     0 neutron-l3-agent-fwaas-defau  all  --  qr-+   *       0.0.0.0/0            0.0.0.0/0           

在之前没有创建防火墙规则之前只有neutron-l3-agent-fwaas-defau两条规则 一进一出

[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-iv4a7700495
Chain neutron-l3-agent-iv4a7700495 (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
2        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3        0     0 DROP       tcp  --  *      *       2.2.2.0/24           3.3.3.0/24           tcp dpts:1:65535
4        0     0 DROP       icmp --  *      *       10.0.0.0/24          0.0.0.0/0           
[[email protected] ~]# iptables --line-numbers -vnL neutron-l3-agent-ov4a7700495
Chain neutron-l3-agent-ov4a7700495 (1 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID
2        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3        0     0 DROP       tcp  --  *      *       2.2.2.0/24           3.3.3.0/24           tcp dpts:1:65535
4        0     0 DROP       icmp --  *      *       10.0.0.0/24          0.0.0.0/0           


一条规则下发后分别存在进出两条规则在router中,即neutron-l3-agent-iv4a7700495 ,neutron-l3-agent-ov4a7700495 ,用于进数据网络的包的默认处理和出数据网络的包的默认处理。 neutron-l3-agent-fwaas-defau用于默认丢弃没有被以上规则处理的所有包。

所以默认neutron是丢弃所有的数据包

lbaas分析

haproxy

haproxy 配置中分成五部分内容,分别如下: global:参数是进程级的,通常是和操作系统相关。这些参数一般只设置一次,如果配置无误,就不需要再次进行修改。 defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件。 frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend。 backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器。 Listen Fronted和backend的组合体。

LBaasv2 可以看做 OpenStack Neutron 对各种物理负载均衡器的虚拟化。它的概念可以和 HAProxy 中的概念进行类比:

HAProxy 的概念 LBaasv2 的概念 说明
Driver LBaas v2也是采取 driver 模型来支持多种物理的负载均衡器。LBaasv2 默认实现了 HAProxy driver,同时,它也支持多个其他 Vendor driver。厂商驱动
Frontend Listener LBaasv2采用Listener方式将流量转移到不同的pool中的member。
Backend Pool 代表Listener所监听的负载后端的虚拟机池。
Backend server Member Member 对应的是 pool 里面处理网络请求的一个 OpenStack Nova 虚机
Health check Health monitor 它用来监测 pool 里面 member 的状态,支持 HTTP, TCP, 和 ping 等多种检测方法。在 Nuetron 中这是可选的,如果没有 Health monitor,pool 会一直认为所有的 member 都是 ACTIVE 状态,这样所有的 member 会一直出现在 VIP 的分发列表中,哪怕 member 对应的实例不能响应网络请求。这在实际应用中会造成负载均衡的响应异常。

neutron-lbaas

技术分享图片

网络节点上,neutron-lbaas-agent

(1)为每个带有 active VIP 的 pool 创建了一个 network namespace,它以 qlbaas- 命名

技术分享图片

(2)该 interface 挂载 OVS br-int 上并被打上了它所在的 network(pool -> subnet -> network) 对应的本地 VLAN ID:

技术分享图片

(3) ps -elf | grep -v agent | grep haproxy

技术分享图片

(4) 根据步骤4查看haproxy.conf 如 /var/lib/neutron/lbaas/v2/5735af3c-11bc-49b6-a3e1-dc1c1b4ebd37

技术分享图片

floating IP原理

当 router 接收到 instance 的数据包,并将其转发到外网时: router 会修改包的源地址为自己的外网地址,这样确保数据包转发到外网,并能够从外网返回。 router 修改返回的数据包,并转发给真正的 instance。 这个行为被称作 Source NAT。

floating IP 提供静态 NAT 功能,建立外网 IP 与 instance 租户网络 IP 的一对一映射。

floating IP 是配置在 router 提供网关的外网 interface 上的,而非 instance 中。

router 会根据通信的方向修改数据包的源或者目的地址。

进入路由的namespace iptables -t nat -S 查看nat表

技术分享图片

技术分享图片

DHCP

neutron dhcp为租户网络提供DHCP服务,即IP地址动态分配,另外还会提供metadata请求服务。
3个主要的部件:
DHCP agent scheduler:负责DHCP agent与network的调度。
DHCP agent:为租户网络提供DHCP的功能,提供metadata request服务。
DHCP driver:即dnsmasq,用于管理DHCP server。

Dnsmasq 是被 Neutron 用来提供 DHCP 和 DNS 服务的一个开源程序,即DHCP driver部分。它提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于主机较少的网络。

根据整个dhcp处理的流程,dhcp模块主要由Neutron api、core plugin(如linux bridge plugin,ovs plugin等)、dhcp agent scheduler、dhcp agent、dhcp driver(dnsmasq)构成。

技术分享图片

对应架构图中数字,有以下几个接口: 1.network/subnet/port的操作 2.agent management/agent scheduler的操作 3.network/subnet/port操作会发送rpc请求到dhcp agent。 4.agentscheduler db发送rpc请求到dhcp agent。 5.dhcp agent通过DhcpPluginApi发送rpc请求到core plugin,操作相应的数据库。 6.dhcp agent调用dhcp driver进行dhcp相关操作。

虚机获取固定IP (Fixed IP)主要分为两个步骤:

在创建虚机过程中,Neutron 随机生成 MAC 和 从配置数据中分配一个固定IP 地址,并保存到 Dnsmasq 的 hosts 文件中,让 Dnsmasq 做好准备。

虚机在启动时向 Dnsmasq 获取 IP 地址

红色为创建虚拟机的数据流

绿色为虚拟机启动的数据流

技术分享图片

创建虚机时的数据流

Controller 节点上的 Neutron Server 接到该请求后,会开始下面的过程

技术分享图片

步骤 2 ~ 6:Neutron Server 生成 MAC 和 IP。 其中 MAC 是由任意数组成的;Fixed IP 是从保存在数据库中的管理员配置的网络和地址数据生成的。

步骤 7 ~ 10: 调用 L3 Agent 和 OVS 执行一些操作。

步骤 12 ~ 14:通过 AMQP 的 cast 消息给 Neutron 节点上的 DHCP Agent,告诉它 Port 创建结束以及 新分配的 Port 的数据。

步骤 13:返回Port 给 nova-compute。

步骤 15:Neturon 节点上的 DHCP Agent 根据接收到的 Port 创建完成通知,重新生成 Dnsmasq 的 hosts 文件,然后让 Dnsmasq 重新加载该文件。Nova 拿到 Port 的数据后,会写入虚机的 libvirt.xml 文件。

安全组

技术分享图片

其中id的前10位数字被用作虚机对外连接的qbr(同时也是tap口)的id。i或o加上前9位数字被用作安全组chain的id。所有的规则默认都在Compute节点上的filter表(默认表)中实现,分别来查看filter表的INPUT、OUTPUT、FORWARD三条链上的规则。

技术分享图片

跟安全组相关的规则被重定向到neutron-openvswi-INPUT。 查看其规则,只有一条

技术分享图片

技术分享图片

某个vm的安全组相关规则的chain的名字,跟vm的id的前9个字符有关。

因此,要快速查找qbr-XXX上相关的iptables规则,可以用iptables -S列出(默认是filter表)所有链上的规则,其中含有id的链即为虚拟机相关的安全组规则。其中–physdev-in表示即将进入某个网桥的端口,–physdev-out表示即将从某个网桥端口发出。

iptables -S | grep tap4ca9818f-53

参考:http://www.cnblogs.com/wanstack/tag/Neutron/

关于openstack的neutron服务的学习(代码片段)

neutron服务的搭建配置一、使用neutron相关命令查询网络服务的列表信息,并已下图的方式打印出来[root@controller~]#neutronagent-list-cbinary-cagent_type-calive+---------------------------+--------------------+-------+ 查看详情

neutron-server的启动流程(代码片段)

neutron-server的启动包括RPC-server的创建,RPC-client的创建,WSGIserver的创建,因此neutron-server不单单起到与其他组件中的api的功能。本文将RPC相关创建和WSGIserver的创建两方面进行代码流程的分析。查看setup.cfg文件找到neutron... 查看详情

openstack的部署t版——neutron组件(代码片段)

OpenStack的部署(六)——Neutron组件一、CT控制节点1、创建数据库neutron,并进行授权2、创建用户、服务并赋权3、注册API到neutron服务,给neutron服务关联端口,即添加endpoint4、安装提供者网络(桥接)5、重启相关... 查看详情

openstack安装-计算节点-neutron服务安装(代码片段)

一、安装nettron相关服务yuminstallopenstack-neutron-linuxbridgeebtablesipset-y二、快速配置配置 修改红色部分为计算节点的网卡名以及IP地址openstack-config--set/etc/neutron/neutron.confDEFAULTtransport_urlrabbit://openstack:[email protected]openstack-config--s... 查看详情

novaboot代码流程分析:nova与neutron的plugin交互(代码片段)

在执行novaboot命令创建VM时,neutron将会为VM分配MAC和IP,用于创建VM所需的port。网上有些许相关讲述nova与neutron交互的文章,不过都是从架构层面进行分析和讲解,很少涉及到代码层面。本文将从代码层面进行分析no... 查看详情

neutron是怎么实现虚拟三层网络的(代码片段)

 Neutron对虚拟三层网络的实现是通过其L3Agent(neutron-l3-agent)。该Agent利用LinuxIP栈、route和iptables来实现内网内不同网络内的虚机之间的网络流量,以及虚机和外网之间网络流量的路由和转发。为了在同一个Linux系统上支持可能... 查看详情

openstack运维-部署neutron组件[t版](代码片段)

OpenStack运维-部署Neutron组件一、Neutron概述二、创建数据库neutron,并进行授权三、计算节点C1/C2四、CT验证服务组件一、Neutron概述Neutron是OpenStack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网... 查看详情

##6.2neutron计算节点--openstackpike(代码片段)

##6.2Neutron计算节点#6.2.Neutron.compute.sh#安装yuminstall-yopenstack-neutron-linuxbridgeebtablesipset#配置cp/etc/neutron/neutron.conf,.bakecho‘#[DEFAULT]auth_strategy=keystonetransport_url=rabbit://opensta 查看详情

openstack部署neutron(代码片段)

controller   1.创建数据库并设置权限  mysql-uroot-p0330  CREATEDATABASEneutron;  GRANTALLPRIVILEGESONneutron.*TO‘neutron‘@‘localhost‘\IDENTIFIEDBY‘NEUTRON_DBPASS‘;   GRANTALLPRIVILEGESONneutron.*T 查看详情

openstack中neutron的实现模型(代码片段)

一、Neutron概述众所周知,整个Openstack中网络是通过Neutron组件实现,它也成为了整个Openstack中最复杂的部分,本文重点介绍Neutron的实现模型与应用场景,闲言少叙,步入正题。1.Neutron的架构Neutron的架构如下图所示:NeutronServe由Co... 查看详情

javatextview的相关知识点(代码片段)

查看详情

neutron分析——neutron-dhcp-agent(代码片段)

一.概述neutrondhcp为租户网络提供DHCP服务,即IP地址动态分配,另外还会提供metadata请求服务。3个主要的部件:DHCPagentscheduler:负责DHCPagent与network的调度DHCPagent:为租户网络提供DHCP的功能,提供metadatarequest服务。DHCPdriver:即dnsmas... 查看详情

openstack运维-部署neutron组件[t版](代码片段)

OpenStack运维-部署Neutron组件一、Neutron概述二、创建数据库neutron,并进行授权三、计算节点C1/C2四、CT验证服务组件一、Neutron概述Neutron是OpenStack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网... 查看详情

openstack-liberty版neutron服务部署(代码片段)

Neutron控制节点安装:node1:[[email protected]~]#yum-yinstallopenstack-neutronopenstack-neutron-ml2openstack-neutron-linuxbridgepython-neutronclientebtablesipsetNeturon注册:[[email protected]~]#source 查看详情

android中view的相关知识(代码片段)

Android中View的相关知识(6)@(Android)在前文Android中View的相关知识(4)和Android中View的相关知识(5)中,我们分析了在Activity中setContentView();和initWindowDecorActionBar();方法,即 查看详情

neutron-dhcp-agent服务启动流程(代码片段)

在分析novaboot创建VM的代码流程与neutron-dhcp-agent交互之前,首先分析neutron-dhcp-agent服务启动流程。与其他服务的启动入口一样。查看setup.cfg文件。[entry_points]console_scripts=   neutron-db-manage=neutron.db.migration.cli:main   ne 查看详情

mysql相关知识点汇总(代码片段)

MySql相关知识点提示:本文是学习丁奇老师《Mysql实战45讲》的个人总结文章目录MySql相关知识点前言一、日志相关1.查询的流程2.WAL技术3.binlog与两阶段提交4.刷脏页(flush)二、隔离相关1.隔离级别2.MVCC3.幻读三、索引... 查看详情

openstack之neutron服务网络架构二(代码片段)

《OpenStack之Neutron基础服务二》1.1Neutron网络概述(1)APIServer(2)网络插件与代理:(3)Flat网络(4)VLAN网络(5)GRE和VxLAN网络(6)端口(7)子网(8)子网池(9)路由(10)安全组(11)网络东西和南北流向(12)SNAT源地址转换(13)DNAT目的地址转换(14)网络命名... 查看详情