zoukankan      html  css  js  c++  java
  • vxlan层次化绑定

     http://specs.openstack.org/openstack/neutron-specs/specs/kilo/ml2-hierarchical-port-binding.html


    步骤如下:

    1. 用户用Nova boot创建一个虚拟机, vm 的网络设定为VXLAN A;
    2. Neutron创建一个VXLAN A网络接口,并将请求发送到ML2组件;
    3. Neutron  ML2先调用物理交换机(TOR)的Mechanism Driver进行端口绑定(port binding),将VxLAN A 绑定到物理交换机的网络接口 ;
    4. 物理交换机Mechanism Driver再申请一个VLAN B并通知ML2,告诉ML2当前这个VM的网络接口还需要绑定VLAN B
    5. 物理交换机Mechanism Driver通过Netconf接口告诉物理交换机设定VLAN B和VXLAN A的映射关系;
    6. ML2知道网络接口还需要绑定到对应的VLAN上,所以ML2调用OVS的Mechanism Driver,在OVS添加VLAN B,并将该VLAN配置到VM对应的接口上,
    7. OVS的Mechanism Driver会通过相应的API,告知位于计算节点的OpenVSwitch,OVS将对VM发出的数据包打上TAG=VLAN B  并转发到物理交换机的接口,物理交换机将带有TAG=VLAN B的数据包转换为TAG=VXLAN A的数据包;
    •  层次化端口绑定的逻辑,一半是在Neutron ML2里面,有另一半是在物理交换机对应的Mechanism driver里面。
    •  硬件交换机与服务器要运行LLDP之类的协议,来获取连接关系

    OpenStack层次化端口绑定在 SDN中host和交换机如何协同?

    虚拟机

    1、计算节点开启lldp服务,从underlay nic接口发送携带主机名的lldp报文,作为VTEP设备的交换机接收后上报控制器,控制器就记录计算节点所属的交换机端口,

    当计算节点启动虚机的时候,虚机的vport中会携带主机名(计算节点的名字,也就是lldp报文中携带的主机名),控制器就知道了这个虚拟机的报文将进入交换机的哪个端口。

    2、Openstack创建port在bind_port时,根据port所属计算节点动态分配一个这个计算节点的physical network的vlan,然后赋值给框架的next_segments_to_bind以便框架进行openvswitch vlan绑定的绑定,如果这个port是这个这个网络的第一个port的话,会通知这个计算节点添加vlan和vxlan的映射关系。

    3、虚机上线时,上线信息上报给控制器VSM模块,VSM模块再给NEM模块上报激活事件,使得NEM向交换机下发vlan和vxlan映射关系。

     裸金属

    裸金属通过nuetron传递的local_link_information来感知服务器连接交换机的端口。在inspect阶段,裸金属用的deploy镜像里会包含lldp服务,ironic-agent会收集lldp信息,告知ironic。

      host对不同租户的虚拟机的报文 Tag 不同的VLAN ,host连接到交换机的port设为Trunk口,这样host可以把不同VLAN Tag的网络数据送到交换机vetp。vetp根据VLAN Tag映射到不同的vxlan tag,进而封装成相应的VxLAN数据。

  • 相关阅读:
    Python 数字数据类型
    Python 标准数据类型
    Python 变量类型及变量赋值
    Python 基础语法
    ElasticStack系列之五 & 当前的缺陷与不足
    ElasticStack系列之四 & 索引后半段过程
    ElasticStack系列之三 & 索引前半段过程
    ElasticStack系列之二 & ElasticStack整体架构
    ElasticStack系列之一 & ElasticStack基础概念
    c# 获取本机IP
  • 原文地址:https://www.cnblogs.com/dream397/p/12316493.html
Copyright © 2011-2022 走看看