
- 1 -
Thiết kế & triển khai mạng IP
Bài thực hành: Multicast
Mục lục
1 Chuẩn bị môi trường ............................................................................................................................. 2
2 Multicast tĩnh (static) ............................................................................................................................ 4
2.1 Cài đặt & cấu hình pimd, iperf ...................................................................................................... 4
2.2 Thiết lập trạm nhận và trạm gửi multicast .................................................................................... 5
2.3 Thiết lập luật chuyển tiếp gói tin multicast trong các router ........................................................ 6
3 Thực hành IGMP ................................................................................................................................... 8
3.1 Bật chức năng IGMP trên các router pimd .................................................................................... 8
3.2 Tạo cây multicast H1 ➔ R1 ➔ R2 ➔ R3 ➔ H3 với IGMP ............................................................. 9
3.3 Phân tích các gói tin IGMP Join Report........................................................................................ 13
3.4 Phân tích các gói tin IGMP Leave & Query .................................................................................. 14
4 Thực hành multicast routing protocol: PIM-SSM ................................................................................ 15
4.1 Xây dựng cây multicast tự động với PIM-SSM ............................................................................ 16
4.2 Phân tích hoạt động của PIM-SSM: tự động tạo cây (join group) ............................................... 17
4.3 Phân tích hoạt động của PIM-SSM: tự động cắt cành (prun) ...................................................... 19
5 Thực hành multicast routing protocol: PIM-SM .................................................................................. 20
5.1 Thiết lập RP cho các PIM SM ....................................................................................................... 21
5.2 Thiết lập IGMP và PIM cho các kết nối mạng của từng router .................................................... 22
5.3 Trạm nghe H3 đăng ký join vào cây ............................................................................................. 24
5.4 Trạm phát H1 phát tin vào nhóm ................................................................................................ 25
5.5 Trạm nghe H3 rời nhóm .............................................................................................................. 26

