概述
我们谈论广播风暴,一般来说,开关是指环路引起的二层广播风暴,三层网络上也很少听说有广播风暴。
其实三层网络也有环路,也有风暴存在,只是我们很少见到。因为三层网络中自带一个二层网络没有的防环利器:TTL,它减低了风暴的影响,所以我们平常感觉不到三层风暴的存在。今天我们就有意构造一个环路,来验证一个TTL的防环功能,让大家感受一下。不过再此之前,我们先普及一下TTL的基本工作原理。TTL原理
TTL全称是Time to Live,它是IPv4报文头中一个非常重要的字段,用来表示报文可以在三层网络中转发的跳数,如下图所示:
IPv4报文头部
TTL总共8bits,所以值范围是0~256。
初始PC发送报文时,会将TTL设置为一个初始值,报文每经过一个路由器,TTL的值就会减1,当路由器收到一个TTL值为1的报文以后,就会直接丢包报文,不做转发了!
TTL值减1
初始值的设置取决于操作系统的实现,不同的操作系统TTL值可能不一样,例如UNIX为255、Win NT/2000为128、Linux为64、Win7/10为64。
TTL值测试
拓扑
拓扑
- PC发送目的IP为20.1.1.2的报文
- R1收到以后,使用静态路由,将报文的路径指向R2
- R2收到以后,使用静态路由,将报文的路径指向R3
- R3收到以后,使用静态路由,将报文的路径指向R1
- 这样形成一个环路,查看报文在环路中的转发情况
测试配置
R1的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R2的接口IP;
R1配置的静态路由和路由表
R2的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R3的接口IP;
R2配置的静态路由和路由表
R3的配置:添加静态路由,把目的为20.1.1.0/24的报文,指向R1的接口IP;
R3配置的静态路由和路由表
现象查看
第一步:PC发送报文的TTL是64,当经过R1以后,会减去1,变为63;
TTL值为63
第二步:经过R2,R3以后,各减去1,再次到R1以后,发送出去的报文TTL为60;
TTL值为60
第三步:报文一直循环,不停的减1,R1最后一次发送出去的报文TTL为3;
TTL值为60
第四步:当R1收到R3发送的TTL值为1的报文以后,就不会发送出去了;
TTL值为1
第五步:每台设备只需要处理很少的报文,环路就自动的终结,对网络的带宽影响较小。
R1和R3接口之间的抓包
总结
经过上面的实验,各位小伙伴对TTL的功能有所了解吧?这个例子就是使用静态路由,使网络形成一个环路,然后验证TTL功能。虽然说TTL也能防环,但是在工作中这种情况是要避免的哦,不能有意的配置环路,不然你们公司老大会找你麻烦的:)
最后,做一个简单的总结:
- 报文每经过一个路由器,TTL值都会减一
- 路由器收到一个TTL值为1的报文以后,就不会继续转发了
各位小伙伴如果还有疑问,欢迎留言讨论。也非常欢迎关注我的头条号,一起探讨网络原理!