云计算管理平台之OpenStack网络服务neutron .pdf
云计算管理平台之OpenStack⽹络服务neutron
⼀、简介
neutron的主要作⽤是在openstack中为启动虚拟机实例提供⽹络服务,对于neutron来讲,它可以提供两种类型的⽹络;第⼀种是providernetwork,这种⽹络就是我们常说
的桥接⽹络,虚拟机内部⽹络通常是通过bridge的⽅式直接桥接到宿主机的某块物理⽹卡上,从⽽实现虚拟机可以正常的访问外部⽹络,同时虚拟机外部⽹络也可以访问虚拟机
的内部⽹络;第⼆种是self-servicenetworks,这种⽹络就是nat⽹络;nat⽹络的实现是通过在虚拟机和宿主机之间实现了虚拟路由器,在虚拟机内部可以是⼀个私有地址连接⾄
虚拟路由器的⼀个接⼝上,⽽虚拟路由器的另外⼀端通过⽹桥桥接到宿主机的某⼀张物理⽹卡;所以nat⽹络很好的隐藏了虚拟机的地址,它能够实现虚拟机访问外部⽹络,⽽外
⽹⽤户是不能够直接访问虚拟机的;但在openstack中,它能够实现虚拟机和外部的⽹络做⼀对⼀nat绑定,从⽽实现从虚拟机外部⽹络访问虚拟机;
self-servicenetwork⽰意图
提⽰:self-servicenetwork和providenetwork最⼤的区别是⾃服务⽹络中有虚拟路由器;有路由器就意味着虚拟机要和外⽹通信,⽹络报⽂要⾛三层,⽽对于provide
network来讲,它的⽹络报⽂就可以直接⾛⼆层⽹络;所以在openstack上这两种类型的⽹络实现⽅式和对应的组件也有所不同;
providenetwork实现所需组件
Providernetworks-Overview
Providernetworks连接⽰意图
提⽰:桥接⽹络也叫共享⽹络,虚拟机实例⽹络是通过桥接的⽅式直接共享宿主机⽹络;虚拟机和宿主机通信,就类似宿主机同局域⽹的其他主机通信⼀样;所以虚拟机和
宿主机通信报⽂都不会到三层,所以这⾥⾯就不涉及三层⽹络相关的操作和配置;
self-servicenetwork实现所需组件
Self-servicenetworks-Overview
Self-servicenetworks连接⽰意图
对⽐上⾯两种⽹络的实现所需组件,我们可以发现self-servicenetwork的实现要⽐providenetwork要多⼀个networkingL3Agent插件;这个插件⽤作实现3层⽹络功能,⽐
如,提供或管理虚拟路由器;从上⾯的两种⽹络连接⽰意图也可以看出,self-servicenetwork是包含providenetwork,也就是说我们选择使⽤self-servicenetwork这种类型的⽹
络结构,我们即可以创建⾃服务⽹络,也可以创建桥接⽹络;对于⾃服务⽹络来讲,我们在计算节点启动的虚拟机,虚拟机想要访问外部⽹络,它会通过计算节点的vxlan接
⼝,这⾥的vxlan我们可以理解为在计算节点内部实现的虚拟交换机,各虚拟机实例通过连接不同的vni(⽹络标识符,类似vlanid⼀样)的vxlan来实现⽹络的隔离,同时vxlan这个
虚拟接⼝通常是桥接在本地管理⽹络接⼝上,这个管理⽹络⼀般是不能够和外部⽹络通信;虚拟机访问外部⽹络,通过vxlan接⼝实现的vxlan隧道,这个隧道是⼀头是和计算节
点的管理⽹络接⼝连接,⼀头是和控制节点的管理⽹络接⼝连接;虚拟机访问外部⽹络是通过vxlan隧道,再通过控制节点中的虚拟路由器,将请求通过路由规则,路由到控制节
点能够上外⽹的接⼝上,然后发出去,从⽽实现虚拟机能够和外部⽹络进⾏交互;⽽对于外部⽹络要访问虚拟机,在openstack上是通过⼀对⼀nat绑定实现;也就说在控制节点
能够上外⽹的接⼝上配置很多ip地址,这些IP地址都是可以正常访问外部⽹络的,在虚拟机访问外部⽹络时,在控制节点的虚拟机路由器上就固定的把计算节点的某个虚拟机的
流量通过固定SNAT的⽅式进⾏数据发送,对于这个固定地址在控制节点上再做固定的DNAT,从⽽实现外部⽹络访问控制节点上的这个固定ip,通过DNAT规则把外部流量引⼊
到虚拟机,从⽽实现外部⽹络和虚拟机通信;
neutron⼯作流程
neutron服务主要由neutron-server、neutronagents、neutronplugins这三个组件组成,这三者都依赖消息队列服务;其中neutronserver主要⽤来接收⽤户的请求,⽐如创
建或管理⽹络;当neutronserver接收到客户端(openstack其他服务,如