bridge-multicast-igmpsnooping

1.topo

2.创建命名空间

ip netns add ns0

ip netns add ns1

ip netns add ns2

ip netns add ns3

3.创建veth设备

ip link add ns0-veth0 type veth peer name hn0-veth0

ip link add ns1-veth0 type veth peer name hn1-veth0

ip link add ns2-veth0 type veth peer name hn2-veth0

ip link add ns3-veth0 type veth peer name hn3-veth0

4.veth设备放入命名空间,启动接口

ip link set ns0-veth0 netns ns0

ip link set ns1-veth0 netns ns1

ip link set ns2-veth0 netns ns2

ip link set ns3-veth0 netns ns3

ip -netns ns0 link set ns0-veth0 up

ip -netns ns1 link set ns1-veth0 up

ip -netns ns2 link set ns2-veth0 up

ip -netns ns3 link set ns3-veth0 up

5.创建br0,添加接口到br0

brctl addbr br0

ip link set br0 up

brctl addif br0 hn0-veth0

brctl addif br0 hn1-veth0

brctl addif br0 hn2-veth0

brctl addif br0 hn3-veth0

ip link set dev hn0-veth0 up

ip link set dev hn1-veth0 up

ip link set dev hn2-veth0 up

ip link set dev hn3-veth0 up

7.配置地址

ip -netns ns0 addr add 1.1.1.10/24 dev ns0-veth0

ip -netns ns1 addr add 1.1.1.11/24 dev ns1-veth0

ip -netns ns2 addr add 1.1.1.12/24 dev ns2-veth0

ip -netns ns3 addr add 1.1.1.13/24 dev ns3-veth0

8.测试

8.1测试iperf

ip netns exec ns0 iperf -s -u -B 239.1.1.1 -p 5001 //server

ip netns exec ns1 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.11

ip netns exec ns2 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.12

ip netns exec ns3 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.13

tcpdump -i br0 -e

8.2测试 igmp snooping

bridge开启igmp snooping

echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier //启用 IGMP 查询器功能

echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_snooping // IGMP Snooping 功能^S

echo 100 > /sys/devices/virtual/net/br0/bridge/multicast_query_interval //IGMP 查询消息的发送间隔

echo 4 > /sys/devices/virtual/net/br0/bridge/multicast_query_response_interval

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 //关闭ipv6协议栈

添加组播组

smcroute -d

ip netns exec ns1 smcroute -d

ip netns exec ns1 smcroutectl join ns1-veth0 239.0.0.99 //加入组播组

ip netns exec ns2 smcroute -d

ip netns exec ns2 smcroutectl join ns2-veth0 239.0.0.99 //加入组播组

bridge mdb show br0

发送组播报文

//发送组播

ip netns exec ns0 ip route add 239.0.0.0/8 dev ns0-veth0 添加路由,sendip才发送处理组播报文

ip netns exec ns0 sendip -p ipv4 -is 1.1.1.10 -id 239.0.0.99 -p udp -us 5000 -ud 5001 -d "Hello, Multicast!" 239.0.0.99

抓包

ip netns exec ns1 tcpdump -i ns1-veth0 -e

ip netns exec ns2 tcpdump -i ns2-veth0 -e

ip netns exec ns3 tcpdump -i ns3-veth0 -e

ns1、ns2能收到,ns3收不到。

9.删除

ip netns del ns0

ip netns del ns1

ip netns del ns2

ip netns del ns3

ip link set br0 down

brctl delbr br0

ip link del hn0-veth0

ip link del hn1-veth0

ip link del hn2-veth0

ip link del hn3-veth0

组播

cat /sys/devices/virtual/net/br0/bridge/multicast_snooping

cat /proc/net/igmp

ip maddr show dev br0

smcroute

ip netns exec ns0 smcroute -d //命名空间开启进程

smcroute -d //开启进程

smcroutectl join br0 224.0.0.99 //加入组播组

smcroutectl leave br0 224.0.0.99 //离开组播组

cat /proc/net/igmp

cat /proc/sys/net/ipv4/conf/all/mc_forwarding

发送单播报文

ip netns exec ns0 sendip -p ipv4 -is 1.1.1.10 -id 1.1.12 -p udp -us 5000 -ud 5001 -d "Hello, Multicast!" 1.1.1.12

11.参考

Ubuntu Manpage: smcroute --- SMCRoute, a static multicast router

相关推荐
小小龙学IT9 小时前
ROS2 安装完全指南(Ubuntu 版):从零开始到跑通第一个节点本文
linux·运维·ubuntu
Ruiery9 小时前
Linux 6.6内核 CPU 深度解析(十二):SMT 进阶 — core scheduling 与共享算力的负载平衡
linux·运维·服务器
影视飓风TIM9 小时前
Linux 进程虚拟地址空间详解
linux·算法
howdoyoudo2026069 小时前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
万联WANFLOW9 小时前
越南电商市场演变:内容驱动下的增长与合规
网络·业界资讯·跨境电商
硅基手札9 小时前
【Linux内核专栏 12】VFS 与文件系统
linux
释厄6239 小时前
学术引用本体论——WorkBuddy 学术科学文化三违反
网络·人工智能·算法
水饺编程9 小时前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio
道尔柯南10 小时前
从 0 到 1 理解计算机网络:从网络基础到 Socket 编程
网络·计算机网络
wangbing112510 小时前
开发指南148-WebSocket-后端
网络·websocket·网络协议