You are on page 1of 74

IP Multicast

Phạm Huy Hoàng – Tran Hoang Hai


SoICT/HUST
Tổng quan về IP multicast
Unicast & Multicast
Địa chỉ multicast & giao thức 2 pha
Demo với ssmping
Mulitcast tree & join host
Unicast & Multicast
• Unicast: Các gói tin được gửi từ một địa chỉ
nguồn đến một địa chỉ đích. Một router hoặc một
thiết bị lớp 3 sẽ chuyển các gói tin bằng cách tìm
địa chỉ đích trong bảng định tuyến. Nếu một thiết
bị là L2, nó chỉ cần dựa vào địa chỉ MAC.
• Phương thức Unicast yêu cầu rằng các ứng
dụng hình ảnh gửi một bản sao chép của từng
gói tin đến mọi địa chỉ Unicast của các thành
viên của nhóm. Để hỗ trợ hình ảnh đẹp, mỗi
dòng tính hiệu hình ảnh yêu cầu 1.5 Mbps cho
mỗi máy nhận. Nếu chỉ có một vài máy nhận,
phương thức này làm việc được nhưng yêu cầu
băng thông là n*1.5Mbps trong đó n là số máy
nhận.
• Khi số máy tham gia vào tăng lên hàng trăm
hoặc hàng ngàn, tải trên máy chủ để tạo ra các
phiên bản của dữ liệu cũng tăng lên. Đối với 100
người dùng, phần băng thông yêu cầu để gửi
Unicast là 150Mbps. Đối với 1000 người dùng,
phần băng thông yêu cầu là 1.5Gbps.

3
Unicast & Multicast
• Broadcast: Các gói tin được gừi từ một máy nguồn
đến một địa chỉ đích Broadcast. Địa chỉ đích có thể là
địa chỉ tất cả các máy trạm (255.255.255.255) hoặc là
một phần của địa chỉ mạng con. Một router hoặc một
switch lớp 3 sẽ không cho phép chuyển các dữ liệu
Broadcast này. Một thiết bị L2 sẽ cho phép phát tán
lưu lượng Broadcast ra tất cả các cổng của nó.
• Multicast: Các gói được gửi từ một địa chỉ nguồn đến
một nhóm các máy tính. Địa chỉ đích tượng trưng cho
các máy trạm muốn nhận lưu lượng này. Mặc định,
một router hoặc một switch lớp 3 sẽ không chuyển các
gói tin này trừ khi phải cấu hình định tuyến Multicast.
Một thiết bị switch lớp 2 không thể nhận biết được vị trí
của địa chỉ Multicast đích. Tất cả các gói sẽ được phát
tán ra tất cả các cổng ở chế độ mặc định.
• Lưu ý: cơ chế dùng Unicast thì dữ liệu sẽ đi từ máy
trạm đến máy trạm; Broadcast thì lưu lượng sẽ đi đến
tất cả các máy trạm trên phân đoạn mạng đó. Cơ chế
Multicast sẽ nằm giữa hai thái cực này, trong đó máy
nguồn chỉ gửi những gói tin từ một máy trạm đến các
người dùng muốn nhận loại lưu lượng đó đó. Nhóm
này gọi là nhóm Multicast. Các máy nhận lưu lượng
Multicast có thể nằm ở bất cứ nơi nào chứ không chỉ
trên phân đoạn mạng cục bộ.
Cơ chế Broadcast

4
Unicast & Multicast (1)
Unicast
• Tại sao cần multicast?
• Gửi cùng dữ liệu đến nhiều (2)
người nhận Host
• Tối ưu hóa đường truyền
Router
• Ví dụ ứng dụng (3)
• Video/audio conferencing Multicast filter:
- none but include Host
• Internet TV - all but exclude X
• Quảng cáo trực tuyến X
• Thông tin chứng khoán (1) Multicast
• V.v..
• Vấn đề an toàn thông tin (2)
• Lộ/mất kiểm soát cây multicast
Host
• Mọi router cần tham gia
Multicast
➔ Vai trò của router zone (tree) Router (3)
(multicast routing)
5
Các yêu cầu cơ bản để hỗ trợ các ứng dụng
Multicast trên một hạ tầng mạng
• Một dãy địa chỉ dành riêng cho địa chỉ lớp 3 mà chỉ được dùng bởi các ứng dụng Multicast. Người quản trị cần phải cài
đặt một ứng dụng Multicast trên một máy chủ Multicast dùng địa chỉ lớp 3.
• Một địa chỉ Multicast chỉ được dùng như là địa chỉ đích và không được là địa chỉ nguồn. Không giống như gói tin Unicast,
một địa chỉ đích IP trong một gói Multicast không chỉ ra địa chỉ của máy nhận mà chỉ đơn giản có ý nghĩa là gói tin đang
mang dữ liệu Multicast.
• Các ứng dụng Multicast phải được cài đặt trên tất cả các máy trạm trong mạng cần phải nhận lưu lượng Multicast cho
ứng dụng. Ứng dụng phải được cài đặt dùng cùng địa chỉ Multicast lớp 3 với địa chỉ của máy chủ. Động tác này còn được
gọi là tham gia vào cùng một nhóm.
• Tất cả các máy trạm kết nối vào cùng một mạng LAN phải dùng cùng một phương thức chuẩn để tính toán địa chỉ L2 từ
địa chỉ Multicast L3 và gán nó vào cạc mạng. Ví dụ, nếu nhiều router cùng kết nối vào một mạng và tất cả đều chạy
OSPF, tất cả các cổng Ethernet của tất cả các router sẽ có khả năng lắng nghe đến địa chỉ Multicast là 0x0100.5e00.0005
ngoài địa chỉ MAC của chính cổng đó. Địa chỉ Multicast L2 0x0100.5e00.0005 được tính toán từ địa chỉ 224.0.0.5. Đây là
địa chỉ dành riêng cho OSPF.
• Phải có một cơ chế trong đó một máy trạm có thể báo cho router kết nối trực tiếp rằng máy trạm muốn nhận lưu lượng
cho ứng dụng Multicast. Giao thức IGMP cung cấp cơ chế giao tiếp giữa máy trạm và router trong cùng mạng con. CGMP
hay giám sát IGMP (IGMP snooping) giúp các switch học thông tin máy trạm nào đã nhận lưu lượng cho các ứng dụng
Multicast và các máy trạm này gắn vào cổng nào của switch.
• Phải có một giao thức định tuyến Multicast trong đó cho phép các router truyền các dữ liệu Multicast từ máy chủ đến các
máy trạm mà không làm tốn tài nguyên mạng. Một vài giao thức định tuyến Multicast là DVMRP (Distance Vector
Multicast Routing Protocol), MOSPF (Multicast Open Shortest Path First), và PIM-DM (Protocol Independent Multicast
Dense Mode) và PIM-SM (Protocol Independent Multicast Sparse Mode)..
Cơ chế Broadcast

6
DEMO hoạt động multicast
• Giả sử rằng một ứng dụng hình ảnh được cài đặt trên một máy chủ dùng địa chỉ
Multicast là 225.5.5.5. Các máy trạm từ 1 đến 49, nằm trên các kết nối WAN thì
không quan tâm đến lưu lượng này. Các máy trạm từ 50 đến 100 thì quan tâm đến
việc nhận lưu lượng cho ứng dụng này và chạy ứng dụng trên PC.
• Khi các máy trạm chạy ứng dụng Multicast, các máy trạm sẽ tham gia vào nhóm, có
nghĩa là các máy trạm bây giờ muốn nhận các gói Multicast được gửi về địa chỉ
225.5.5. Các máy trạm từ 50 đến 100 tham gia vào nhóm 225.5.5.5 và báo cho R2
thông qua IGMP rằng các máy trạm này muốn nhận lưu lượng. Các ứng dụng
Multicast tính toán địa chỉ lớp 2 0x0100.5e05.0505 từ địa chỉ lớp 3 225.5.5.5 và các
card mạng của các máy từ 50 đến 100 sẽ lắng nghe địa chỉ này bên cạnh các lưu
lượng đến địa chỉ MAC BIA.
• Một giao thức định tuyến Multicast được cấu hình giữa R1 và R2 sao cho các router
có thể truyền các lưu lượng Multicast. R2 có một kết nối đến mạng Frame Relay và
hai cổng Ethernet kết nối đến hai switch, Sw2 và Sw3. R2 biết rằng nó có các máy
trạm trên cả hai kết nối muốn nhận lưu lượng của nhóm 225.5.5.5. Cả hai switch
cũng sẽ ghi nhận các cổng của các máy trạm muốn nhận Multicast thông qua hai
giao thức CGMP và IGMP snooping. Một gói Multicast truyền tín hiệu hình ảnh từ
máy chủ trên kết nối Ethernet đến R1 và R1 sẽ truyền một gói tin Multicast trên kết
nối WAN đến R2. Khi R2 nhận gói Multicast, R2 sẽ nhân bản gói Multicast và truyền
trên từng kết nối Ethernet.
• Vì đây là gói tin Multicast, R2 sẽ tính địa chỉ lớp 2 0x0100.5e05.0505 và dùng nó
như địa chỉ MAC đích, sau đó R2 sẽ truyền khung tin này đến cả hai switch. Khi các
switch nhận được các khung tin này, switch sẽ truyền khung tin ra các cổng phù
hợp. Khi các máy trạm nhận được các gói này, card mạng sẽ so sánh địa chỉ MAC
đích với địa chỉ Multicast mà máy đang lắng nghe. Nếu là đúng, card mạng sẽ thông
báo cho các lớp cao hơn xử lý gói tin.
Hệ thống hoạt động dựa trên Multicast
7
DEMO hoạt động multicast
• Giả sử các máy trạm từ 1 đến 40 cũng muốn
nhận lưu lượng cho nhóm 225.5.5.5. R2 đã
sẵn sàng truyền lưu lượng đến cả 2 switch.
Tuy nhiên, mặc dù đã có thêm 49 máy mới
nhận lưu lượng Multicast, tải trên các thiết bị
mạng và nhu cầu băng thông trên kết nối
WAN không đổi. Tải trên SW2 thì có thể tăng
bởi vì nó phải thực hiện việc nhân bản 49 lần
và truyền nó trên 49 cổng.
• Multicast cũng có vài điểm bất lợi:
✓ Multicast thì dùng UDP nên không tin cậy, thiếu cơ
chế cửa sổ điều khiển lỗi và cơ chế giảm luồng
nên có thể gây ra nghẽn.
✓ Một vài cơ chế Multicast có thể gây ra gói tin bị
trùng lắp.
Hệ thống hoạt động dựa trên Multicast
8
Địa chỉ IP Multicast
• Các ứng dụng Multicast luôn luôn dùng địa chỉ Multicast. Địa chỉ Multicast này
tượng trưng cho các ứng dụng Multicast và còn được gọi là các nhóm. Không
giống như trong địa chỉ Unicast (một địa chỉ tượng trưng cho một máy trạm), một
địa chỉ Multicast được dùng như một địa chỉ đích trên một gói tin IP chỉ ra rằng gói
tin đang mang lưu lượng cho một ứng dụng Multicast.
✓ Ví dụ, nếu một gói Multicast mang địa chỉ đích là 225.5.5.5, điều này có ý nghĩa là “Tôi
đang mang lưu lượng cho ứng dụng Multicast có địa chỉ nhóm là 225.5.5.5, bạn có muốn
dùng không?”. Một địa chỉ Multicast sẽ không bao giờ được gán đến một thiết bị mạng, vì
vậy nó sẽ không bao giờ dùng như một địa chỉ nguồn. Một địa chỉ nguồn trên một gói
Multicast cũng sẽ giống như mọi gói tin Unicast, luôn luôn dùng một địa chỉ Unicast.

