如何实现任播(AnyCast)?

CDN技术

1 基础知识

1.1 AnyCast的概念

– AnyCast的本质是一种网络技术,他借助动态路由协议实现服务的负载均衡和冗余
– 当一个地址被分配到多于一个的接口时,发送往接口的报文将被路由到最近的接口
注:
– 地址亦称单播地址
– 路由的根据是路由协议度量值,如最短路径等

1.2 AnyCast的应用场景

1.2.1 减弱DDos攻击

DDos攻击又称分布式拒绝服务攻击,防攻击原理如下,
– Anycast组中某个成员或多个受到攻击
– 负责报文的路由检测各组成员的响应时间
– 将报文转发给响应时间最快的组成员
注:可以理解为负载均衡(或称负载分摊,英文缩写LB)

1.2.2 减弱网络拥塞

跟防DDos攻击原理相同路由将报文转发给响应时间最快的组成员
注:同样也可以理解为负载均衡

1.2.3 实现高可用

– 负责报文的路由根据各组成员的据路由度量值(例如最短路径)
– 将报文转发给路由度量值最小(例如路径最短)的组成员
– 当该组成员无响应时动态路由协议将宣告该成员失败
– 报文将转发给新的路由度量值最小的组成员
注:同样可以理解为CDN技术,因为路径最短,符合CDN加速的定义。

1.3 AnyCast的特点

– 负载均衡(Load balancing)
– 可靠性(Reliability)
– 对客户端透明(Client transparency)
– 改善地点与延迟(Locality/latency improvements)
– 抗Doss攻击(Distributed response to Dos)

1.4 AnyCast的实现原理

1.4.1 配置AnyCast节点组


如上图所示,
– 配置三个节点的AnyCast组
– 组的三个节点都使用相同的IP地址10.5.0.1

1.4.2 配置AnyCast的等价路由


如上图所示,
– 客户端接入路由宣告相同目标地址三条路由
– 三条路由的度量值(Metric)值等价
– 可使用静态或动态协议

1.4.3 AnyCast的多路由节点


如上图所示,
– 经过之前的配置连续的数据包可被送到不同的任播节点
– 即客户端(红色长方形表示)的连续数据包可经由1,2,3路由的任意一条到达服务器节点(绿色长方形表示)

1.4.4 AnyCast 不同源节点的路由选择


如上图所示,
– 经过之前的配置来自不同节点的流量可被路由到不同的节点
– 接收数据包的服务器由单播路由决定
– 所以通讯模型适用于单个请求或单个响应的协议

2 域内基于IPv4的AnyCast服务

2.1 地址的选择

– 目前的做法是从单播IP地址空间分配任播地址
– 指定任播使用的子网(尽量小)
注:
– 利于域间的路由宣告
– 常用的指定是24
– 子网有可能不会附加任何接口

2.2 主机的配置

– 配置主机接收流量的任播地址(配置与回环口)
– 配置每个主机的唯一管理地址
注:

2.2.1 配置主机接收流量的任播地址(回环口)

ifconfig lo:1 10.5.0.1 netmask 255.255.255.255 up

配置完成后,可通过如下命令查看回环口地址,

ifconfig lo:1

显示如下:

lo:1      Link encap:Local Loopback
          inet addr:10.5.0.1  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

2.2.2 配置每个主机的唯一管理地址

In Host-1

ifconfig eth0 10.10.0.1 netmask 255.255.255.0 up

配置完成后,可通过如下命令查看管理地址,

ifconfig eth0

命令显示如下,

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A6:2D:A0
          inet addr:10.10.0.1  Bcast:10.10.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea6:2da0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7171 (7.0 KiB)  TX bytes:8325 (8.1 KiB)

In Host-2

ifconfig eth0 10.20.0.1 netmask 255.255.255.0 up

配置完成后,可通过如下命令查看管理地址,

ifconfig eth0

命令显示如下,

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A6:2D:A0
          inet addr:10.20.0.1  Bcast:10.20.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea6:2da1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7171 (7.0 KiB)  TX bytes:8325 (8.1 KiB)

In Host-3

ifconfig eth0 10.30.0.1 netmask 255.255.255.0 up

配置完成后,可通过如下命令查看管理地址,

ifconfig eth0

命令显示如下,

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A6:2D:A0
          inet addr:10.30.0.1  Bcast:10.30.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea6:2da2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7171 (7.0 KiB)  TX bytes:8325 (8.1 KiB)

2.3 网络的配置

2.3.1 域内的配置原则

1) 如果配置的服务完全在你的路由域内,则只需要考虑域内配置,条件如下
– 所有的任播节点都在域内
– 多个域内的位置
2) 需要配置路由将任播流量传递给服务器

2.3.2 静态的IGP路由配置


如上图所示:
– 在路由器上配置静态路由(主机路由),确保路由通过域传播
基于以上,
– 方案优点,无需服务中断即可重定向服务器
– 方案缺点,服务器故障没有状态检测

2.3.3 动态的IGP路由配置


如上图所示:
– 在任播服务器上运行基于主机路由的守护进程,如GateD,Zebra或Quagga
– 任播服务器本身是路由的发起者
– 当主机停机是,路由被自动撤销
基于以上,
– 方案优点,可检测到任播服务器的状态
– 方案缺点,任播服务器需要自建服务不可用路由自动撤销的机制

2.4 服务的配置

具体的业务配置(例如DNS),这里不详述

3 域外基于IPv4的AnyCast服务

3.1 配置原则

– 域外的实现基于BGP协议
– 域外的配置方式遵守传统BGP基本规则

3.2 网络设置步骤

– 宣告全球唯一的AS号
– 宣告直连的网段
– 宣告邻居路由的AS号和IP段
注:有关IP与AS号介绍,请参阅以下链接,
https://www.cmdschool.org/archives/1236

3.3 服务配置步骤

– 配置服务去监听任播IP

====================================================
参考资料:
http://totaluptime.com/what-is-ip-anycast-and-how-does-it-work-in-the-cloud/
https://en.wikipedia.org/wiki/Anycast
http://www.net.cmu.edu/pres/anycast/
https://www.incapsula.com/blog/how-anycast-works.html
https://www.zhihu.com/question/20578272
https://baike.baidu.com/item/Anycast/10831196?fr=aladdin
http://www.linuxidc.com/Linux/2014-08/105816.htm

没有评论

发表回复

CDN技术
如何部署任播负载均衡ospf动态路由节点?

1 前言 一个问题,一篇文章,一出故事。 笔者喜欢使用任播节点作为负载均衡的前端,因此笔者本章将总结 …

CDN技术
如何部署反向代理服务器Nginx?

1 理论部分 1.1 Reverse Proxy概念 是指以代理服务器来接受internet上的请求 …

CDN技术
如何部署具有CDN功能的Nginx模块?

1 Nginx的geoip模块 1.1 模块名称 ngx_http_geoip_module 1.2 …