当使用Anycast的目标主机接入到不同自治域时,因为难以使用某一自治域的IP地址,所以通常使用Anycast的共享单播地址拥有独立的自治域号,并通过BGP协议与不同自治域网络交换路由,即IP Anycast+BGP。
IP Anycast+BGP部署IP Anycast+BGP的部署必须使用能够运行BGP的设备与其他自治域进行路由交换,通常使用的设备是路由器或三层交换机。然后将目标主机直接接入路由器或通过负载均衡设备将多台主机接入路由器,当然此时也可以采用subnet Anycast接入目标主机。而路由器向上联自治域广播目标主机共享的单播地址; 路由器可以从上联自治域接收全路由表,也可以将默认路由的下一跳指向上联自治域的路由器接口。
这种路由器加目标主机的组合形成了单一节点,将单一节点进行复制,分别上联到不同地理位置的不同自治域中,且路由器广播地址相同,就形成了Anycast。当然,每个单一节点内部结构可以不同,只要BGP广播地址相同,目标主机提供相同服务即可。各单一节点可以使用相同的自治域号,也可以使用不同自治域号。
IP Anycast+BGP的部署可以解决分布服务的负载均衡、冗余度问题,也在一定程度上提高了分布服务的安全性,但是也存在一些问题:
首先,目标主机接入路由时,如目标主机down机,或网卡故障等原因导致路由器在IGP中无法查找到目标主机路由,BGP将自动停止对上联自治域的地址广播,客户端请求将被重新路由到其他目标主机。但是如果目标主机网络可达而服务不可用,BGP无法探测,并将持续向上联自治域广播共享单播地址。被路由到该目标主机的客户端请求无法获得服务,且不能被自动路由到其他目标主机,鉴于上述原因,网络管理员必须时时监控各目标主机的服务,一旦出现异常,可以手工停止路由器的BGP广播,使客户端请求被路由到其他目标主机。
其次,因为用于Anycast的单播地址不能作为客户端发起请求,所以网络管理员所使用的监控网络不能使用Anycast的共享单播地址,此外Anycast要求各节点提供的服务保持一致,对客户端透明,因此,服务同步的源IP也与监控网络一样,不能使用Anycast的共享单播地址。由于二者性质相似,以下统称为监控网络。
第三,网络管理员对Anycast中各节点进行监控时,无法确认监控的是哪一个节点,也无法控制监控所到达的节点。为了实现网络管理员对网络及服务的实时监控,各Anycast节点除了使用共享单播地址外,必须配置非共享单播地址用于网络管理及监控。非单播地址的获得主要有两种方式: 第一种方式是上联自治域分配,上联自治域将这段地址通过静态路由指向Anycast节点的路由器; 第二种方式是作为独立网段在各个Anycast节点路由器上进行广播,因为通常自治域只接收掩码长度小于24的网段广播,如果采用第二种方式将造成IP地址的极大浪费,所以,在条件允许的情况下,尽可能采用第一种方式获得节点非共享单播地址。非共享单播地址同时也用于目标主机的服务同步。地址的分配必须在节点建设的规划期慎重考虑。
第四,在采用第二种方式获取非共享单播地址用于管理时,如果网络管理员监控主机和Anycast节点使用相同自治域号,监控主机将无法管理监控该Anycast节点,因为BGP协议中为避免路由循环,不接收来自相同自治域号的路由广播。因此,在条件允许的情况下,监控网段和Anycast节点尽可能使用不同的自治域号,或者使用第二种方式获得非共享单播地址的Anycast节点应与其他节点和监控网段使用不同的自治域号。但是,也应该避免监控网段和每个Anycast节点都使用独立自治域号,一是避免自治域号的浪费,二是APNIC等自治域号分配机构要求拥有独立自治域号的自治系统需要与两个以上其他自治系统联接,而通常一个Anycast节点只会联接一个自治系统。
如果无法申请到一个以上的自治域号,则会造成监控网络和采用第二种方式获得非共享单播地址的节点使用相同的自治域号,但也有变通方式: 在监控网络边界路由器上,将该节点非共享单播地址的路由通过静态路由指向上联自治域的边界路由器接口,同时该节点路由器也需要将监控网络地址的路由通过静态路由指向上联自治域的边界路由器接口。