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

相关推荐
zbtlink22 分钟前
户外路由器和家用路由器:差异解析与混用考量
网络·智能路由器
菜的不敢吱声2 小时前
swift学习第4天
服务器·学习·swift
晚枫歌F6 小时前
Dpdk介绍
linux·服务器
风送雨6 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
芯盾时代7 小时前
石油化工行业网络风险解决方案
网络·人工智能·信息安全
线束线缆组件品替网7 小时前
Weidmüller 工业以太网线缆技术与兼容策略解析
网络·人工智能·电脑·硬件工程·材料工程
model20058 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
yuhaiqun19898 小时前
学服务器训练AI模型:5步路径助力高效入门
运维·服务器·人工智能·笔记·机器学习·ai
以太浮标8 小时前
华为eNSP模拟器综合实验之-BFD联动配置解析
运维·网络·华为·信息与通信
阿杰 AJie8 小时前
主流传输 /通信协议的【使用场景 + 详细使用说明】大全
服务器·tcp/ip