全部产品
专有网络 VPC

Linux内核态组播工具使用说明

更新时间:2017-09-14 20:18:54   分享:   

Linux组播工具主要应用于阿里云VPC网络和经典网络环境内。Linux组播工具包括客户端和服务端,服务端安装在需要发出组播数据包的一端虚拟机上(一般是组播应用的服务端即组播源),客户端安装在需要接收组播数据包的一端虚拟机上(一般是组播应用的客户端即组播成员)。组播工具的客户端和服务端分别包括一个Linux内核模块和用户态的配置命令行,内核模块用于将组播包与单播包相互转换以适应当前的网络环境,命令行用于组播组的配置。

参考以下内容使用组播代理工具:

安装组播代理工具

  1. 下载组播代理工具。

    下载地址:https://github.com/aliyun/multicast_proxy

    选择multicast_kernel文件夹。

  2. 运行以下命令生成安装包。

    sh tmcc_client_auto_rpm.sh;sh tmcc_server_auto_rpm.sh

  3. 运行以下命令安装代理工具。

    rpm -Uvh multi_server-1.1-1.x86_64.rpm

    rpm -Uvh multi_client-1.1-1.x86_64.rpm

启动和停止代理服务

  • 启动代理服务

    组播工具通过service来启动客户端和服务端。启动流程主要包括加载内核模块,从配置文件中加载配置。本操作中采用JSON格式保存配置文件。

    注意: 首次启动可以不需要配置文件,每次配置时都会自动保存运行时配置文件。

    • 服务端(root权限)

      执行service multis start

    • 客户端(root权限)

      执行service multic start

  • 停止代理服务

    停止的流程是保存配置,卸载对应的内核模块。这里配置默认保存为下次启动的配置文件,也就是说默认情况下停止运行后再重新启动,配置会自动恢复。如果不想要保存配置,可以在停止之前,通过命令行清除配置。

    • 服务端(root权限)

      执行service multis stop

    • 客户端(root权限)

      执行service multic stop

  • 重启

    • 服务端(root权限)

      执行service multis restart

    • 客户端(root权限)

      执行service multic restart

命令参考

服务端配置

服务端需要配置组播组以及添加对应的组播成员。每个服务器支持10个组播。每个组播组支持128个服务器组播成员。命令行默认安装到/usr/local/sbin目录下。

使用multis_admin命令配置服务端,执行multis_admin -help查看详细说明。

  1. multis_admin -- This command can be used to configure multicast server.
  2. Usage:
  3. multis_admin -A -m {multi_ip} -j {ip1,ip2,ip3...}
  4. multis_admin -A -m {multi_ip} -q {ip1,ip2,ip3...}
  5. multis_admin -D -m {multi_ip}
  6. multis_admin -C
  7. multis_admin -P -m {multi_ip}
  8. multis_admin -L -m {multi_ip}
  9. multis_admin -S
  10. multis_admin -H
  11. Options:
  12. -A/--add add multicast group
  13. -D/--delete del multicast group
  14. -C/--clear clear multicast group
  15. -P/--stats packets statistic
  16. -S/--show show multicast group
  17. -L/--list list multicast group member
  18. -H/--help help info
  19. -j/--join vm join multicast group
  20. -q/--quit vm quit multicast group
  21. -m/--multiip multicast ip

客户端配置

客户端需要配置加入的组播组信息,一个客户端服务器最多属于10个不同的组播组。

使用multic_admin命令配置客户端,执行multic_admin -help查看详细说明。

  1. multic_admin -- This command can be used to configure multicast client.
  2. Usage:
  3. multic_admin -A -i {ip} -p {port} -m {multi_ip}
  4. multic_admin -D -i {ip} -p {port}
  5. multic_admin -C
  6. multic_admin -P -i {ip} -p {port}
  7. multic_admin -L
  8. multic_admin -H
  9. Options:
  10. -A/--add add multicast server ip and port
  11. -D/--delete del multicast server ip and port
  12. -C/--clear clear multicast server information
  13. -P/--stats recv packets statistic
  14. -L/--list list all multicast server ip and port
  15. -H/--help help info
  16. -i/--ip multicast server ip, the ip of multicast provider
  17. -p/--port udp port, the multicast port
  18. -m/--multi_ip multicast ip

配置举例

以下图中的组播通信为例,ECS1为组播源,ECS2、ECS3、ECS4为组播成员,组播IP地址和端口分别为224.1.2.3:65535。

1

此时需要在ECS1上安装运行组播服务端。安装运行以后需要对各ECS进行配置,有如下两种配置方法:

  • 终端命令行

    1. 执行如下命令配置组播组。

      ECS1:multis_admin -A -m 224.1.2.3 -j 192.168.1.1,192.168.1.2,192.168.1.3

      ECS2:multic_admin -A -i 192.168.0.1 -p 65535 -m 224.1.2.3

      ECS3:multic_admin -A -i 192.168.0.1 -p 65535 -m 224.1.2.3

      ECS4:multic_admin -A -i 192.168.0.1 -p 65535 -m 224.1.2.3

    2. 配置完成以后,执行以下命令查看收发包统计。

      ECS1:multis_admin -P

      ECS2、ECS3和ECS4:multic_admin -P

    3. 执行如下命令将ECS2退出组播。

      ECS1:multis_admin -A -m 224.1.2.3 -q 192.168.1.1

      ECS2:multic_admin -D -i 192.168.0.1 -p 65535

问题排查

错误信息

  1. make[1]: Entering directory `/root/multicast_kernel/rpmbuild_multicast/BUILD/multi_server-1.1/kmod'
  2. make -C /lib/modules/`uname -r`/build M=/root/multicast_kernel/rpmbuild_multicast/BUILD/multi_server-1.1/kmod modules
  3. make: Entering an unknown directory
  4. make: *** /lib/modules/2.6.32-696.3.2.el6.x86_64/build: No such file or directory. Stop.
  5. make: Leaving an unknown directory
  6. make[1]: *** [default] Error 2
  7. make[1]: Leaving directory `/root/multicast_kernel/rpmbuild_multicast/BUILD/multi_server-1.1/kmod'
  8. make: *** [all] Error 2
  9. error: Bad exit status from /var/tmp/rpm-tmp.zsxjMt (%build)
  10. RPM build errors:
  11. Bad exit status from /var/tmp/rpm-tmp.zsxjMt (%build)
  12. cp: 无法获取"/root/multicast_kernel/rpmbuild_multicast/RPMS/x86_64/multi_server-1.1-1.x86_64.rpm" 的文件状态(stat): 没有那个文件或目录

主要原因

make: *** /lib/modules/2.6.32-696.3.2.el6.x86_64/build: No such file or directory. Stop.

修复方法

  1. 安装kernel-devel。

  2. 查看/lib/modules/2.6.32-696.3.2.el6.x86_64/build的链接是否正确。

本文导读目录
本文导读目录
以上内容是否对您有帮助?