月兔网络编程学习
解密BGP高防系统
2018-11-29 月兔



0x00、BGP高防业务需求



1、业务需求描述



·有业务能付得起高昂的高防IP费用么?



中国线上棋牌类游戏从98年的联众游戏、2003年的QQ游戏,到2008年德州扑克、2009年的捕鱼,在到2016年的闲徕游戏,开拓了俗人线上棋牌游戏的模式。游戏行业掀起了腥风血雨的蔓延,到2017年6~7月期间全国大大小小的棋牌公司有上百家。



业务模式:熟人4个人可以通过手机打麻将,游戏公司收取的是桌台费,通过总代的方式拉拢客源进入棋牌游戏群里,假设一场麻将10几分钟,收取6块钱桌台费,那么线下渠道拉客源可以给到4块,通过病毒式的传播后,省内Top棋牌类公司一天的营业额大约在10几或者几十万不等。这样竞争对手看到这么暴力的营收都坐不住了,纷纷研发棋牌游戏,但是一个省玩麻将的就这么些人,自然的相互攻击的现象时有发生,如果你的App服务器访问不了,大家都上其他家App玩了。



2、解决方案选择



·为什么要使用BGP高防?



游戏公司有钱支付抗D的费用,那么DDoS防御的需求就发展起来了。那么传统的抗D解决方案能满足需求么?答案是不行的,因为棋牌游戏的实时要求非常高,在高延时的情况下,会严重影响用户体验。所以需要,绝对好的线路,传统的单线高防,在运营商之前切换延时无法满足业务需求。



·为啥用3线BGP高防?



传统的BGP高防机房,都是使用自建BGP机房资源做,这种IDC也只有腾讯会有,而且费用昂贵。大家都知道BGP线路都是优先给公有云IAAS服务的,拿来做高防太浪费了(BGP线路是普通单线的至少3倍以上价格),而且这种BGP线路,一般都也只有100G左右,不会有更大的带宽。这种针对棋牌类的攻击一般都在200G~300G左右,当时和闲徕聊过,他们业务高峰的时候攻击量是平均500G~700G。这么大的带宽存BGP机房是无法承受的。



·CDN与三线BGP高防联营



如果直接和运营商谈这个机房只做高防机房,其实这是非常亏的,因为高防的流量很大,攻击时间也不确定,那么,如果我们使用CDN网络中的其中一个节点做高防机房,CDN使用出口带宽,高防使用入口带宽。这样带宽利用率会上升很多。如果按照出入向1:5的比例,80G CDN流量可以换400G入口流量。如果按照平均8元/Mbps.月, CDN的运营费用:160万。如果你量用到了,其实高防是免费用的。当然,你要集中这个省的几个节点,一般一个CDN节点按照20G规划。



0x01、BGP高防架构



有了以上论证,我们有了三线BGP高防,那么,下一步要做什么呢?大家都知道高防切换是使用cname的方式做切换。其实如果你在游戏终端安装一个安全sdk,切换这就完全摆脱cname的方式,可以使用WebDNS切换。也就是阿里云的游戏盾模式。游戏盾相关的介绍可以参考我以前的文章。本节主要是讲我们三线BGP高防如何工作。



一、高防系统架构



1.jpg


二、转发模块



·模块作用



转发模块在整个高防系统中起到至关重要的作用,把用户的真实IP隐藏到转发系统后面,配合用户通过cname方式切换现有业务系统到高防机房,同时把清洗后的正常流量转发给真正的用户业务系统。



·功能描述



转发系统分为4层转发和7层转发,针对棋牌类App业务数据使用4层转发,升级等系统使用7层转发(一般都是挂在CDN上的一个url下载地址)



·原理



4层转发



高防机房一般会分配几个C段高防IP端,这些IP就是给转发模块用的,我们假定它为IP1



realIP1是用户业务源站IP地址


graph LR
A[clientIP:TCP:2004] 
A--> |正常访问| B[IP1:TCP:2004]
    B--> |4层转发| C[realIP1:TCP:10000]
    C--> |4层转发| D[用户业务源站]


7层转发


