概述

我们说到广播风暴,通常都是指交换机因为环路而产生的二层广播风暴,很少听说在三层网络中也有广播风暴的。其实三层网络也有环路,也有风暴存在,只是我们很少见到。因为三层网络中自带一个二层网络没有的防环利器:TTL,它减低了风暴的影响,所以我们平常感觉不到三层风暴的存在。今天我们就有意构造一个环路,来验证一个TTL的防环功能,让大家感受一下。不过再此之前,我们先普及一下TTL的基本工作原理。

TTL原理

TTL全称是Time to Live,它是IPv4报文头中一个非常重要的字段,用来表示报文可以在三层网络中转发的跳数,如下图所示:




TTL通信 java ttl通信保护_unix 查看ip

IPv4报文头部



TTL总共8bits,所以值范围是0~256。

初始PC发送报文时,会将TTL设置为一个初始值,报文每经过一个路由器,TTL的值就会减1,当路由器收到一个TTL值为1的报文以后,就会直接丢包报文,不做转发了!




TTL通信 java ttl通信保护_unix 查看ip_02

TTL值减1



初始值的设置取决于操作系统的实现,不同的操作系统TTL值可能不一样,例如UNIX为255、Win NT/2000为128、Linux为64、Win7/10为64。

TTL值测试

拓扑




TTL通信 java ttl通信保护_TTL通信 java_03

拓扑



  • PC发送目的IP为20.1.1.2的报文
  • R1收到以后,使用静态路由,将报文的路径指向R2
  • R2收到以后,使用静态路由,将报文的路径指向R3
  • R3收到以后,使用静态路由,将报文的路径指向R1
  • 这样形成一个环路,查看报文在环路中的转发情况

测试配置

R1的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R2的接口IP;




TTL通信 java ttl通信保护_静态路由_04

R1配置的静态路由和路由表



R2的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R3的接口IP;




TTL通信 java ttl通信保护_unix 查看ip_05

R2配置的静态路由和路由表



R3的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R1的接口IP;




TTL通信 java ttl通信保护_R3_06

R3配置的静态路由和路由表



现象查看

第一步:PC发送报文的TTL是64,当经过R1以后,会减去1,变为63;




TTL通信 java ttl通信保护_TTL通信 java_07

TTL值为63



第二步:经过R2,R3以后,各减去1,再次到R1以后,发送出去的报文TTL为60;




TTL通信 java ttl通信保护_静态路由_08

TTL值为60



第三步:报文一直循环,不停的减1,R1最后一次发送出去的报文TTL为3;




TTL通信 java ttl通信保护_R3_09

TTL值为60



第四步:当R1收到R3发送的TTL值为1的报文以后,就不会发送出去了;




TTL通信 java ttl通信保护_IP_10

TTL值为1



第五步:每台设备只需要处理很少的报文,环路就自动的终结,对网络的带宽影响较小。




TTL通信 java ttl通信保护_unix 查看ip_11

R1和R3接口之间的抓包



总结

经过上面的实验,各位小伙伴对TTL的功能有所了解吧?这个例子就是使用静态路由,使网络形成一个环路,然后验证TTL功能。虽然说TTL也能防环,但是在工作中这种情况是要避免的哦,不能有意的配置环路,不然你们公司老大会找你麻烦的:)

最后,做一个简单的总结:

  • 报文每经过一个路由器,TTL值都会减一
  • 路由器收到一个TTL值为1的报文以后,就不会继续转发了