• Các router và switch phải có phương thức để phân biệt lưu lượng dạng Multicast
với dạng Unicast hay Broadcast. Điều này thực hiện thông qua việc gán địa chỉ IP,
bằng cách dùng địa chỉ lớp D từ 224.0.0.0 đến 239.255.255.255 chỉ cho Multicast.
Các thiết bị mạng có thể nhanh chóng lọc ra các địa chỉ Multicast bằng cách đọc
4 bit bên trái của một địa chỉ. Bốn bit này của một địa chỉ Multicast luôn luôn bằng
1110. Không giống như dãy địa chỉ lớp A,B và C, địa chỉ lớp D này không có quá
trình chia nhỏ(mạng conting). Vì vậy có đến 228 địa chỉ nhóm Multicast được trích
dẫn ra từ lớp D này. Các địa chỉ Multicast là tượng trưng một nhóm, không tượng
trưng cho máy trạm

9
Địa chỉ IP Multicast
• IP Class:
• A: 0xxxxxxx.a.b.c
• B: 10xxxxxx.a.b.c
• C: 110xxxxx.a.b.c
• D: 1110xxxx.a.b.c

• Các địa chỉ “224.0.0”:


• Link Local Addresses. IANA giữ các địa chỉ “224.0.0” để phục vụ routing cho mạng local. Các địa chỉ “link
local” không bao giờ được route liên mạng, chỉ để các trạm liên lạc trực tiếp qua liên kết vật lý với gói tin có
TTL = 1
• Mapping đến các địa chỉ multicast của mạng vật lý (ethernet)

• Một số địa chỉ link local:


• 224.0.0.1: các trạm trong mạng mà có hỗ trợ multicast
• 224.0.0.2: các router trong mạng
• 224.0.0.5: các OSPF routers
• 224.0.0.12: các DHCP Server
• 224.0.0.13: các router hỗ trợ PIM trong mạng (PIM: multicast routing)
• 224.0.0.22: router hỗ trợ IGMP
• 224.0.0.251: multicast DNS [RFC6762]
• Các địa chỉ multicast khác: https://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml

10
Ánh xạ địa chỉ IP Multicast sang địa chỉ MAC
• Làm thế nào mà một router và switch kết hợp một địa chỉ Multicast của IP với một địa chỉ MAC. Việc
gán địa chỉ Multicast vào một nhóm lớp 3 sang một nhóm Multicast thường sẽ tự động tạo ra địa chỉ
Multicast lớp 2. Do không có cơ chế tương đương với cơ chế ARP, một dạng giá trị đặc biệt dành
riêng cho địa chỉ MAC của Multicast sẽ được dùng. Các địa chỉ này bắt đầu bằng 0100.5e. Phần 28
bit sau của địa chỉ Multicast IP sẽ được ánh xạ vào 23 bit thấp của địa chỉ MAC bằng một giải thuật
đơn giản. Địa chỉ MAC được hình thành bằng cách dùng dạng OUI 01005E, sau đó là giá trị 0 và
sau cùng là 23 bit địa chỉ của L3 Multicast.

11
Ánh xạ địa chỉ IP Multicast sang địa chỉ MAC
• Bước 1: Chuyển đổi địa chỉ IP sang dạng nhị phân. Lưu ý 4 bit đầu tiên luôn luôn là địa chỉ 1110
cho bất kỳ địa chỉ Multicast nào.
• Bước 2: Thay thế 4 bit đầu tiên 1110 của địa chỉ IP với 6 ký tự (24 bit) 01-00-5E như là địa chỉ bắt
đầu trong tổng số 12 ký tự dạng thập lục phân (48 bit) của địa chỉ Multicast MAC.
• Bước 3: Thay thế 5 bit kế tiếp của dạng địa chỉ IP với một bit 0 trong không gian địa chỉ MAC.
• Bước 4: Chép 23 bit cuối của địa chỉ IP dạng nhị phân vào 23 bit cuối của địa chỉ Multicast.
• Bước 5: Chuyển đổi 24 bit cuối của địa chỉ Multicast từ dạng nhị phân sang dạng 6 số thập lục
phân.
• Bước 6: Kết hợp 6 chữ số hexa đầu tiên 01-00-5E với 6 chữ số hexa vừa tính ở bước 5 để hình
thành địa chỉ Multicast MAC đầy đủ.

12
Ánh xạ địa chỉ IP Multicast sang địa chỉ MAC
• Hình trước cho thấy cơ chế ánh xạ
địa chỉ. Chỉ có 23 bit cuối của địa
chỉ là được chép từ địa chỉ IP sang
địa chỉ MAC. Tuy nhiên chú ý rằng
có 5 bit của địa chỉ IP không được
chuyển sang địa chỉ MAC. Khả
năng này làm cho nảy sinh một vấn
đề là có thể có 32 địa chỉ Multicast
khác nhau có thể ánh xạ vào cùng
một địa chỉ MAC. Do sự nhập
nhằng này, một máy trạm Multicast
có một vấn đề nhỏ khi nó nhận một
khung tin Ethernet của một địa chỉ
Multicast. Một MAC có thể tương
ứng với 32 địa chỉ Multicast khác
nhau. Vì vậy, khi một máy trạm
phải nhận và kiểm tra tất cả các
khung tin có MAC mà nó quan tâm.
Sau đó máy trạm này phải kiểm tra
phần địa chỉ IP bên trong mỗi
khung tin để nhận ra phần địa chỉ
của từng nhóm Multicast.

13
Đăng ký địa chỉ IP unicast vào “nhóm”
$ netstat -4 -g -n Linux
IPv6/IPv4 Group Memberships
• Nguyên tắc hoạt động: Interface RefCnt Group
--------------- ------ ---------------------
• Một địa chỉ lớp D tương ứng với một nhóm trạm lo 1 224.0.0.1
nhận (group identifier) enp0s9 1 224.0.0.1
enp0s10 1 224.0.0.1
• Gói tin gửi đến địa chỉ lớp D sẽ được các router xử
lý “nhân” tại vị trí phù hợp để gửi đến từng trạm $ sudo systemctl start pimd
$ netstat -4 -g -n
nhận (thay vì “nhân” tại gốc ~ n x unicast) IPv6/IPv4 Group Memberships
Interface RefCnt Group
• Giao thức 2 pha: --------------- ------ ---------------------
lo 1 224.0.0.1
• Join: quá trình các host đăng ký với các router để enp0s9 1 224.0.0.13
enp0s9 1 224.0.0.22
join vào một địa chỉ lớp D enp0s9 2 224.0.0.1
• Join tự động: tùy theo chức năng của trạm mà tự enp0s10 1 224.0.0.13
enp0s10 1 224.0.0.1
động join vào các địa chỉ “224”
> netsh Windows
• Join chủ động: đăng ký địa chỉ IP của mình với một netsh> int ip
địa chỉ IP multicast netsh interface ipv4> show joins

• Broadcast (multicast): quá trình lan truyền gói tin Interface 25: Wi-Fi
theo địa chỉ multicast đến các trạm đã join vào địa
chỉ này trong pha “join”. Scope
----------
References
----------
Last
----
Address
----------------
0 0 Yes 224.0.0.1
0 3 Yes 224.0.0.251
0 1 Yes 224.0.0.252
0 2 Yes 14
239.255.255.250
Xử lý địa chỉ nhóm trong router
• IPM = [IPX, IPY, IPz]
• IPM phải được cấu hình tại tất cả các router multicast r.table:
IPM → X
trong hệ thống để router nhận biết và xử lý
unicast routing table:
gói tin IP multicast netX → R2 X
netY → R3 R2
• IPM được xử lý tại các router netZ → R3
như một “destination network”
R1 Y
• Gói tin multicast: IPS → IPM R4

• Router nhận gói tin IP, đối chiếu các điạ chỉ S
IP trong gói tin với các “dòng multicast” multicast r.table:
trong bảng routing ➔ nhân bản gói tin IP IPM → R2
IPM → R3 R3 R5 Z
theo từng “dòng” phù hợp & chuyển tiếp gói
tin theo “next hop” multicast r.table:
IPM → R4
IPM → R5

multicast r.table:
IPM → Z

15
Multicast Demo H1

• Host H1 phát tin theo nhóm 226.96.1.1 enp0s9: 192.168.1.120

H1:~$ iperf -c 226.96.1.1 -u R1


