ASR9k load balance issue under L2VPN(VPLS/Eompls/ATOM)
Intro
很多客户在部署VPLS时,当核心有负载链路或者Bundle时,常常会碰到负载不均的现象,为什么会发生这种问题?首先看下常规ASR9k在不同场景下是用什么元素去做Hash的:

A: src-ip, dst-ip, src-port, dst-port, router_id
B: bottom_most_label, router_id
C: 4th_label, router_id
2020-6-24 更新:Multi-Label MPLS Load-Balancing Hash Algorithm Update
原有ASR9k ECMP的Hash 算法:在MPLS报文时,只有4层label以下的数据报文才可以使用IP 5元组Hash,超过4层的只能用单个label做raw hash。此算法在之前问题不大,label数很少超过4个,但在SR 的环境下,可能会有更多的label,因此BU更新了此场景的Hash算法:
- 5-8个label,不再使用单个label做hash,而是采用IP 5元组来做hash
- 9个或更多label,使用新的hash 算法:multi-label MPLS hashing,label3-5中的label作为raw hash
Tomahawk从623开始使用新的算法;Lightspeed和Xrv9k从652开始使用新的算法
Ok,我们可以看到在L2VPN中,用的是bottom label来做的负载均衡,这是因为系统无法跳过L2VPN中的MAC头,去读L3的IP头。在这里拿Bundle端口举例,说说不同场景下bundle的HASH方法(在9k上,所有HASH动作都是在进口NP上做的,这个HASH结果会直接被出口NP调用):
完整阅读

