组播路由配置
概述
组播
单播、组播、广播是计算机网络上三种基本的通信方式。
- 单播:单播是相互感兴趣的主机双方进行通信的方式,主机不能接收对其不感兴趣的其它主机发送的信息,属于点对点通信。
- 广播:广播是主机向子网内所有主机发送信息,子网内所有主机都能收到来自某台主机的广播信息,属于点对所有点的通信。
- 组播:组播则介于两者之间,是主机向一组主机发送信息,存在于某个组的所有主机都可以接收到信息,属于点对多点通信。
使用组播方式时,只有加入到该组播组的成员才能收到并处理该组播组的报文。对于不是该组播组的成员,要么不能接收到该组播组的报文,要么收到后直接丢弃。
组播 IP 地址用于标识一个 IP 组播组。组播报文的目的地址使用 D 类 IP 地址,D 类地址不能出现在 IP 报文的源 IP 地址字段里。其范围是从 224.0.0.0 到 239.255.255.255。
组播转发
实现 IP 组播通讯,需要解决两个问题:
- 组播成员如何加入组播组?
- 组播数据如何转发到对应接收者?
以下两类基本协议可以分别解决上述两个问题:
- 组成员管理协议。
- 组播路由协议。
组成员管理协议用于管理组播组成员的加入和离开。常用的组成员管理协议是 IGMP 协议,IGMP 是一种常用的管理 IPv4 组播组成员的 TCP/IP 协议,运行在组播网络末梢的组播设备与用户主机上,用于用户主机和其直连的组播设备之间建立并维护组播组成员关系。
组播成员通过组成员管理协议加入到组播组后,就会按需进行组播数据报文交互。组播设备在进行组播数据交互时需要依赖组播路由协议,通过维护组播路由表项,对数据报文进行转发。组播路由协议负责在组播网络中构建一个无环的组播分发树,即组播流量在组播网络中的传输路径。
常用的组播路由协议有 PIM-SM、PIM-DM、PIM-SSM。
PIM 是一种协议无关的域内组播路由协议。即为 IP 组播提供路由信息的可以是任意单播路由协议,如静态路由、RIP 和 OSPF 等。组播路由和单播路由无关,只是利用单播路由表生成组播路由信息。
实际场景
PIM-SSM 协议案例
实现跨网段组播通信,需要有一台设备进行路由配置。
首选上位机(A)网卡 en4 配置 IP 为 192.168.0.200 和网关为 192.168.0.253,对应路由节点连接的 en4 的 IP 应配置为 192.168.0.253,网关地址为 192.168.0.1,设置 en4 为默认路由网卡。
route add default dev en4
其次目标节点(C)网卡 en5 配置 IP 为 192.168.4.21 和网关为 192.168.4.253,对应路由节点连接的 en5 的 IP 应配置为 192.168.4.253,网关地址为 192.168.4.1,设置 en5 为默认路由网卡。
route add default dev en5
最后在路由节点(B)开启 ipforward。
ipforward 1
按照上文Quagga 配置内容,启动 Quagga。
启动 pim 组播路由守护进程。
pimd &
使用 Telnet 工具通过路由节点(B) 的 IP 及 2611 端口号进入到 PIM 协议配置界面,密码是 zebra。
Hello, this is Quagga (version 1.2.2). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password:
进入路由节点(B)的 PIM 协议配置界面后,首先输入以下指令启动config配置模式。
pimd> enable pimd# configure terminal pimd(config)#
按照下面指令配置路由节点(B)。
ip multicase-routing interface en4 ip pim ssm ip igmp ip igmp join 239.255.1.21 192.168.0.200 ip igmp join 239.255.1.21 192.168.4.21 ip multicase-routing interface en5 ip pim ssm ip igmp ip igmp join 239.255.1.21 192.168.0.200 ip igmp join 239.255.1.21 192.168.4.21
测试代码分为组播发送程序 multicast_send 及组播接收程序 multicast_recv,实现上位机向组播地址 239.255.1.21,端口号 9221 发送数据,而目标机通过组播地址 239.255.1.21,端口号 9221 接收数据。
在上位机端,运行组播发送程序。
./multicast_send en4 192.168.0.200
在目标机器,运行组播接收程序。
./multicast_recv en5 192.168.4.21
当接收端打印字符,则表示通过组播地址获取组播数据成功。