首页 IP多点传送路由协议解析-20020717-C

IP多点传送路由协议解析-20020717-C

举报
开通vip

IP多点传送路由协议解析-20020717-C IP多点传送路由协议解析 固网产品技术支持部 辛庆祥 在互联网上 IP多点传送技术应用越来越广泛 与园区网内多点传送不同的是 在互联网 上 多播数据的发送端和接受端可能位于不同的网络上 这样 如何让这些多播终端系统正确 的跨网络收发数据而又不浪费带宽 便成了一个复杂的问题 IP多点传送路由协议便是为解决 这些问题而开发的 到目前为止 这些协议技术已经完全成熟 但推广却不十分广泛 下面我 们简单介绍一下IP多点传送路由协议的基本原理 在这基础上 我们对目前流行的两个IP多点 传送路由协议做出解析 一...

IP多点传送路由协议解析-20020717-C
IP多点传送路由协议解析 固网产品技术支持部 辛庆祥 在互联网上 IP多点传送技术应用越来越广泛 与园区网内多点传送不同的是 在互联网 上 多播数据的发送端和接受端可能位于不同的网络上 这样 如何让这些多播终端系统正确 的跨网络收发数据而又不浪费带宽 便成了一个复杂的问题 IP多点传送路由协议便是为解决 这些问题而开发的 到目前为止 这些协议技术已经完全成熟 但推广却不十分广泛 下面我 们简单介绍一下IP多点传送路由协议的基本原理 在这基础上 我们对目前流行的两个IP多点 传送路由协议做出解析 一 IP多点传送路由协议基本原理 首先要声明的是 利用目前的单点传送技术完全可以解决多点传送问题 如下图所示 B A S C 多点数据发送源S有数据要发送 而终端A B是多点数据接收端 中间的路由器不支持多 点传送路由协议 于是 我们可以采用这样的方法解决 当A B C终端系统上的接收进程启 动的时候 利用单点传送方式向源S登记 在源S中 保存一张接受端地址列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 每当S有数据 要发送 它便可以向列表中的每个条目发送数据的一份拷贝 当然 这些拷贝数据是单点传送 的 这样解决多点传送问题有两个弊端 1 数据接收系统需要向数据源登记 这要求接受端有额外的软件模块 2 数据源每传送一个数据包 都要复制多份 然后给每个终端发过去 这样在网 络链路 上传送许多相同的数据 严重浪费了资源 在接受端很多 网络资源又缺乏的情况下 这是不 能忍受的 为了解决上面的问题 我们引入多播组的概念 所谓多播组 就是一些特定应用数据的发 送端和接受端的集合 在这个集合中 任何一个端系统都可以进行发送数据和接受数据 这个 多播组由一个组号G表示 在IP协议中 G便是一个D类IP地址 这里 每个组G是和特定应 IP多点传送路由协议解析 1 用相关的 与终端系统无关 一个终端系统要想发送或者接收数据 唯一的办法是加入多播 组 再介绍一下多播路由器的概念 所谓多播路由器 就是一个支持多播特性的路由器 它上 面运行两个进程 其中一个进程监视本地的终端系统 看是否有终端系统加入一个多播组 或 对一个已经加入多播组的终端系统做出响应 另外一个进程是多点广播路由协议进程 它与其 他多播路由器交换信息 确定每个路由器的本地终端系统是否需要多点数据 在这样两个概念的基础上 我们查看一种有效的处理多播数据传送的方法 首先 当接收 多播数据的进程在终端系统上启动的时候 它向跟本地网相连的多播路由器登记 表明自己想 接收组G的多播数据 比如 在下图中 终端系统B C向路由器RT2 RT3登记 说明自己想要 收到组G的多播数据 B S RT2 RT1 RT3 C 于是 RT2和RT3就在自己的内部表格上登记B和C 并建立自己的多播路由表 这个任务 由监视进程完成 并触发路由器之间的信息交换进程 就是多播路由协议进程 在所有三 个路由器之间交换自己的多播路由表信息 这其实是一种距离向量算法 于是 RT1就知道 了在RT2和RT3的本地网中有组G的数据接受端 并建立相应的多播路由表 当数据源S发送多 播数据的时候 RT1通过查询自己的多播路由表 把数据复制成两份 通过两个接口发送到 RT2和RT3 于是 RT2和RT3再根据自己的多播路由表进行转发 需要注意的是 数据源S在 发送数据的时候 仅仅发送了一份 并且数据源根本不知道接受端的存在 在数据的具体传播 过程中 也没有多余的复制 仅在需要复制的地方才发生复制 所以 上面提到的两个问题都 已经解决 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 上面的多播数据传送路径 可以看出是一个树形结构 树的根是多播数据源所在的网 络 分枝点是多播路由器 我们把这棵树就叫做多播路径树 其实 多点传送路由协议的目的 就是生成和维护这样的一棵多播路径树 目前存在两种形式的多点广播树 源转发树和共享转 发树 上面我们看到的就是源转发树 它是以数据源所在网络为根 所有数据接收端为叶的一 个树 在一个多播组内 每个数据源都对应一棵源转发数 共享转发树是整个多播组内所有数 据源和接受端共享的一棵树 它以一个集合点RP 就是一个指定的路由器 为根 所有接受端 为叶 如下图所示 IP多点传送路由协议解析 2 S A B RP 任何一个数据源 假设为S 在发送多点数据包的时候 先把数据包发到RP 然后RP再沿 各个接收终端所在路径进行下发 直到到达接收终端 这样容易形成两个问题 1 在RP处形成瓶径 造成网络拥塞 2 数据包转发经过的路径不一定是最优的 因为它需要先发送到RP 再由RP再进行转 发 但从数据源到RP和RP到任何一个接受端所走的路径都是最优的 为了避免上面的两个问题 我们把源转发树和共享转发树进行结合 产生一种折中的方 案 当数据量小的时候 使用共享转发树 但当数据量超过了一定的上限 则由路由器重新计 算一棵源转发树 使用源转发树来转发数据包 这就是PIM-SM的基本思想 在下面介绍 PIM-SM的时候要详细介绍 上面我们还提到多播路由表的概念 所谓多播路由表 跟传统的路由表含义类似 就是一 些路由项的集合 但在多播领域 多播路由表是由多播路由项构成的集合 多播路由项是这样 一种数据结构 S G IIF OIFLIST 其中S是数据源的网络地址 G就是组号 在IP协 议中 就是一个D类IP地址 IIF是针对S和G的多播数据包进入的接口 OIFLIST是输出接口 的集合 它表示针对源S和组G的数据 如果从IIF接口进来 那么向OIFLIST集合中的所有接口 转发 在实际中 我们用集合的列举方式表示OIFLIST 比如 有这样的路由项 S G IIF {S0 S1 E0} 其中 {S0 S1 E0}就是OIFLIST 从全局的观点看 整个网络中的所有多 播路由器中的多播路由表项组合起来 刚好描述了多播路径树 还有一个问题就是多播路由表项中的 IIF和OIFLIST是怎样形成的 在这里 IIF是通过 RPF技术形成的 所谓RPF 反向路径转发 就是接受到的多播包必须从单播路由表中到数据 源的接口上收到 举一个例子 假设有多播路由表项 S G IIF OIFLIST 那么如果路由 器向源S S是数据源所在的网络的网络地址 发送单点数据 其发送接口必然是IIF 还有一个 概念是RPF检查 就是检查收到的多播包 看它的接收接口是不是RPF接口 如果是 则正常接 收 否则丢弃包 OIFLIST中接口的确定则因路由协议而定 但OIFLIST中的任何一个接口必 然满足下列条件之一 1 该接口连接另外一个多播路由器 2 该接口连接一些数据接受端 3 手工加入OIFLIST IP多点传送路由协议解析 3 我们具体查看一下多点数据包是怎样根据多播路由表项转发的 假设多播路由器RT1的多 播路由表中有一个多播路由表项 S G IIF OIFLIST 并收到了一个多播数据包 RT1提 取数据包的数据源地址S1和多播地址G1 根据这两个数据来检索多播路由表 假设检索到的路 由表项是 S G IIF OIFLIST 检索不到的处理将在具体路由协议讨论的时候进行 然 后进行RPF检查 看接收接口是不是IIF 如果不是 则丢弃该包 如果RPF检查通过 则通过 OIFLIST中的接口发送出去 有一条特殊的多播路由表项值得说明 就是 * G NULL OIFLIST 这条路由表项 跟普通路由表中的默认路由有同样的动机 它对数据源不做具体要求 只对组地址作了限制 当进行路由表查找的时候 如果找不到匹配的项而且数据包的组地址为G时 则由这条路由项 来决定进一步的动作 具体的动作依赖于具体的路由协议 比如在PIM-DM中 当收到一个数 据包的时候 如果数据包的组地址为G且在路由表中没有查到具体的 S G 项 则拿 * G NULL OIFLIST 匹配 如果没有本路由表项 则丢弃该包 成功后 创建 S G IIF OIFLIST 项 然后以本项为依据进行转发 其中 IIF是单播路由表中到源S的接口 OIFLIST是输出接口列表 还有一条路由表项 * G RP OIFLIST 在PIM-SM路由协 议中起作用 在下面的介绍中要详细介绍 到目前为止 多点传送技术的基本概念已经介绍完毕 下面结合这些概念来具体分析两个 流行路由协议的运作过程 即PIM-DM和PIM-SM 二 IP多点传送路由协议PIM-DM 先分析一下协议的名字 PIM-DM 所谓PIM 是协议无关模式 PROTOCOL INDEPEND MODE 的缩写 而DM 则是密集 DESEN MODE 的缩写 联合起来 就是密集方式的协 议无关模式多播路由协议 所谓协议无关模式 这个协议在形成多点传送路由表的时候 使用单点传送路由协议形成 的单播路由表 比如 假设有多点传送路由表项 S G IIF OIFLIST 我们知道 IIF是 根据RPF技术确定的 在运行RPF的时候 路由器直接查找由单点传送路由协议形成的路由表 找到到S的路由项 这个路由项对应的出接口便是IIF 有的多点传送路由协议不是这样 它运 行自己的单点传送路由协议 形成自己的单点传送路由表 在运行RPF的时候 使用自己生成 的单点路由表来计算IIF 这样的协议最典型的是DVMRP 在这种情况下 多点路由协议形成 的单点传送路由表跟路由器本身运行的单点路由协议形成的单点传送路由表可能不同 因而跟 源S对应的IIF可能不是在单点传送路由表中的出接口 为了更好的了解PIM-DM的工作原理 我们结合一个具体的案例来分析其运作过程 一些 重要概念在分析过程中详细解释 假设有如下的网络拓扑图形 IP多点传送路由协议解析 4 S R1 R2 RT1 RT2RT3 RT4 RT5 假设S是发送组播数据的数据源 它向组地址G发送组播数据 R1和R2是组播数据的接受 端 RT1 RT2 RT3 RT4是连接终端的路由器 图中路由器间的所有链路都是点到点的 PPP连接 在每一个路由器上我们都启动了PIM-DM进程 并在每个接口上都启动多点传送 这 样路由器就初始化了一个重要的数据结构--接口列表(IntList) 开始的时候该列表是空的 开始的时候 所有路由器都在自己的接口上发送HELLO探测消息 来探测本接口是否连 接一个运行PIM-DM的路由器 并在每个接口上侦听IGMP消息 如果满足下面的条件之一 它 就会把该接口加入接口列表(IntList) 一 通过侦听IGMP消息 检测到了这个接口上有多点广播数据接受端 二 接收到HELLO报文 三 手动把该接口加入 这样经过一段时间之后 路由器就形成了自己的接口列表(IntList) 以RT1为例 经过一段 时间之后 RT1形成了自己的接口列表{S0 S1} 因为在这两个接口上接收到了HELLO消息 因为E0接口连接的是数据发送端 而多点广播数据发送端是不发送IGMP加入消息的 所以 E0不在接口列表中 再比如RT3 形成的接口列表为{E0 S0 S1 S2} 因为RT3在S0 S1 S2上接收到了HELLO消息 在E0接口上接收到了IGMP加入消息 这个接口列表是动态变化 的 比如 当路由器很长一段时间没有在接口上收到HELLO消息或者接口上没有了多播数据接 受端 则就把本接口从IntList中删除 这时 假设源S发送了一个多点广播数据包P 便触发了一系列动作 首先 跟源S直接关联的路由器RT1收到多点广播数据包P后 创建多点传送路由表项 * G * OIFLIST1 和 S G IIF OIFLIST2 其中G就是组播地址 S就是数据包的 IP多点传送路由协议解析 5 源 是一个网络地址 IIF是根据RPF机制获得的接口 重要的是 IIF不一定就是收到组播数据 包P的接口 OIFLIST1是接口列表IntList的一个拷贝 而OIFLIST2则是在IntList中去除IIF后剩 余的接口集合 接着 因为这是RT1接收到的第一个数据包 它根据 * G * OIFLIST1 转发 这样 的目的是触发整个网络中的路由器生成关于 S G 的多点转发路由表项 从接收到第二个数 据包往后 RT1则根据 S G IIF OIFLIST2 进行转发 根据 * G * OIFLIST1 转 发的结果是 所有跟RT1直接联系的路由器和数据接收端都收到了数据包P 同样地 所有接收到这个数据包的路由器都进行跟RT1同样的动作 于是 这个数据包被 FLOODING到整个网络上 而网络上每个路由器都生成了路由表项 * G * OIFLIST1 和 S G IIF OIFLIST2 而网络上的每个接收端都接收到了这个数据包 可以这么说 第一个数据包起触发作用 它触发每个路由器建立转发针对该数据源S和组 播地址G的多点广播数据的多点广播路由表项 可以看出 这样每个接口都进行转发明显的浪 费了带宽 但这正是PIM-DM所假设的 在每个接口上都存在邻居或数据接收端 这时 数据源S又发送了一个多点广播数据包 RT1收到后 将按照 S G IIF OIFLIST 进行转发 即进行RPF检查 判断收到的数据包是不是从单点传送路由表中到S的输 出接口 即IIF 上接收的数据包 如果不是 则丢弃该数据包 如果是 则把该数据包从 OIFLIST集合中的每个接口上发送出去 网络上每个路由器都进行同样的动作 最终在网络上 所有的数据接收端都收到了多点广播数据包 有这样一种情况 即针对 S G 的转发路由表项中OIFLIST是空集合 比如 图中 RT5 它只有一个接口连接RT4 在自己的下游没有数据包接收端 也没有邻居 所以 它建立 的路由表项 S G IIF OIFLIST 中OIFLIST就是一个空集合 这种情况下 如果RT4把数 据包再发给RT5 将是大大的浪费 因为RT5根本没有接收数据的必要 这时 RT5将给RT4发 送一个剪裁请求消息 请求RT4不要再给自己发送针对 S G 的数据包 RT4收到这个请求 之后 就把连接RT5的串行口从自己的OIFLIST中暂时删除掉了 再收到同样的数据包后 将 不向RT5转发 之所以用了暂时 是因为这个删除是有时间限制的 比如300S 过了这样一段 时间之后 RT4如果没有再次收到RT5的剪裁请求消息 它会把连接RT5的接口再加入 OIFLIST 所以 RT5要不想接收多点数据包 则必须周期性的发送剪裁请求 如果在RT5发出一个剪裁请求之后 忽然探测到自己有一个下游邻居或自己的本地网络上 有关于组G的接收端 那么它就必须从RT4接收多播数据 这时 RT5有两种可以选择的手段 1 停止向RT4发周期性的剪裁请求 等超时 比如300S以后 以后 RT4自动恢复对 RT5的数据包转发 这样做的弊端很明显 就是在等待超时的时间内 RT5不会收到多播包 2 RT5马上向RT4发送一个请求加入消息 告诉RT4自己想接收到组G的多播数据包 RT4接收到这个请求之后 马上把连接RT5的接口重新加入OIFLIST 这个请求有一个专门的说 法 叫嫁接 这样做 RT5马上就可以接收到来自RT4的多播数据包 到目前为止 PIM-DM的工作原理已经很明朗了 开始的时候 路由器把接收到的第一个 IP多点传送路由协议解析 6 数据包向所有下游接口 有邻居或者数据包接收端的接口 即IntList中的接口 发送 也叫做 FLOODING 这样第一个数据包会遍历整个网络 网络上的路由器会形成多点转发路由表 项 从第二个数据包往后 路由器都会根据建立的路由表项进行转发 即进行RPF检查 如果 路由器没有必要接收到数据包 没有下游的邻居或者接收端 则可以向上游路由器发送剪裁 消息来拒绝接收数据包 如果发送剪裁消息之后 又有了下游邻居或者接受端 则可以通过嫁 接消息来恢复对数据包的接收 分析整个过程 可以看出PIM-DM运行的结果就是生成了一棵 以S为根 以所有数据接收端为叶子节点的最小树 多点数据包就在这样一棵树上转发 这样的 转发方式总是最佳的 我们再分析一种特殊情况 S R1 R2 RT1 RT2RT3 RT4 RT5 S1 S 2S1 S2 S 1 S 2 在上面的图中 RT2和RT3经过串行口 S1 S1 连接 假设RT2和RT3都收到了同一个 多点广播数据包 于是 RT2在S1上发送出去 RT3也在自己的S1上发送出去 结果 RT2在 S1上接收到了一个发出去的数据包 根据RPF原则 RT2因为不是从IIF接口上接收到的 它会 丢弃该包 这样不会引起问题 但如果在RT2和RT3上来回发送这些不必要的数据包 必然浪费 带宽 于是 PIM-DM引入了一种叫做ASSERT的机制 描述如下 针对转发项 S G IIF OIFLIST 如果在OIFLIST集合中的接口上接收到了从该接 口发送出去的数据包 则向该接口所连接的路由器发送剪裁消息 引入这样的机制之后 RT2和RT3之间的链路上便不会有多余的数据包了 因为RT2接收 到自己刚刚发送出去的数据包后 马上启用ASSERT机制 向RT3发送剪裁消息 于是RT3便不 再向RT2发送数据 同样 RT3从S1上接收到自己发送出去的数据包后 也给RT2发送剪裁消 息 IP多点传送路由协议解析 7 三 PIM-SM多点广播路由协议 PIM在上面PIM-DM的描述过程中已经解释过了 是协议无关的意思 SM则是稀疏模式 之所以称为SM 是建立在下面的假设上的 网络上多播数据接收端和多点数据发送端分布稀疏 且网络带宽资源匮乏 在这样的假设下 再使用PIM-DM模式 必然严重浪费网络资源 因为DM模式会把自己 接收到的数据包向每个接口转发 在INTERNET上这样做是不提倡的 在SM模式下 每个数据 接收端如果想接收某广播源的数据 必须向一个中心路由器 这个中心路由器就叫做RP 注 册 声明自己的需求 当多点数据源发送数据的时候 它先把自己要发送的多播数据封装在一 个单点传送包里 以单点发送的方式发给中心路由器 然后中心路由器向每个已注册的数据接 收端转发 这种转发方式称为共享树转发 如果数据源发送的数据比较少 又有很大的间歇 性 则一直使用这种共享树转发的方式转发数据包 如果数据源发送的数据量很大 比如一套 会议电视系统 这时 运行PIM-SM的路由器会重新计算一棵源转发树 然后从共享树切换过 来 利用源转发树进行转发 这棵源转发树就是上面介绍的以数据源为根 数据接收端为叶子 节点的最小树 它的计算过程跟PIM-DM类似 不过没有PIM-DM的剪裁/嫁接机制 下面我们 看一下PIM-SM的运行过程 并结合一个例子 来说明其中的一些特殊情况 首先 当运行PIM-SM的路由器启动的时候 便在接口上发送HELLO报文 以多点广播地 址发送 以便发现邻居 每当发现一个邻居 便加入内部邻居列表 从此以后开始计时 如 果超过一定时间没有接收到邻居的HELLO包 则认为邻居已经DOWN掉 于是把这个邻居从列 表中删除 如果在等待时间里接收到邻居的HELLO包 则刷新计时器 在探测邻居的同时 路由器也在相应的接口上IGMP协议 侦听多点广播客户信息 如果 探测到在这个接口连接的网络上有一个多播数据接收端 假设属于组G 则查找RP-G对应关 系 这个关系可以由配置决定 它告诉路由器 如果要想接收组G的多点广播数据 向哪个路 由器注册 找到对应组G的中心路由器RP之后 便创建转发项 * G RPIF OIFLIST 其中 RPIF是根据单点发送路由表里查找到的到RP 中心路由器 的单点发送接口 OIFLIST则是有多点广播接收端的接口集合 然后便从接口RPIF上发送多点广播数据包 告诉 上游路由器 本路由器想向RP注册自己 以接收多点广播数据包 上游路由器有两种可能 一 尚没有创建 * G RPIF OIFLIST 转发项 这是因为该 路由器没有探测到相应组G的数据接收端 在这种情况下 该路由器创建转发项 * G RPIF OIFLIST 其中RPIF跟上面获得的方法相同 OIFLIST则初始化为接收到注册信息的 接口 然后重复下游邻居的动作 向RPIF接口上发送注册信息 二 该路由器已经创建了 * G RPIF OIFLIST 转发项 这说明该路由器已经探测到自己连接有组播数据接收端 或者已经接收到了注册信息 于是 该路由器仅仅把接收到注册请求的接口加入OIFLIST 这个过程一直重复 最后到达RP路由器 RP路由器第一次接收到针对自己的注册信息 IP多点传送路由协议解析 8 后 创建转发项 * G * OIFLIST 因为数据源发送数据的时候 是把多点广播数据包封 装在单点传送包里发给RP的 所以 这个数据包可以从任何接口上接收到 所以把转发项中的 IIF设置成* 代表任何接口 OIFLIST初始化为接收到注册信息的接口 如果有后继的注册信 息从不同的接口接收到 则把收到注册信息的接口加入OIFLIST 到此为止 广播树的一个分 支建立起来 假设一个关于组G的多播数据源想发送数据 它仅仅以组播地址G把数据包发送到网络上 局域网上 跟组播源连接的路由器接收到数据包后 根据配置的G-RP对应关系 人工配 置 告诉路由器组G的组播数据包发往哪个RP 查找到RP后 便以单点发送的方式把广播数据 包封装在单点发送包里发给RP RP接收到数据包后 根据上面建立的转发项 * G * OIFLIST 向OIFLIST集合内所有的接口转发 我们把这种封装多点发送数据包的单点发送 数据包称为Register包 接收到Register数据包的RP路由器在把多点广播数据包转发的同时 根据Registers数据包的 源地址得到多点数据发送源S 根据RPF法则 找出到达数据源S的接口IIF 创建转发项 S G IIF OIFLIST 其中OIFLIST是 * G * OIFLIST 中OIFLIST的一个拷贝 然后 RP路由器向IIF接口发送加入消息 告诉IIF接口上的邻居 RP路由器想接收到数据源S的多点广 播数据包 跟RP邻接的路由器接收到注册包后 会有两种反映 如果已经建立了转发项 S G IIF OIFLIST 则把接收到注册包的接口加入OIFLIST 如果没有建立 S G IIF OIFLIST 转发项 则建立该转发项 把IIF根据RPF原则设定 设为到S的单点发送接口 OIFLIST初始化为接收到RP发来的注册包的接口 然后向IIF接口发送同样的注册信息 告诉 IIF接口上的邻居 自己想接收到源S的组播数据 这个过程一直重复 直到跟S连接的路由器 假设为SR 收到注册包 同样地 SR也有 两种选择 如果已经建立了转发项 S G IIF OIFLIST 则简单的把接收到注册包的接口加入OIFLIST即可 倘若没有建立转发项 S G IIF OIFLIST 则建立该转发项 以后转发数据源S的数据包的时候 从两个途径转发出 去 1 封装在Register包里 发送给RP 2 根据 S G IIF OIFLIST 转发项 发送给OIFLIST集合内的所有接口 这时 跟 OIFLIST集合内接口连接的路由器会根据 S G IIF OIFLIST 做同样的转发 最后到达 RP 这时 会发生这样的情况 即RP会接收到两个一样的多播数据包 一个通过Register获 得 另外一个通过上游路由器的 S G IIF OIFLIST 转发项获得 这时 RP会给SR路由 器发送一个RegisterStop数据包 来告诉SR路由器 停止通过Register转发数据包 当SR路由器 接收到该RegisterStop数据包后 便停止通过Register转发数据包 而只根据 S G IIF OIFLIST 转发 这样 如果数据源S只有少量或间歇的数据要转发 使用上述步骤建立的共享树足够了 IP多点传送路由协议解析 9 但如果数据源有大量的数据转发 上面建立的共享树就不合适 因为会在RP处形成流量瓶径 要适应这种大数据流量的情况 使用以源数据树最为合适 这时 我们可以进行转发树的切 换 从以RP为根的共享树切换为以源为根的转发树 具体转发过程如下 需要声明的是 只有叶子路由器 跟数据接收端连接的路由器 才有权利进行树的切换 叶子路由器在接收到一定量的数据后 具体数据量由配置决定 便触发转发树的切换 首 先 叶子路由器建立转发项 S G IIF OIFLIST 其中 S是数据源地址 G是组播地 址 IIF是根据RPF原则查找单点广播路由表得到的指向S的接口 OIFLIST是转发项 * G RPIF OIFLIST 中OIFLIST的一个副本 建立好之后 叶子路由器通过IIF接口向上游路由器 发送注册消息 告诉上游路由器 自己希望接收到来自组播源S的关于组G的组播数据 需要注 意的是 这时候叶子路由器中有 两个转发项 S G IIF OIFLIST 和 * G RPIF OIFLIST 在没有从接口IIF接收到组播数据源S的数据以前 说明通过IIF接口发送的注册请 求信息还没有转发到数据源S 它仍旧以 * G RPIF OIFLIST 转发 跟叶子路由器通过IIF接口连接的上游路由器接收到注册信息以后 有两种可能的情况 如果该路由器没有转发项 S G IIF OIFLIST 则创建该转发项 其中IIF是根据RPF原则 查找单点发送路由表获得的指向S的接口 OIFLIST初始化为接收到请求信息的接口 然后通过 IIF接口 向自己的上游路由器发送注册请求信息 跟上面叶子路由器行为一样 如果该路由器 也有转发项 * G RPIF OIFLIST 则仍然使用该项转发 直到接收到跟转发项 S G IIF OIFLIST 匹配的广播数据包 这个过程一直延续 直到该注册数据包传播到跟数据源连接的路由器 称为SR 这时 该路由器已经建立了转发项 S G IIF OIFLIST 具体原因参考上面的介绍 所以它只 把接收到注册请求的接口加入OIFLIST即可 上面曾经提到过 就是SR路由器在接收到本地多播数据源发来的数据之后 采取两种处理 方式 一 封装在Register数据包里 通过单点传送的方式发给RP 二 根据建立的转发项 S G IIF OIFLIST 转发 RP接收到Register包以后 根据转发项 S G IIF OIFLIST 该转发项是RP路由器在接收到第一个数据源S发出的Register数据包后创建并向数 据源S注册的 详细请见转发 最后会传播到跟数据接收端连接的叶子路由器 在第二种转发方 式中 因为叶子路由器也向跟数据源连接的路由器SR进行了注册 所以该广播数据包也会传递 到叶子路由器 在这种情况下 叶子路由器接收到了一个多播数据包的两个拷贝 这标志着自 己向数据源S注册成功 到此为止 以数据源为根的转发树已经完全建立 如果叶子路由器就此 停止 不做更深入的处理 那么它必定会每次都接收到一个多播数据包的两个拷贝 这是因为 RP根据转发项 S G IIF OIFLIST 把多播数据包转发给该叶子节点 跟数据源连接的 SR路由器也根据转发项 S G IIF OIFLIST 把数据包转发给该叶子节点 这样必然严重 浪费资源 而且RP处的凭径问题也没有解决 因此 叶子路由器在确认自己已经成功向跟数据 源连接的路由器SR注册之后 会采取下列动作 首先 通过接口RPIF 根据RPF原则得到的指向RP的接口 向上游路由器发送剪裁请求 IP多点传送路由协议解析 10 包 告诉上游路由器 自己不想再接收到RP的匹配 S G 的多播数据包 注意的是 该叶子 路由器并不删除 * G RPIF OIFLIST 转发项 如果删除掉 则没法接收到来自其他数据 源的发送到组G的多点广播数据包 跟叶子路由器通过RPIF接口连接的路由器如果有转发项 S G RPIF OIFLIST 则 简单的把接收到剪裁信息的接口从OIFLIST中删除即可 倘若没有建立转发项 S G RPIF OIFLIST 则创建该转发项 其中OIFLIST是转发项 * G RPIF OIFLIST 中 OIFLIST的一个副本 然后从OIFLIST中删除掉接收到剪裁请求信息的接口 如果现在 OIFLIST不为空 则到此为止 整个叶子路由器的剪裁过程结束 此后 发出请求的叶子路由 器不会从RP接收到匹配 S G 的多点广播数据包 如果OIFLIST为空 则该路由器继续向上 级路由器发送剪裁请求 上级路由器执行相同的操作 这个过程一直延续 直到请求到达RP 到此为止 PIM-SM的大致工作过程已经十分明朗 为了提高效率 PIM-SM在这些基础动 作的基础上 还添加了其他的处理过程 这些过程不是必须的 而且理解了上面基本的处理动 作 这些过程也很容易理解 在这里就不详细介绍了 四 多点广播路由协议总结 从上面的介绍可以看出 多点广播路由协议的主要目的就是建立一棵多点广播树 多点传 送数据沿这棵多点广播树来发送数据 这样既可以避免不必要的带宽浪费 又兼顾了所有的数 据接收端 因而是效率最高的处理多播的方式 在建立这样一棵树的过程中 大量使用了 RPF技术 而RPF技术正是建立在传统的单点传送路由表基础上的 所以 多点广播的基础还是 传统的选路技术 现在流行的多点广播路由协议是PIM-DM和PIM-SM 我们也对这两种协议做了大致的介 绍 结合多点广播路由协议的基础理论 可以更好的了解这两种路由协议 当然 多点广播是一个十分复杂的课题 我们介绍的仅仅是一些皮毛 还有一些很复杂的 原理和技术要我们在实际工作中不断学习 比如 怎样在两种不同的多点广播路由协议中相互 引入等等 这些技术和理论都是建立在这些多播基础概念之上的 因此 理解这些基本概念是 掌握复杂多播技术的基础 IP多点传送路由协议解析 11
本文档为【IP多点传送路由协议解析-20020717-C】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_608797
暂无简介~
格式:pdf
大小:68KB
软件:PDF阅读器
页数:11
分类:互联网
上传时间:2009-06-26
浏览量:14