闲谈IPv6-Anycast以及在Linux/Win7系统上的Anycast配置

在我们check IPv6的基本特征列表时,总是可以看到IPv6对Anycast的支持。说实话,对于很多人而言,这是个比较陌生的概念,对于希望看看Anycast到底是什么样子的人而言,甚至在网上很难搜到关于 如何配置Anycast 的资源。这是比较令人遗憾的。

抛开概念,那么本文尝试从不同的角度来针对Anycast探究一番。

IPv4年代的Anycast

说起Anycast,并不是在IPv6标准中突然出现的概念,一个概念怎么可能突然出现?不可能的。

早在很久很久以前,业界就针对IPv4提出了Anycast的说法,只不过相对而言,IPv6在操作上将其标准化了而已,如果说IPv4年代的Anycast标准只是 建议 ,那么IPv6的Anycast就是规定了些许 MUST , MAY。

建议阅读:
RFC1546-Host Anycasting Service:https://tools.ietf.org/html/rfc1546
RFC3513:IPv6 Addressing Architecture :https://tools.ietf.org/html/rfc3513#section-2.6

那么,到底如何理解Anycast?

本质上, Anycast就是将同一个IP地址配置在不同的主机网卡上,然后利用各种选路机制欺骗源主机的一种通信方式。

什么?同一个IP地址配置在不同的主机上,这不是地址冲突了吗?我们记得在初学网络基础的时候,教程上就讲过 IP地址不能冲突! 现在为什么IP冲突变成了一种通信方式了呢?真是只许州官放火,不许百姓点灯啊!

其实不然,我倒是觉得Anycast是内功深到一定程度,自然而然的一个想法。我们简单地从路由说起。

我们知道,IP地址存在的目的就是为了指挥路由器选路,最终将数据包路由到目的地,那么IP地址冲突的结果是什么?

IP地址冲突不是问题,路由冲突才是!!
IP地址冲突只有导致路由器的路由冲突(be confusing)的时候才有问题。

比如路由器R上配置的下面的两条路由:

1.1.1.1 nexthop 2.2.2.2 dev e2
1.1.1.1 nexthop 3.3.3.3 dev e3
1
2
请问一个去往目的地1.1.1.1的数据包到达路由器R之后到底是从e2走呢,还是从e3走呢?这就是问题。但是同样的路由,加一个约束就不会有问题:

1.1.1.1 nexthop 2.2.2.2 dev e2 metric 100
1.1.1.1 nexthop 3.3.3.3 dev e3 metric 10
1
2
路由器会毫不犹豫地将去往1.1.1.1的数据包从e3发出!

对于上述的两条路由,你说是IP地址冲突吗?不!并不是。

互联网本身就是一个互相网状连通的连通图,到达同一个目的地的路径不止一条,对于路由器R而言,它只管选路,逐跳转发数据包,它并不关注1.1.1.1这个目标地址到底在哪里。

好了,现在我们知道只要路由不冲突,就没有问题,数据包总是可以特定的路径,逐跳被转发,最终到达目的地。现在,我们看一下这条路是如何形成的,或者说路由器R是怎么知道到达1.1.1.1有两条路可走的。

由于这只是一篇散文,并不是技术文档,所以我并不想引入BGP,AS这些概念,姑且把全球的互联网看作是一张如下图所示的连通图:

然后在这张图标识的网络开始工作时,各个节点开始彼此交换自己携带的子网信息,我们可以将其理解为 路由通告。显然路由器节点P向上游路由器R0通告了子网1.1.1.0/24,意思就是说, “嗨,R0邻居兄弟,如果有到达1.1.1.0/24的包,请交给我” ,同样的信息,路由器P也会告诉它的所有其它邻居,然后路由器R0回复路由器P,放心吧,我知道了,我已经配置上了1.1.1.0/24 nexthop 4.4.4.4 dev e0,并且我也已经将这个消息转给了我的所有邻居,放心吧,它们如果有到达你那里1.1.1.0/24的包,会先交给我的… …

就这样,子网信息,路由信息在整张网上彼此交换,传播,最终在每一台路由器上形成了稳定的路由表:

请注意,A会在两个接口同时收到关于1.1.1.0/24的通告,这并不会造成路由冲突:

常规路由协议以及SPF算法均有避环的措施;
有意为之的环被视为备份路由,由Metric做优先级取舍或者由ECMP管理。
如果说在这张网中有A和C需要访问1.1.1.1,那么很显然,路径如下:

非常好,道路是通达的,但是并不完美!Why?

这会造成路由器R1和路由器P之间的链路异常拥堵,为什么R0不能分担一部分流量呢?

嗯,我能想到的,TCP/IP标准化协会的那帮人难道能想不到?这就是ECMP的由来。再后来,干脆来个SDN全局统一分发好了…但是这和Anycast没有半毛钱的关系,所以就

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值