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
没有评论