------------------------------------------------------------
Client connecting to 226.96.1.1, UDP port 5001 enp0s9: enp0s10: 192.168.1.1
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust) 10.10.1.1
Setting multicast TTL to 1 H2
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
R2
enp0s3: 192.168.2.1
enp0s10:
• Router R1 nhận được gói tin trên liên kết mạng với H1 10.10.2.1

R1:~$ sudo tcpdump -i enp0s10 | grep 226.96.1.1


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp04s10, link-type EN10MB (Ethernet), capture size 262144 bytes enp0s9:
10:25:11.625716 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470 10.10.2.2
enp0s10: 192.168.3.1
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470
10:25:11.648147 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470 R3
enp0s10: 192.168.3.115

H3

16
Multicast Demo (2) H1

• Router R1 không chuyển tiếp gói tin từ enp0s10 sang enp0s9 enp0s9: 192.168.1.120

R1:~$ sudo tcpdump -i enp0s9 | grep 226.96.1.1 R1


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes enp0s9: enp0s10: 192.168.1.1
10.10.1.1
H2

• Tạo luật forward gói tin multicast trong R1:


enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
R1(config)# interface enp0s10 R2
R1(config-if)# ip mroute enp0s9 226.96.1.1 192.168.1.120
R1(config-if)# end enp0s3: 192.168.2.1
enp0s10:
R1# show ip mroute 10.10.2.1
Proto: I=IGMP P=PIM S=STATIC
Source Group Proto Input iVifI Output oVifI TTL Uptime
192.168.1.120 226.96.1.1 S enp0s10 5 enp0s9 4 1 00:00:42 enp0s9:
10.10.2.2
enp0s10: 192.168.3.1

• Router R1 chuyển tiếp gói tin sang kết nối enp0s9 R3


R1:~$ sudo tcpdump -i enp0s9 | grep 226.96.1.1 enp0s10: 192.168.3.115
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes
10:25:11.625716 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470 H3
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470

17
Multicast Demo (3) H1

• Router R2 nhận gói multicast trên enp0s9 nhưng không chuyển tiếp enp0s9: 192.168.1.120

R2:~$ sudo tcpdump -i enp0s9 | grep 226.96.1.1 R1


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes enp0s9: enp0s10: 192.168.1.1
10:25:11.625716 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470 10.10.1.1
H2
R2:~$ sudo tcpdump -i enp0s3 | grep 226.96.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
R2
• Tạo luật forward gói tin multicast trong R2: enp0s10:
enp0s3: 192.168.2.1
R2# show ip mroute 10.10.2.1
Proto: I=IGMP P=PIM S=STATIC
Source Group Proto Input iVifI Output oVifI TTL Uptime
192.168.1.120 226.96.1.1 S enp0s9 5 enp0s3 4 1 00:00:42 enp0s9:
192.168.1.120 226.96.1.1 S enp0s9 5 enp0s10 4 1 00:00:42 10.10.2.2
enp0s10: 192.168.3.1

R3
• Router R2 chuyển tiếp gói tin sang 2 kết nối enp0s10 và enp0s3 enp0s10: 192.168.3.115

R2:~$ sudo tcpdump -i enp0s10 | grep 226.96.1.1


tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes H3
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470

18
Multicast Demo (4) H1

• Host H2 nhận gói multicast phát từ H1 qua cây R1 ➔ R2 enp0s9: 192.168.1.120

H2:~$ iperf -s -u -B 226.96.1.1 -i 1 R1


