写点什么

动态 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:432534

评论

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

网络编程(三)数据链路相关知识

Albert Edison

Linux 网络编程 计算机网络 8月月更 数据链路

“红山开源”创新论坛 | ChinaOSC

CCF开源发展委员会

RT-Thread记录(七、IPC机制之邮箱、消息队列)

矜辰所致

ipc RT-Thread 8月月更

头脑风暴:组合总和 Ⅳ

HelloWorld杰少

8月月更

史上最全的Java并发系列之Java多线程

自然

多线程 并发 8月月更

计算后缀表达式-算法与数据结构-栈的运用-C++语言实现

清风莫追

算法 数据结构, 8月月更

CCF开源发展委员会执委增选

CCF开源发展委员会

Kubernetes Docker Compose 迁移

CTO技术共享

开源 签约计划第三季 8月月更

Kafka基础知识

阿泽🧸

kafka 8月月更

苏彤,你的 Python Flask 编写生成二维码接口写完了

梦想橡皮擦

Python 爬虫 8月月更

开源雨林企业开源治理与贡献论坛| ChinaOSC

CCF开源发展委员会

每日一R「06」内存管理

Samson

8月月更 ​Rust

手把手带你实战 AGP 7.x ASM 字节码插桩

如浴春风

android asm Gradle 签约计划第三季

Kubernetes LIST请求服务调优

CTO技术共享

开源 签约计划第三季 8月月更

三种插件开发模式,带你玩废tinymce

Five

tinymce 签约计划第三季 8月月更

IPv6报文头深度解析

穿过生命散发芬芳

ipv6 8月月更

《Effective Java》第54条:返回零长度的数组或者集合,而不是null

okokabcd

Java

在线XML转Excel工具

入门小站

工具

一文带你打通Node流的"任督二脉"

战场小包

前端 Node 签约计划第三季

KubeSphere 新版本3.3.0解读

CTO技术共享

开源 签约计划第三季 8月月更

急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

刘悦的技术博客

Go golang 框架 go语言 Go 语言

开源一夏 | 见微知著,带你认认数据分析的大门,站在门口感受一下预测的魅力

迷彩

开源 数据分析 预测模型 签约计划第三季 8月月更

深入浅出sychronized与Lock的实现原理

清风

后端 原理 并发 lock sychronized

Kubernetes分布式持续交付Zadig

CTO技术共享

开源 签约计划第三季 8月月更

企业架构是当代的屠龙之术吗?

涛哥 数字产品和业务架构

企业架构

在线文字图标logo文章封面图生成工具

入门小站

工具

开源云原生与行业应用 | ChinaOSC

CCF开源发展委员会

阿里云解决方案架构师张平:云原生数字化安全生产的体系建设

阿里巴巴云原生

阿里云 云原生 安全 数字化

史上最全的Java并发系列之Java多线程(二)

自然

多线程 并发 8月月更

Redis 多机

武师叔

8月月更

开源教育论坛| ChinaOSC

CCF开源发展委员会

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