- 2 -
1 Chuẩn bị môi trường
Sử dụng các kiến thức của bài trước, dựng môi trường mạng ảo:
1. Cấu hình R1:
R1:~$ sudo nano /etc/netplan/00-installer-config.yaml
network:
enp0s9:
addresses:
- 10.10.1.1/24
routes:
- to: 10.10.2.0/24
via: 10.10.1.2
- to: 192.168.2.0/24
via: 10.10.1.2
- to: 192.168.3.0/24
via: 10.10.1.2
enp0s10:
addresses:
- 192.168.1.1/24
R1:~$ sudo netplan apply
R1:~$ ifconfig -a
enp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.1.1 netmask 255.255.255.0 broadcast 10.10.1.255
inet6 fe80::a00:27ff:fe10:1 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:10:00:01 txqueuelen 1000 (Ethernet)
RX packets 29972 bytes 2283952 (2.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58281 bytes 4467450 (4.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
R1
enp0s9: 192.168.1.120
R2
R3
enp0s10: 192.168.3.115
enp0s10: 192.168.1.1
enp0s10: 192.168.3.1
enp0s9:
10.10.1.1
enp0s9:
10.10.1.2
enp0s9:
10.10.2.2
enp0s10: 192.168.2.123
enp0s3: 192.168.2.1
enp0s10:
10.10.2.1
H1
H2
H3

- 3 -
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe16:8011 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:16:80:11 txqueuelen 1000 (Ethernet)
RX packets 43492 bytes 3468764 (3.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31018 bytes 2341480 (2.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
R1:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s9
10.10.2.0 10.10.1.2 255.255.255.0 UG 0 0 0 enp0s9
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s10
192.168.2.0 10.10.1.2 255.255.255.0 UG 0 0 0 enp0s9
192.168.3.0 10.10.1.2 255.255.255.0 UG 0 0 0 enp0s9
2. Cấu hình H1:
H1:~$ sudo nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp0s8:
addresses:
- 192.168.156.120/24
enp0s9:
addresses:
- 192.168.1.120/24
gateway4: 192.168.1.1
R1:~$ sudo netplan apply
R1:~$ ifconfig -a
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.156.120 netmask 255.255.255.0 broadcast 192.168.156.255
inet6 fe80::a00:27ff:fec8:5f09 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:c8:5f:09 txqueuelen 1000 (Ethernet)
RX packets 23225 bytes 1560103 (1.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22747 bytes 3166631 (3.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.120 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe1c:c215 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:1c:c2:15 txqueuelen 1000 (Ethernet)
RX packets 23529 bytes 1838902 (1.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43420 bytes 3460554 (3.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
H1:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 enp0s9
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s9
3. Cấu hình R2, H2, R3, H3 làm tương tự. Kiểm tra kết nối thông giữa các host:
H1:~$ ping 192.168.2.115
PING 192.168.2.115 (192.168.2.115) 56(84) bytes of data.
64 bytes from 192.168.2.115: icmp_seq=1 ttl=61 time=2.78 ms
64 bytes from 192.168.2.115: icmp_seq=2 ttl=61 time=2.63 ms
64 bytes from 192.168.2.115: icmp_seq=3 ttl=61 time=2.60 ms
H1:~$ ping 192.168.3.123
PING 192.168.3.123 (192.168.3.123) 56(84) bytes of data.
64 bytes from 192.168.3.123: icmp_seq=1 ttl=62 time=1.68 ms
64 bytes from 192.168.3.123: icmp_seq=2 ttl=62 time=1.84 ms
64 bytes from 192.168.3.123: icmp_seq=3 ttl=62 time=2.18 ms

- 4 -
2 Multicast tĩnh (static)
2.1 Cài đặt & cấu hình pimd, iperf
1. Cài đặt tool iperf trên các host. Tool iperf hoạt động theo cơ chế client/server và cho phép đăng
ký, gửi, nhận theo địa chỉ multicast:
H1:~$ sudo apt-get install iperf
. . .
2. Sử dụng quagga zebra và pimd đã được cài đặt trên các router để hỗ trợ multicast
R1:~$sudo nano /etc/quagga/zebra.conf
hostname R1
password zebra
enable password zebra
log file /var/log/quagga/zebra.log
R1:~$ sudo systemctl restart zebra
R1:~$ sudo systemctl status zebra
● zebra.service - GNU Zebra routing manager
Loaded: loaded (/lib/systemd/system/zebra.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-10-06 06:07:32 +07; 1h 48min ago
Docs: man:zebra
Process: 626 ExecStartPre=/sbin/ip route flush proto zebra (code=exited,
status=0/SUCCESS)
Process: 630 ExecStartPre=/bin/chmod -f 640 /etc/quagga/vtysh.conf
/etc/quagga/zebra.conf (code=exited, status=1/FAILURE)
Process: 635 ExecStartPre=/bin/chown -f quagga:quagga /etc/quagga/zebra.conf
(code=exited, status=0/SUCCESS)
Process: 639 ExecStartPre=/bin/chown -f quagga:quaggavty /etc/quagga/vtysh.conf
(code=exited, status=1/FAILURE)
Process: 640 ExecStart=/usr/sbin/zebra -d -A 127.0.0.1 -f /etc/quagga/zebra.conf
(code=exited, status=0/SUCCESS)
Main PID: 655 (zebra)
R1
enp0s9: 192.168.1.120
R2
R3
enp0s10: 192.168.3.115
enp0s10: 192.168.1.1
enp0s10: 192.168.3.1
enp0s9:
10.10.1.1
enp0s9:
10.10.1.2
enp0s9:
10.10.2.2
enp0s10: 192.168.2.123
enp0s3: 192.168.2.1
enp0s10:
10.10.2.1
H1
H2
H3

- 5 -
Tasks: 1 (limit: 1071)
Memory: 2.7M
CGroup: /system.slice/zebra.service
└─655 /usr/sbin/zebra -d -A 127.0.0.1 -f /etc/quagga/zebra.conf
Oct 06 06:07:31 R1 systemd[1]: Starting GNU Zebra routing manager...
Oct 06 06:07:32 R1 systemd[1]: Started GNU Zebra routing manager.
3. Thiết lập cấu hình multicast tối thiểu cho tiến trình pimd trên các router. Khai báo ip pim ssm trên
mỗi giao diện mạng có ý nghĩa cho phép pimd thực hiện multicast routing bằng giao thức PIM với
SSM mode (Source Specific Multicast). Tuy nhiên trong bài thực hành này, ta sẽ không chạy giao
thức multicast routing mà thực hiện cấu hình static các luật forward gói tin multicast:
R1:~$ sudo nano /etc/quagga/pimd.conf
password zebra
enable password zebra
ip multicast-routing
interface enp0s9
ip pim ssm
interface enp0s10
ip pim ssm
R1:~$ sudo systemctl restart pimd
R1:~$ sudo systemctl status pimd
● pimd.service - PIM multicast routing engine
Loaded: loaded (/lib/systemd/system/pimd.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2021-10-02 10:32:29 +07; 8s ago
Docs: man:pimd
Process: 6347 ExecStartPre=/bin/chmod -f 640 /etc/quagga/pimd.conf (code=exited,
status=0/SUCCESS)
R1:~$ ifconfig -a
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
2.2 Thiết lập trạm nhận và trạm gửi multicast
4. Trên H2 chạy iperf chế độ server (đóng vai trò trạm nhận các gói tin multicast) để nghe các gói tin
UDP gửi vào địa chỉ nhóm 226.96.1.1:
H2:~$ iperf -s -u -B 226.96.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.96.1.1
Joining multicast group 226.96.1.1
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
5. Mở trên một session trên H2 để kiểm tra H3 đã được join vào địa chỉ multicast 226.96.1.1:
H2:~$ ip -4 maddress
1: enp0s10
inet 226.96.1.1
inet 224.0.0.1
6. Trên H1, chạy iperf chế độ client và gửi gói tin UDP vào địa chỉ multicast 226.96.1.1. Nếu bắt gói
tin trên router R1 sẽ thấy nó được gửi đến kết nối mạng giữa R1 và H1, tuy nhiên do các router
chưa được cấu hình multicast nên gói tin này chưa được lan tỏa đến router R3 và kết quả là iperf
trên H3 chưa nhận được gói tin gửi từ H1:
H1:~$ iperf -c 226.96.1.1 -u
------------------------------------------------------------
Client connecting to 226.96.1.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
Setting multicast TTL to 1
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.120 port 39179 connected with 226.96.1.1 port 5001