graph LR
A[clientIP:TCP:80] 
A--> |正常访问| B[IP1:TCP:80]
    B--> |4层转发| C[realIP1:TCP:80]
    C--> |7层转发| D[用户业务源站]


·业务流程



1、用户在控制台创建高防IP,系统会在剩余的高防IP列表中随机选一个IP地址。



2、然后通知lvs系统建立pool,通过pool建立虚拟IP,然后建立对应member IP(回源IP)



2.png




3、设置完以上参数,需要等待用户把我们产生的随机域名设置到他们生产网站别名。



4、启动BGP高防,借助CDN的DNS系统,当联通用户,根据不同线路解析到对应的联通高防机房,电信、移动也一样。



5、不使用的时候可以切换到回源IP上。



返回VIP是否分配成功。



三、清洗系统



3.png




·模块组成



一般清洗模块要配合检测模块配合使用,我们先把检查模块使用NTA标识,清洗模块使用ADS标识。



检查模块负责:需要统计各个高防IP对进入高防机房的流量,传统检测手段,例如绿盟的NTA使用netflow和交换机配合,主要是准确性差一些。建议还是使用大数据方式计算其流量(spark streaming 统计各种包的数量,聚合计算检测),一旦出现流量超出通知核心交换丢弃目的IP所有流量。



清洗模块负责:需要在用户购买的黑洞阈值内对攻击流量做清洗。针对4层DDoS攻击流量,比如:Syn Flood PPS达到8000的时候,启动清洗,这就需要流量学习的技术。动态设定PPS。清洗模块是由集群组成,单台处理能力能达到40G,小包20G能力,一般一个高防机房需要400G,一个机架柜搞定。针对7层的攻击流量,要测量一下nginx服务器大小,一台服务器http处理能力大约8万QPS,4台4层转发lvs+8台7层转发nginx。两个机架柜。如果是https处理能力大约在7000~8000QPS,一般加SSL加速卡。提升其单台服务器处理能力。一个集群处理7层流量大约60万QPS,4层清洗能力大约400G。



·业务流程



1、分线路解析



2、流量检测发布黑洞路由=>对应套餐上限



3、经过4层流量清洗。



4、经过lvs+nginx做4/7层转发CC清洗。



5、清洗完成后把干净数据转发给用户源站。



四、管控中台



·功能



主要是完成用户购买高防套餐,对高防IP的自动分配,设置DNS分线路解析。



同时要采集攻击流量图,连接数,攻击告警,显示给用户。



五、调度系统



·网络状况感知



主要是通过CDN拨测系统,了解目标用户的网络状况,通过延时和丢包率统计上来,作为调度系统决策手段,一般延时不能大于100ms,丢包率一般不要大于5%,BGP线路一般都是2%左右。监控准确性取决于CDN拨测点数和反馈数据准确性。后台可以通过tsdb存储。



·调度



一般通过手工调度,调度功能有:



@1、调度算法,根据网络状况感知模块决定,降级/升级调度(取决于机房的延时和丢包率定义升降),



@2、调度管理:调度首先要明确你的调度对象,针对哪个用户,哪个线路进行调度。还是整个机房调度。如果整个机房由于特殊的原因无法使用,需要把这个机房所有用户调度到其他可用机房,如果我们有单线机房,我们可以在BGP机房单个线路调度到相应的机房



@3、资产管理:管理我们现有的高防机房,管理我们高防机房中有高防IP资产。



@4、超卖率统计:高防如何想赚钱必须达到3~5倍的超卖率。超卖率=当前销售的总带宽/高防机房现有带宽。



六、监控系统



·日常监控



主要监控高防机房所有的设备监控状态,例如:CPU、memory、DISK、network、process、socket。



·性能监控



需要了解4、7层性能。ip_port连接的pps,http连接的cps。



0x02、未来发展



BGP高防体系也在不断的演变,运营商也看上了这块市场,包括电信云堤,联通也在全国部署了相应的清洗服务。再加上运营商可以自己控制路由器,所有IP anycast也是有可能实现的。


本文来源嘶吼源地址:http://www.4hou.com/business/14579.html

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容