------------------------------------------------------------
Server listening on UDP port 5001 enp0s9: enp0s10: 192.168.1.1
Binding to local address 226.96.1.1 10.10.1.1
Joining multicast group 226.96.1.1 H2
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------ enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
[ 3] local 226.96.1.1 port 5001 connected with 192.168.1.120 port 34116 R2
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
enp0s3: 192.168.2.1
[ 3] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec 0.045 ms 0/ 90 (0%) enp0s10:
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.061 ms 0/ 89 (0%) 10.10.2.1
[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.053 ms 0/ 89 (0%)

enp0s9:
• Router R3 nhận được gói tin multicast phát từ H1 qua cây R1 ➔ R2 10.10.2.2
enp0s10: 192.168.3.1
R2:~$ sudo tcpdump -i enp0s9 | grep 226.96.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
R3
enp0s10: 192.168.3.115
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470
H3

19
Multicast Demo (5) H1

• Tạo luật forward gói tin multicast trong R3: enp0s9: 192.168.1.120

R3# show ip mroute R1


Proto: I=IGMP P=PIM S=STATIC
Source Group Proto Input iVifI Output oVifI TTL Uptime enp0s9: enp0s10: 192.168.1.1
192.168.1.120 226.96.1.1 S enp0s9 5 enp0s10 4 1 00:00:42 10.10.1.1
H2

• Router R3 chuyển tiếp gói tin sang enp0s10: enp0s9:


10.10.1.2 enp0s10: 192.168.2.123
R3:~$ sudo tcpdump -i enp0s10 | grep 226.96.1.1
R2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode enp0s3: 192.168.2.1
listening on enp0s10, link-type EN10MB (Ethernet), capture size 262144 bytes enp0s10:
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470 10.10.2.1
10:25:11.637009 IP 192.168.1.120.51134 > 226.96.1.1.5001: UDP, length 1470

• Host H3 nhận gói multicast phát từ H1 qua cây R1 ➔ R2 ➔ R3 enp0s9:


10.10.2.2
enp0s10: 192.168.3.1
H3:~$ iperf -s -u -B 226.96.1.1 -i 1
. . . .
R3
[ 3] local 226.96.1.1 port 5001 connected with 192.168.1.120 port 34116 enp0s10: 192.168.3.115
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec 0.045 ms 0/ 90 (0%)
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.061 ms 0/ 89 (0%)
H3

20
Tổng kết demo: Dựng cây multicast thủ công H1
R2$ route -n
Kernel IP routing table
enp0s9: 192.168.1.120
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 R1
10.10.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s10
192.168.1.0 10.10.1.1 255.255.255.0 UG 0 0 0 enp0s9
enp0s9: enp0s10: 192.168.1.1
192.168.2.0 10.10.2.2 255.255.255.0 UG 0 0 0 enp0s10
10.10.1.1
H2
Thông tin để đối
Khi H1 multicast đến H2: chiếu với các
enp0s9:
trường địa chỉ 10.10.1.2 enp0s10: 192.168.2.123
R2> show ip mroute R2
trong gói tin IP
Proto: I=IGMP P=PIM S=STATIC
enp0s3: 192.168.2.1
enp0s10:
Source Group Proto Input iVifI Output oVifI TTL Uptime 10.10.2.1
192.168.1.120 226.96.1.1 S enp0s9 4 enp0s3 2 1 00:08:06 Multicast
zone (tree)
Multicast protocol: Input & Output enp0s9:
Thêm H3 nhận multicast: tạo đường định interface trong 10.10.2.2
enp0s10: 192.168.3.1
R2> show ip mroute tuyến static hoặc tuyến multicast
Proto: I=IGMP P=PIM S=STATIC bằng m.protocol R3
enp0s10: 192.168.3.115
Source Group Proto Input iVifI Output oVifI TTL Uptime
192.168.1.120 226.96.1.1 S enp0s9 4 enp0s3 2 1 00:09:31
192.168.1.120 226.96.1.1 S enp0s9 4 enp0s10 5 1 00:00:09 H3

21
Tổng kết demo(2): Gắn nút lá vào cây multicast H1

• Giao diện kết nối mạng của mỗi host có thể enp0s9: 192.168.1.120

được join với địa chỉ multicast (giống như H2:~$ ip -4 maddress
1: lo R1
được gán nhiều địa chỉ IP unicast) inet 224.0.0.1
enp0s9: enp0s10: 192.168.1.1
• Khi gói tin multicast IP được router forward 2: enp0s10 10.10.1.1
inet 224.0.0.1
đến giao diện kết nối mạng của host mà đã H2

join vào địa chỉ multicast (nút lá) ➔ host xử


lý nhận gói tin như nhận gói tin IP unicast enp0s9:
10.10.1.2 R2
enp0s10: 192.168.2.123
thông thường
enp0s3: 192.168.2.1
• Trường hợp nguồn phát được xác định H2 đăng ký nhận multicast: enp0s10:
10.10.2.1
trước (source specific multicast), các giao H2:~$ iperf -s -u -B Multicast
thức liên quan đến pha “join” của multicast 226.96.1.1 -i 1 zone (tree)
chịu trách nhiệm cập nhật bảng routing của enp0s9:
10.10.2.2
các router trong multicast zone (tree) và join H2:~$ ip -4 maddress enp0s10: 192.168.3.1
1: lo
host vào địa chỉ multicast tương ứng inet 224.0.0.1 R3
enp0s10: 192.168.3.115
• Trường hợp nguồn phát không xác định khi 2: enp0s10
inet 226.96.1.1
join, router chỉ có thể lưu các thông tin đăng inet 224.0.0.1
ký này và đợi khi nguồn phát bắt đầu phát H3
tin để thiết lập cây multicast

22
Thực hành: Static Multicast H1

• Tạo cây multicast R1 ➔ R2 bằng phương pháp static enp0s9: 192.168.1.120

R1
• Tạo nguồn phát trên H1 với iperf -c enp0s10: 192.168.1.1
enp0s9:
• Tạo trạm nghe trên H2 với iperf -s 10.10.1.1
H2

• Theo dõi các gói tin multicast gửi từ H1 vào nhóm và enp0s9:
gói tin được chuyển tiếp qua R1, R2 đến H2 10.10.1.2 R2
enp0s10: 192.168.2.123

enp0s3: 192.168.2.1
• Thêm R3 vào cây multicast cũng bằng phướng pháp enp0s10:
10.10.2.1
static để hoàn thành cây R1 ➔ R2 ➔ R3
• Tạo trạm nghe trên H3 với iperf -s enp0s9:
10.10.2.2
enp0s10: 192.168.3.1

• Theo dõi các gói tin multicast gửi từ H1 vào nhóm và R3


được chuyển tiếp qua R1, R2, R3 đến H3 enp0s10: 192.168.3.115

H3

23
Internet Group Management
Protocol (IGMP)
Giới thiệu chung
• Giao thức IGMP phát triển từ giao thức quan hệ giữa các Máy trạm (Host Membership
Protocol), được mô tả trong tài liệu của Deering. IGMP phát triển từ IGMP phiên bản 1
(RFC1112) đến IGMP phiên bản 2 (RFC2236) và đến phiên bản cuối cùng IGMP phiên bản 3
(RFC3376). Các thông điệp IGMP được gửi bên trong gói tin IP với trường số của giao thức
(protocol number) bằng 2, trong đó trường TTL có giá trị bằng 1. Các gói IGMP chỉ được
truyền trong LAN và không được tiếp tục chuyển sang LAN khác do giá trị TTL của nó. Hai
mục đích quan trọng nhất của IGMP là:
✓ Thông báo cho router chạy Multicast rằng có một máy muốn nhận lưu lượng Multicast của một
nhóm cụ thể.
✓ Thông báo cho router rằng một có một máy muốn rời một nhóm Multicast (nói cách khác, có một
máy không còn quan tâm đến việc nhận Multicast lưu lượng nữa). Các router thường dùng IGMP
để duy trì thông tin cho từng cổng của router là những nhóm Multicast nào router cần phải chuyển
và những máy trạm nào muốn nhận.

25
Giới thiệu chung
• Trước khi một máy trạm có thể nhận bất kỳ một Multicast lưu lượng nào, một ứng dụng
Multicast phải được cài đặt và chạy trên máy trạm đó. Sau khi một máy trạm tham gia vào một
nhóm, phần mềm sẽ tính toán địa chỉ Multicast và sau đó card mạng sẽ bắt đầu lắng nghe địa
chỉ Multicast MAC.
• Trước khi một máy trạm hoặc một người dùng muốn tham gia vào một nhóm, người dùng cần
phải biết nhóm nào đang tồn tại và làm thế nào để tham gia vào nhóm đó. Đối với các ứng
dụng mức doanh nghiệp, người dùng chỉ cần đơn giản nhấp vào một liên kết trên một trang
web hoặc địa chỉ Multicast có thể cấu hình trước trên máy trạm.
• Khi người dùng không còn muốn dùng ứng dụng Multicast nữa, người dùng phải rời khỏi
nhóm. Ví dụ, người dùng đơn giản chỉ cần đóng ứng dụng Multicast để rời khỏi nhóm.
• Làm thế nào một router biết được các máy cần nghe lưu lượng Multicast? Để nhận lưu lượng
Multicast từ một nguồn, cả nguồn và các máy nhận đầu tiên phải gia nhập (join) vào một nhóm
Multicast. Nhóm này được xác định thông qua địa chỉ Multicast. Một máy trạm có thể tham gia
vào một nhóm Multicast bằng cách gửi các yêu cầu đến router gần nhất. Tác vụ này được
thực hiện thông qua giao thức IGMP.

26
IGMP version 1
• Cứ mỗi 60 giây, một router trên mỗi phân đoạn mạng sẽ gửi truy vấn đến tất cả các máy trạm để
kiểm tra xem các máy trạm này có còn quan tâm nhận Multicast lưu lượng nữa không? Router này
gọi là router truy vấn IGMP phiên bản 1 (Querier) và chức năng của nó là mời các máy trạm tham
gia vào nhóm.
• Nếu một máy trạm muốn tham gia vào một nhóm, hoặc nó muốn tiếp tục nhận lưu lượng từ một
nhóm mà nó đã tham gia, nó phải trả lời lại bằng thông điệp đáp trả (membership report).
• Lưu ý: Các máy trạm có thể tham gia vào các nhóm Multicast ở bất kỳ thời điểm nào.
• Tuy nhiên IGMP v1 không có cơ chế để cho phép một máy trạm rời khỏi một nhóm nếu máy trạm
đó không còn quan tâm đến nội dung của nhóm Multicast đó. Thay vào đó, router sẽ kết luận là
một cổng giao tiếp không còn thuộc về một nhóm Multicast nào nếu router không nhận được thông
điệp đáp trả (membership report) trong ba chu kỳ truy vấn liên tiếp. Điều này có nghĩa là, ở chế
độ mặc định, các lưu lượng Multicast vẫn gửi vào một phân đoạn mạng trong ba chu kỳ truy vấn
liên tiếp sau khi tất cả các thành viên của nhóm không còn lắng nghe Multicast lưu lượng nữa.
Ngoài ra, router không có giữ một danh sách đầy đủ các máy thành viên cho từng nhóm Multicast.
Thay vào đó, nó cần phải lưu những nhóm Multicast nào là đang tồn tại trên những cổng nào của
nó.
• Để tham gia vào một nhóm Multicast, một máy trạm sẽ gửi một thông điệp đăng ký tham gia vào
nhóm đến router cục bộ của nó. Thông điệp này có tên là báo cáo về tình trạng thành viên của
IGMP (Membership Report IGMP). Thông điệp này sẽ thông báo cho router về địa chỉ nhóm
Multicast mà máy trạm muốn tham gia vào. Địa chỉ Multicast tượng trưng cho tất cả các máy
224.0.0.1 được dùng như địa chỉ đích. Trong thông điệp này có chứa địa chỉ nhóm Multicast.

27
IGMP version 1

28
IGMP version 1

Cơ chế giảm thông điệp báo cáo của IGMP phiên bản 1

29
IGMP version 1

Trong IGMP phiên bản 1, một máy trạm không cần thiết phải nhận thông điệp truy vấn thì mới gửi thông điệp
báo cáo. Một máy trạm có thể gửi thông điệp báo cáo bất kỳ lúc nào một người dùng khởi động một chương
trình Multicast. Đặc điểm này giúp giảm thời gian một máy trạm phải chờ để nhận lưu lượng Multicast.

30
IGMP version 2
IGMP phiên bản 2 giới thiệu vài sự khác biệt so với phiên bản đầu tiên. Các gói tin truy vấn bây giờ
được gọi là gói tin truy vấn tổng quát (General Queries). Các gói này có thể gửi tới địa chỉ tất cả các
máy trạm hoặc tới từng nhóm cụ thể.
Một cải tiến khác nữa là các máy trạm được phép rời khỏi nhóm. Khi một máy trạm quyết định rời khỏi
một nhóm nó đã tham gia, nó sẽ gửi thông điệp rời bỏ nhóm (Leave Group) đến địa chỉ tất cả các
router là 224.0.0.2. Tất cả các router trên một phân đoạn mạng nội bộ sẽ lưu ý thông điệp này và
router truy vấn sẽ tiếp tục quá trình. Router sẽ trả lời thông điệp trên bằng thông điệp truy vấn gửi theo
nhóm. Thông điệp này sẽ hỏi rằng có còn máy trạm nào muốn nhận lưu lượng cho nhóm đó nữa
không? Bất cứ máy trạm nào cũng phải trả lời lại bằng thông điệp báo cáo quan hệ (membership
report). Nếu khác đi, router sẽ kết luận một cách an toàn là không cần thiết chuyển lưu lượng cho
nhóm đó trên phân đoạn mạng đó.
IGMP phiên bản 2 có thêm một số tính năng mới:
✓ Truy vấn nhóm xác định (Group specific Query): cho phép router gửi truy vấn cho một nhóm cụ thể thay vì
cho tất cả các nhóm.
✓ Thời gian đáp ứng tối đa (Maximum response Time): Một trường mới trong gói tin truy vấn, cho phép hiệu
chỉnh khoảng thời gian cho thông điệp báo cáo quan hệ máy trạm. Đặc điểm này có thể hữu ích khi một số
lớn các nhóm tồn tại trên một mạng con và bạn muốn giảm số thông điệp trả lời bằng cách kéo dài những
thông điệp trả lời ra một khoảng thời gian dài hơn.
✓ Thông điệp rời bỏ nhóm (Leave group message): cho phép máy trạm thông báo cho router rằng máy trạm
muốn rời khỏi nhóm.
✓ Bầu chọn router truy vấn: cung cấp cơ chế cho phép bầu chọn router gửi ra các thông điệp truy vấn khi có
nhiều router cùng kết nối vào một mạng con.

31
IGMP version 2
Thông điệp báo cáo quan hệ sẽ được gửi khi một máy trạm muốn tham gia một nhóm. Thỉnh
thoảng, thông điệp loại này cũng được dùng để trả lời cho loại thông điệp truy vấn từ router. Khi
một máy trạm muốn tham gia một nhóm, nó sẽ không chờ gói tin truy vấn từ router. Thay vào đó,
nó sẽ gửi thông điệp báo cáo quan hệ. Địa chỉ đích của thông điệp báo cáo quan hệ sẽ là địa chỉ
đích của nhóm. Để đảm bảo rằng router nhận được thông điệp này, máy trạm sẽ gửi vài thông
điệp, cách nhau mỗi 10 giây.

Định dạng của gói tin IGMP phiên bản 2

32
IGMP version 2
Bước 1: H1 gửi một thông điệp rời bỏ nhóm
IGMP phiên bản 2. Địa chỉ đích của gói tin là
224.0.0.2. Đây là địa chỉ của tất cả các router
đang chạy Multicast. Thông điệp này muốn báo
rằng “Tôi không muốn nhận Multicast lưu lượng
của 226.1.1.1”.
Bước 2: R1 sẽ gửi ra một thông điệp cho riêng
nhóm đó. Bởi vì H1 đã quyết định rời khỏi nhóm
226.1.1.1, R1 quyết định ngừng đẩy lưu lượng
của nhóm 226.1.1.1 trên cổng Fa0/0 nếu H1 là
thành viên cuối cùng của 226.1.1.1. Tuy nhiên,
R1 cần phải đảm bảo rằng không còn máy trạm
nào trên cổng này vẫn cần nhận lưu lượng của
nhóm 226.1.1.1. Vì vậy, R1 gửi ra một thông điệp
để xác định có còn thành viên nào của nhóm
226.1.1.1. R1 dùng địa chỉ đích 226.1.1.1 như là
địa chỉ đích trên gói tin sao cho chỉ có các máy
trạm là thành viên của nhóm này là nhận thông
điệp và trả lời. Thông qua thông điệp này, R1 sẽ
hỏi các máy trạm còn lại trong nhóm là “Có còn
ai muốn nhận lưu lượng Multicast cho 226.1.1.1
không?”.
Bước 3: H3 gửi một thông điệp báo cáo quan
hệ. H3 vẫn là một thành viên của nhóm
226.1.1.1. Máy H3 nghe thông điệp truy vấn theo
nhóm và trả lời bằng một thông điệp báo cáo
IGMP phiên bản 2 để thông báo cho router là vẫn
còn thành viên của nhóm 226.1.1.1.

33
Hoạt động của IGMP v2
1. Router gửi thông điệp Membership Query: Một router hoặc một máy chủ mạng IGMP sẽ gửi
thông điệp "Membership Query" đến một địa chỉ multicast đặc biệt (địa chỉ IP: 224.0.0.1) để xác
định các thiết bị mạng có tham gia vào các nhóm multicast nào.
2. Máy trạm phản hồi bằng thông điệp Membership Report: Các thiết bị mạng (như máy tính
hoặc switch) mà đã tham gia vào một nhóm multicast sẽ gửi lại thông điệp "Membership Report"
cho địa chỉ multicast tương ứng để cho biết chúng đang quan tâm và muốn nhận dữ liệu từ
nhóm multicast đó.
3. Cập nhật bảng định tuyến IGMP: Router hoặc máy chủ mạng IGMP nhận các thông điệp
"Membership Report" và cập nhật bảng định tuyến IGMP để biết rằng có thiết bị mạng đã tham
gia vào các nhóm multicast nào. Bảng định tuyến IGMP chứa thông tin về các nhóm multicast và
các thiết bị mạng đã tham gia vào chúng.
4. Gửi thông điệp Leave Group: Khi một thiết bị mạng không còn quan tâm đến một nhóm
multicast nữa, nó có thể gửi thông điệp "Leave Group" cho địa chỉ multicast tương ứng. Thông
điệp này thông báo cho router hoặc máy chủ mạng IGMP rằng thiết bị không cần nhận dữ liệu từ
nhóm multicast đó nữa.
5. Cập nhật bảng định tuyến IGMP và gửi thông điệp Group-Specific Query: Khi router hoặc
máy chủ mạng IGMP nhận được thông điệp "Leave Group", nó sẽ cập nhật bảng định tuyến
IGMP và kiểm tra xem còn thiết bị nào khác còn quan tâm đến nhóm multicast đó hay không.
Nếu không có thiết bị nào khác, router hoặc máy chủ mạng IGMP sẽ gửi thông điệp "Group-
Specific Query" để xác định xem có thiết bị mới nào quan tâm đến nhóm multicast đó hay không.

34
IGMP version3
Trong IGMP phiên bản 1 và IGMP phiên bản 2, khi một máy trạm tham gia vào một nhóm, router
sẽ truyền các lưu lượng cho nhóm đó vào phân đoạn mạng bất chấp địa chỉ nguồn của gói tin. Ví
dụ, giả sử có một buổi hội thảo đa phương tiện đang diễn ra. Một thành viên của nhóm quyết định
phá hỏng phiên hội thảo bằng cách gửi ra một số dữ liệu nhiễu bằng cách nói chuyện hay gửi
nhạc cho các thành viên của nhóm. Mặc dù các ứng dụng đa phương tiện cho phép một người
dùng làm im lặng các thành viên khác, ứng dụng không làm dừng các lưu lượng không mong
muốn phân phối đến máy trạm.

Nếu một nhóm các hacker quyết định phát tán một mạng của một công ty bằng các dữ liệu băng
thông cao dùng cùng địa chỉ nhóm Multicast mà công ty đang dùng, nó có thể tạo ra kiểu tấn công
từ chối dịch vụ. Cả IGMP phiên bản 1 và IGMP phiên bản 2 đều không có cơ chế để ngăn ngừa
một kiểu tấn công như vậy.

IGMP phiên bản 3 cho phép các máy trạm lọc các lưu lượng đi vào dựa trên địa chỉ IP nguồn
thông qua một tính năng gọi là Multicast theo từng nguồn (Source Specific Multicast –SSM).
IGMP phiên bản 3 cho phép các máy trạm chỉ định các lưu lượng xuất phát từ một nguồn cụ thể
hoặc nhận từ tất cả ngoại trừ từ một nguồn nào đó.

35
IGMP version3

Hoạt động của IGMP version 3


36
Summary: Internet Group Management Protocol (IGMP)

• Dùng để join/leave nút (router/host) trong nhóm (multicast IP)


• Cũng có thể cập nhật thông tin multicast routing giữa các router H1

• Chạy trực tiếp trên tầng IP với protocol number=2 (giống ICMP, p.num=1) R1

• IGMPv1 (RFC1112), v2 (RFC2236), v3 (RFC3376)


• IPv6: IGMP
routing
• ICMPv6 cài đặt chức năng Multicast Listener Discovery (MDL) R2 H2
update
• MLDv1 tương tự IGMPv2
• MLDv2 tương tự IGMPv3 IGMP report
• IGMP query:
IGMP query
• Gửi đến 224.0.0.1 hoặc group address
• Router truy vấn host
R3
• IGMP report: H3
• Gửi đến 224.0.0.22
• Host yêu cầu router
• Thay đổi thông tin nhóm

37
IGMP Message: Query
• General Query:
• Group Address = 0
• Router gửi well known multicast (224.0.0.1) để thu thập
thông tin routing mạng
• Router gửi well known multicast (224.0.0.22) để thu thập
thông tin liên quan đến IGMP IGMP Query
0 1 2 3
• Group-Specific Query 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Group Address = group muticast IP address | Type = 0x11 | Max Resp Code | Checksum
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|

• Router gửi query đến địa chỉ multicast group để yêu cầu thu | Group Address
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|

thập thông tin trong group | Resv |S| QRV | QQIC | Number of Sources (N) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

• Source Addresses: |
+-
Source Address [1] |
-+
| Source Address [2] |
• Các địa chỉ nguồn phát (unicast) của nhóm +- . -+
. . .
. . .
+- -+
| Source Address [N] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

38
IGMP Message: Report
Group Record
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IGMP Report | Record Type | Aux Data Len | Number of Sources (N) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3 | Multicast Address |
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address [1] |
| Type = 0x22 | Reserved | Checksum | +- -+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . . . . . .
| Reserved | Number of Group Records (M) | +- -+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address [N] |
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. Group Record [1] . | |
| . . . . | . Auxiliary Data .
| | | |
. Group Record [M] . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Current-State Record: trả lời khi nhận được query


• MODE_IS_INCLUDE: nhận nguồn phát
Tôi (sender) muốn làm gì với nhóm • MODE_IS_EXCLUDE: không nhận nguồn phát
(multicast address) cùng với nguồn phát Filter-Mode-Change Record: thay đổi chế độ làm việc (filter mode)
(source address) • CHANGE_TO_INCLUDE_MODE
• CHANGE_TO_EXCLUDE_MODE
Source-List-Change Record: thêm hoặc xóa nguồn phát trong nhóm
• ALLOW_NEW_SOURCES
• BLOCK_OLD_SOURCES

39
IGMP Message: Leave
• IGMPv3 không thiết kế thông điệp để yêu cầu leave như trường hợp join bằng IGMP Report, thay vào
đó có thể dùng thông điệp chuyển trạng thái (state-chage report) kết hợp với nguồn phát.
• CHANGE_TO_INCLUDE_MODE & SOURCE = [] R3:~$ sudo tcpdump -n -i enp0s10 -vv
• Host gửi report thông báo hoạt đông của mình 192.168.3.115 > 224.0.0.22: \
trong nhóm 226.96.1.1 cần chuyển sang chế độ igmp v3 report, 1 group record(s) \
INCLUDE [gaddr 226.96.1.1 to_in { }]
• Nhưng không nhận nguồn phát nào
• ➔ tương đương yêu cầu rời khỏi nhóm này (leave)
• CHANGE_TO_EXCLUDE_MODE & SOURCE = []
R3:~$ sudo tcpdump -n -i enp0s10 -vv
• Host gửi report thông báo hoạt đông của mình 192.168.3.115 > 224.0.0.22: \
trong nhóm 226.96.1.1 cần chuyển sang chế độ igmp v3 report, 1 group record(s) \
EXCLUDE [gaddr 226.96.1.1 to_ex { }]
• Nhưng không có nguồn phát nào
• ➔ tương đương yêu cầu tham gia nhóm với nguồn phát
chưa xác định
• CHANGE_TO_INCLUDE_MODE & SOURCE <> []
• Yêu cầu join vào nhóm với nguồn phát xác định

40
IGMP demo H1

• Join H3 vào nhóm multicast với nguồn phát H1. Thông điệp IGMP Report được enp0s9: 192.168.1.120

gửi từ H3 cho R3: R1


H3:~$ iperf -s -u -B 226.96.1.1 -H 192.168.1.120 -i 1
------------------------------------------------------------ enp0s9: enp0s10: 192.168.1.1
Server listening on UDP port 5001 10.10.1.1
Binding to local address 226.96.1.1 H2
Joining multicast (S,G)=192.168.1.120,226.96.1.1

enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
R2
• R3 được tự động join vào nhóm multicast cùng với luật chuyển tiếp gói tin từ
enp0s9 sang enp0s10, được thiết lập theo protocol IGMP: enp0s10:
enp0s3: 192.168.2.1
10.10.2.1
R3> show ip igmp groups
Interface Address Group Mode Timer Srcs V Uptime
enp0s9 10.10.2.2 224.0.0.22 EXCL 00:04:03 0 3 00:01:02
enp0s10 192.168.3.1 224.0.0.22 EXCL 00:03:55 0 3 00:01:02 enp0s9:
enp0s10 192.168.3.1 226.96.1.1 INCL --:--:-- 1 3 00:00:35 10.10.2.2
enp0s10: 192.168.3.1
R3> show ip igmp sources
Interface Address Group Source Timer Fwd Uptime
enp0s10 192.168.3.1 226.96.1.1 192.168.1.120 04:12 Y 00:00:46
R3
enp0s10: 192.168.3.115
R3> show ip mroute
Proto: I=IGMP P=PIM S=STATIC

Source Group Proto Input iVifI Output oVifI TTL Uptime H3


192.168.1.120 226.96.1.1 I enp0s9 4 enp0s10 5 1 00:00:13 Join G: 226.96.1.1
- accept from: H1

41
IGMP demo (2) H1

• Join R3 (interface enp0s9) vào nhóm multicast với nguồn phát H1. enp0s9: 192.168.1.120

R1
R3(config)# interface enp0s9
R3(config-if)# ip igmp join 226.96.1.1 192.168.1.120
R3# show ip igmp join enp0s9: enp0s10: 192.168.1.1
Interface Address Source Group Socket Uptime 10.10.1.1
enp0s9 10.10.2.2 192.168.1.120 226.96.1.1 15 00:01:40 H2
R3# show ip igmp sources
Interface Address Group Source Timer Fwd Uptime
enp0s9 10.10.2.2 226.96.1.1 192.168.1.120 04:18 N 00:01:50 enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
enp0s10 192.168.3.1 226.96.1.1 192.168.1.120 04:04 Y 00:17:36 R2
enp0s3: 192.168.2.1
enp0s10:
• Thông điệp IGMP Report được gửi từ R3 cho R2 và R2 tự động join vào nhóm 10.10.2.1
multicast đồng thời thiết lập luật chuyển tiếp gói tin từ enp0s9 sang enp0s10:
Join G: 226.96.1.1
R2> show ip igmp groups enp0s9: - accept from: H1
Interface Address Group Mode Timer Srcs V Uptime 10.10.2.2
enp0s10 10.10.2.1 226.96.1.1 INCL --:--:-- 1 3 00:00:41 enp0s10: 192.168.3.1
R2> show ip igmp sources
Interface Address Group Source Timer Fwd Uptime R3
enp0s10 10.10.2.1 226.96.1.1 192.168.1.120 03:46 Y 00:06:22 enp0s10: 192.168.3.115
R2> show ip mroute
Proto: I=IGMP P=PIM S=STATIC

Source Group Proto Input iVifI Output oVifI TTL Uptime H3


192.168.1.120 226.96.1.1 I enp0s9 4 enp0s10 5 1 00:06:26 Join G: 226.96.1.1
- accept from: H1

42
IGMP demo (3) H1

• Join R2 (interface enp0s9) vào nhóm multicast với nguồn phát H1. enp0s9: 192.168.1.120

R1
R2(config)# interface enp0s9
R2(config-if)# ip igmp join 226.96.1.1 192.168.1.120
R2# show ip igmp join enp0s9: enp0s10: 192.168.1.1
Interface Address Source Group Socket Uptime 10.10.1.1
enp0s9 10.10.1.2 192.168.1.120 226.96.1.1 15 00:01:40 H2
R2# show ip igmp sources Join G: 226.96.1.1
Interface Address Group Source Timer Fwd Uptime - accept from: H1
enp0s9 10.10.1.2 226.96.1.1 192.168.1.120 04:18 N 00:01:50 enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
enp0s10 10.10.2.1 226.96.1.1 192.168.1.120 04:04 Y 00:17:36 R2
enp0s3: 192.168.2.1
enp0s10:
• Thông điệp IGMP Report được gửi từ R2 cho R1 và R1 tự động join vào nhóm 10.10.2.1
multicast đồng thời thiết lập luật chuyển tiếp gói tin từ enp0s10 sang enp0s9:
R1> show ip igmp groups enp0s9:
Interface Address Group Mode Timer Srcs V Uptime 10.10.2.2
enp0s10 192.168.1.1 224.0.0.22 EXCL 00:04:16 0 3 00:00:45 enp0s10: 192.168.3.1
R1> show ip igmp sources
Interface Address Group Source Timer Fwd Uptime R3
enp0s9 10.10.1.1 226.96.1.1 192.168.1.120 04:08 Y 00:00:13 enp0s10: 192.168.3.115
R1> show ip mroute
Proto: I=IGMP P=PIM S=STATIC

Source Group Proto Input iVifI Output oVifI TTL Uptime H3


192.168.1.120 226.96.1.1 I enp0s10 5 enp0s9 4 1 00:00:22

43
IGMP demo (4) H1

• H1 phát gói tin multicast vào nhóm enp0s9: 192.168.1.120

R1
H1:~$ iperf -c 226.96.1.1 -u -T 32 -t 10
------------------------------------------------------------
Client connecting to 226.96.1.1, UDP port 5001 enp0s9: enp0s10: 192.168.1.1
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust) 10.10.1.1
Setting multicast TTL to 32 H2
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
enp0s9:
10.10.1.2 enp0s10: 192.168.2.123
R2

