什么是泛播技术?

来自:车小胖谈网络 (微信号:chexiaopangnetwork),作者:车小胖谈网络

Anycast over IPv4

Anycast的实现方式一般是在服务器上起相同地址的环回口,通过等价路由的方式来实现,问题来了:


1.对网元需要怎样的需求?

2.路由协议上是否只是简单地宣告?

3.对不同协议(ospf,bgp)是否有差别?

4.路由收敛对服务的影响不吝赐教?




泛播技术以前的文章也有介绍,有兴趣的读者可以前去阅读。

什么是泛播Anycast?

先举一个生活中的例子,最早某大型超市开在古北水城路上,只此一家,做为亚洲年销售额第一的超市,常常被挤的水泄不通,连浦东的人也慕名远道而来。没多久时间,某大型超市就在全市各个区开了十多家,顾客通常去最近的一家,这样客户分流,就没有那么拥挤,用户满意度提高,销售额也大幅增长。但如果附近的门店关门歇业,顾客则需要到稍远的门店购物。

泛播也是采用以上的思路,将相同的IP地址配置在不同地理位置的服务器上,每台服务器提供相同的服务,甚至数据都是同步的,服务器服务范围为以自己为原点,半径在几十到几千公里不等的辐射圈,用户则依据路由表最近原则,选择最靠近自己的服务器来服务,一旦附近的服务器罢工,客户的访问流量会切换到稍远一些的服务器。

泛播,我们每天都在使用,但很多人没有意识到,比如DNS域名解析,全球13个根域名服务器几乎都使用泛播,在各个大洲同时部署相同IP的服务器,各个洲的用户会自动选择自己洲的服务器,距离近,访问延迟最小,用户体验会好得多。

但如果一个洲只有一台服务器,一旦挂了,会切换到其它洲的服务器,如果希望切换永不发生,则需要在一个场点部署多台服务器,组成一个Cluster,不光可以负载均衡,还可以冗余备份。

如果泛播IP面向全球用户,IP地址需要通过IGP/BGP、或直接BGP通告出去,最终都会以一条BGP路由呈现在路由表里,如果一个运营商泛播服务器只给本运营商提供服务,则需要使用BGP No_Export 属性。

如果泛播面向企业网内用户,使用IGP通告,用户则认为Cost值小的,距离自己最近,所以需要把跨越遥远距离(不同城市)的WAN链路Cost值修改的很巨大,比如1000,使得用户会优先选择相同城市的泛播服务器。

如何防止流量黑洞?

一直没有谈一个问题,假定一个场点只有一台泛播服务器,突然崩溃了,而路由协议没有意识到它挂了,依然把路由广播出去,那附近的用户依然会选择它来服务,于是流量全部被丢(流量黑洞),这不是我们希望看到的,最好服务器上运行IGP/BGP,一旦挂了,其它路由器能很快检测到超时,然后撤销路由通告,附近的用户就不会再访问它。

但以上只能检测到链路失效(Down)、服务器死机,但无法检测到服务进程停止工作,所以最好还能有一种监控进程健康工作的机制,一旦进程停止工作,则停止泛播IP的通告。

环回口绑定泛播IP最大的好处

只要服务器处于运行状态,这个环回口就是UP状态,如果有多个物理接口可以网络,则任何一个接口Down,都不妨碍泛播IP的可达,此外环回口可以配置/32位掩码,不会有任何的浪费。

路由收敛对泛播的影响

至于路由收敛对泛播的影响,泛播IP与其它IP没有本质区别,所以路由收敛期间可能会引起访问中断,一旦路由可达,访问立马恢复。

以上基本回答了题主的问题,至于泛播对网元的要求,泛播IP仅仅指把普通的IP配置在多个地方,所以它还是IP,对网元没有特殊要求。

泛播IP不适应的场景

泛播适合DNS域名解析、在线视频CDN、门户网站,但却不适合Long-Lived TCP-Based 应用程序,由于TCP状态信息不在泛播服务器之间同步,一旦切换到其它服务器,则连接状态全部丢失。

推荐↓↓↓
程序员的那点事
上一篇:NAT:端口受限类型和对称型有什么区别?(续) 下一篇:什么是外网IP、内网IP? (续)