NS组播抑制
相关概念
邻居发现ND(Neighbor Discovery)是确定邻居节点之间关系的一组消息和进程。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),并提供了其他功能。
路由器请求报文RS(Router Solicitation):主机启动后,通过RS报文向路由器发出请求,路由器则会以RA报文响应。
路由器通告报文RA(Router Advertisement):路由器周期性的发布RA报文,其中包括前缀和一些标志位的信息。
邻居请求报文NS(Neighbor Solicitation):IPv6节点通过NS报文可以得到邻居的链路层地址,检查邻居是否可达,也可以进行重复地址检测。
邻居通告报文NA(Neighbor Advertisement):NA报文是IPv6节点对NS报文的响应,同时IPv6节点在链路层变化时也可以主动发送NA报文。
产生原因
在用户通过BD接入EVPN MPLS网络的场景中,IPv6主机邻居发现是通过NS组播方式实现的。当设备收到一个NS报文用来进行IPv6地址解析时,会将该报文在自己的BD域内组播转发。如果某设备在一段时间内收到大量的NS报文,并且将这些报文都进行转发,会导致EVPN网络中出现大量的NS报文,占用过多的网络资源,影响正常业务运行。
因此,需要实现NS组播抑制功能。当设备收到NS报文时,先查看自己能否获取到该NS报文的目的用户的信息,如果能够获取就直接进行ND代答或组播转单播处理,从而减少或抑制NS报文洪泛。
适用场景
对于用户通过BD接入EVPN MPLS网络的场景中,可以部署NS组播抑制特性,减少或抑制NS报文洪泛,减轻网络压力,保证用户业务的正常运行。
实现过程
NS组播抑制
NS组播抑制的基本原理是:本端设备先收集本地的IPv6主机信息,生成ND表(有出接口信息)或ND代答表,然后利用EVPN扩散ND表或ND代答表,远端设备收到后,在本地统一生成ND代答表。这样设备再收到NS报文后,先查找本地的ND代答表,如果能查到相应的IPv6主机信息,就直接进行ND代答或组播转单播处理。
对于二层设备,需要在BD下使能生成ND代答表功能,生成主机的ND代答表,并通过EVPN向远端设备扩散;对于三层设备,需要在VBDIF接口下使能生成ND表功能,生成主机的ND表,并通过EVPN向远端设备扩散。
二层设备与三层设备的实现过程是类似的,这里以二层设备为例进行介绍。
- Host1在PE1上线,PE1在BD下使能生成ND代答表功能,生成Host1的ND代答表,并通过EVPN向PE2扩散
- PE2收到PE1扩散的ND代答表后,提取其中的IPv6主机信息,在本地生成Host1的ND代答表。
- Host2发送NS组播报文到PE2,请求获得位于同网段Host1的MAC地址。
- PE2根据NS组播报文的目的IPv6地址,查找本地的ND代答表,找到Host1的MAC地址,然后根据用户配置,构造单播NA报文回应给Host2或将NS组播报文转换给NS单播报文继续转发。
衍生功能
防止ND欺骗攻击
使能NS组播抑制功能后,可以防止ND欺骗攻击。ND欺骗攻击是指攻击者将自己的MAC地址与某一主机的IPv6地址相关联,从而使发往该IPv6地址的任何流量都发送给攻击者。使能NS组播抑制功能后,可以通过ND代答表冲突检测触发IPv6地址冲突告警,进而提醒用户可能存在ND欺骗攻击。
结合图11-7,介绍防止ND欺骗攻击的实现过程。
说明:
对于二层设备,需要在BD下使能生成ND代答表功能,生成主机的ND代答表,并通过EVPN向远端设备扩散;对于三层设备,需要在VBDIF接口下使能生成ND表功能,生成主机的ND表,并通过EVPN向远端设备扩散。
二层设备与三层设备的实现过程是类似的,这里以二层设备为例进行介绍。
- Host1在PE1上线,PE1在BD下使能生成ND代答表功能,生成Host1的ND代答表,并通过EVPN向PE2扩散。
- PE2收到PE1扩散的ND代答表,提取其中的IPv6主机信息,在本地生成Host1的ND代答表。
- 攻击者在PE2上线,并在PE2上生成Host1的ND代答表,并通过EVPN向PE1扩散。PE1收到PE2扩散的ND代答表后,提取其中的IPv6主机信息,在本地生成Host1的ND代答表。
- 此时,在PE1和PE2上,都出现通过EVPN同步的ND代答表与本地的ND代答表存在同一IPv6地址的情况,因此触发PE1和PE2进行NUD(neighbor unreachability detection,邻居不可达探测)。
- 对于PE1和PE2,如果在一定时间内探测到同一IPv6地址对应的MAC地址发生了多次变化,则触发IPv6冲突告警,进而提醒用户可能出现了ND欺骗攻击。
主机迁移
使能NS组播抑制功能后,可以支持主机的迁移。下面结合图11-8,介绍主机迁移的实现过程。
说明:
对于二层设备,需要在BD下使能生成ND代答表功能,生成主机的ND代答表,并通过EVPN向远端设备扩散;对于三层设备,需要在VBDIF接口下使能生成ND表功能,生成主机的ND表,并通过EVPN向远端设备扩散。
二层设备与三层设备的实现过程是类似的,这里以二层设备为例进行介绍。
- Host1在PE1上线,PE1在BD下使能生成ND代答表功能,生成Host1的ND代答表,并通过EVPN向PE2扩散。
- PE2收到PE1扩散的ND代答表,提取其中的IPv6主机信息,在本地生成Host1的ND代答表。
- Host1从CE1迁移到CE2,主动发送免费NA报文。
- PE2上根据免费NA报文生成Host1的ND代答表,并通过EVPN向PE1扩散。PE1收到PE2扩散的ND代答表后,提取其中的IPv6主机信息,在本地生成Host1的ND代答表。
- PE1上发现本地的ND代答表中,记录的Host1是本端且下一跳地址为PE1;更新后的ND代答表中,记录的Host1是远端且下一跳地址为PE2。这说明主机可能发生了迁移,因此在PE1上触发NUD(neighbor unreachability detection,邻居不可达探测)。PE1发送1次NS报文,由于Host1已经迁移到CE2,使得PE1无法收到NA报文。
- PE1探测到Host1不可达,删除本地的旧ND代答表;并通过EVPN通告远端PE2删除Host1在PE1上线时同步的ND代答表。