云计算在中国发展越来越快,企业逐步开始将业务迁移到公有云中,方便运维,节省成本。公有云最复杂的地方是网络,客户对网络的需求千奇百怪,造成网络环境极其复杂,稍有不慎,就会出现网络连通性问题。因此大部分云计算厂商机房网络类型的运营商接入均为 BGP 多线路,保证线路质量。公有云中网络安全也是非常重要,例如 DDos 攻击,域名未备案封堵系统。我在工作中接触到了 BGP 高仿和域名未备案封堵系统,今天总结一下自己对 BGP 网络的理解,涉及的内容有什么是 BGP,BGP 用来解决什么问题,云计算厂商中 BGP 机房有啥优势,BGP 高防如何做到引流和回注,域名未备案系统是怎么实现的。
2、BGP 网络介绍目前中国境内主要分为网通、电信、移动、联通、教育网、科技网、卫通等网络,由于这些公司独立运作,造成国内长久以来整个互联网处于无法快速互联互通的局面,如何将各个 AS 自制系统连通起来,就需要搭建 BGP 网络。
在介绍 BGP 协议之前,先介绍几个概念:
(1) AS(Autonomous system):自治系统,指在一个(有时是多个)组织管辖下的所有 IP 网络和路由器的全体,它们对互联网执行共同的路由策略。也就是说,对于互联网来说,一个 AS 是一个独立的整体网络。而 BGP 实现的网络自治也是指各个 AS 自治。每个 AS 有自己唯一的编号。
(2)IGP(Interior Gateway Protocol):内部网关协议,在一个 AS 内部所使用的一种路由协议。一个 AS 内部也可以有多个路由器管理多个网络。各个路由器之间需要路由信息以知道子网络的可达信息。IGP 就是用来管理这些路由。代表的实现有 RIP 和 OSPF。
(3)EGP(Exterior Gateway Protocol):外部网关协议,在多个 AS 之间使用的一种路由协议,现在已经淘汰,被 BGP 取而代之。
BGP(Border Gateway Protocol) 主要用于互联网 AS(自治系统) 之间的互联,BGP 的最主要功能在于控制路由的传播和选择最佳路径。全国各大网络运营商多数都是通过 BGP 协议与自身的 AS 号来实现多线互联的。使用 BGP 协议互联后,网络运营商的所有骨干路由设备将会判断到 IDC 机房 IP 段的最佳路由,以保证不同网络运营商用户的高速访问。
动态 BGP 多线网络,路由表项是通过相互连接的路由器之间交换彼此路由信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。为了实现 IP 分组的高效寻路,IETF 制定了多种寻路协议。也就是说,当静态 BGP 中的网络结构发生变化,运营商是无法在第一时间自动调整网络设置以保障用户的体验度。而动态 BGP 可根据设定的寻路协议第一时间自动优化网络结构,以保持客户使用的网络持续稳定、高效。所以,动态 BGP 网络被称为真正意义上的 BGP。
知乎上有一个非常 = 通俗易懂的例子讲解为什么需要 BGP 网络, https://zhuanlan.zhihu.com/p/25433049 。
3、BGP 流量引流和回注云计算厂商需要保证客户网络的正常,通常会为单个公网 IP 提供数 G 的防护能力,当超过默认的阈值,公网 IP 备迁移到黑洞中,进行封堵。这样导致用户的服务不可访问了,客户为了正常访问服务,就需要接入 BGP 高防,防护能力高达数百 G,来保护服务正常。高防的费用是非常高的,通常云厂商自己搭建高防系统,通过 BGP 协议将流量引流到高防清洗系统,将异常流量清洗掉,将正常流量回注给客户。参考华为的 DDos 防护系统: http://forum.huawei.com/enterprise/thread-388785-1-1.html
4、搭建 BGP 引流和回注使用 Linux 下开源的 Quagga 开源搭建基于 BGP 协议的路由器,Quagga 守护进程负责 BGP 的服务叫 bgpd。关于如何使用 Quagga 搭建一个 BGP 路由器,可以参考:
https://linux.cn/article-4609-1.html路由器 A 和路由器 B 使用 100.100.0.0/30 子网来连接到对方。
技术实现目前可以使用 Intel 开源的 DPDK 网络开发包快速开发,使用 KNI 新建一个虚拟网卡,配置好与上层交互机建立 BGP,然后通过虚拟网络将流量引入,分析流量过后,使用回注口将报文使用二层 MAC 送回到交换机。关于 DPDK 的介绍可以参考: https://www.jianshu.com/p/0ff8cb4deaef
来源: https://www.cnblogs.com/Anker/p/8166294.html