Multicast gửi một luồng tới nhiều receiver, router nhân bản gói tại điểm rẽ nhánh. Ba câu hỏi cần trả lời: receiver nào muốn nhận (IGMP/MLD), cây phân phối dựng thế nào (PIM), và gói đến có đúng hướng không (RPF). Ứng dụng điển hình trong ISP: IPTV, phân phối dữ liệu thị trường, multicast VPN.
Luồng hoạt động (PIM-SM)#
flowchart LR
S["Source 198.51.100.10"] --> FHR["FHR: Register tới RP"]
FHR --> RP["RP 192.0.2.100"]
RP -->|"(*,G) shared tree"| LHR["LHR"]
FHR -.->|"(S,G) SPT sau khi switchover"| LHR
LHR -->|"IGMP report G"| R["Receiver"]
- Receiver gửi IGMP Membership Report cho nhóm
G. Router cuối (LHR) gửi PIM (*,G) Join về phía RP.
- Source gửi gói, router đầu (FHR) đóng gói Register unicast tới RP. RP join (S,G) về phía source.
- LHR nhận gói đầu tiên qua RP rồi mặc định chuyển sang SPT (S,G) đi thẳng tới source, prune nhánh qua RP.
Địa chỉ multicast#
| Dải |
Dùng cho |
224.0.0.0/4 |
Toàn bộ IPv4 multicast |
224.0.0.0/24 |
Link-local, không route (OSPF 224.0.0.5/6, PIM 224.0.0.13, IGMP 224.0.0.22) |
232.0.0.0/8 |
SSM (mặc định) |
233.252.0.0/24 |
MCAST-TEST-NET, dùng cho tài liệu (RFC 5771) |
239.0.0.0/8 |
Administratively scoped (tương tự private) |
ff3x::/32 |
IPv6 SSM |
MAC 01:00:5e + 23 bit thấp |
Ánh xạ IPv4 multicast sang MAC: 32 nhóm IP trùng một MAC |
IGMP và MLD#
| Phiên bản |
Tương đương IPv6 |
Đặc điểm |
| IGMPv1 |
— |
Cũ, không có Leave |
| IGMPv2 |
MLDv1 |
Có Leave, chỉ chọn nhóm (*,G) |
| IGMPv3 |
MLDv2 |
Chọn cả nguồn (S,G): bắt buộc cho SSM |
Trên switch L2, IGMP snooping chỉ đẩy multicast tới port có receiver, tránh flood toàn VLAN.
PIM-SM và PIM-SSM#
| Tiêu chí |
PIM-SM (ASM) |
PIM-SSM |
| Receiver chỉ định |
Chỉ nhóm G |
Nguồn S và nhóm G |
| Cần RP |
Có |
Không |
| Cây |
Shared tree qua RP rồi SPT |
SPT ngay từ đầu |
| Dải nhóm |
Ngoài 232/8 |
232.0.0.0/8 |
| Yêu cầu phía receiver |
IGMPv2 trở lên |
IGMPv3 / MLDv2 (hoặc SSM mapping trên router) |
| Độ phức tạp |
Cao: RP, Register, Anycast RP/MSDP |
Thấp |
| Hợp với |
Nhiều nguồn không biết trước |
IPTV: nguồn cố định, biết trước |
Tìm RP#
| Cách |
Ghi chú |
| Static RP |
Cấu hình tay trên mọi router, đơn giản và đáng tin |
| BSR |
Chuẩn (RFC 5059), candidate RP quảng bá qua bootstrap router |
| Auto-RP |
Của Cisco, dùng 224.0.1.39/40 |
| Anycast RP |
Nhiều RP cùng một địa chỉ loopback, đồng bộ source bằng MSDP hoặc PIM Anycast RP (RFC 4610) để dự phòng |
RPF#
Router chỉ nhận gói multicast trên interface mà chính nó dùng để đi unicast về source (hoặc về RP với cây shared). Gói đến interface khác bị bỏ để chống loop. Hầu hết sự cố "có join mà không có traffic" là RPF fail: route unicast về source đi một đường, PIM neighbor hoặc luồng thực tế đi đường khác.
| Mục đích |
IOS XR |
Junos |
| PIM neighbor |
show pim neighbor |
show pim neighbors |
| Bảng (S,G) / (*,G) |
show pim topology |
show pim join extensive |
| Bảng chuyển tiếp multicast |
show mrib route |
show multicast route extensive |
| RP đang dùng |
show pim rp mapping |
show pim rps |
| Kiểm tra RPF tới source |
show pim rpf 198.51.100.10 |
show multicast rpf 198.51.100.10 |
| Receiver IGMP |
show igmp groups |
show igmp group |
Khi nào dùng#
- SSM: IPTV và mọi trường hợp nguồn cố định. Không cần RP, ít trạng thái, dễ vận hành. Receiver/STB cần IGMPv3, hoặc dùng SSM mapping trên router biên.
- PIM-SM với Anycast RP: ứng dụng nhiều nguồn động (hội nghị, trading nội bộ).
- Multicast qua MPLS VPN (mVPN): dựa trên PIM hoặc mLDP/P2MP RSVP-TE trong core, xây trên kiến thức của trang này và MPLS LDP và RSVP-TE.
- Lab IPv6: cùng mô hình, thay IGMP bằng MLD, xem IPv6 cheatsheet.