写点什么

动态 BGP 和静态 BGP

  • 2020-03-31
  • 本文字数:1551 字

    阅读完需:约 5 分钟

动态BGP和静态BGP

华为云提供“全动态 BGP”和“静态 BGP”两种公网 EIP,经常有人问我,这两种有什么区别?今天我们来介绍一下。

从传统多线到 BGP

不知道大家是否还记得当年联网打游戏,联通的兄弟和电信的兄弟,完全没法配合,延迟吓死人。这是由于每个运营商都有自己的网络,运营商之间互联点是比较少的,带宽也不大,跨网连接都要迂回到连接点还经常拥塞。


很多应用为了应付这种情况,都申请了多线,一根电信一根联通一根移动。应用在每一个运营商都申请了一个 IP 地址,多个 IP 地址共同映射到同一个内网 IP 上。电信访问走电信的 IP,移动访问走移动的 IP,联通走联通自己的 IP。



这样确实是能解决跨网的问题,但是随着运营商数量越来越多(长城、教育网等),IP 的维护越来越复杂,DNS 的智能解析要求越来越高。


我们是否有办法申请一个 IP 地址,让每一个运营商网络都有这个 IP 的路由,并且都指向我们的应用,不再跨网?即上图不再是 IP1~IP3,而只有 IP1。


BGP 类型的 EIP 就是解决这个问题的。


某段 IP 地址,在多家运营商同时广播,每家运营商网络里面都有这个 IP 的路由并指向同一个地方。这类 IP 地址就是 BGP 类型的 IP 地址。



传统多线,如果应用只申请了 IP1,在联通发布,则电信的访问者必须先走到电信与联通互联口上,进入联通网络才能访问到 IP1。


BGPIP,每一家运营商内网都有 IP1 的路由并直接指向网内的某出口,不必跨网。


在 BGP 的场景下,运营商的路由管理是比之前复杂的。老场景下,同一个 IP 段的路由只有 1 条;BGP 的场景下,本网内有 1 条,还可能从其他网学到路由。本地的路由表维护量会翻倍,优先走网内,次优跨网。


这里有个点。既然网内已经有了一条,为何还需要从其他运营商那里学路由?


如果不学,当网内路由出现问题,路由消失业务就断了;学了以后,网内故障,可以迂回到其他运营商;


路由在运营商之间交叉穿透,这会导致运营商网络维护复杂度更高,运营商缺省是不穿透的,需要客户买单。

动态 BGP 与静态 BGP

刚才说了运营商网内的事情,但 IP 地址其实是归企业所有的,运营商只是代播。那 IP 地址到底是如何发布到所有运营商的?作为一个企业,是如何跟运营商对接的?


所说的动态和静态,其实就是企业跟运营商对接的方式和 IP 广播点上有差异。


动态 BGP


企业的路由器跟所有的运营商之间建立 EBGP,IP 地址在企业的路由器上发布,运营商只负责学习并传播。若企业路由器跟运营商之间线路中断,运营商学不到路由,网内路由撤销。


这就是动态 BGP。



动态 BGP 的好处就是,路由发布点是在企业的路由器上,企业可以自己控制各个运营商的路由优先级。当某一家运营商网络抖动厉害时,企业可以主动取消对他发布的路由,而使得该运营商内网的访问者迂回其他运营商访问,旁路故障点。


静态 BGP


企业的路由器跟运营商之间只是普通的 IP 对接,不需要建立 BGP。IP 地址在运营商的网络里面发布以后,通过静态路由的方式将网段指给企业的路由器。线路的中断,企业的路由器的故障,跟运营商的 IP 发布情况没有关联关系。



静态 BGP 配置简单,而且跟运营商之间没有动态协议联动。对运营商来说,自己网内的路由都是自己发的,不需要依赖企业的发布。所以静态 BGP 比动态 BGP 便宜。


回包怎么回?


刚才说的都是入方向的流量,那出方向怎么出呢?因为源地址都是一样的,目的地址也都是随机的,如何知道该走哪家运营商出去呢?


传统多线,出方向的报文,会选择一家运营商,或者通过链路负载均衡等设备选择。


  • 动态 BGP,因为企业会学习到各个运营商的细化路由,回包匹配路由回程即可

  • 静态 BGP,还是需要单独找设备跟运营商建立 EBGP,收取运营商的路由,根据收到的路由做路由策略回程


所以,整个 internet 出口,在考虑了各种场景以后,形成的架构总图如下:



本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/6v3uRTxkuIGnt-sMAou-HA


2020-03-31 14:432604

评论

发布
暂无评论
发现更多内容

经常被面试官问道的JavaScript数据类型知识你真的懂吗?

koala

JavaScript 面试 大前端

【JS必知必会】高阶函数详解与实战

koala

JavaScript 面试 大前端

2021年GitHub上爆火的999页Java面试宝典终开源

比伯

Java 编程 架构 面试 程序人生

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

SpringBoot-技术专题-启动自动装配过程

码界西柚

spring springboot

数据加密:你应该知道的数仓安全

华为云开发者联盟

数据加密 GaussDB(DWS) 数仓安全 透明加密 加密函数

小鼎量化机器人系统开发详情介绍

系统开发咨询1357O98O718

蚂蚁金服三面Java面试题全解析,这也太难了吧

Java架构之路

Java 程序员 架构 面试 编程语言

一文归纳Python特征生成方法(全)

泳鱼

Python 机器学习 深度学习

Apache Ranger安全认证配置

大数据技术指南

大数据 3月日更

Android开发必须要会!2021大厂Android面试经验,全网疯传

欢喜学安卓

android 程序员 面试 移动开发

牛链NB系统开发案例源码

系统开发咨询1357O98O718

4大华为云“安全镖局”秘密法宝揭秘

华为云开发者联盟

态势感知 华为云 企业主机安全 数据安全中心 Web应用防火墙

一束光的旅程

白洞计划

【实战问题】-- 缓存穿透之布隆过滤器(1)

秦怀杂货店

缓存 布隆过滤器 java;

阿里P7大牛手把手教你!美团Android开发工程师岗位职能要求,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

WC,误删数据库了,会被开除吗?

Java架构师迁哥

如何实现一个简易版的 Spring - 如何实现 Setter 注入

mghio

spring 依赖注入

领域驱动设计101 - 绑定模型与实现

luojiahu

领域驱动设计 DDD

实例讲解如何制作Python模式程序

华为云开发者联盟

Python 编程语言 星型程序 Programs 模式程序

Google Material Design 元件库

zhuchuanming

元件库

EGG NETWORK永动金融EFTalk火爆来袭

币圈那点事

Ai调参炼丹,一篇就够了

泳鱼

Python 机器学习 深度学习 AI

滴滴OCE惊喜福利!

滴滴云

悖论和直觉

阳龙生

Java面试必问:一位清华大牛用一个坦克大战讲明白了23种设计模式(视频+源码笔记)

Java架构追梦

Java 架构 面试 设计模式 坦克大战

深入理解 JavaScript, 从作用域与作用域链开始

koala

JavaScript 大前端

Ai特征选择,一篇就够了

泳鱼

Python 人工智能 机器学习 深度学习 AI

如何阅读 Java 字节码(Byte Code)

Kori Lin

Java JVM bytecode 字节码

Spark性能调优-Shuffle调优及故障排除篇

五分钟学大数据

spark Spark调优 3月日更

Python OpenCV 图像旋转,取经之旅第 11 天

梦想橡皮擦

3月日更

动态BGP和静态BGP_文化 & 方法_华为云产品与解决方案_InfoQ精选文章