Technorati 标签: CISCO,组播,multicast,RPF,CCIE

RPF,reverse path forwarding.

是组播转发的一个重要基础。只有当RPF检测成功以后,组播流量才能正确的在网络中进行转发。

当在baidu或者google里面查询关键字 "CISCO RPF检测机制和工作原理",我们会轻易得到下面的原理:

RPF检查的原理:路由器在单播路由表中查找源地址以确定数据包到达的接口是否位于返回信源的的反向路径上,如果是则RPF检查成功,如果不是则标记“RPF失败丢弃”并丢弃数据包。简单来说就是根据去的数据路由表项来检查回来的包,确定去回在一线上。

作用:对于多播,能防止环路(多播RPF检查是默认开启且不能关闭的);对于单播,能防止IP欺骗攻击(需要手工配置RPF检查)

就这么简单的一句话,其实我看了很多次都没有真正理解其中的意义在于哪里。cisco也有一个专门的ppt来讲解这个问题,但是最后我还是很模糊。不知所云,但是我记住了一个概念,组播流量来的方向或者接口,在本台路由器上面show ip route x.x.x.x回去的单播路由表必须也要一致,否则的话就是RPF失败,然后把组播流量丢弃。

今天从同事那里找了一个实验,做完以后,我发现RPF也不是那么神秘,下面就是实验过程,我们可以一起来验证一下是不是上面我理解的:

在该拓扑图中,R1-R4分别按照拓扑图中的标示,配置接口IP地址,并且在每一台路由器上面使能ip multicast-routing,然后在每个接口下面配置ip pim sparse-mode.

R2的F0/0作为rp 候选和bsr 候选。

这个时候,整个网络的单播和组播部分就已经齐活了。

组播的配置很简单,就几条命令,该拓扑图的配置如果有疑问可以参考附件,这里就不用多的篇幅去说如何配置组播了。

这个时候,在R4上面起一个loopback接口作为模拟连接组播客户端(接收方)的接口,在接口下面使能命令ip igmp join 224.1.1.1.

然后R4的loopback0接口就会向RP发送(*,G)的join报文进行加入.

然后再从R1路由器上面ping 224.1.1.1,来模拟R1作为组播源在发送224.1.1.1的组播数据。

这里可以看到。R1去ping224.1.1.1是通的,因为R1是组播源,会发送(S,G)注册到RP,然后R4是组播客户端,会发(*,G)到rp,然后rp把S回应给R4,最后建立SPT(最短路径树),R4从R1那里获得组播流量。

好了,重点在于RPF是如何工作的。前面看了网上查的原理。这里用实验来证明。

在拓扑图中,从R1到R4其实是又两条工作路径的。

R2和R3之间,以太口相互连接,串口也相互连接。

整网启用ospf,这个时候根据ospf最短路径优先,肯定是走的cost小的,所以从R4到R1,走的都是以太接口。

实验这里就开始了,假如在R3f1/0接口下面,no ip pim sparse-mode,那么组播流量会从棕色的路径发送给R3,但是在R3上面回去的路由是红色的线路,这个时候RPF检测就失败了,因为接收组播流量的接口和回去的单播路由的接口不是同一个接口。

在R3上面,我们可以看到:

本来以前在R3上面没有再接口f1/0删除命令ip pim sparse-mode之前:

R3#show ip rpf 1.1.1.1

RPF information for ? (1.1.1.1)

RPF interface: FastEthernet1/0

RPF neighbor: ? (3.1.1.1)

RPF route/mask: 1.1.1.0/24

RPF type: unicast (ospf 1)

RPF recursion count: 0

Doing distance-preferred lookups across tables

当删除以后,再去看看rpf的检测:

R3#show ip rpf 1.1.1.1

RPF information for ? (1.1.1.1) failed, no route exists

原因在于,因为R3在f1/0移除了pim协议,所以和对端f1/0建立不起来邻居,自然组播流量不会经过以太口进行转发,R3只有从s2/0收到组播流量,但是,在R3上面的路由表由于是ospf会选择最短的路径,所以回去的时候走的是以太口,路径不匹配,丢包...

R3#show ip route 1.1.1.1

Routing entry for 1.1.1.0/24

Known via "ospf 1", distance 110, metric 2, type intra area

Last update from 3.1.1.1 on FastEthernet1/0, 00:04:10 ago

Routing Descriptor Blocks:

* 3.1.1.1, from 3.1.1.1, 00:04:10 ago, via FastEthernet1/0

Route metric is 2, traffic share count is 1

在RPF的源检测标准中,只能有一个输入接口,选举方法如下:

lower AD>longest match>lower metric>higher ip

附件:http://down.51cto.com/data/2360913

本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/911138

