1000-9825/2003/14(03)0496 2003 Journal of Software 软 件 学 报 Vol.14, No.3 交 换 式 以 太 网 上 的 多 播 协 议 王 军 +, 吴 志 美 ( 中 国 科 学 院 软 件 研 究 所, 北 京 100080) Multicast Protocol over Switch Ethernet WANG Jun +, WU Zhi-Mei (Institute of Software, The Chinese Academy of Sciences, Beijing 100080, China) + Corresponding author: Phn: 86-10-62645407, E-mail: wyj@isdn.iscas.ac.cn http://www.iscas.ac.cn Received 2001-10-16; Accepted 2002-04-10 Wang J, Wu ZM. Multicast protocol over switch Ethernet. Journal of Software, 2003,14(3):496~502. Abstract: Many services, including video conference, whiteboard and video broadcasting, have been running over LANs. However, most of LANs, such as Ethernet, treat multicast just as broadcast, and they all have few supports for multicast. In this paper, a multicast protocol in an LAN switch, named IGMP snooping, is implemented based on VLAN and IGMP. IGMP snooping will be applied to the IP multicast stream control on the switch Ethernet. The basic idea, syntax and semantics of this protocol are given in this paper, and the verification and test procedure is also provided. Key words: IGMP snooping; multicast; IGMP; CGMP; GMRP 摘 要 : 目 前, 桌 面 会 议 电 子 白 板 和 视 频 广 播 等 多 播 服 务 大 都 运 行 在 局 域 网 环 境 中, 而 绝 大 多 数 局 域 网 结 构, 如 以 太 网, 都 采 用 广 播 方 式 处 理 多 播 数 据, 对 多 播 的 支 持 有 限. 采 用 IGMP Snooping 的 方 法, 在 二 层 交 换 机 中 设 计 一 个 基 于 VLAN 和 IGMP 的 多 播 协 议, 用 于 控 制 交 换 以 太 网 中 不 断 增 长 的 IP 多 播 流. 描 述 了 该 协 议 的 基 本 思 想 语 法 和 语 义 以 及 一 个 该 协 议 验 证 和 测 试 的 过 程. 关 键 词 : IGMP snooping; 多 播 ;Internet 组 管 理 协 议 ;Cisco 组 管 理 协 议 ; 多 播 组 注 册 协 议 中 图 法 分 类 号 : TP393 文 献 标 识 码 : A 目 前, 在 宽 带 网 上 的 许 多 新 兴 业 务, 例 如 数 据 分 发 远 程 学 习 和 分 布 式 数 据 库 等 都 需 要 底 层 网 络 支 持 多 播 通 信, 在 促 进 有 线 电 视 网 和 计 算 机 网 融 合 的 过 程 中, 计 算 机 网 也 需 要 提 供 类 似 于 传 统 电 视 网 的 多 点 通 信 能 力. 现 在 以 太 网 是 最 有 发 展 前 途 的 宽 带 接 入 方 式, 在 以 太 网 上 实 现 多 播 通 信 就 成 为 网 络 发 展 的 一 个 必 然 趋 势. 传 统 的 以 太 网 由 于 其 通 信 采 用 共 享 介 质, 多 播 数 据 被 当 作 广 播 来 处 理, 浪 费 了 网 络 带 宽 和 主 机 资 源. 在 交 换 式 以 太 网 中, 由 于 引 入 了 VLAN, 可 以 将 通 信 划 分 为 几 个 区 域, 隔 离 不 同 的 接 收 者, 从 而 使 真 正 的 多 播 成 为 可 能. 实 现 交 换 式 以 太 网 上 的 多 播 与 实 现 IP 多 播 相 比, 只 需 要 实 现 支 持 动 态 组 的 组 管 理 协 议, 不 需 要 路 由 协 议. Supported by the National Grand Fundamental Research 973 Program of China under Grant No.G1998030405 ( 国 家 重 点 基 础 研 究 发 展 规 划 (973)); the Beijing Committee of Science and Technology under Grand No.H011710010123 ( 北 京 市 科 学 技 术 委 员 会 资 助 项 目 ) 第 一 作 者 简 介 : 王 军 (1976-), 男, 河 南 汤 阴 人, 博 士 生, 主 要 研 究 领 域 为 多 媒 体 数 据 压 缩, 网 络 通 信.
王 军 等 : 交 换 式 以 太 网 上 的 多 播 协 议 497 Cisco 公 司 提 出 了 Cisco 组 管 理 协 议 (Cisco group management protocol, 简 称 CGMP) [1]. 它 是 在 路 由 器 和 交 换 机 之 间 使 用 的 一 种 通 信 协 议, 主 要 工 作 方 式 是 由 路 由 器 通 过 CGMP 消 息 通 知 交 换 机 它 所 得 到 的 IGMP 表 信 息, 交 换 机 上 的 CGMP 模 块 会 把 IGMP 中 的 组 - 主 机 对 转 换 为 组 -VLAN 对, 并 依 照 这 个 关 系 转 发 多 播 数 据. 在 IEEE 802.1D 中 定 义 了 GMRP(GARP multicast registration protocol), 它 依 赖 于 GARP(generic attribute registration protocol) 的 传 输 功 能, 可 以 用 来 解 决 完 全 二 层 的 多 播 通 信. 它 是 一 个 纯 二 层 的 协 议, 主 机 通 过 GMRP 向 交 换 机 注 册 多 播 的 MAC 地 址, 由 交 换 机 维 护 主 机 MAC 和 多 播 MAC 地 址 的 对 应 表. 本 文 提 出 了 一 种 基 于 VLAN 的 二 层 组 管 理 协 议, 它 利 用 IP 组 管 理 协 议 IGMP 和 VLAN 实 现 二 层 和 三 层 多 播 组 的 映 射, 在 3 层 组 管 理 协 议 的 基 础 上 实 现 交 换 式 以 太 网 上 的 多 播. 1 以 太 网 上 的 多 播 实 现 方 法 在 使 用 第 3 层 多 播 的 情 况 下, 多 播 接 收 者 使 用 IGMP 向 本 地 路 由 器 注 册 接 收 IP 多 播 数 据, 路 由 器 使 用 多 播 路 由 协 议 来 构 造 多 播 转 发 树. 多 播 源 只 传 送 IP 多 播 包 的 一 个 副 本, 路 由 器 接 收 到 数 据 后, 只 有 在 遇 到 转 发 树 的 树 叉 时, 才 会 再 复 制 一 个 副 本 进 行 传 送. 由 于 数 据 包 仅 针 对 每 个 注 册 接 收 者 复 制, 因 此 这 种 通 信 方 式 其 带 宽 利 用 效 率 很 高. 但 是, 一 旦 数 据 包 到 达 在 网 络 边 缘 的 第 2 层 交 换 机, 由 于 二 层 交 换 机 无 法 得 到 主 机 与 多 播 组 的 对 应 关 系, 所 以 它 们 只 能 向 所 有 连 接 的 客 户 机 和 工 作 站 发 送 多 播 数 据, 使 整 个 LAN 被 广 播 数 据 拥 塞. 如 果 需 要 实 现 以 太 网 上 的 多 播 能 力, 就 需 要 在 以 太 网 交 换 机 中 部 署 新 的 协 议, 使 它 能 够 得 到 主 机 与 多 播 组 的 对 应 关 系, 并 将 多 播 组 对 应 到 交 换 端 口. 目 前 被 明 确 规 范 定 义 的 以 太 网 组 播 实 现 有 CGMP 和 GMRP.CGMP 的 优 点 是 实 现 简 单, 交 换 机 不 参 与 组 管 理 ; 其 缺 点 是 路 由 器 和 交 换 机 都 需 要 配 置 CGMP.GMRP 的 优 点 是 不 依 赖 于 路 由 器, 可 以 和 IP,IPX,AppleTalk 或 其 他 网 络 层 协 议 协 同 工 作, 可 扩 展 性 好, 转 发 速 度 快, 支 持 的 组 数 量 多. 其 缺 点 也 很 明 显, 在 使 用 GMRP 时, 主 机 的 网 络 接 口 卡 和 二 层 交 换 机 中 必 须 提 供 对 GMRP 的 支 持, 而 现 有 设 备 和 系 统 的 协 议 栈 对 GMRP 的 支 持 并 不 充 分, 并 且 如 果 有 3 层 多 播 加 入, 还 必 须 提 供 GMRP 和 IGMP 之 间 的 映 射 方 法. 如 果 采 用 CGMP, 路 由 器 和 交 换 机 需 要 部 署 新 的 协 议, 而 且 必 须 相 互 配 合 一 起 使 用, 不 利 于 对 现 在 网 络 拓 扑 进 行 多 播 扩 展. 使 用 GMRP, 目 前 最 大 的 困 难 是 协 议 栈 并 不 完 善, 主 机 和 交 换 机 对 GMRP 的 支 持 不 够 充 分, 而 且 传 统 多 播 软 件 都 是 在 IGMP 基 础 上 编 制 的, 如 果 实 现 二 层 的 多 播, 还 需 要 实 现 IGMP 到 GMRP 的 迁 移. 在 不 改 动 原 有 主 机 和 路 由 器 上 的 设 备 和 软 件 的 前 提 下, 如 何 提 供 二 层 多 播 能 力, 并 与 原 有 3 层 多 播 实 现 无 缝 连 接 是 我 们 要 解 决 的 主 要 问 题. 基 于 上 述 分 析, 我 们 提 出 使 用 IGMP Snooping 的 二 层 多 播 方 法, 其 基 本 思 想 是 利 用 VLAN 划 分 多 播 域, 侦 听 IGMP 消 息 用 来 维 护 多 播 VLAN 表. 主 要 工 作 方 式 是 : 交 换 机 探 测 以 太 网 包 中 IP 包 头 的 协 议 类 型, 提 取 IGMP 信 息 包 ; 交 换 机 利 用 侦 听 到 的 IGMP 信 息 决 定 哪 一 个 端 口 有 主 机 在 哪 一 个 组 中, 为 每 一 个 组 创 建 一 个 VLAN, 创 建 多 播 地 址 和 VLAN 的 映 射 表, 并 将 它 添 加 到 VLAN 表 中 ; 交 换 机 向 所 有 的 端 口 ( 除 接 收 ) 转 发 侦 听 到 的 IGMP 查 询 信 息, 向 属 于 同 一 组 中 的 端 口 转 发 IGMP 报 告 消 息, 保 证 路 由 器 和 主 机 之 间 的 IGMP 协 议 状 态 与 原 来 一 致 ; 交 换 机 根 据 VLAN 表 转 发 多 播 数 据. 采 用 IGMP Snooping 的 好 处 在 于, 主 机 和 路 由 器 的 软 硬 件 设 备 不 需 要 进 行 任 何 修 改, 只 需 在 二 者 之 间 加 一 个 支 持 IGMP Snooping 的 交 换 机 即 可 提 供 3 层 多 播 在 二 层 的 实 现, 将 多 播 的 范 围 扩 展 到 边 缘 子 网. 表 1 是 3 种 实 现 方 法 的 比 较. Table 1 Comparison of layer-ii multicast 表 1 两 层 组 播 比 较 CGMP IGMP snooping GARP/GMRP Network layer protocol IGMP IGMP NULL VLAN Create/configure VLAN Create/configure VLAN by Create/configure VLAN by by router s info IGMP info multicast MAC address Device Router and switch Switch Switch and host Response delay <2s <1s <200ms MAX groups 2 28 2 28 2 45 Multicast address Mapped from IP multicast Mapped from IP multicast address address Defined by GARP PDU Product Cisco products Most of swtich A few
498 Journal of Software 软 件 学 报 2003,14(3) 2 IGMP Snooping IGMP Snooping 应 用 的 基 础 是 多 播 IP 地 址 与 MAC 地 址 存 在 对 应 关 系, 以 及 二 层 交 换 机 具 有 VLAN 功 能.VLAN 功 能 是 指 交 换 机 能 够 根 据 目 的 MAC 地 址 向 指 定 的 端 口 集 转 发 数 据.IGMP Snooping 应 用 的 系 统 协 议 结 构 如 图 1 所 示. Host Switch Router IGMP(Host) MAC PHY IGMPSnoop VLAN(802.1q) PHY IGMP(Router) MAC PHY Fig.1 The protocol stack of application system 图 1 应 用 系 统 的 协 议 栈 IGMP Snooping 的 任 务 是 维 护 VLAN 与 组 地 址 的 对 应 关 系, 并 且 能 够 与 多 播 组 的 变 化 同 步 更 新, 这 样 二 层 交 换 机 就 可 以 按 照 多 播 组 的 拓 扑 结 构 转 发 数 据. 其 功 能 主 要 包 括 侦 听 IGMP 报 文 维 护 组 地 址 和 VLAN 的 对 应 表, 保 持 主 机 IGMP 协 议 实 体 和 路 由 器 IGMP 协 议 实 体 的 状 态 一 致 性, 解 决 report flooding 问 题. (1) 侦 听 IGMP 信 息 报 文 和 根 据 VLAN 转 发 数 据 一 般 由 Switch 底 层 提 供 支 持. (2) IGMP Snooping 分 析 IGMP 主 机 报 告, 可 以 得 到 数 据 包 的 源 端 口 和 多 播 地 址, 然 后 创 建 VLAN, 每 个 VLAN 包 含 所 有 对 应 于 同 一 个 多 播 地 址 的 端 口, 从 而 得 到 VLAN 和 多 播 地 址 的 一 一 对 应 关 系.IGMP Snooping 根 据 动 态 组 变 化 和 组 成 员 变 化 更 新 VLAN 表 和 VLAN 的 端 口 列 表, 维 护 VLAN 和 多 播 地 址 的 一 一 映 射. (3) 在 原 有 的 IGMP 协 议 中, 当 且 仅 当 存 在 主 机 处 于 成 员 状 态 时, 路 由 器 处 于 有 成 员 的 状 态. 这 个 断 言 保 证 了 组 管 理 协 议 的 正 确 性.IGMP Snooping 通 过 截 获 主 机 和 路 由 器 的 IGMP 报 文, 分 析 其 协 议 状 态, 然 后 更 新 本 身 数 据 或 状 态, 产 生 对 应 的 IGMP 报 文 发 给 对 应 的 协 议 实 体, 保 证 IGMP 通 信 双 方 协 议 状 态 转 换 的 正 确 性, 同 时 实 现 基 于 交 换 机 端 口 的 多 播. 因 此 IGMP Snooping 需 要 保 证 : 当 且 仅 当 存 在 与 端 口 相 连 的 主 机 处 于 成 员 状 态 时, 交 换 机 端 口 处 于 有 成 员 的 状 态 ; 当 且 仅 当 存 在 交 换 机 端 口 处 于 有 成 员 状 态 时, 路 由 器 处 于 有 成 员 的 状 态. (4) 传 统 IGMP 协 议 是 针 对 共 享 的 通 信 信 道, 所 有 的 IGMP 主 机 协 议 中 都 有 报 告 抑 制 的 机 制, 可 以 解 决 report flooding 的 问 题. 即 若 有 多 个 主 机 收 到 查 询 报 告 时, 多 个 主 机 都 会 启 动 发 送 过 程 ( 启 动 随 机 定 时 器, 等 到 Timeout 时 再 发 送 报 告 ), 先 发 送 的 主 机 报 告 会 抑 制 其 他 主 机 的 发 送 过 程 ( 中 断 其 他 主 机 的 发 送 定 时 器 ) [1]. 在 交 换 以 太 网 中, 交 换 机 的 端 口 与 主 机 通 信 使 用 不 同 的 信 道, 所 以 交 换 机 的 IGMP Snooping 实 体 会 收 到 针 对 一 次 查 询 的 多 份 IGMP 主 机 报 告. 如 果 都 发 给 路 由 器 ( 尽 管 路 由 器 此 时 只 需 要 一 份 报 告 来 表 明 多 播 组 的 存 在 ), 路 由 器 会 认 为 是 针 对 多 份 查 询 出 发 的 报 告, 会 导 致 协 议 状 态 转 换 出 错. 另 外, 大 量 的 主 机 报 告 会 耗 费 路 由 器 端 口 的 带 宽. 因 此,IGMP Snooping 在 收 到 另 一 次 IGMP 查 询 报 文 之 前, 只 向 路 由 器 转 发 第 1 个 收 到 的 主 机 报 告, 其 他 主 机 报 告 只 会 引 起 IGMP Snooping 本 身 对 端 口 状 态 的 修 改, 而 不 会 转 发 给 路 由 器, 从 而 防 止 在 路 由 器 端 出 现 report flooding 的 现 象. 3 协 议 描 述 3.1 基 本 数 据 类 型 报 告. [1~3] (1) IGMP 消 息 的 报 文 格 式 类 型 : 0 7 8 15 16 31 类 型 最 大 RTime 校 验 和 多 播 组 地 址 0x11= 成 员 资 格 查 询 ;0x12=IGMP 版 本 1 成 员 资 格 报 告 ;0x16=IGMP 版 本 2 成 员 资 格 报 告 ;0x17= 离 开 组
王 军 等 : 交 换 式 以 太 网 上 的 多 播 协 议 499 最 大 RTime: 规 定 主 机 响 应 成 员 资 格 查 询 前 可 以 等 待 的 最 大 时 间, 单 位 是 0.1s. 校 验 和 : 对 8 字 节 的 IGMP 消 息 补 码 之 和 求 16 位 补 码. 多 播 组 地 址 :32 位 IP 组 播 地 址. 当 类 型 字 段 为 0x11 时, 多 播 组 地 址 为 全 0, 表 示 常 规 成 员 资 格 查 询 报 文 ; 当 类 型 字 段 为 0x11 时, 多 播 组 地 址 为 32 位 IP 组 播 地 址, 表 示 组 资 格 查 询 报 文, 多 播 组 地 址 是 被 查 询 的 多 播 组 的 地 址. 当 类 型 字 段 为 0x12 时, 多 播 组 地 址 是 被 报 告 的 组 的 IP 多 播 地 址 ; 当 类 型 字 段 为 0x17 时, 多 播 组 地 址 是 要 离 开 的 组 的 IP 多 播 地 址. 在 IGMP 中, 某 些 组 地 址 具 有 特 定 的 含 义, 例 如 :224.0.0.1( 对 应 于 本 子 网 上 的 所 有 主 机 和 路 由 器 系 统 ),224.0.0.2( 对 应 于 本 子 网 上 的 所 有 路 由 器 ). (2) VLAN 表, 每 个 表 项 格 式 VLAN 号 端 口 号 T port VLAN 号 : 此 VLAN 在 VLAN 表 中 的 序 号 (0~4095),16 位. 端 口 号 : 在 此 VLAN 中 的 交 换 机 端 口 号 (0~255),8 位. T port : 端 口 属 于 此 VLAN 的 生 存 期 ( 单 位 :s),32 位. (3) VLAN 与 多 播 组 的 对 应 表, 每 个 表 项 格 式 多 播 地 址 VLAN 号 T group 多 播 地 址 : 多 播 组 的 地 址,32 位. VLAN 号 : 与 该 组 相 对 应 的 VLAN 的 VLAN 号,16 位. T group : 多 播 组 的 生 存 期 ( 单 位 : 秒 ),32 位. 3.2 时 间 常 量 与 定 时 器 查 询 间 隔 QI(query interval):125 秒 为 路 由 器 启 动 查 询 过 程 的 时 间 间 隔. 查 询 响 应 间 隔 QRI(query response interval):10 秒 为 主 机 产 生 报 告 的 最 大 时 间 间 隔. 组 成 员 资 格 查 询 GMI(group membership interval): 缺 省 为 260 秒. 最 后 组 成 员 查 询 间 隔 LMQI(last member query interval): 缺 省 为 1 秒. 最 后 组 成 员 查 询 计 数 LMQC(last member query count): 缺 省 为 2. 组 计 数 器 GT(group timer):=lmqi*lmqc, 为 2 秒. T port : 用 于 判 断 端 口 的 成 员 资 格. 收 到 常 规 成 员 资 格 查 询 报 文 时 启 动, 此 时 T port =min(t port,r),r 等 于 常 规 成 员 资 格 查 询 报 文 中 最 大 RTime 字 段 的 值 *10, 在 T port 范 围 内 端 口 必 须 收 到 成 员 资 格 报 告, 否 则 将 该 端 口 从 多 播 组 中 删 除. 每 个 T port 隶 属 于 一 个 指 定 组 中 的 一 个 指 定 端 口 ( 缺 省 =188s). T group : 用 于 多 播 组 的 生 存 期, 收 到 成 员 资 格 报 告 时 启 动 和 更 新, 如 果 超 时, 意 味 着 没 有 成 员 希 望 收 到 指 定 多 播 组 的 通 信, 将 该 多 播 组 删 除. 每 个 T group 隶 属 于 一 个 指 定 组 ( 缺 省 =260s). 3.3 协 议 的 运 行 机 制 和 过 程 为 了 维 护 多 播 组 和 VLAN 的 对 应 过 程,IGMP Snooping 还 使 用 4 个 通 信 过 程 来 处 理 IGMP 消 息 和 超 时 事 件, 通 信 过 程 中 的 主 体 是 路 由 器 (router) 交 换 机 (switch) 和 n 台 主 机 (host). 这 里, 假 设 交 换 机 的 每 个 端 口 连 接 一 台 主 机. 对 交 换 机 端 口 来 说, 处 理 多 台 主 机 连 接 在 同 一 个 端 口 的 情 况, 与 处 理 一 台 主 机 的 情 况 完 全 一 致, 连 接 到 同 一 端 口 的 主 机 之 间 仍 然 遵 循 传 统 的 IGMP 协 议. (1) 初 始 化 过 程 初 始 时,IGMP Snooping 创 建 全 部 主 机 的 组 (224.0.0.1,all port) 和 路 由 器 组 (224.0.0.2, 与 路 由 器 相 连 端 口 ), 设 置 所 有 的 T port 和 T group 为 无 穷 大. (2) 查 询 和 报 告 过 程 在 传 统 的 查 询 和 报 告 过 程 中, 路 由 器 会 定 时 发 送 常 规 成 员 资 格 查 询, 主 机 收 到 该 消 息 后 会 启 动 本 身 的 计 数 器, 计 数 器 的 值 为 0 到 最 大 响 应 时 间 ( 报 文 中 的 最 大 RTime) 之 间 的 随 机 数. 在 计 数 器 减 到 0 时, 发 送 成 员 资 格 报 告. 在 计 数 器 减 到 0 之 前, 如 果 收 到 对 应 组 的 成 员 资 格 报 告 消 息, 主 机 就 会 停 止 计 数 器 和 发 送 过 程. 路 由
General membership query 500 Journal of Software 软 件 学 报 2003,14(3) 器 在 收 到 成 员 资 格 报 告 之 后, 会 重 置 该 组 计 数 器 的 值, 如 果 在 该 计 数 器 有 效 期 间, 没 有 收 到 成 员 资 格 报 告, 则 该 计 数 器 会 减 到 0, 这 意 味 着 网 络 上 没 有 主 机 在 该 组 中, 路 由 器 将 不 再 转 发 该 组 的 数 据. 在 IGMP Snooping 的 应 用 环 境 中,Switch 在 收 到 路 由 器 发 送 的 常 规 成 员 资 格 查 询 之 后, 更 新 VLAN 表 中 所 有 表 项 中 的 T port =min(t port,r), 其 中 R 是 常 规 成 员 资 格 查 询 消 息 中 的 最 大 响 应 时 间 ( 一 般 为 QRI), 然 后 向 224.0.0.1 组 转 发 该 消 息.Switch 在 收 到 成 员 资 格 报 告 之 后, 向 224.0.0.2 组 转 发 第 1 个 报 告, 直 到 下 次 查 询 过 程 开 始 前, 不 转 发 其 他 报 告. 这 种 处 理 减 少 了 路 由 器 需 要 处 理 的 报 告 数, 而 且 不 影 响 路 由 器 对 多 播 组 的 存 在 进 行 正 确 判 断. 除 了 转 发 第 1 个 报 文 以 外, 每 收 到 一 个 report 报 文,IGMP Snooping 都 要 更 新 端 口 的 T port 为 缺 省 值, 并 且 设 置 T group 为 缺 省 值. 主 机 和 路 由 器 的 处 理 与 原 有 IGMP Snooping 协 议 一 致. 协 议 流 程 如 图 2 所 示. Router Switch H1 H2 H3 General membership query t0 Membership report Suppress forwarding Suppress forwarding Membership report Membership report Membership report t1 t2 t3 Fig.2 Query Process of IGMP Snooping 图 2 IGMP Snooping 的 查 询 过 程 图 中 Router 发 送 的 常 规 成 员 资 格 查 询 被 Switch 转 发 给 每 个 主 机 H i,h 1,H 2 和 H 3 在 t 0 时 刻 收 到 消 息 并 启 动 定 时 器 来 发 送 成 员 资 格 报 告.H 1 的 定 时 器 在 t 1 时 刻 超 时, 发 送 成 员 资 格 报 告,Switch 接 收 后 转 发.H 2 和 H 3 分 别 在 t 2 和 t 3 发 送 报 告,Switch 接 收 后 不 会 转 发. (3) 离 开 过 程 传 统 的 离 开 过 程, 希 望 离 开 组 的 主 机 向 路 由 器 发 送 离 开 组 报 告, 路 由 器 在 接 收 到 该 消 息 后, 每 隔 一 段 时 间 (=LMQI) 发 出 一 条 组 资 格 查 询 消 息 ( 由 LMQC 决 定 发 出 的 消 息 条 数 ), 在 报 文 中 的 最 大 RTime 字 段 中 指 定 了 最 后 响 应 时 间 (=LMQI), 并 且 设 置 组 计 数 器 (=LMQI*LMQC), 如 果 没 有 主 机 响 应 查 询, 组 计 数 器 减 为 0, 路 由 器 将 认 为 没 有 主 机 在 这 个 组 中, 否 则 在 收 到 主 机 报 告 后, 路 由 器 会 转 入 正 常 的 查 询 和 报 告 过 程. 在 IGMP Snooping 的 应 用 环 境 中,Switch 收 到 离 开 组 报 告 后, 向 224.0.0.2 组 转 发. 随 后 Switch 会 收 到 路 由 器 发 送 的 组 资 格 查 询 报 文, 在 设 置 T port = 报 文 中 的 最 大 RTime 后, 向 对 应 组 转 发 该 报 文. 主 机 和 路 由 器 的 处 理 与 原 有 IGMP Snooping 协 议 一 致. (4) 超 时 过 程 每 过 一 个 时 间 片,T port 和 T group 都 会 递 减, 减 为 0 时 产 生 超 时 消 息, 在 收 到 主 机 或 路 由 器 的 消 息 时 更 新 T port 和 T group 的 值. T port 超 时 的 处 理 : 意 味 着 在 给 定 响 应 时 间 内, 该 端 口 相 连 的 网 段 没 有 主 机 在 该 组 中, 因 此 将 对 应 端 口 从 VLAN 表 中 删 除. 如 果 对 应 VLAN 不 包 含 任 何 端 口, 即 VLAN 表 中 没 有 该 VLAN 的 表 项, 则 表 明 整 个 网 络 没 有 在 该 组 中 的 主 机, 可 以 将 VLAN 与 多 播 对 应 表 中 的 VLAN 和 多 播 表 项 删 除, 并 停 止 该 组 的 T group 定 时 器. T group 超 时 的 处 理 : 意 味 着 在 给 定 响 应 时 间 内, 整 个 网 络 没 有 主 机 对 查 询 报 文 进 行 响 应, 即 该 多 播 组 中 没 有 成 员, 因 此 从 VLAN 和 VLAN 与 多 播 对 应 表 中 删 除 对 应 VLAN 的 所 有 表 项. 3.4 状 态 和 状 态 转 换 图 主 机 和 路 由 器 上 IGMP 的 状 态 转 换 图 以 IGMPv2 中 的 描 述 为 准, 详 细 内 容 参 见 文 献 [1,2].
王 军 等 : 交 换 式 以 太 网 上 的 多 播 协 议 501 交 换 机 上 部 署 的 IGMP Snooping 实 体 针 对 每 一 个 组 播 组 的 状 态 转 换 图 如 图 3 所 示, 其 中 使 用 了 256 个 T port 和 一 个 T group 定 时 器, 有 7 个 子 过 程, 触 发 状 态 改 变 的 事 件 有 : 初 始 化 信 号 接 收 常 规 成 员 资 格 查 询 接 收 组 资 格 查 询 接 收 成 员 资 格 报 告 接 收 离 开 组 报 告 T port 超 时 和 T group 超 时. Tgroup timeout/ Action 4 Initial Event/ Action 0 Tport timeout/ Action 3 IDLE Leave Group received/ Action 5 Tgrouptimeout/Action 4 Report received/ Action 2 General query received/ Action 1 Group query received/ Action 6 Quering Tport timeout/ Action 3 Fig.3 State flowchart of IGMP snooping 图 3 IGMP snooping 协 议 的 状 态 流 程 图 Action 0: 添 加 所 有 端 口 到 组 224.0.0.1 对 应 的 端 口 集 中, 添 加 路 由 器 所 连 接 的 端 口 到 组 224.0.0.2 中, 设 置 所 有 的 T group 和 T port 为 无 穷 大. Action 1: 向 组 224.0.0.1 包 含 的 端 口 集 转 发 常 规 成 员 资 格 查 询 报 文, 设 置 端 口 的 T port 为 min(t port,r), 其 中 R 是 IGMP 消 息 中 的 最 大 响 应 时 间. 清 除 所 有 组 的 组 报 告 标 志. Action 2: 设 置 报 文 来 源 端 口 在 对 应 组 中 的 T port 为 缺 省 值. 判 断 是 否 设 置 了 组 报 告 标 志, 如 果 没 有, 则 向 组 224.0.0.2 包 含 的 端 口 集 转 发 成 员 资 格 报 告 报 文, 设 置 T group 为 缺 省 值 ( 对 应 组 由 报 文 中 的 多 播 组 地 址 标 示 ), 设 置 组 报 告 标 志. Action 3: 对 应 T port 超 时 的 处 理 过 程. Action 4: 对 应 T group 超 时 的 处 理 过 程. Action 5: 向 组 224.0.0.2 包 含 的 端 口 集 转 发 离 开 组 报 文. Action 6: 向 对 应 组 转 发 该 组 资 格 查 询 报 文, 设 置 对 应 组 的 T port = 最 后 响 应 时 间. 注 意 : 转 发 是 指 向 除 报 文 来 源 端 口 之 外 的 端 口 发 送, 因 为 与 该 端 口 相 连 的 主 机 已 经 收 到 了 该 报 文, 无 须 再 次 发 送. 4 验 证 与 测 试 因 为 IGMP 控 制 消 息 也 作 为 组 播 数 据 传 输, 仅 依 赖 二 层 帧 的 头 信 息 无 法 区 分 IGMP 和 其 他 组 播 包, 所 以 交 换 机 必 须 检 查 每 一 个 组 播 数 据 包 以 防 止 漏 掉 IGMP 控 制 消 息. 如 果 在 低 端 交 换 机 上 使 用 一 个 较 慢 的 CPU 实 现 IGMP Snooping, 组 播 数 据 在 高 速 传 输 时, 对 交 换 机 性 能 和 网 络 状 况 会 带 来 严 重 的 影 响, 所 以 IGMP Snooping 一 般 用 于 带 有 ASICs 模 块 的 高 速 交 换 机 上, 采 用 硬 件 进 行 IGMP 检 查. 我 们 为 了 准 确 地 测 试 IGMP Snooping 的 可 靠 性 和 有 效 性, 在 一 台 二 层 千 兆 交 换 机 中 设 计 和 实 现 了 IGMP Snooping 协 议, 采 用 ASIC 芯 片 进 行 IGMP 报 文 的 检 查, 将 所 有 IGMP 控 制 消 息 从 组 播 数 据 中 提 取 出 来 报 告 给 处 理 器. 采 用 这 台 二 层 千 兆 交 换 机, 我 们 组 建 了 如 图 4 所 示 的 试 验 网 进 行 实 验 分 析 和 验 证. 频 道 服 务 器 提 供 两 套 节 目, 一 路 来 自 于 文 件 节 目 源 A, 另 一 路 来 自 于 卫 星 节 目 源 B. 交 换 机 中 部 署 了 IGMP Snooping 协 议. 测 试 可 以 通 过 侦 听 网 络 中 数 据 报 和 检 查 设 备 上 的 日 志, 得 到 动 态 组 变 化 时 数 据 交 换 和 协 议 状 态 变 迁 的 过 程. 下 面 是 在 一 段 时 间 内 产 生 的 点 播 过 程, 表 中 列 出 了 产 生 的 协 议 消 息 交 换 机 状 态 和 数 据 交 换 过 程. 实 验 过 程 中 主 机 A 连 接 交 换 机 端 口 1, 主 机 B 连 接 交 换 机 端 口 2, 主 机 C 连 接 端 口 3, 主 机 D 连 接 端 口 4, 路 由 器 连 接 端 口 15, 频 道 1 的 组 播 服 务 地 址 是 224.5.5.112. 在 表 中 对 应 的 MAC 组 播 地 址 用 M112 表 示, 端 口 号 用 数 字 表 示, 频 道 1 用 C1 表 示.
502 Journal of Software 软 件 学 报 2003,14(3) Disk Array (Video File) Source A of File Program Satellite Antenna Source B of Satellite Program Channel Server Router Host A Switch Host B Host C Host D Fig.4 The network topology maps of experiment 图 4 实 验 环 境 网 络 拓 扑 图 A 点 播 C1 之 前, 与 A 相 连 的 端 口 1 不 会 收 到 C1 组 播 的 数 据, 而 在 A 加 入 C1 所 在 组 之 后, 数 据 被 转 发 到 端 口 1, 同 样 情 况 出 现 在 B,C 和 D. 当 B 离 开 C1 组 后, 交 换 机 停 止 转 发 C1 数 据 到 端 口 2. 这 说 明 IGMP Snooping 协 议 可 以 用 在 交 换 机 中, 配 合 路 由 器 和 主 机 实 现 二 层 的 多 播 功 能, 实 现 动 态 组 加 入 和 离 开 的 功 能, 防 止 交 换 机 向 不 在 组 播 组 中 的 网 段 转 发 数 据. 5 结 束 语 Table 2 Description of the testing process 表 2 测 试 过 程 描 述 Demand IGMP messages Status of switch Data flow Initial NULL NULL NULL Host A demand channel C1 General membership report (1 >15) (M112,(15,1)) 15 >1 Host B demand channel C1 General membership report (2 >15) (M112,(15,1,2)) 15 >1, 2 Host C demand channel C1 General membership report (3 >15) (M112,(15,1,2,3)) 15 >1,2,3 Host D demand channel C1 General membership report (4 >15) (M112,(15,1,2,3,4)) 15 >1,2,3,4 NULL General membership query (15 >1,2,3,4) General membership report (1,2,3,4 >15) (M112,(15,1,2,3,4)) 15 >1,2,3,4 Host B leave channel C1 Leave group report (2 >15) Group membership query (15 >2) (M112,(15,1,2,3)) 15 >1,2,3 本 文 描 述 了 IGMP Snooping 协 议 的 设 计 思 想 和 实 现 方 法, 并 且 在 一 个 二 层 交 换 机 上 设 计 和 实 现 了 整 个 协 议, 在 实 验 网 环 境 中 进 行 了 正 确 性 验 证 和 测 试. 由 上 述 陈 述 和 实 现 可 见,IGMP Snooping 协 议 的 设 计 和 实 现 以 非 常 简 单 有 效 的 手 段 解 决 了 目 前 在 交 换 式 以 太 网 中 多 播 应 用 的 网 络 传 输 问 题, 它 适 合 在 接 入 网 络 交 换 机 中 部 署, 外 部 通 过 接 入 路 由 器 连 入 Internet, 内 部 采 用 高 速 交 换 式 以 太 网 结 构, 通 过 VLAN 划 分 虚 拟 网 段. 针 对 智 能 小 区 接 入 中 的 多 播 应 用 IGMP Snooping 提 供 了 一 种 有 效 而 可 靠 的 接 入 网 方 案, 使 计 算 机 网 络 可 以 很 方 便 地 移 植 有 线 电 视 网 中 提 供 的 一 系 列 广 播 服 务, 促 进 了 三 网 的 融 合. 当 然, 在 IGMP Snooping 协 议 中 还 存 在 着 一 些 不 足 :(1) 如 何 准 确 地 发 现 多 播 路 由 器 所 在 端 口 的 问 题 [4], 目 前 采 用 的 方 法 是 通 过 嗅 探 路 由 协 议 IP 包 来 确 认 路 由 器, 或 者 在 交 换 机 和 路 由 器 上 部 署 路 由 器 发 现 协 议, 由 路 由 器 向 交 换 机 报 告 自 己 的 身 份 ;(2) 考 虑 在 IGMP Snooping 中 加 入 对 IGMPv3 的 支 持 [5,6], 支 持 基 于 源 的 组 播 ; (3) 针 对 IGMP 离 开 组 的 处 理 过 程, 需 要 优 化 处 理 过 程, 减 小 离 开 组 的 延 迟. References: [1] Parkhurst WR. Cisco Multicast Routing And Switching. McGraw Hill, 1999. 25~42, 43~53. [2] Deering S. Host extensions for IP multicasting. RFC 1112, Stanford University, 1989. [3] Fenner W. Internet group management protocol. Version 2, RFC 2236, Xerox PARC, 1997. [4] Biswas S, Haberman B, Cain B. IGMP multicast router discovery. Nortel Networks and Cereva Networks. Internet-Draft, 2001. [5] Cain B, Deering S, Fenner B, Kouvelas I, Thyagarajan A. Internet group management protocol. Version 3, Mirror Image Internet, Cisco Systems, AT&T Labs-Research and Ericsson. Internet-Draft, 2001. [6] Fenner B, He HX, Haberman B, Sandick H. IGMP-Based multicast forwarding (IGMP proxying). AT&T-Research, Nortel Networks, Internet-Draft, 2001.