• H3 nhận được gói tin multicast từ H1: enp0s10:


enp0s3: 192.168.2.1
10.10.2.1
H3:~$ iperf -s -u -B 226.96.1.1 -H 192.168.1.120 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.96.1.1 enp0s9:
Joining multicast (S,G)=192.168.1.120,226.96.1.1 10.10.2.2
enp0s10: 192.168.3.1
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
R3
enp0s10: 192.168.3.115
[ 3] local 226.96.1.1 port 5001 connected with 192.168.1.120 port 56432
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 129 KBytes 1.06 Mbits/sec 0.084 ms 0/ 90 (0%)
[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.061 ms 0/ 89 (0%) H3
[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.076 ms 0/ 89 (0%)

44
Thực hành IGMP H1

• Thiết lập hệ thống mạng với 3 router và 3 host enp0s9: 192.168.1.120

R1
• Chạy iperf trên H3 để join vào nhóm multicast với nguồn phát được
xác định là H1 enp0s9: enp0s10: 192.168.1.1
10.10.1.1
• Kiểm tra cấu hình multicast trên router R3 được tự động thiết lập theo H2

gói tin IGMP Report gửi đến từ H3


enp0s9:
enp0s10: 192.168.2.123
• Join R3 (interface enp0s9) vào cây multicast, kiểm tra cấu hình 10.10.1.2 R2
multicast trên router R2 được tự động thiết lập theo gói tin IGMP enp0s10:
enp0s3: 192.168.2.1

Report gửi đến từ R3 10.10.2.1

• Join R2 (interface enp0s9) vào cây multicast, kiểm tra cấu hình
multicast trên router R1 được tự động thiết lập theo gói tin IGMP enp0s9:
10.10.2.2
Report gửi đến từ R2 enp0s10: 192.168.3.1

R3
• Chạy iperf trên H1 để phát gói tin vào nhóm, kiểm tra H3 nhận được enp0s10: 192.168.3.115
gói tin phát trong nhóm
• Bắt các gói tin IGMP giữa H3-R3 và R2-R3 để phân tích H3

45
Multicast zone (tree) Theory
Multicast zone & Multicast tree
Host khác
• Multicast zone IGMP
• Gắn với một địa chỉ group (multicast) R1 H1
• Vùng lan tỏa của gói tin IP gửi theo địa chỉ group, gồm có các host & các router
Multicast
• Multicast tree zone
• Cây!!!
R2 H2
• Host: nút gốc (source) & nút lá (receiver)
• Router: nút bên trong R3> show ip mroute Multicast IGMP
Proto: I=IGMP P=PIM S=STATIC
• Xây dựng cây tree

• Dựng cây thủ công (manual) ➔ static Source Group Proto Input ...
IGMP
192.168.1.120 226.96.1.1 S enp0s9 ...
• IGMP: local link, thêm/bớt nút con vào cha R4
• Dựng cây tự động (dynamic) ➔ multicast routing protocol (nhớ lại routing protocol!!!) R3 H3

• Bài toán nút gốc (source) IGMP Host khác


• Xác định nút gốc thế nào? (source chạy iperf -c & gửi multicast)
• Khi nào? (khi H3 chạy iperf -H, hoặc khi H1 chạy iperf -c) H4
• Nhiều nút gốc? (các host reveiver chạy iperf -H để thiết lập source khác nhau)

• Bài toán xác định cây tối ưu từ đồ thị kết nối mạng

47
Xây dựng cây multicast
• Dựa vào nút gốc, tạo cây trong pha “join” (source specific mode)
hoặc tạo cây trong pha truyền multicast (lúc đó source mới xuất hiện) R1 H1

• Hình thành dần dần, khi có yêu cầu thêm (các) trạm nghe
• Local router nhận IGMP join report từ trạm nghe ➔ tìm đến cây Multicast Join group: 226.96.1.1
accept source: H1
multicast đang có, hoặc khởi tạo cây nếu chưa có tree
H2
R2
• Local router thiết lập cành cây mới (có thể gồm nhiều router trung
gian) để nối vào nút “phù hợp” trên cây multicast đã được thiết lập
• Có nhiều lựa chọn để gắn cành mới, chọn phù hợp nhất? Join group: 226.96.1.1
accept source: H1

• Shortest Path Tree (SPT): cây con (cành) có gốc tại source hoặc một R4
nút trên cây đã có, và lan tỏa đến (các) trạm nghe theo đường đi “tối R3 H3
ưu” Join group:
226.96.1.1 Host khác
• Reverse-Path Forwarding (RPF): quá trình xuất phát từ một nút, qua accept source: H1

các router trung gian để tìm ngược về source ➔ xác định nút cha & H4
tự gắn vào cây multicast (quá trình chuyển tiếp ngược - RPF)

48
Thuật toán tràn (flooding)
• Kỹ thuật đơn giản nhất, chuyển tiếp gói tin multicast đến tất cả các
router, trừ router mà nó nhận được gói tin này R1 H1

• Nếu nhận được gói tin multicast đã xử lý thì không được chuyển tiếp
nữa (lặp chu trình)
• Tối ưu multicast zone bằng các địa chỉ well known local link: 224.0.0.1 R3 H3

• Ưu điểm:
• Đơn giản
• Không đòi hỏi cơ chế routing phức tạp tại các router
• Nhược điểm: R2 H2
• Router cần duy trì cơ chế kiểm soát tránh lặp gói tin theo chu trình ➔ tốn tài nguyên
trong router
• Chỉ phù hợp trong phạm vi liên mạng nhỏ (AS), không thể áp dụng cho mạng
Internet

49
Thuật toán cây khung (Spanning Tree)
• Cải tiến từ thuật toán flooding, tối ưu tài nguyên router
khi xử lý tránh lặp chu trình
• Chọn một tập con trong đồ thi kết nối mạng đầy đủ mà
phủ hết các nút nhưng không có chu trình
➔ cây khung (Spanning Tree)
• Áp dụng thuật toán flooding trên cây khung thay vì trên
toàn bộ kết nối mạng: router flood gói tin multicast theo Xây dựng cây khung từ đồ
các giao diện kết nối mạng mà có tham gia vào cây thị kết nối mạng đầy đủ

khung
• Hạn chế: lưu lượng mạng bị dồn vào các liên kết trên
cây khung, gây tắc nghẽn trong khi các liên kết khác
không được sử dụng
• Xây dựng cây khung spanning tree có thể được thực
hiện bằng các thuật toán như Prim và Kruskal

50
Thuật toán quảng bá ngược (RPB)
• Cải tiến hạn chế lưu lượng dồn vào các nhánh của cây khung
trong thuật toán spanning tree ➔ xây dựng cây khung theo R1 H1
nhóm (source, multicast group)
• Thuật toán Reverse Path Broadcasting (RPB): Multicast SPT (H1-R4)
tree
• Với mỗi cặp (source, multicast group), router xác định liên kết mạng nhận H3
R3
gói tin (với router kề trước trong “forward path”) và xác định đường đi “tối
ưu” từ nó quay trở lại nguồn phát (SPT)
• Nếu liên kết mạng nhận tin thuộc SPT ➔ gắn “cành” vào cây khung
• Nếu liên kết mạng nhận tin không thuộc SPT ➔ bỏ qua
• Triển khai RPB: R4
R2 H2
• Duy trì thông tin (các) cây khung trên tất cả router ➔Multicast Extensions
Join group:
to OSPF (RFC1584) 232.43.211.234 Host khác
• Không trì thông tin (các) cây khung trên tất cả router: accept source: H1

• Multicast router chỉ biết nút cha và các nút con trực tiếp của nó trên cây khung H4
• R4 lần ngược lại SPT để thiết lập các liên kết cha-con cho đến khi gặp router
đầu tiên thuộc cây khung (reverse path!!!) là R3 thì gắn “cành” vào R3
• Distance Vector Multicast Routing Protocol (FRC1075)

51
Thuật toán Core-Based Trees (CBT)
• RPB hoạt động dựa trên yếu tố chính là SPT đến nguồn phát. Áp dụng vào bài toán mạng có
kích thước lớn cộng với việc mỗi router không lưu trữ hình ảnh đầy đủ của kết nối mạng ➔
vấn đề hiệu năng khi xác định SPT
• Giải pháp của CBT (RFC2210):
• Giải quyết hiệu năng SPT bằng cách thiết lập sẵn một cây cây lõi (core tree) là một tập con các router của toàn bộ
hệ thống
• Điều kiện tiên quyết là các cây khung cho mỗi nhóm multicast phải kết nối vào cây lõi này (các gói tin multicast
của tất cả các nhóm sẽ được chuyển trên cây lõi – giống như mạng xương sống của một hệ thống mạng)
• Tạo cây multicast: khi một host muốn tham gia vào một nhóm, thay vì tìm SPT đến source thì chỉ cần tìm SPT đến
một trong các nút thuộc cây lõi, sau đó nối SPT này vào cây lõi
• Gửi multicast từ trong nhóm: source là thành viên của
cây multicast ➔ chuyển gói tin multicast theo địa chỉ nhóm,
qua các router trên cây (chứa cây lõi)
• Gửi multicast từ ngoài nhóm: source gửi unicast đến một
thành viên của cây (nếu không biết thì gửi đến cây lõi) và
phiên multicast sẽ được bắt đầu từ thành viên này
• Việc xác lập các core router để xây dựng cây lõi
có thể được thực hiện thủ công, dựa trên thông số
vật lý của các kết nối mạng cũng như các thông số
thống kê của việc sử dụng mạng

52
Tổng kết các thuật toán multicast
• Thuật toán multicast dựa trên nguốn phát (source)
• Dựa trên xác định SPT đến nguồn phát ➔ tối ưu đường
truyền từ trạm truyền đến trạm nhận
• Router phải xác định SPT và duy trì các đường định tuyến
(của multicast group) theo từng nguồn phát
➔ Bài toán hiệu năng: O(S * G)

• Thuật toán multicast dựa trên cây chung (shared tree)


• Một thông tin gốc được cấu hình trước và chia sẻ với tất cả nhóm
multicast (CBT core tree là một ví dụ).
• Thông tin gốc dùng chung này thường được gọi là Rendezvous Point
(RP) – điểm hẹn gặp.
• Ưu điểm là giảm tính phức tạp ➔ cải thiện hiệu năng: O(G)
• Nhược điểm là không tối ưu đường truyền giữa trạm truyền và trạm
nhận.
• Vấn đề xác định RP dựa trên nhiều yếu tố thủ công, không tự động và
phụ thuốc vào tính toán của người quản trị.
• ➔ dựa vào các cài đặt cụ thể

53
Multicast routing protocol
Mục đích & vai trò
Phân loại
PIM-DM
PIM-SM (SSM & Shared Tree)
Tổng quan về multicast routing protocol
• Giống routing protocol, multicast routing protocol dùng để kết nối các router khi xây dựng
cây multicast (pha 1 trong giao thức 2 pha multicast). Pha 2 (gửi gói tin) được thực hiện
theo cơ chế forwarding dựa trên bảng routing (có cái tiến về nguồn phát & duplicate gói
tin khi cần)
• Multicast routing protocol có thể được triển
khai bằng cách cài đặt một thuật toán
multicast vào một (unicast) routing protocol:
• OSPF: Multicast Extensions to OSPF (RFC1584)
• RIP: Distance Vector Multicast Routing (FRC1075)
• Multicast routing protocol không dựa trên
unicast routing protocol:
• Protocol-Independent Multicast (PIM)
• Xử lý bài toán scalability:
• Phân biệt 2 chế độ hoạt động dựa trên mức độ
phân bổ các trạm tham gia vào nhóm
• PIM Dense Mode (PIM-DM): dày đặc
• PIM Sparse Mode (PIM-SM): thưa thớt

55
Protocol Independent Multicast (PIM)
• Overview
• Independent of unicast routing protocols
• Extract required routing information from any unicast routing protocol
• Work across multiple AS with different unicast routing protocols
• Strategy
• Flooding is inefficient over large sparse internet
• Little opportunity for shared spanning trees
• Focus on providing multiple shortest path unicast routes
• Two operation modes
• Dense Mode (PIM DM): for intra-AS
• Sparse Mode (PIM SM): Inter-AS multicast routing
• PIM SSM (source-specific) is a subset of PIM SM

56
PIM Dense Mode
H1: Source
• PIM DM hoạt động hiệu quả trong môi
trường dày đặc các trạm nghe & router
• Sử dụng thuật toán tràn (flooding) kết
hợp tỉa cành (prun) R1 R2

• Dựng cây multicast: R6


• Áp dụng thuật toán tràn (flooding), cây
multicast ban đầu là toàn bộ kết nối mạng
R3 R4
• Tỉa cành upstream: router áp dụng thuật toán R5
RPF và tỉa đi những cành không thuộc RPF
• Tỉa cành downstream: cây con (cành) không R9
có trạm nghe (host và router) thì được tỉa đi
• Tỉa nút cha thừa: nhiều router cùng chuyển
tiếp nhóm đến cùng một local link downstream R7 R8
➔ lựa chọn 1 router bằng thủ tục Assert và tỉa
đi các cành downstream của router khác
• Thêm cành mới: áp dụng lần lượt RPF, trạm
nghe mới (host & router) join vào nút cha giống
xử lý trong IGMP H2: Receiver H3: Receiver
H4: Receiver

57
PIM DM Demo Link
Data
H1: Source Control
• Nguồn phát hoạt động
• Data được chuyển tiếp theo
thuật toán tràn (flooding) R1 R2

• Mỗi router nhận data liền R6


chuyển tiếp đến tấ cả các
kết nối với router láng R3 R4 R5

giềng, trừ kết nối đang


nhận data R9

• Router kiểm tra các trạm R7 R8

nghe đã đăng ký trên các


kết nối LAN để quyết định
có flood data hay không H2: Receiver H3: Receiver

58
PIM DM Demo (2) Link
Data
H1: Source Control
• Tỉa cành. Router R3 nhận
data từ 2 nguồn (R1 & R2) ➔
kiểm tra RPF về source R1 R2

• R3 xác định R2 không nằm


R6
trong RPF ➔ yêu cầu R2 Prune

dừng chuyển tiếp gói tin cho RPF R3 R4 R5


mình (prun)
• R2 nhận yêu cầu prun từ R3 R9

và dừng phát tin trên link kết R7 R8


nối với R3

H2: Receiver H3: Receiver

59
PIM DM Demo (3) Link
Data
H1: Source Control
• Tỉa cành bằng Assert. Cả
router R3 và R4 đều
chuyển tiếp gói tin vào local R1 R2
link (LAN) ➔ cần chọn một.
R6
• Sử dụng Assert để so sánh
➔ R3 được chọn R3 R4 R5

• R4 ngừng chuyển multicast


data trên link đã được ủy Asserts
R9

quyền cho R3 R7 R8

H2: Receiver H3: Receiver

60
PIM DM Demo (4) Link
Data
H1: Source Control
• Router R6 & R8 xác định
không có trạm nhận
(downstream) để forward gói
tin ➔ yêu cầu dừng chuyển R1 R2

tiếp gói tin cho mình R6


• R7 nhận được yêu cầu prun
từ R8, nhưng xác định có R3 R4 R5 Prune
trạm nghe (H2) đang nghe
trên cùng local link với mình R9
(do R3 phát) ➔ tiếp tục giữ
link nhận data từ R3 R7 R8 Join
(override)
• R5 nhận yêu cầu prun từ R6 Prune

nhưng cũng nhận yêu cầu


join từ H3 ➔ bỏ qua H2: Receiver H3: Receiver

61
PIM DM Demo (5) Link
Data
H1: Source Control
• Xuất hiện trạm nghe mới
(H4).
• IGMP Join được gửi từ trạm R1 R2

nghe mới đến R8, R8 yêu


R6
cầu join vào cây bằng thông
điệp Graft đến R7 R3 R4 R5

• R7 xác định vẫn đang nhận


được multicast data từ R3 R9

➔ xử lý Graft từ R8 và hoàn R7 R8
thành Graft

• R8 nhận multicast data từ IGMP Join


R7 và chuyển tiếp sang link H2: Receiver H3: Receiver
kết nối với trạm nghe mới H4 H4: Receiver

62
PIM Sparse Mode
• Hoạt động theo giải thuật CBT (RP)
Source
• Hỗ trợ source specific như một trường hợp đặc
biệt của RP
• Phù hợp với multicast trên diện rộng (multi AS),
với các trạm nhận bố trí thưa thớt R1 R2 RP R3

• Phương pháp sử dụng Rendezvous Point (RP)


FHR
• Trạm truyền và các trạm nhận sử dụng
“rendezvous” như một điểm hẹn để tìm thấy
LHR
nhau
R4 R5
• Cây multicast được xây dựng bằng cách nối 2 LHR

cây: shared tree (gốc là RP) và source tree (gốc


là nguồn phát)
• Bổ sung khâu tối ưu cây
• Nối 2 cây (shared tree và source tree) tạo được cây
multicast (hoạt động được) nhưng không hiệu quả Receiver Receiver
• Tối ưu cây dựa vào vai trò các router FHR và LHR

63
Vai trò của Rendezvous Point (RP) (*, G)
(H, G)
• Hệ thống mạng kết nối bằng các router
trong đó xác định trước router có vai trò Source
RP
• Các trạm phát & nhận tham gia vào
phiên multicast ngẫu nhiên (không phải
source specific) R1 R2 RP R3
• Khi nguồn phát chưa xác định, các
router sử dụng RP để dựng cây
multicast
• Khi nguồn phát xuất hiện, router đăng New Source
ký (register) với RP và nhận cây từ RP R4 R5
(bằng cách nối cây gốc RP vào nguồn
phát
• Tối ưu cây multicast bằng RPF (do lúc
này nguồn phát đã được xác định)
• Thêm nguồn phát bổ sung?
Receiver Receiver

64
PIM SM Demo Link
Data
Control
• H2 yêu cầu tham gia vào nhóm (*,G)
– nguồn phát không xác định
• IGMP Join được H2 gửi đến R4
Creates (*, G) State
• R4 xác định RPF về RP và gửi PIM R1 R2 RP R3
Join về router thuộc RPF. Lần lượt
các router này nhận được PIM Join
lại xác định RPF và join vào nút cha, (*, G) Join

cho đến khi gặp RP (*, G) State R4 R5


• RP chưa có thông tin gì về nhóm
multicast ➔ khởi tạo trạng thái cho
nhóm này: (*, G) IGMP Join

H2: Receiver

65
PIM SM Demo (2) Link
Data
Control
• H1 bắt đầu phát tin vào nhóm G
H1: Source
• FHR (R1) nhận được multicast data phát từ
H1, nó xác định chưa có nhóm multicast
này ➔ cần dựng cây source tree đến RP Register (*, G) State

• FHR khởi tạo thông điệp PIM-Register đến R1 R2 RP R3


RP
(H1,G) State Join Join
• RP áp dụng RPF về R1 và lần lượt gửi PIM
Join từ down stream router đến up stream
router trong RPF
(*, G) State R4 R5
• Cành được lần lượt gắn vào source tree từ
RP đến FHR (R1) qua router trung gian (là
R2)

H2: Receiver

66
PIM SM Demo (3) Link
Data
Control
• RP gửi PIM Register-Stop về R1 để thông
H1: Source
báo quá trình register đã hoàn thành
• Cây multicast nguồn phát xác định (H1)
được xây dựng bằng cách nối source tree Register-Stop (*, G) State
(từ H1 đến RP) với shared tree (từ RP đến
R1 R2 RP R3
các trạm thu)
• Phiên truyền thông multicast từ nguồn phát (H1,G) State

đến các nguồn thu đã có thể được tiến hành


• Cây multicast chưa được tối ưu
(*, G) State R4 R5
• RP phải hỗ trợ tất cả các phiên multicast ➔
quá tải

H2: Receiver

67
PIM SM Demo (4) Link
Data
Control
• Thủ tục PIM-Register kết thúc, các LHR router
sử dụng RPF về nguồn phát xác định (H1) để H1: Source
“chỉnh hình” cây multicast bằng cách lần lượt join
vào “up stream router”. Quá trình kết thúc khi
gặp “up stream router” thuộc cây multicast (*, G) State
(S, G) Prun
• R4 gửi PIM Join (S,G) đến R1 R1 R2 RP R3
• R1 xử lý PIM Join từ R4, thêm luật chuyển tiếp (H1, G) State
multicast cho nhóm (S, G) sang downstream mới RPF
là R4 (S,G) Join (S,G) RP Prun
• Ngay khi nhận được multicast data từ R1, R4 gửi
PIM RP Prun đến RP để hủy kết nối này trong (*,(H1,G)
G) State
State R4 R5
nhóm
• RP xóa trạng thái (S,G) và gửi Prun lên
upstream
• Các router cập nhật luật chuyển tiếp multicast
cho nhom (S,G) ➔ cây multicast được thiết lập H2: Receiver
với vai trò của RP được hủy bỏ

68
PIM SM Demo (5) Link
Data
• H3 xin tham gia vào cây (*, G) Control
H1: Source
• IGMP Join được chuyển từ H4 đến R5
• R5 xác định RPF về RP (R5 chưa biết
nguồn phát nên dùng RP để thực hiện RPF)
và gửi PIM Join đến nút cha trong RPF của
mình. R1 R2 RP R3
• Quá trình Join sẽ kết thúc khi đến được RP
hoặc một nút trong cây (*,G), trong trường
hợp này là R4
(*, G) Join
• R4 tạo luật multicast để forward gói tin từ
upstream (R1) sang downstream
R4 RPF (RP) R5
• R5 nhận được multicast data trên upstream (H1,G) State

(R4) và chuyển tiếp đến downstream cho


H3
• R5 xác định nguồn phát là H1, thực hiện IGMP Join
RPF để tối ưu cây multicast (trường hợp
này cây đã tối ưu)
H2: Receiver H3: Receiver

69
Thực hành PIM SM H1

• Thiết lập hệ thống mạng với 3 router và 3 host enp0s9: 192.168.1.120

R1
• Thiết lập RP của cả hệ thống là R2 (192.168.2.1)
enp0s10: 192.168.1.1
• Chạy iperf trên H3 để join vào nhóm multicast với nguồn phát không enp0s9:
10.10.1.1
xác định H2

• Kiểm tra cấu hình multicast trên router R3 & R2: enp0s9:
enp0s10: 192.168.2.123
10.10.1.2 R2
• Tự động thiết lập theo gói tin IGMP Report gửi đến từ H3
• Tự động join R3 (enp0s9) và R2 (enp0s10) vào cây multicast với gốc là RP enp0s10:
enp0s3: 192.168.2.1
10.10.2.1
• Chạy iperf trên H1 để phát gói tin vào nhóm, kiểm tra H3 nhận được
gói tin phát trong nhóm
enp0s9:
• Kiểm tra PIM state trên các router thấy có sự cập nhật phù hợp với 10.10.2.2
enp0s10: 192.168.3.1
các thuật toán PIM R3
enp0s10: 192.168.3.115

H3

70
Một số khái niệm về “Sparse”
• Sparse group:
• Number of networks/domains with group members present significantly small than
number of networks/domains in internet
• Internet spanned by group not sufficiently resource rich to ignore overhead of current
multicast schemes
• Group Destination Router
• Has local group members
• Router becomes destination router for given group when at least one host joins group
• Using IGMP or similar
• Group source router
• Attaches to network with at least one host transmitting on multicast address via that
router

71
PIM Sparse Mode
• For a group, one router designated rendezvous point (RP)
• Group destination router sends join message towards RP requesting its
members be added to group
• Use unicast shortest path route to send
• Reverse path becomes part of distribution tree for this RP to listeners in this group
• Node sending to group sends towards RP using shortest path unicast
route
• Destination router may replace group-shared tree with shortest path tree to
any source
• By sending a join back to source router along unicast shortest path
• Selection of RP dynamic
• Not critical

72
PIM Sparse Mode (2)
• Explicit join model
• Receivers join to the Rendezvous Point (RP)
• Senders register with the RP
• Data flows down the shared tree and goes only
to places that need the data from the sources
• Last hop routers can join source tree if the data rate warrants by sending joins to the
source
• RPF check for the shared tree uses the RP
• RPF check for the source tree uses the source
• Only one RP is chosen for a particular group
• RP statically configured or dynamically learned (Auto-RP, PIM v2
candidate RP advertisements)
• Data forwarded based on the source state (S, G) if it exists, otherwise use
the shared state (*, G)

73
Vai trò của FHR và LHR
• First Hop Router (RHR)
Source
• R1
• Last Hop Router (LHR)
• R4 & R5 (cho các trạm nghe khác nhau)
R1 R2 RP R3

R4 R5

Receiver Receiver

74

You might also like