CISCO 组播RPF 逆向路径转发 实验原理相关推荐

  1. rpf逆向路径转发 linux,CISCO 组播RPF 逆向路径转发 实验原理

    RPF,reverse path forwarding. 是组播转发的一个重要基础.只有当RPF检测成功以后,组播流量才能正确的在网络中进行转发. 当在baidu或者google里面查询关键字 &qu ...

  2. rpf逆向路径转发 linux,组播RPF 逆向路径转发 实验原理

    RPF,reverse path forwarding. 是组播转发的一个重要基础.只有当RPF检测成功以后,组播流量才能正确的在网络中进行转发. 当在baidu或者google里面查询关键字 &qu ...

  3. 家用路由器支持组播吗_组播分布树及其转发模式

    组播分布树及其转发模式 组播分布树及其转发模式 一.soure tree(源树,最短路径树)-shorted path tree(SPT) 1.基于组播源构建的转发路径 (2.dense-mode-密 ...

  4. 逆向路径转发 linux,RPF(Reverse Path Forwarding 反向路径转发)技术

    基于发送源的 IP 地址(数据包中的源地址)来转发 .包括三个过程: Broadcast(广播)洪泛传递,假定网络上的每个主机都是多播组成员. Prune(修剪)停止向那些没有组成员存在的网络转发多播 ...

  5. 第十二章:组播 — RPF和PIM-DM

    12.5.3 RPF RPF(Reverse Path Forwarding, 反向路径转发)为组播路由协议的一个防环机制,防环原理是保证组播报文从正确的接口到达.运作过程:当RPF接口收到组播报文时 ...

  6. 组播反向路径转发RPF

    什么是RPF? 路由器收到组播数据报文后,只有确认这个数据报文是从自身连接到组播源的接口上收到的,才进行转发,否则丢弃. RPF检查 在单播路由表中查找到组播报文源地址的路由 如果该路由的出接口就是组 ...

  7. 2022-10-31 网工进阶(三十三) IP组播-流量模型、组播概念、组播报文结构、组播地址与MAC、组播网络架构、组播服务模型、组播数据转发原理(RPF检查、组播分发树、组播协议介绍)

    IP组播概念 流量模型 网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类: 点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需 ...

  8. H3CSE园区-组播转发机制

    PS:本篇仅挑选作者认为重要的模块,并不全面仅供复习参考,具体请自行查阅相关书籍.设有H3CNE-H3CTE学习博客专栏,敬请关注. 不同于单播,组播数据转发路径基于树形结构 不同于单播,组播转发需要 ...

  9. 组播路由协议基础——组播表项和RPF机制

    IGMP组表 一旦设备在某个接口上激活了IGMP,该设备就会开始维护IGMP组表.初始情况下该数据表是空的,当设备在接口上收到直连网段中的主机发送出来的IGMP成员关系报告时,设备就会在IGMP组表中 ...

最新文章

  1. 008_Redis的ZSet数据类型
  2. linux给所有主机发送公钥,发送公钥到多台远程主机
  3. Python 计算程序运行时间
  4. 语言解决猜神童年龄的问题_JavaScript语言基础:Promise是如何解决回调地狱问题的?...
  5. 提交Form表单,submit之前做js判断处理
  6. 使用Spring Security 5进行密码编码器迁移
  7. WordPress /wp-admin/includes/post.php user_ID 参数操作权限提升漏洞
  8. php怎么在html上得到input值,怎么把一個php頁面的值傳到另一個html表單中的input里面去...
  9. redis的IM的聊天工具
  10. C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库
  11. trunk端口_超全!华为交换机端口vlan详解~
  12. Android中X5WebView详解
  13. react引入本地mp4视频
  14. Linux服务器查看Ip地址
  15. XCOM 导入条目显示正在使用中解决方案
  16. Day082 数据分析案例
  17. 什么是web安全测试
  18. 5000元的电视机推荐 5000元75寸高性价比电视推荐
  19. Android UI 切图命名规范、标注规范及单位描述
  20. “影响力之父”西奥迪尼:人类就像录音机,按一下就播放

热门文章

  1. highcharts加载数据库数据(java版)
  2. Map-Reduce编程模型gif图片解释
  3. 分享jQuery对象和Javascript对象之间的转换代码
  4. Jenkins中运行脚本提示“Permission denied”,没有权限解决方法(MacOS)
  5. pycharm中设置pytest方式(Mac)
  6. Nessus更新到8.5.0
  7. ArduinoYun的电源插座
  8. ueditor集成实例php,Laravel框架集成UEditor编辑器的方法图文与实例详解
  9. c语言物流管理信息系统,[源码和文档分享]基于C语言的物流配送管理信息系统...
  10. python序列_科学网—Python:序列(字符串、列表、元组)和序列函数 - 刘洋洋的博文...