要想了解二层数据交互先了解什么是MAC地址表,ARP表。

什么是MAC地址表?

交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上。MAC地址表存放于交换机的缓存中。动态MAC地址存在老化时间(隔一段时间收不到该MAC地址帧,则从表项中删除该条目。思科华为华三锐捷默认均是300s也即5分钟,可自定义老化时间)。

00963b3ce1af0a8af85d52dbc9578826.png

老化时间以华三交换机为例

什么是ARP地址表?

ARP:ARP协议是工作在网络层(当然也有人说ARP是工作在链路层,但是我更倾向其工作在网络层)的协议,它是一张目标IP地址和目标MAC的映射关系表,ARP负责将IP地址解析为MAC地址。其实就是一个对目标MAC进行寻址的过程。ARP缓存表也是存放在buffer中,也存在老化时间(H3C华为默认老化时间20min,思科默认240min,锐捷默认60min,均可自定义)

ARP的学习过程:通过发送ARP请求(arp探测包),对方收到后回个ARP应答,通信无误后各自刷新自己的ARP缓存表。

1b5d88635cddec9c2299b8a7c76d721b.png

ARP表:业务IP对应的MAC地址、MAC学习到的源接口信息(从哪个接口学习到的mac))

值得注意:MAC地址表及ARP表大小是衡量交换机性能的关键技术指标。

别忘了我们主机也有arp表哦:

bd86f4473278953cadae25a15e7f0b90.png

相关故障讲解

先上一张图:如图我们看到ARP表没有学习其他的ARP信息

7b9c6f093798381f5cb2a730e304b513.png

只有本地网关+MAC对应关系,没有其他ARP上来

提问:看不到业务的ARP就可以判断业务不通吗?

答案当然是否定的!

举个事例说明:

现象:有一次割接操作中断业务,割接完成后查看业务是否恢复(查arp表并进行ping测试),惊讶的发现所有业务arp均没有上来!

排查过程:1、怀疑自己的配置有问题,查了好些时间,问过厂家配置是正确的。

2、怀疑是网关设备出bug了,但是其他捆绑口的业务都是正常的,这种bug有点奇怪。

3、回退割接,业务上线正常,能看到arp,ping通。

4、继续割接步骤,因为之前遇到过没有学习到arp,通过ping测首包触发arp学习的前例(没有首包去触发进行arp请求,导致网关设备上学习不到arp)。So,我在网关设备上操作–带网关源ping业务,居然能ping通,然后再返回去查看arp表,arp信息也学习到了。

上述案例说明:在arp缓存表里没有看到相应IP及MAC映射条目,不代表业务不正常,这时候ping有可能是通的,进行ping操作后arp就学习到了。(这种现象一般发生在思科设备上,比如我这次割接网关设备Cisco ASR9K)

对网络工程技术或者Python编程感兴趣的可以加个关注,我会持续发布相关技术文章,和大家一起交流学习。