一、前言html
云计算在中国发展愈来愈快,企业逐步开始将业务迁移到公有云中,方便运维,节省成本。公有云最复杂的地方是网络,客户对网络的需求千奇百怪,形成网络环境极其复杂,稍有不慎,就会出现网络连通性问题。所以大部分云计算厂商机房网络类型的运营商接入均为 BGP 多线路,保证线路质量。公有云中网络安全也是很是重要,例如DDos攻击,域名未备案封堵系统。我在工做中接触到了BGP高仿和域名未备案封堵系统,今天总结一下本身对BGP网络的理解,涉及的内容有什么是BGP,BGP用来解决什么问题,云计算厂商中BGP机房有啥优点,BGP高防如何作到引流和回注,域名未备案系统是怎么实现的。linux
二、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段的最佳路由,以保证不一样网络运营商用户的高速访问。spa
动态BGP多线网络,路由表项是经过相互链接的路由器之间交换彼此路由信息,而后按照必定的算法优化出来的,而这些路由信息是在必定时间间隙里不断更新,以适应不断变化的网络,以随时得到最优的寻路效果。为了实现IP分组的高效寻路,IETF制定了多种寻路协议。也就是说,当静态BGP中的网络结构发生变化,运营商是没法在第一时间自动调整网络设置以保障用户的体验度。而动态BGP可根据设定的寻路协议第一时间自动优化网络结构,以保持客户使用的网络持续稳定、高效。因此,动态BGP网络被称为真正意义上的BGP。htm
知乎上有一个很是=通俗易懂的例子讲解为何须要BGP网络,https://zhuanlan.zhihu.com/p/25433049。
三、BGP流量引流和回注
云计算厂商须要保证客户网络的正常,一般会为单个公网IP提供数G的防御能力,当超过默认的阈值,公网IP备迁移到黑洞中,进行封堵。这样致使用户的服务不可访问了,客户为了正常访问服务,就须要接入BGP高防,防御能力高达数百G,来保护服务正常。高防的费用是很是高的,一般云厂商本身搭建高防系统,经过BGP协议将流量引流到高防清洗系统,将异常流量清洗掉,将正常流量回注给客户。参考华为的DDos防御系统:http://forum.huawei.com/enterprise/thread-388785-1-1.html
四、搭建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