IPv6 邻居发现 和静态邻居指定
拓扑图依旧,在现在的拓扑图上面,显示了静态手工配置的全局单播地址和link-local地址。
那么IPv6邻居发现是怎么回事呢?
有一个命令是:
show ipv6 neighbor
首先在R1上面,show ipv6 neighbor.看到的肯定是直连的R2.
我第一次看的时候都看错了,呵呵,ca01.1a44.0008是R2的,R1是ca00开头的。
所以这里,从本台路由器上面看到的邻居实际上是直连设备的link-local地址,绝对不会是配置的接口地址2012::2/64那个单播地址。
再看看R2上面,两边R1和R3的邻居都在。
各个参数的意义:
Age: IPv6的生存周期,我的理解是一个定时器。和arp那个倒是有点类似,老化以后,然后触发重新发送更新报文来维持邻居关系。但是这里单位是分钟.然后递增往上加1来做的定时器.
link-layer addr:这个其实一眼就能看出来,就是对端直连邻居的一个MAC地址。48位,和IPv4一样.
status:REACH状态意味着邻居可达。STALE状态(默认)意味着邻居在最后的30分钟内是不可达的.
interface:出接口.从哪个接口出去学习到对端的地址的。
还有一个问题,cisco路由器上面支持添加静态邻居表项到邻居发现表.
问题是,为什么有这个功能?这个功能背后的需求是什么?
CISCO实现了添加静态邻居表项,因为大多数IPv6流量产生设备不能正确的支持IPv6的NDP.如果邻居发现表中没有建立起来邻居表,就不能发送IPv6流量通过路由器进行转发。为了能做兼容性也好,还是一个容错功能也好,这个功能是很有必要的。
通过命令IPv6 neighbor来添加一个静态表项邻居。
Router#Ipv6 neighbor IPv6-address interface hw-address
PS:该命令是在全局进行使用的。
既然是静态表项,那么设备肯定是被动的去知道有这个信息。
在R1上面,现在已经有一个R2是它的邻居了,但是网络类型不是point-to-point的类型。
所以我想加多少个就有多少个,哪怕,被我添加的那个邻居根本就不存在。
在没有添加邻居以前的R1:
添加静态邻居之后:
呵呵,我在全局下面配置了一个静态的邻居。然后show ipv6 neighbors,马上配置的静态邻居就已经在我的ipv6的邻居表里了,age是-,表示永不老化,因为是我静态配置的。状态,REACH,可达。
这里我确实不知道为什么可达,是通过什么机制来保证的可达这个状态的。
也有可能cisco在开发ios的时候就默认是可达吧。那么大家一起来看看下面我ping的结果,全是RTO.
实际上还是说明这个静态邻居是不可达的。
每个厂商实现的方式不同,这里我也做了验证。
迈普路由器就是会检测对端是否可达,如果不可达配置了也不会往邻居表里面去写.
因为网上查不到,所以我认为cisco那样做是一个默认的行为。没有更多的特殊意义。