跨云平台与物理专线使用Vxlan实现两地二层互通,并使用ospf与bgp做底层链路主备
Vxlan基础,已掌握可略过
VXLAN网络架构
VXLAN是NVO3中的一种网络虚拟化技术,通过将原主机发出的数据包封装在UDP中,并使用物理网络的IP、MAC作为外层头进行封装,然后在IP网络上传输,到达目的地后由隧道终结点解封装并将数据发送给目标主机。
通过VXLAN,虚拟网络可接入大量租户,且租户可以规划自己的虚拟网络,不需要考虑物理网络IP地址和广播域的限制,降低了网络管理的难度,同时满足虚拟机迁移和多租户的需求。
类似于传统的VLAN网络,VXLAN网络也有VXLAN网络内互访和VXLAN网络间互访。
VXLAN网络内互访
通过VXLAN技术可以实现在已有三层网络上构建虚拟二层网络,实现主机之间的二层互通
VXLAN网络内互访中涉及的概念如下:
网络标识VNI(VXLAN Network Identifier)
类似于传统网络中的VLAN ID,用于区分VXLAN段,不同VXLAN段的租户不能直接进行二层通信。一个租户可以有一个或多个VNI,VNI由24比特组成,支持多达16M的租户。
广播域BD(Bridge Domain)
类似传统网络中采用VLAN划分广播域方法,在VXLAN网络中通过BD划分广播域。
在VXLAN网络中,将VNI以1:1方式映射到广播域BD,一个BD就表示着一个广播域,同一个BD内的主机就可以进行二层互通。
VXLAN隧道端点VTEP(VXLAN Tunnel Endpoints)
VTEP可以对VXLAN报文进行封装和解封装。
VXLAN报文中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。一对VTEP地址就对应着一条VXLAN隧道。在源端封装报文后通过隧道向目的端VTEP发送封装报文,目的端VTEP对接收到的封装报文进行解封装。
虚拟接入点VAP(Virtual Access Point)
VXLAN业务接入点,可以基于VLAN或报文流封装类型接入业务:- 基于VLAN接入业务:在VTEP上建立VLAN与BD的一对一或多对一的映射。这样,当VTEP收到业务侧报文后,根据VLAN与BD的映射关系,实现报文在BD内进行转发。
- 基于报文流封装类型接入业务:在VTEP连接下行业务的物理接口上创建二层子接口,并配置不同的流封装类型,使得不同的接口接入不同的数据报文。同时,将二层子接口与BD进行一一映射。这样业务侧报文到达VTEP后,即会进入指定的二层子接口。即根据二层子接口与BD的映射关系,实现报文在BD内进行转发。
网络虚拟边缘NVE(Network Virtualization Edge)
NVE是实现网络虚拟化功能的网络实体。报文经过NVE封装转换后,NVE间就可基于三层基础网络建立二层虚拟化网络。
二层网关
类似传统网络的二层接入设备,在VXLAN网络中通过二层网关解决租户接入VXLAN虚拟网络,也可用于同一VXLAN虚拟网络的子网通信。
VXLAN网络间互访(集中式网关)
不同BD之间的主机不能直接进行二层通信,需要通过VXLAN三层网关实现主机间的三层通信。
集中式网关是指将三层网关集中部署在一台设备上,所有跨子网的流量都经过三层网关进行转发,实现流量的集中管理。
VXLAN网络间互访中涉及的概念如下:
三层网关
类似传统网络中不同VLAN的用户间不能直接进行二层互访,不同VNI之间的VXLAN及VXLAN和非VXLAN之间也不能直接相互通信。为了使VXLAN之间,以及VXLAN和非VXLAN之间能够进行通信,引入了VXLAN三层网关的概念。
三层网关用于VXLAN虚拟网络的跨子网通信以及外部网络的访问。
VBDIF接口
类似于传统网络中采用VLANIF解决不同广播域互通的方法,在VXLAN中引入了VBDIF的概念。
VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。通过VBDIF接口配置IP地址可实现不同网段的VXLAN间,及VXLAN和非VXLAN的通信,也可实现二层网络接入三层网络。
VXLAN网络间互访(分布式网关)
分布式网关是指将VXLAN二层网关和三层网关部署在同一台设备上,VTEP设备既作为VXLAN网络中的二层网关设备,与主机对接,用于解决终端租户接入VXLAN虚拟网络的问题。同时也作为VXLAN网络中的三层网关设备,实现跨子网的终端租户通信,以及外部网络的访问。仅BGP EVPN方式部署VXLAN网络时支持分布式网关。
VXLAN分布式网关具有如下特点:
- 同一个VTEP节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活。
- VTEP节点只需要学习自身连接服务器的ARP表项,而不必像集中式三层网关一样,需要学习所有服务器的ARP表项,解决了集中式三层网关带来的ARP表项瓶颈问题,网络规模扩展能力强
VXLAN报文封装格式
原始报文在封装过程中先被添加一个VXLAN帧头,再被封装在UDP报头中,并使用承载网络的IP、MAC地址作为外层头进行封装。
报文封装格式
现网实现方案
拓扑
拓扑描述
两个pop点均为IDC机房,拥有完整架构,以上拓扑主要摘出Vxlan相关设备,Site-1与Site-2间通过物理专线直连,同时两个Site同时使用物理专线接入华为云,在华为云购买云连接并配置路由打通两个站点
华为云与站点间使用静态路由方式(国内云平台BGP是伪BGP,不能根据线下通告的路由自动同步),直连专线链路使用ospf互联,site-2接入互联网
需求
- 两个站点服务器二层互通
- site-2互联网ip可以在site-1使用
- 优先使用云联网,直连专线做备用
- 主备倒换控制在毫秒级
需求分析
- 需求1要求两个site间实现二层互通,可以使用VPLS VLL Vxlan技术实现
- 需求2可以使用跨云平台GRE隧道或Vxlan技术实现
- 需求3与需求4根据需求1 2 来指定倒换方案
- 现网core设备为juniper mx系列,系统版本不支持RPM联动静态路由,也不支持跨条BFD检测,故无法使用浮动静态路由方式来做两端Vtep ip互通
- 同时云平台线路非直连不能建立ospf peer,所以也不能使用ospf主备路由方式做负载
综上,由于接入云平台所以不能建立完整mpls lsp 如果使用VPLS或VLL只能使用GRE承载PW会增大额外开销,且需求2还需独立实现,综合考虑最终选择使用Vxlan技术实现,根据最后两条分析决定跨云平台建立bgp与直连专线ospf两个协议间做主备。
方案配置
地址规划
设备 | loopback地址 | 物理专线互联地址 | 云平台互联地址 |
Site1-core | 192.168.39.5/32 | 10.38.0.1/30 | 10.39.0.1/30 |
Site2-core | 192.168.39.21/32 | 10.38.0.2/30 | 10.39.0.5/30 |
Vtep-1 | 192.168.39.1/30 | 10.40.0.2/30 | |
Vtep-2 | 192.168.39.17/30 | 10.40.0.6/30 |
配置
基础线路主备
#Site1-core
set protocols bgp group Vxlan type external
set protocols bgp group Vxlan neighbor 192.168.39.21 multihop ttl 10
set protocols bgp group Vxlan neighbor 192.168.39.21 local-address 192.168.39.5
set protocols bgp group Vxlan neighbor 192.168.39.21 import Vxlanin
set protocols bgp group Vxlan neighbor 192.168.39.21 export Vxlanout
set protocols bgp group Vxlan neighbor 192.168.39.21 peer-as 65500
set protocols bgp group Vxlan neighbor 192.168.39.21 local-as 65501
set protocols bgp group Vxlan neighbor 192.168.39.21 bfd-liveness-detection minimum-interval 100
set protocols bgp group Vxlan neighbor 192.168.39.21 bfd-liveness-detection minimum-receive-interval 100
set protocols bgp group Vxlan neighbor 192.168.39.21 bfd-liveness-detection multiplier 3 set policy-options policy-statement Vxlanin term Vxlan from route-filter 192.168.39.17/32 exact
set policy-options policy-statement Vxlanin term Vxlan then accept
set policy-options policy-statement Vxlanin term 99 then reject set policy-options policy-statement Vxlanout term Vxlan from route-filter 192.168.39.1/32 exact
set policy-options policy-statement Vxlanout term Vxlan then accept
set policy-options policy-statement Vxlanout term 99 then reject set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection minimum-receive-interval 100
set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection multiplier 3
set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection transmit-interval minimum-interval 100
set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection minimum-receive-interval 100
set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection multiplier 3
set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection transmit-interval minimum-interval 100 set routing-options static route 192.168.39.21/32 next-hop 10.39.0.2
set routing-options static route 192.168.39.1/32 next-hop 10.40.0.2 #Site2-core
set protocols bgp group Vxlan type external
set protocols bgp group Vxlan family inet unicast rib-group fbf-group
set protocols bgp group Vxlan neighbor 192.168.39.5 multihop ttl 10
set protocols bgp group Vxlan neighbor 192.168.39.5 local-address 192.168.39.21
set protocols bgp group Vxlan neighbor 192.168.39.5 import Vxlanin
set protocols bgp group Vxlan neighbor 192.168.39.5 export Vxlanout
set protocols bgp group Vxlan neighbor 192.168.39.5 peer-as 65501
set protocols bgp group Vxlan neighbor 192.168.39.5 local-as 65500
set protocols bgp group Vxlan neighbor 192.168.39.5 bfd-liveness-detection minimum-interval 100
set protocols bgp group Vxlan neighbor 192.168.39.5 bfd-liveness-detection minimum-receive-interval 100
set protocols bgp group Vxlan neighbor 192.168.39.5 bfd-liveness-detection multiplier 3 set policy-options policy-statement Vxlanin term Vxlan from route-filter 192.168.39.1/32 exact
set policy-options policy-statement Vxlanin term Vxlan then accept
set policy-options policy-statement Vxlanin term 99 then reject
set policy-options policy-statement Vxlanout term Vxlan from route-filter 192.168.39.17/32 exact
set policy-options policy-statement Vxlanout term Vxlan then accept
set policy-options policy-statement Vxlanout term 99 then reject set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection minimum-receive-interval 100
set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection multiplier 3
set protocols ospf area 0.0.0.0 interface xe-0/0/1.33 bfd-liveness-detection transmit-interval minimum-interval 100 set routing-options static route 192.168.39.5/32 next-hop 10.39.0.6
set routing-options static route 192.168.39.17/32 next-hop 10.40.0.6 set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection minimum-receive-interval 100
set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection multiplier 3
set protocols ospf area 0.0.0.0 interface xe-0/0/2.100 bfd-liveness-detection transmit-interval minimum-interval 100
Vxlan配置
#Vtep-1 interface LoopBack1
ip address 192.168.39.1 255.255.255.252
ospf network-type broadcast
ospf enable 1 area 0.0.0.0 bridge-domain 590
l2 binding vlan 520
vxlan vni 1001
bridge-domain 600
l2 binding vlan 590
vxlan vni 1002 interface Nve1
source 192.168.39.1
vni 1001 head-end peer-list 192.168.39.17
vni 1002 head-end peer-list 192.168.39.17 interface XGigabitEthernet0/0/3
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 520 590 #Vtep-2
interface LoopBack1
ip address 192.168.39.17 255.255.255.252
ospf network-type broadcast
ospf enable 1 area 0.0.0.0 bridge-domain 590
l2 binding vlan 520
vxlan vni 1001
bridge-domain 600
l2 binding vlan 590
vxlan vni 1002 interface Nve1
source 192.168.39.17
vni 1001 head-end peer-list 192.168.39.1
vni 1002 head-end peer-list 192.168.39.1 interface XGigabitEthernet0/0/3
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 590
以上配置可实现两个Site中服务器打上vlan 590标签就可实现二层互通,Vtep-1服务器打上vlan 520就可以使用Vtep-2互联网地址
注意由于封装了Vxlan头部,物理线路包括云平台MTU需要调整,最小调整为1550,或者服务器端MTU调整为1450,否则会影响传输效率,实测10G带宽最大利用率为10%
跨云平台与物理专线使用Vxlan实现两地二层互通,并使用ospf与bgp做底层链路主备的更多相关文章
- 使用 Velero 跨云平台迁移集群资源到 TKE
概述 Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份.还原和迁移集群资源,关于如 ...
- Google发布跨云Serverless管理平台Knative
企业只要使用由Google与Pivotal.IBM.红帽和SAP等企业共同开发的跨云Serverless管理平台Knative,就能在支持Kubernetes的云平台上自由的迁移工作负载,无论是跨私有 ...
- Kubernetes容器云平台建设实践
[51CTO.com原创稿件]Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署.大规模可伸缩.应用容器化管理.伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经 ...
- 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案
文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案 介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...
- 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案
微软的云平台媒体服务为流媒体服务提供了多种选择,在使用流媒体服务为企业做流媒体方案时,首先需要确认要流媒体接收目标,如针对广大iOS, Android移动设备,由于它们都支持HLS 格式的流媒体,基于 ...
- SAP云平台架构概述
在我们开始SAP云平台的架构之旅之前,让我们先看看SAP已经发布的一些其他云产品.这些云产品方案可以分为公有云和私有云两种. SAP公有云解决方案见下图最右侧,比较著名的有SAP SuccessFac ...
- 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目
大家好 , 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目 . 对 , 用 物理服务器 和 .Net 平台 构建 云平台 . 通过 .Net 构建 分布式 计算集 ...
- 用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办
关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了.国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了. 直入主题,最近我正在做一个原型开发:通过SA ...
- 容器云平台No.1~基于Docker及Kubernetes构建的容器云平台
开篇 最近整理笔记,不知不觉发现关于kubernetes相关的笔记已经达99篇了,索性一起总结了.算是对这两年做容器云平台的一个总结,本文是开篇,先介绍下所有用到的组件.首先来看下架构图(实在画的太丑 ...
随机推荐
- idea问题之"一个或多个listeners启动失败问题"
org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件之 "A ...
- ros工作空间中文件夹结构
ROS 编译系统 catkin 详解 ros系统学习之Catkin编译系统 ROS--catkin编译系统.package.xml和CMakeList.txt文件 1.build:编译空间 存放CMa ...
- C++ | 动多态的发生时机
探究动多态的发生时机 有了虚函数和虚函数表为动多态提供支持,从而可以实现C++语言的动多态.那么,问题又来了. 动多态的发生时机是什么? 或者说,动多态发生有哪些条件与限制呢? 下面让我们一起来探究动 ...
- Flex 布局新旧混合写法详解(兼容微信)
flex 是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 flex 的支持都 ...
- Javascript--function的name属性
1.非标准的name属性 function sayHi(){ console.log("Hi");} console.log(sayHi.name);
- 判断页面环境是否在小程序的webview中
最近公司需要做小程序项目,但是又希望能够快速开发,就想着把web端的响应式页面放到webview里快速开发.但在判断页面环境的时候出现一些问题. 环境问题 用小程序提供的wx.miniProgram. ...
- 如何监控微信小程序HTTP请求错误
摘要: Fundebug的微信小程序错误监控插件更新至0.5.0,支持监控HTTP请求错误. 接入插件 接入Fundebug的错误监控插件非常简单,只需要下载fundebug.0.5.0.min.js ...
- 【小程序开发】 点击button按钮,引导用户授权
一. 前言 小程序官方文档,上面说明 wx.getUserInfo(OBJECT) 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="ge ...
- ubantu14.04搜狗拼音安装
1. 先卸载fcitx: sudo apt-get purge fcitx*2. 安装fcitx和libssh2-1: sudo apt-get install fcitx 和 sudo apt-ge ...
- Python找出列表中的最大数和最小数
Python找出列表中数字的最大值和最小值 思路: 先使用冒泡排序将列表中的数字从小到大依次排序 取出数组首元素和尾元素 运行结果: 源代码: 1 ''' 2 4.编写函数,功能:找出多个数中的最大值 ...