Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

PIM

Protocol-Independent Multicast (PIM) là một giao thức định tuyến được dùng để truyền lưu lượn
multicast. PIM hoạt đông độc lập với các giao thức định tuyến khác (EIGRP hoặc OSPF) chạy
trong mạng. PIM sử dụng bảng định tuyến bình thường, được thêm vào bởi giao thức định tuyến
unicast (EIGRP, OSPF, RIPv2…), trong các giao thức định tuyến multicast của nó. Không giống
như các giao thức định tuyến khác, PIM không có các cập nhật định tuyến giữa các router. Khi
router chuyển dữ liệu unicast nó sẽ nhìn vào địa chỉ đích trong bảng định tuyến để chuyển gói tín
ra ngoài cổng phù hợp.
Tuy nhiên, khi router gữi các dữ liệu multicast, router có lẽ phải chuyển các gói tin ra nhiều
cổng, hướng về tất cả các host nhận. Các router cho phép multicast sử dụng PIM tạo tự động các
cây phân bố mà nó điều khiển đường đi của lưu lượng IP multicast thông qua mạng để cung cấp
lưu lượng truy cập cho tất cả thiết bị nhận. Có hai loại cây phân bố:
- Source tree (cây nguồn): là mô hình cơ bản nhất để phân phối multicast traffic. Source
Tree giúp cung cấp thông tin về đường đi ngắn nhất từ gốc đến nhánh, vì vậy nó còn có
thể gọi là Shortest Path Trees (SPTs).
- Shared tree (cây chia sẻ): gốc cây lúc này không còn là nguồn multicast nữa, mà là một
router có nhiệm vụ “trung chuyển” lưu lượng muticast trong mạng. Router trung chuyển
này được gọi là Rendezvous Point (RP). RP là điểm được sử dụng để trung chuyển lưu
lượng multicast từ nguồn đến các máy nhận khác trong mạng multicast, mọi nguồn
multicast sẽ gửi lưu lượng đến RP để RP gửi đến máy nhận.
PIM hoạt động một trong hai chế độ sau:
- Sparse mode: Sử dụng Shared tree, do đó phải xác định được RP. Lưu lượng multicast
được gửi đến router RP và router RP sẽ không gửi lưu lượng đó đến các router khác cho
đến khi nào có một router muốn nhận lưu lượng multicast đó thì router RP mới truyền lưu
lượng multicast cho router muốn nhận.
- Dense mode: Mô hình sử dụng các Source tree. Khi router hoạt động ở Dense mode thì
nó sẽ tràn lưu lượng multicast đến toàn bộ mạng. Nếu router nào không muốn nhận lưu
lượng multicast thì nó sẽ gửi bản tin prune lên router nguồn để router nguồn không
chuyển lưu lượng multicast đến router đó nữa.

PIM DENSE MODE


Các giao thức định tuyến ở chế độ dense (dense mode) giả sử rằng các ứng dụng multicast nhiều
đến mức mỗi mạng con trong mạng đều có ít nhất một bộ thu muốn nhận lưu lượng nhóm. Do
đó, mục đích của một giao thức định tuyến chế độ dense là hướng dẫn router chuyển tiếp lưu
lượng phát multicast trên tất cả các cổng đã được cấu hình, với một số ngoại lệ để ngăn ngừa
vòng lặp. Ví dụ, một gói tin multicast sẽ không bao giờ được chuyển tiếp ra ngoài cổng mà nó
được nhận. Hình 20-2 cho thấy cách một giao thức định tuyến hoạt động ở chế độ dense nhận
được lưu lương multicast trên một cổng, và sau đó chuyển tiếp các bản sao ra tất cả các cổng
khác.
Hình 20-2 mô tả hoạt động của chế độ dense trên R1, với R1 làm ngập các bản sao của gói tin ra
tất cả các cổng ngoại trừ cổng mà gói tin được nhận. Mặc dù Hình 20-2 chỉ hiển thị một router,
các router khác có thể nhận gói tin multicast này và lặp lại quá trình tương tự. Tất cả các mạng
con sẽ nhận được một bản sao của gói tin multicast gốc.
Các giao thức chế độ dense giả sử rằng tất cả các mạng con cần nhận được một bản sao của các
gói tin, tuy nhiên các giao thức chế độ dense cho phép các router yêu cầu không nhận lưu lượng
của một nhóm multicast cụ thể . Các router hoạt động ở chế độ dense thường không muốn nhận
các gói tin multicast của một nhóm cụ thể nếu cả hai điều sau đều đúng:
- Router không có bất kỳ router láng giềng bên dưới nào đang hoạt động cần lưu lượng
multicast của nhóm đó.
- Router không biết bất kỳ máy trạm nào trên các mạng con được kết nối trực tiếp đã tham
gia nhóm đó.
Khi cả hai điều kiện này là đúng, router cần phải thông báo cho router láng giềng bên trên là
không cần gửi lưu lượng cho nhóm đó. Bản tin này được gọi là bản tin loại bỏ nhánh Prune. Các
PIM router có thể được cấu hình theo kiểu Dense Mode (còn gọi là PIM-DM) nếu các host tham
gia vào multicast group nằm ở khắp nơi trên tất cả các subnet. Một sơ đồ mạng được xem là
dense nếu có rất nhiều nhóm multicast so với số host tương đối. Dense mode thường được dùng
trong môi trường LAN và campus. Sparse mode thường được dùng trong môi trường WAN. Địa
chỉ multicast nguồn trở thành gốc của cây và cây multicast được xây dựng từ nguốn đến đích. Cơ
chế này còn được gọi bằng ký hiệu (S,G) (Trong đó: S = Địa chỉ nguồn và G = Địa chỉ nhóm
multicast), đường đi từ nguồn đến các thành viên trong nhóm là duy nhất và được xác định.
➢ Hoạt động của giao thức PIM-DM
Giao thức PIM định nghĩa một loạt các giao thức và các luật để qua đó, router có thể giúp định
tuyến hiệu quả gói tin multicast. PIM trước đây nguyên là giao thức của cisco mặc dù nó đã được
xem như là một giao thức thử nghiệm được đặc tả trong các RFC2326,3446 và 3973. Đặc tả của
PIM chỉ ra tất cả các đặc điểm đã mô tả trước đây như phép kiểm tra RPF, cơ chế PIM dense
phát tán các traffic cho đến khi nào router gửi bản tin Prune và PIM-SM sẽ không gửi lưu lượng
cho đến khi nào router nhận được bản tin Join.
PIM có cái tên như vậy là do khả năng của nó dùng bảng định tuyến unicast routing cho quá
trình kiểm tra RPF, độc lập với giao thức định tuyến unicast được dùng để xây dựng nên bảng
định tuyến unicast routing. Thật ra tên PIM cũng gợI ý nhiều về hai giao thức chạy chế độ dense
khác là DVMRP và MOSPF. Hai giao thức kia không dùng bảng định tuyến unicast cho việc
kiểm tra RPF. Thay vào đó, router xây dựng bảng một cách độc lập. PIM đơn giản dựa trên bảng
định tuyến unicast độc lập với bất kỳ một giao thức định tuyến unicast.
➢ Bản tin PIM Hello
Các router PIM hình thành các quan hệ láng giềng với các router chạy PIM khác. Phiên bản hiện
hành của PIM, PIMv2, gửi bản tin hello mỗi 30 giây trên tất cả các cổng mà PIM được cấu hình.
Bằng cách nhận bản tin hello trên cùng một cổng, router sẽ tìm ra các láng giềng, thiết lập và duy
trì quan hệ. Bản tin hello của PIMv2 dùng gói tin IP, số giao thức là 103 và dành địa chỉ
224.0.0.13 được gọi là địa chỉ tất cả các router PIM. Cơ chế hello chứa một giá trị Holdtime,
thường gấp ba lần khoảng thời gian bản tin Hello PIM của người gửi. Nếu bên router nhận không
nhận được bản tin Hello từ máy gửi trong khoảng thời gian holdtime, nó sẽ xem rằng router láng
giềng đã chết.
Giao thức PIMv1 không dùng hello. Thay vào đó PIMv1 dùng bản tin truy vấn PIM Query.
PIMv1 được đóng gói trong gói tin IP, số giao thức là 2 và dùng địa chỉ multicast là 224.0.0.2.
Một router PIM chỉ gửi bản tin PIM ra những cổng mà nó nhận biết có router PIM láng giềng.
➢ Cây phân phối dựa trên nguồn (Source-Based Distribution Trees)
Giao thức định tuyến dense thì phù hợp cho các sơ đồ mạng trong đó có nhiều nhóm multicast so
với một số tương đối các host trong một mạng. Khi một router PIM-DM nhận được một gói tin
multicast, router sẽ kiểm tra RPF. Nếu phép kiểm tra RPF là thành công, router sẽ truyền bản sao
của gói tin đến tất cả các router PIM láng giềng ngoại trừ cổng mà nó nhận gói tin. MỗI PIM-
DM lập lại tiến trình và phát tán lưu lượng của nhóm ra toàn bộ mạng. Kết quả là, các gói sẽ
được phát tán ra tất cả các router nhánh.
Hoạt động vừa mô tả là bản chất của một tiến trình mà PIM gọi là cây phân phối theo nguồn,
thỉnh thoảng còn được gọi là cây có đường đi ngắn nhất (SPT-Shortest Path Tree), hoặc đơn giản
là cây nguồn (source tree). Cây sẽ định nghĩa một đường đi từ máy trạm nguồn (tạo ra các gói
multicast) và tất cả các mạng con cần phải nhận một bản sao của gói multicast được gửi bởi máy
đó. Cây này sẽ dùng máy nguồn như là gốc của cây, router như là các nút của cây, các phân đoạn
mạng nối vào router như là các nhánh và các lá của cây.
PIM-DM có thể có một cây phân phối theo nguồn khác nhau cho từng tổ hợp của nguồn và nhóm
multicast, bởi vì cây đường đi ngắn nhất SPT sẽ khác nhau dựa trên vị trí của nguồn và của các
máy trạm lắng nghe đến địa chỉ nhóm multicast. Ký hiệu (S,G) tượng trưnng cho một cây SPT
hoặc tượng trưng cho một phần của một cây SPT trong đó S là địa chỉ nguồn của gói tin IP và G
là địa chỉ nhóm. Ví dụ ký hiệu (S,G) trong hình 20-3 sẽ được viết là (10.1.1.10, 226.1.1.1).
Ví dụ 20-1 dưới đây mô tả một phần của cấu trúc cây (S,G) trên R3 cho toàn bộ cấu trúc cây
(10.1.1.0,226.1.1.1). Máy S1 đang gửi gói tin về 226.1.1.1 và máy H2 đang gửi bản tin tham gia
IGMP Join cho nhóm 226.1.1.1.

Diễn dịch của các thông tin trên như sau:


- Dòng đầu tiên hiển thị rằng hàng (S,G) cho cây (10.1.1.10/32,226.1.1.1) đã được up trong
12 giây và nếu R3 không có truyền bất kỳ của nhóm (S,G) trong vòng 2 phút và 48 giây,
nhóm (S,G) này sẽ hết hạn. Mỗi lần R3 truyền một gói tin theo hàng này, đồng hồ sẽ thiết
lập lại giá trị 3 phút.
- Cờ C chỉ ra rằng R3 có một kết nối trực tiếp cho nhóm 226.1.1.1. Cờ T chỉ ra rằng lưu
lượng (S,G) được truyền trên cây đường đi ngắn nhất.
- Cổng vào cho nhóm 226.1.1.1 là s0/1 và router láng giềng RPF (là địa chỉ kế tiếp đi theo
chiều ngược về nguồn 10.1.1.10) là 10.1.4.1.
- Lưu lượng nhóm được truyền ra cổng F0/0. Cổng này đã trong trạng thái forwarding
trong 12 giây. Thông số thời gian thứ hai là 00:00:00 bởi vì nó không thể hết hạn với
PIM-DM vì cổng này sẽ tiếp tục truyền lưu lượng cho đến khi cổng này bị loại bỏ
(prune).
➢ Bản tin Prune
PIM-DM tạo ra một cây đường đi ngắn nhất khi một nguồn gửi một gói tin multicast đầu tiên
đến một địa chỉ nhóm multicast mới. Cấu trúc cây đường đi ngắn nhất bao gồm tất cả các cổng,
ngoại trừ các cổng RPF, bởi vì PIM-DM giả sử rằng tất cả các máy cần phải nhận một bản sao
của từng gói tin multicast. Tuy nhiên một vài phân đoạn mạng có thể không cần các bản sao của
multicast, vì vậy PIM-DM định nghĩa ra một tiến trình trong đó router có thể xóa các cổng ra
khỏi một cây đường đi ngắn nhất bằng cách dùng bản tin Prune.
Ví dụ, Trong hình 20-3 giả sử máy H1 và H2 cần một bản sao của gói multicast gửi về địa chỉ
226.1.1.1. Tuy nhiên, như đã hiển thị, khi R2 nhận lưu lượng multicast từ R1, sau đó R2 sẽ
truyền các lưu lượng multicast đến R3. R3 sẽ bỏ các gói tin của lưu lượng từ 10.1.1.1 đến
226.1.1.1, bởi vì các gói tin này không vượt qua phép kiểm tra RPF. Trong trường hợp này, R3
có thể làm cho R2 xóa cổng S0/1 ra khỏi danh sách cổng ra cho nhóm (10.1.1.10,226.1.1.1) bằng
cách gửi ra một bản tin Prune đến R2. Kết quả là, R2 sẽ không truyền lưu lượng multicast đến
R3, vì vậy giảm lãng phí băng thông.
Thuật ngữ danh sách cổng ra (outgoing interface list) muốn ám chỉ danh sách các cổng trong
trạng thái forwarding của một hàng trong bảng định tuyến multicast.
Dưới đây là một định nghĩa của bản tin Prune: Bản tin Prune được gửi bởi một router đến một
router thứ hai làm cho router thứ hai xóa kết nối mà trên đó nó nhận được bản tin Prune từ một
cây (S,G). Hình 20-6 mô tả sơ đồ mạng với R3 gửi bản tin Prune đến R2.
Như là kết quả của bản tin Prune từ R3 đến R2, R2 sẽ chặt bỏ cổng s0/1 ra khỏi cây SPT của
nhóm (10.1.1.10, 226.1.1.1). Ví dụ 20-2 cho thấy mục nhập bảng định tuyến đa hướng cho R2
trong Hình 20-6, với dòng hiển thị trạng thái bị loại bỏ được đánh dấu.

Lưu ý thông tin cổng S0/1 hiển thị trong danh sách cổng ra. Cổng này đã bị loại bỏ cách đấy 8
giây bởi vì router R3 gửi ra một bản tin Prune đến R2. Điều này có nghĩa là, ở thời điểm này, R2
sẽ không truyền lưu lượng về nhóm 226.1.1.1 trên cổng S0/1.
Bởi vì khuynh hướng của PIM-DM là phát tán lưu lượng trên toàn mạng, cổng S0/1 có thể quay
trở lại trạng thái forwarding sau 2 phút và 52 giây. Trong PIM-DM, khi một router nhận được
bản tin Prune trên một cổng, nó bật một thông số Prune mặc định 3 phút, đếm ngược về 0. Khi
bản tin Prune là hết, router thay đổi ngược về trạng thái chuyển tiếp một lần nữa. Nếu router bên
dưới không muốn nhận lưu lượng, nó sẽ gửi bản tin Prune một lần nữa. Đặc điểm này giúp router
nhận biết có lưu lượng nhóm trên một cổng đặc biệt từ router bên trên.
PIM-DM: Phản ứng với một liên kết không thành công
Khi các kết nối bị hỏng hóc, sự cố, hay bất kỳ một thay đổi nào khác ảnh hưởng bảng định tuyến
unicast, PIM-DM cần phải cập nhật các cổng RPF dựa trên thông tin định tuyến unicast mới. Bởi
vì các cổng RPF có thể thay đổi, (S,G) cũng có thể cần một danh sách các cổng khác nhau trong
danh sách cổng ra.
Hình 20-7 cho thấy một ví dụ trong đó liên kết giữa R1 và R3, được minh họa ban đầu trong
Hình 20-6, đã bị lỗi. Sau khi giao thức định tuyến unicast hội tụ, R3 cần cập nhật địa chỉ IP láng
giềng RPF từ 10.1.4.1 (R1) lên 10.1.3.2 (R2). Cũng trong trường hợp này, H1 đã đưa ra một
thông báo IGMP Rời khỏi.

Ví dụ 20-3 cho thấy kết quả mục nhập bảng định tuyến multicast cho R3 trong Hình 20-7. Lưu ý
rằng cổng RPF và địa chỉ IP láng giềng đã thay đổi để trỏ đến R2.
Ví dụ 20-3 R3 nhận thấy cây SPT của nhóm (10.1.1.10,226.1.1.1) đã thay đổi. Tuy nhiên, R2 đã
lược bỏ cổng s0 / 1 của nó ra khỏi SPT đó, như trong Hình 20-6. Vì vậy, R2 cần thay trạng thái
cổng s0 / 1 của nó trở lại trạng thái chuyển tiếp cho cây SPT (10.1.1.10, 226.1.1.1). Ví dụ 20-4
cho thấy kết quả mục nhập bảng định tuyến multicast cho (10.1.1.10, 226.1.1.1) trong R2.

R2 thay đổi cổng S0/1 của nó sang trạng thái chuyển tiếp bởi vì bản tin PIM graft được gửi bởi
R3.
Trong ví dụ 20-4, lưu ý danh sách cổng ra cho R2. R2 bây giờ đã xóa cổng F0/0 ra khỏi danh
sách cổng ra và không truyền lưu lượng qua cổng này bởi vì nó không nhận được trả lời cho bản
tin IGMP của nhóm 226.1.1.1. Kết quả là, R2 cũng xóa cờ C (C có nghĩa là connected) ra khỏi
bảng định tuyến multicast cho hàng (10.1.1.10,226,1.1.1). Thêm vào đó, R2 đẩy các lưu lượng
của nó trên cổng S0/1 về R3 bởi vì R3 vẫn truyền lưu lượng ra cổng F0/0 và chưa gửi bản tin
Prune về R2.
➢ Quy tắc Prune
Phần này giải thích hai luật mà một PIM-DM phải tuân theo để quyết định khi nào nó có thể yêu
cầu một bản tin prune. Trước khi giải thích một số ví dụ khác, ta cần phải định nghĩa thêm một
số thuật ngữ multicast mới. Đó là upstream router và downstream router.
- Một router là upstream router của R1 là router mà từ đó R1 nhận gói tin multicast của
một cây SPT cụ thể.
- Một router là downstream router của R1 là một router mà từ đó R1 chuyển một vài gói tin
multicast cho một cây SPT cụ thể.
Ví dụ, R1 là upstream router của R2 cho các gói mà S1 đang gửi đến 226.1.1.1 trong Hình 20-7.
R3 là downstream router của R2 cho các gói tin tương tự, vì R2 gửi các gói tin đó đến R3.
Các router PIM-DM có thể chọn gửi bản tin Prune vì nhiều lý do, một trong số đó đã được đề
cập trước đó liên quan đến Hình 20-6. Những lý do chính được tóm tắt ở đây:
- Khi router nhận được những gói tin trên một cổng non-RPF
- Khi một router nhận ra rằng cả hai điều sau đều đúng:
+ Không có máy trạm nào được kết nối cục bộ trong một nhóm cụ thể đang lắng nghe các
gói tin.
+ Không có downstream router nào đang lắng nghe nhóm.
Phần này cho thấy logic đằng sau lý do thứ hai để gửi bản tin Prune. Tại thời điểm này trong
phần giải thích của Hình 20-6 và 20-7, máy trạm duy nhất cần nhận các gói tin được gửi đến
226.1.1.1 là H2. Các router PIM-DM trong mạng này sẽ làm gì nếu H2 rời khỏi nhóm 226.1.1.1?
Hình 20-8 cho thấy một ví dụ như vậy, với H2 gửi một bản tin rời nhóm IGMP cho nhóm
226.1.1.1. Hình 20-8 cho thấy cách PIM-DM sử dụng thông tin này để cập nhật động SPT.

Hình 20-8 cho thấy ba bước, với logic trong Bước 2 và 3 là tương tự nhưng rất quan trọng:
1. H2 rời khỏi nhóm multicast bằng cách gửi một bản tin rời khỏi IGMP.
2. R3 dùng bản tin truy vấn IGMP query để xác nhận rằng không còn máy nào khác trên
LAN muốn nhận lưu lượng của nhóm 226.1.1.1. Vì vậy R3 gửi ra bản tin Prune ra khỏi
cổng RPF trên router R2, tham chiếu đến cây (10.1.1.1, 226.1.1.1).
3. R2 không có bất cứ host kết nối cục bộ nàolắng nghe nhóm 226.1.1.1. Bây giờ chỉ các
router bên dưới gửi bản tin Prune cho SPT với địa chỉ nguồn là 10.1.1.1, về địa chỉ nhóm
là 226.1.1.1. Vì vậy R2 không có lý do nào để cần các gói tin gửi về địa chỉ nhóm
226.1.1.1 nữa. Vì vậy R2 gửi ra bản tin Prune, tham chiếu đến (10.1.1.20,226.1.1.1) ra
khỏi cổng RPF về R1.
Sau khi quá trình loại bỏ pruning là hoàn tất, cả R3 và R2 sẽ không còn chuyển lưu lượng cho
nhóm 226.1.1.1 từ nguồn 10.1.1.10. Trong router, lệnh show ip mroute sẽ hiển thị thông tin là cờ
P (prune), có nghĩa là router đã loại bỏ chính nó ra khỏi cấu trúc cây (S,G).
Sau khi tất cả các bước trong Hình 20-8 đã hoàn thành, R1 cũng không cần gửi các gói tin được
gửi bởi 10.1.1.10 đến 226.1.1.1 ra bất kỳ cổng nào. Sau khi nhận được bản tin Prune từ R2, R1
cũng đã cập nhật danh sách cổng gửi đi của mình, điều này cho thấy rằng chỉ có một cổng gửi đi
và nó đang ở trạng thái bị lược bớt vào lúc này. Ví dụ 20-6 cho thấy các chi tiết.

Đặc biệt quan tâm đến đầu ra, R1 đã gán cờ C nhưng đối với R1, cờ C không chỉ ra rằng R1 có
thành viên kết nối trực tiếp. Trong trường hợp này, một kết hợp của cờ C và một láng giềng RPF
có giá trị 0.0.0.0 chỉ ra rằng thiết bị kết nối trực tiếp là nguồn của nhóm multicast.
Thực tế không có sự phân biệt giữa bản tin Prune và bản tin Join, thay vào đó PIM-DM và PIM-
SM dùng một bản tin đơn duy nhấn gọi là bản tin Join/Prune. Một bản tin Prune là một bản tin
Join/Prune có địa chỉ nhóm được chỉ ra trong trường Prune. Một bản tin Join là một bản tin
Join/Prune có địa chỉ nhóm liệt kê trong trường Join.
➢ Trạng thái hoạt động Steady-state và bản tin làm mới trạng thái (State Refresh):
Như đã mô tả trước đây, với PIM-DM một cổng luôn trong trạng thái prune trong ba phút. Các
bản tin prune liệt kê một nguồn và nhóm. Bất cứ khi nào một router nhận được bản tin prune, nó
sẽ tìm một hàng (S,G) SPT trong bảng định tuyến multicast và đánh dấu các cổng trong đó bản
tin Prune là nhận được. Tuy nhiên, router cũng thiết lập giá trị prune timer, mặc định là 3 phút,
sao cho sau ba phút, cổng này được đặt trong trạng thái chuyển tiếp một lần nữa.
Vì vậy, đều gì xảy ra với PIM-DM và các kết nối bị loại bỏ? Các liên kết bị loại bỏ và sau ba
phút, các liên kết này được hoạt động lại. Khi có nhiều dòng multicast, các kết nối bị loại bỏ, sau
đó, các kết nối lại hoạt động sau ba phút. Và cứ thế tiếp diễn. Vì vậy, khi Cisco tạo ra cơ chế
PIMv2 (RFC3973), nó bao gồm một đặc điểm gọi là làm mới trạng thái (state refresh). Các bản
tin làm mới trạng thái này có thể ngăn ngừa tình trạng kém hiệu quả của PIM-DM v1 trong tiến
trình pruning.
Trong hình 20-9, kết nối giữa R1 và R2 và kết nối giữa R2 và R3 bị loại bỏ, sau ba phút, các kết
nối sẽ được thêm vào cây đường đi ngắn nhất SPT do các thời gian Prune bị hết.
Bản tin làm mới trạng thái State refresh có thể được gửi trước khi khoảng thời gian prune bị hết
để vẫn giữ các cổng của router trong tình trạng bị loại bỏ khỏi cây. Trong hình 20-9, các bước
sau đây sẽ xảy ra:
1. R3 giám sát thời gian trôi qua kể từ khi nó gửi bản tin Prune lần cuối đến R2. Ngay trước
khi thời gian Prune bị hết, R3 quyết định gửi một bản tin làm mới trạng thái đến R2.
2. R3 gửi bản tin làm mới trạng thái đến R2, tham chiếu đến cây SPT (10.1.1.10, 226.1.1.1)
3. R3 phản ứng bằng cách thiết lập lại thời gian prune cho những cổng trên đó nó nhận được
bản tin làm mới trạng thái.
4. Bởi vì R2 cũng đã loại bỏ chính nó bằng cách gửi bản tin Prune đến R1, R2 cũng sẽ dùng
chính bản tin này để báo cho R1 vẫn để cổng s0/0 trong trạng thái prune.
Cho đến khi nào R3 vẫn gửi bản tin làm mới trạng thái trước khi khoảng thời gian prune là hết
trên router upstream R2, cây đừơng đi ngắn nhất SPT vẫn trong trạng thái ổn định và sẽ không bị
định kỳ phát tán các gói multicast cho cây (S,G).
➢ Bản tin Graft
Khi các máy tham gia một nhóm, router có thể cần thay đổi trạng thái SPT hiện hành cho một
nhóm (S,G). Với PIM-DM, một giải pháp có thể là chờ cho kết nối prune hết giờ. Ví dụ, theo
hình 20-9, R3 chỉ đơn giản ngừng gửi các bản tin làm mới trạng thái State Refresh trong tối đa ba
phút. R3 sẽ một lần nữa nhận gói tin multicast của vài nhóm (S,G). Tuy nhiên, nếu để chờ
khoảng thời gian mặc định ba phút trôi qua thì không hiệu quả. Để cho phép router “unprune”
một cổng của router trước đây bị loại bỏ, PIM-DM dùng bản tin Graft. Bản tin này được định
nghĩa như sau:
Một router gửi ra một bản tin Graft đến một upstream router, là router láng giềng đã gửi ra bản
tin loại bỏ prune. Bản tin graft làm cho router láng giềng đưa cổng vào trạng thái chuyển tiếp cho
một nhóm multicast nào đó.
Hình 20-10, ban đầu cả máy H1 và H2 không tham gia vào nhóm 226.1.1.1. Và R2 và R3 đã bị
loại bỏ ra khỏi nhóm (10.1.1.10, 226.1.1.1).Cổng S0/0 của R1 đã bị loại bỏ ra khỏi (S,G) SPT, vì
vậy R2 và R3 không nhận được lưu lượng multicast gửi bởi S1 về 226.1.1.1.1. Sau đó, H2 tham
gia vào nhóm 226.1.1.1 một lần nữa.

Nếu không có bản tin Graft, máy H2 sẽ phải chờ một khoảng thòi gian là ba phút trước khi nó
nhận được lưu lượng của nhóm. Tuy nhiên với các bước sau đây, H2 sẽ nhận gói tin chỉ trong vài
phút:
1. Host H2 gửi một bản tin IGMP Join.
2. R3 tìm cổng RPF trong bảng định tuyến multicast cho nhóm 226.1.1.1. Trong bảng đó,
cổng s0/0 là cổng đi vào và các router láng giềng RPF là 10.1.3.2.
3. R3 gửi bản tin Graft ra cổng S0/0 đến R2.
4. R2 bây giờ biết nó cần nhận lưu lượng từ 10.1.1.10 gửi đến 226.1.1.1. Tuy nhiên, hàng
(S,G) của R2 cũng hiện thị cờ P, nghĩa là R2 đã tự loại bỏ chính nó ra khỏi cây SPT. Vì
vậy, R2 tìm cổng RPF của nó và các router láng giềng trong bảng (S,G), trong đó đang
chỉ đến cổng S0/0 và router R1.
5. R2 gửi bản tin Graft về cho R1.
Ở thời điểm này, R1 ngay lập tức đưa cổng S0/0 vào danh sách các cổng ra giống như R2 và bây
giờ H2 bắt đầu nhận gói tin multicast. Lưu ý rằng R1 cũng gửi bản tin Graft Ack trả lời lại R2 và
R2 gửi graft ACK để trả lời về R3.
➢ Prune Override
Trong cả PIM-DM và PIM-SM, tiến trình prune trên các mạng đa truy cập hoạt động khác với
trong những kết nối điểm-điểm. Nguyên nhân là khi một router gửi ra một bản tin prune trên một
mạng đa truy cập, các router khác có thể không muốn kết nối bị loại bỏ bởi router upstream.
Trong hình 20-11, R1 đang truyền dữ liệu cho nhóm 239.9.9.9 trên cổng F0/0 với R2 và R3 đang
nhận lưu lượng nhóm 239.9.9.9 nhận lưu lượng trên cổng E0. R2 không có thành viên của nhóm
nào đang kết nối trực tiếp và vì vậy danh sách các cổng ra của nó là null. Các bước tiếp theo sau
đây sẽ diễn ra khi R3 cần gửi bản tin Prune Override:
1. R2 gửi ra bản tin prune cho nhóm 239.9.9.9 bởi vì R2 có danh sách cổng ra là null.
2. R1 nhận ra nó nó đang có một bản tin Prune gửi đến, biết rằng có thể có những router
khác vẫn muốn nhận gói tin. Vì vậy thay vì ngay lập tức loại bỏ cổng, R1 gán một
khoảng thời gian 3 giây trước khi R1 loại bỏ cổng.
3. R3 cũng nhận bản tin prune được gửi bởi R2 bởi vì bản tin Prune được gửi theo dạng
multicast đến địa chỉ tất cả các PIM routers 224.0.0.13. R3 cũng vẫn cần nhận lưu lượng
của nhóm 239.9.9.9, vì vậy R3 gửi một bản tin tham gia Join ra cổng E0.
4. R1 nhận được bản tin tham gia Join từ R3 trước khi xóa cổng LAN của nó ra khỏi danh
sách cổng ra. Kết quả là R1 không loại bỏ cổng F0/0 của nó.
Tiến trình này gọi là Prune Override bởi vì R3 bỏ qua bản tin loại bỏ prune được gửi bởi R2. Bản
tin prune override thật ra là một bản tin Join được gửi bởi R3 trong trường hợp này. Bản tin này
không có gì khác với bản tin Join bình thường. Ngay khi R1 nhận được bản tin Join từ R3 trước
khoảng thời gian 3 giây bị hết hạn, R3 tiếp tục nhận lưu lượng mà không bị ngắt quãng.
➢ Bản tin xác nhận (Assert Message):
Loại bản tin cuối cùng được mô tả trong chương này là bản tin PIM Assert. Bản tin Assert được
dùng để ngăn ngừa những nỗ lực vô ích khi có nhiều router kết nối vào cùng mạng LAN. Thay vì
gửi nhiều bản sao của những gói multicast vào trong LAN, bản tin PIM cho phép các router bắt
tay thoả thuận với nhau. Router thắng sẽ có quyền chịu trách nhiệm đẩy lưu lượng multicast vào
trong LAN.
Hình 20-12 mô tả một ví dụ của nhu cầu chèn bản tin Assert. R2 và R3 cả hai cùng gắn vào trong
LAN, với H1 là thành viên tích cực của nhóm 227.7.7.7. Cả R2 và R3 cùng đang nhận lưu lượng
của nhóm cho 227.7.7.7 từ nguồn 10.1.1.10.
Mục đích của thông điệp Assert là gán trách nhiệm đưa lưu lượng của nhóm cho router gần nhất
với nguồn. Khi R2 và R3 nhận lưu lượng nhóm từ nguồn trên cổng S0, các router truyền trên
cổng E0. Cả hai đều có cổng S0 trong danh sách các cổng đi vào và E0 trong danh sách cổng ra.
Ở thời điểm này, cả R2 và R3 đều nhận gói tin multicast trên cổng E0, làm cho các router sẽ
dùng thông điệp Assert để giải quyết vấn đề router nào sẽ làm router truyền lưu lượng.
Tiến trình Assert chọn ra một router thắng cuộc dựa trên giao thức định tuyến và metric dùng để
tìm ra tuyến đường để đến địa chỉ unicast của nguồn. Trong ví dụ này, điều này có nghĩa là R2
hay R3 sẽ thắng dựa trên những tuyến mà họ dùng để đến 10.1.1.10. R2 và R3 sẽ gửi thông điệp
Assert bao gồm giá trị AD (Administrative Distances) của giao thức định tuyến được dùng để
đến 10.1.1.10, cũng như là metric được dùng để đến các route này. Các router trên LAN so sánh
giá trị AD và metric trong thông điệp Assert. Router thắng cuộc được xác định như sau:
1. Router đang quảng bá một giá trị AD thấp nhất của giao thức định tuyến sẽ thắng.
2. Nếu là ngang bằng, router với giá trị metric thấp nhất sẽ thắng.
3. Nếu là tiếp tục ngang bằng, router có địa chỉ IP cao nhất trên LAN sẽ thắng.
➢ Router được chỉ định (DR - Designated Router):
Cơ chế PIM Hello được dùng để bầu chọn router DR trên môi trường đa truy cập. Một router
PIM-DM hoặc PIM-SM có địa chỉ IP cao nhất sẽ trở thành DR.
Khái niệm PIM DR áp dụng chủ yếu khi IGMPv1 được dùng. IGMPv1 không có cơ chế bầu
chọn router truy vấn, nghĩa là IGMPv1 không có cách nào để quyết định router nào trong số các
router trên LAN nên gửi thông điệp truy vấn IGMP query. Khi IGMPv1 được dùng, PIM DR sẽ
được dùng như là router truy vấn của IGMP. IGMPv2 có thể bầu chọn trực tiếp router truy vấn
(là router có địa chỉ IP thấp nhất), vì vậy PIM DR không được dùng như router truy vấn khi
IGMPv2 được dùng.
Lưu ý rằng trên LAN, một router có thể thắng tiến trình bầu chọn Assert cho một nhóm (S,G)
trong khi một router khác có thể trở thành router truy vấn IGMP Querier (PIM DR cho IGMPv1,
IGMPv2 Querier cho IGMPv2). Router thắng cuộc sẽ chịu trách nhiệm đẩy lưu lượng multicast
vào trong LAN trong khi router truy vấn IGMP querier chịu trách nhiệm quản lý tiến trình IGMP
bằng cách gửi thông điệp bầu chọn trong LAN. Cũng lưu ý rằng tiến trình bầu chọn router truy
vấn chọn ra địa chỉ IP thấp nhất và tiến trình Assert dùng địa chỉ IP cao nhất, làm cho tồn tại một
khả năng là có những router khác nhau được chọn lựa cho các tiến trình khác nhau.
➢ Tóm tắt các bản tin của PIM-DM:
Bảng 20-2 liệt kê các bản tin chính của PIM-DM được đề cập trong chương này, cùng với định
nghĩa ngắn gọn về việc sử dụng chúng.
Bản tin PIM Định nghĩa
Được sử dụng để hình thành các quan hệ láng giềng với các
router chạy PIM khác và để duy trì quan hệ bằng cách giám sát
Hello
các bản tin Hello đã nhận được từ mỗi router láng giềng. Nó
cũng được sử dụng để chọn PIM DR trên các mạng đa truy cập.
Được sử dụng để yêu cầu một router láng giềng xóa kết nối mà
Prune
trên đó nó nhận được thông điệp Prune từ một cây (S,G) cụ thể.
Được sử dụng bởi một downstream router, được gửi đến
upstream router trên cổng RPF , để khiến upstream router đặt lại
State Refresh bộ hẹn giờ Prune (Prune timer) của nó. Điều này cho phép
downstream router duy trì trạng thái prune của một liên kết, đối
với một cây SPT (S, G) cụ thể.
Được sử dụng trên mạng đa truy cập để xác định router nào
Assert giành được quyền chuyển tiếp multicast vào mạng LAN, cho một
cây SPT (S, G) cụ thể.
Trong một mạng LAN, một router có thể phát một bản tin Prune
tới các upstream router của nó . Các router khác trong cùng một
mạng LAN, muốn ngăn upstream router cắt bỏ mạng LAN thì
Prune Override (Join) hãy gửi ngay một bản tin Tham gia khác cho cây SPT (S, G).
(Prune Override không thực sự là một bản tin Prune Override mà
nó là một bản tin Tham gia. Đây là mục đích duy nhất của một
bản tin Tham gia trong PIM-DM, theo RFC 3973.)
Khi một liên kết bị cắt bỏ cần được thêm lại vào cây SPT (S, G)
thì một router gửi ra một thông điệp Graft đến một upstream
Graft/Graft-Ack router, là router láng giềng đã gửi ra bản tin loại bỏ prune. Thông
điệp graft làm cho router láng giềng đưa cổng vào trạng thái
chuyển tiếp cho một nhóm multicast nào đó.

PIM SPARSE MODE (PIM-SM)


Giao thức định tuyến multicast chế độ dense là hữu ích khi các ứng dụng multicast là dày đặc và
bạn cần phân phối traffic đến hầu như tất cả các mạng. Tuy nhiên, nếu các người dùng chỉ ở vài
mạng con, giao thức định tuyến chế độ dense sẽ vẫn phát tán lưu lượng trên toàn bộ liên mạng,
gây lãng phí băng thông và tài nguyên. Trong những trường hợp này, định tuyến theo kiểu
sparse, chẳng hạn PIM-SM có thể được dùng để giảm lãng phí tài nguyên mạng.
Sự khác nhau cơ bản giữa chế độ dense và chế độ sparse liên quan đến trạng thái mặc định của
nó. Mặc định, các giao thức chế độ dense tiếp tục truyền các traffic của nhóm trừ phi một
downstream router chỉ ra rằng nó không muốn nhận lưu lượng đó nữa. Các giao thức chế độ
sparse không truyền lưu lượng của nhóm tới bất kỳ router nào trừ khi nó nhận được một bản tin
yêu cầu các bản sao của các gói tin được gửi tới một nhóm multicast đặc biệt. Một router láng
giềng yêu cầu nhận các gói chỉ nhằm một trong hai mục đích:
- Router đã nhận được một yêu cầu nhận gói tin từ một vài router láng giếng.
- Một máy trạm trên một phân đoạn mạng đã gửi bản tin IGMP Join cho nhóm đó.
Hình 20-4 sẽ mô tả điều gì sẽ xảy ra với PIM-SM trước khi một máy trạm có thể nhận gói tin
được gửi từ S1 đến địa chỉ nhóm 226.1.1.1. Hoạt động của PIM Sparse Mode bắt đầu khi gói tin
được đẩy về một router đặc biệt gọi là Rendezvous Point (RP). Khi lưu lượng của một nhóm đến
RP, không giống như trong chế độ dense, router RP không có tự động đẩy tiếp lưu lượng về bất
kỳ router nào. Lưu lượng này phải được yêu cầu bởi một router.
PIM-SM được cấu hình trên tất cả các router. R1 được chọn lựa như là RP và trong tất cả ba
router, địa chỉ IP của 172.16.1.1 của R1 được cấu hình tĩnh như là địa chỉ RP. Thường thì địa chỉ
của cổng loopback được dùng như là địa chỉ RP và địa chỉ này được quảng bá trong bảng định
tuyến unicast sao cho tất cả các router biết cách làm thế nào để định vị router RP. Ở thời điểm
này, R1 là RP có thể nhận lưu lượng đi về nhóm 226.1.1.1 nhưng router R1 sẽ không truyền lưu
lượng này đi.
Các bước được hiển thị trong Hình 20-4:
1. Máy S1 gửi một gói tin multicast đến RP, địa chỉ đích là 226.1.1.1.
2. R1 chọn bỏ qua gói tin, bởi vì không có router hay máy nào trong phân đoạn mạng báo
cho RP (R1) rằng nó muốn nhận lưu lượng multicast.
3. Máy H2 gửi bản tin IGMP Join đến nhóm 226.1.1.1.
4. R3 gửi bản tin PIM Join đến RP (R1) về địa chỉ 226.1.1.1.
5. Hoạt động của R1 bây giờ bị thay đổi, các gói tin được gửi về 226.1.1.1 sẽ được đẩy ra
khỏi cổng S0/1 đến R3.
6. Máy S1 gửi gói tin multicast về địa chỉ 226.1.1.1 và R1 gửi ra khỏi cổng S0/1 về R3.
Trong một hệ thống mạng PIM-SM, tất cả các router phải học địa chỉ IP của RP. Giải pháp thứ
nhất là cấu hình tĩnh địa chỉ IP trong tất cả các router. Cách thứ hai là cho phép các router tìm ra
các địa chỉ IP của RP.
Trong hình 20-4, R2 chưa nhận bất kỳ một thông điệp tham gia IGMP Join trên bất kỳ cổng
LAN nào vì vậy nó không chuyển bất kỳ yêu cầu nào tới RP để truyền trên cổng LAN vì vậy nó
không gửi bất kỳ yêu cầu nào đến RP để RP truyền lưu lượng multicast. Kết quả là, R1 không
làm lãng phí băng thông trên kết nối từ R1 đến R2. R3 cũng sẽ không truyền lưu lượng multicast
đến R2.
Lưu ý: Trong hình 20-4, R3 đầu tiên sẽ kiểm tra RPF dùng địa chỉ IP của RP chứ không phải địa
chỉ nguồn của gói tin, bởi vì nó đang nhận lưu lượng nhóm từ RP. Nếu phép kiểm tra RPF là
thành công, R3 sẽ truyền traffic trên cổng LAN.
PIM-SM có nhiều điểm tương tự như PIM-DM. Cũng giống như PIM-DM, PIM-SM dùng bảng
định tuyến unicast để kiểm tra RPF, bất chấp giao thức định tuyến unicast được dùng. Thêm vào
đó, PIM-SM cũng dùng cơ chế sau giống như PIM-DM:
Có vài điểm giống nhau giữa PIM-SM và PIM-DM:
- Cả hai đều dùng cơ chế hello để tìm ra láng giềng.
- Tính toán và kiểm tra RPF khi bảng định tuyến unicast routing thay đổi.
- Bầu chọn Designated Router trên môi trường đa truy cập. Router DR thực hiện tất cả các
tiến trình IGMP khi IGMPv1 được dùng.
- Sử dụng cơ chế prune trên môi trường đa truy cập.
- Sử dụng cơ chế Assert để bầu ra router chuyển tiếp trên môi trường đa truy cập. Router
thắng quá trình bầu chọn Assert sẽ chịu trách nhiệm đẩy lưu lượng vào trong mạng con
đó.
Tuy nhiên, PIM-SM dùng cơ chế explict join (join tường minh). PIM Sparse Mode (PIM-SM)
dùng một giải pháp khác. Cây multicast không mở rộng đến router cho đến khi nào một host đã
tham gia vào một nhóm. Cây multicast được xây dựng bằng các thành viên ở các node lá và mở
rộng ngược về root. Cây được xây dựng từ dưới lên. SM cũng hoạt động dựa trên ý tưởng cấu
trúc shared-tree, trong đó gốc của cây không nhất thiết là nguồn của multicast. Thay vào đó, root
là router PIM-SM thường được đặt ở trung tâm của mạng. Router làm gốc này gọi là Rendezvous
Point (RP). Các router có thể nhận biết được RP bằng 3 cách:
- Địa chỉ RP có thể được cấu hình tĩnh trên từng router: kiểm soát được mạng nhưng chi
phí quản trị cao.
- Bầu chọn RP có thể dùng giao thức bootstrap.
- Dùng cơ chế Auto-RP của Cisco: phù hợp hệ thống mạng nhỏ.
➢ Hoạt động của giao thức PIM Sparse Mode:
PIM-SM hoạt động với một chiến lược khác hẳn với PIM-DM mặc dù cơ chế của giao thức
không hoàn toàn đối lập. PIM-SM giả sử rằng không có máy nào muốn nhận lưu lượng multicast
cho đến khi nào các máy chủ động hỏi. Kết quả là, cho đến khi nào trong một mạng con có một
máy yêu cầu nhận multicast thì multicast mới được phân phối vào mạng con đó. Với PIM-SM,
các downstream router yêu cầu nhận multicast phải dùng bản tin PIM Join. Khi các router nhận
được các bản tin này, các downstream router phải định kỳ gửi bản tin Join lên upstream router.
Nếu khác đi, upstream router sẽ không đưa lưu lượng xuống, đặt kết nối vào trong trạng thái
prune. Tiến trình này thì ngược lại với tiến trình được dùng trong PIM-DM, trong đó mặc định là
phát tán lưu lượng multicast với các downstream router cần phải liên tục gửi thông điệp Prune
hay thông điệp làm mới trạng thái State refresh để giữ cho một kết nối là trong trạng thái prune.
PIM-SM phù hợp khi chỉ có những tỉ lệ nhỏ các phân đoạn mạng nhận lưu lượng multicast.
➢ Các nguồn gửi gói tin đến điểm RP (Rendezvous Point):
PIM-SM dùng quá trình gồm hai bước để ban đầu phân phối gói tin từ một nguồn đặc biệt đến
các máy muốn nhận gói tin. Sau đó tiến trình sẽ cải tiến trên các bước ban đầu này. Các bước để
truyền dữ liệu với PIM-SM như sau:
1. Máy nguồn gửi dữ liệu đến một router gọi là RP
2. RP sẽ gửi gói tin multicast đến tất cả các router/máy đã đăng ký tham gia nhận gói tin
cho nhóm đó. Tiến trình này dùng một cây chia sẽ.
Hình 20-13 mô tả một tiến trình đăng ký trong đó RP biết rằng không có máy nào muốn nhận lưu
lượng gửi về nhóm 228.8.8.8, bất chấp nguồn nào đang gửi. Ví dụ trong cấu hình này là đơn
giản, với tất cả các router được cấu hình với địa chỉ toàn cục ip multicast-routing và các cổng
dùng lệnh ip pim sparse-mode trên tất cả các cổng. Tất cả các router phải cấu hình tĩnh R3 như là
RP bằng cách dùng câu lệnh ở chế độ toàn cục ip pim rp-address 10.1.10.3. Thông thường, một
địa chỉ cổng loopback được dùng như địa chỉ RP. Địa chỉ loopback 10.1.10.3/32 của R3 được
quảng bá trong giao thức định tuyến unicast sao cho tất cả các router phải biết làm thế nào để đến
được RP.
Ba bước dưới đây, được trình bày trong 20-13 mô tả một chuỗi các sự kiện cho tiến trình máy
nguồn đăng ký khi RP chưa nhận được một yêu cầu cho lưu lượng multicast từ bất kỳ router
PIM-SM nào bởi vì không có máy nào tham gia vào nhóm:
1. Máy S1 bắt đầu gửi dữ liệu về 228.8.8.8 và R1 nhận các gói này vì nó kết nối vào cùng
LAN.
2. R1 phản ứng bằng cách gửi thông điệp đăng ký dạng unicast về RP. Các thông điệp đăng
ký này là unicast gửi về địa chỉ RP, trong trương hợp này địa chỉ RP là 10.1.10.3.
3. R3 gửi thông điệp Register-Stop ngược về R1 bởi vì R3 biết rằng nó không có bất kỳ nhu
cầu nào để gửi gói tin về 228.8.8.8.
Trong ví dụ này, router gần nguồn (R1) đang cố gắng đăng ký với RP nhưng RP báo cho R1
đừng gửi thông tin nữa vì không có ai muốn nhận các thông điệp multcast. R1 không có gửi bất
kỳ thông điệp multicast nào ở thời điểm này. Tuy nhiên, thông điệp PIM register sẽ đóng gói gói
tin multicast đầu tiên. Gói tin đã đóng gói sau đó sẽ được đẩy đi bởi RP nếu có bất kỳ máy nào
muốn nhận lưu lượng đó.
Máy nguồn có thể tiếp tục gửi lưu lượng multicast, vì vậy R1 cần phải tiếp tục đăng ký với RP
trong trường hợp có vài máy muốn nhận gói. Vì vậy khi R1 nhận thông điệp Register-Stop, nó
khởi tạo một thông điệp Register-Suppression có thời lượng một phút. Năm giây trước khi
khoảng thời gian này hết, R1 gửi một thông điệp đăng ký khác với giá trị cờ Null-register mà
không gửi bất kỳ gói tin multicast nào. Kết quả của thông điệp này là một trong hai việc sau sẽ
xảy ra:
- Nếu router RP vẫn biết không có máy nào muốn nghe các gói multicast, nó sẽ gửi thông
điệp Register-Stop đến R1, R1 sẽ tái khởi động thông số Register-Suppression timer.
- Nếu RP biết có ít nhất một máy/host cần các gói multicast này, RP sẽ không trả lời thông
điệp đăng ký này. Kết quả là R1 khi hết giờ, sẽ gửi các gói multicast đến R3 (RP) đóng
gói trong các thông điệp PIM Register.
➢ Tham gia vào cây dùng chung:
Trong phần này sẽ giải thích khái niệm cây dùng chung (shared tree) cho một nhóm multicast,
còn gọi là root-path-tree (RPT). Như đã đề cập trước đây, PIM-SM sẽ làm cho lưu lượng
multicast phân phối theo hai bước. Đầu tiên, các gói tin được gửi từ nguồn đến RP, và sau đó RP
sẽ phân phối gói tin đến các phân đoạn mạng có các máy cần bản sao của các lưu lượng multicast
này. PIM-SM dùng cấu trúc cây dùng chung trong bước 2 của tiến trình trên.
Cây RPT, với router RP là gốc sẽ định nghĩa những kết nối nào các lưu lượng multicast nên được
gửi để đến tất cả các router yêu cầu. Một cây như vậy tồn tại cho tất cả các nhóm multicast đang
tồn tại trong mạng. Vì vậy khi một gói tin multiast được gửi bởi mỗi nguồn được đưa tới RP, RP
dùng cây RPT cho nhóm multicast để xác định nên chuyển gói tin về đâu. PIM-SM tạo ra cây
RPT bằng cách gửi ra thông điệp PIM Join về RP. Trong chế độ PIM-SM, các lưu lượng
multicast được gửi chỉ đến router có yêu cầu. Router PIM-SM yêu cầu lưu lượng multicast thông
qua việc tham gia RPT bằng cách gửi ra thông điệp Join về RP. Các router PIM-SM chọn lựa
việc gửi thông điệp Join trong hai trường hợp:
- Khi một router PIM-SM nhận thông điệp PIM Join trên bất kỳ cổng nào khác với cổng
được dùng để định tuyến gói tin về RP.
- Khi một router PIM-SM nhận thông điệp IGMP report từ một máy trên một mạng kết nối
trực tiếp.
Hình 20-14 mô tả một ví dụ của tiến trình tham gia PIM-SM của máy H1 tham gia vào nhóm
228.8.8.8. Các router phản ứng với thông điệp IGMP Join bằng cách gửi thông điệp Join về RP,
trở thành một phần của cây (*,228.8.8.8).
Cây dùng chung (*,288.8.8.8) được tạo ra theo các bước sau:
1. H1 gửi thông điệp IGMP Join cho nhóm 228.8.8.8.
2. R4 nhận ra bây giờ cần phải yêu cầu RP gửi gói tin về 228.8.8.8 vì vậy R4 gửi ra một
thông điệp PIM Join về RP cho cây dùng chung của nhóm 228.8.8.8. R4 cũng đặt các
cổng E0 của nó vào trạng thái chuyển tiếp cho nhóm 228.8.8.8.
3. R4 gửi thông điệp Join về RP.
4. R5 nhận thông điệp Join trên cổng S1 của nó, vì vậy R5 đặt cổng S1 trong trạng thái
chuyển tiếp cho cây dùng chung (*,228.8.8.8). R5 cũng biết nó cần chuyển thông điệp
Join về RP.
5. R5 gửi thông điệp Join về RP.
6. R3, RP, đặt cổng S0 của nó vào trạng thái chuyển tiếp trong cây (*,228.8.8.8).
Khi kết thúc tiến trình này, RP biết rằng có ít nhất một máy muốn nhận gói tin được gửi về
229.8.8.8. Cây RPT cho nhóm 228.8.8.8 được hình thành với cổng s0 của R3, cổng s1 của R5 và
cổng e0 của R4.
Chú ý là cú pháp (*,G) tượng trưng một cây RPT. Ký hiệu * tượng trưng cho “bất kỳ nguồn
nào”, bởi vì các router PIM-SM dùng cây dùng chung này bất chấp nguồn của các gói tin. Ví dụ
một gói tin được gửi từ bất kỳ địa chỉ nguồn nào, đến RP và đi về nhóm 228.8.8.8 sẽ làm cho RP
dùng địa chỉ (*,228.8.8.8) trong bảng định tuyến multicast của nó, bởi vì các hàng này là thành
phần của cây RPT cho nhóm 228.8.8.8.
➢ Hoàn tất quá trình đăng ký nguồn:
Trong phần mô tả của PIM-SM, một nguồn (10.1.1.10) gửi gói tin về 228.8.8.8 như trong hình
20-13 nhưng không có máy nào quan tâm, vì vậy RP không truyền gói tin. Kế tiếp, ta sẽ khảo sát
điều gì sẽ xảy ra khi một máy muốn nhận các gói tin và các router phản ứng để tạo ra các cây
RPT cho nhóm đó. Phần này cũng sẽ mô tả làm thế nào một router RP phản ứng khi nhận được
thông điệp PIM register khi RP biết có vài máy muốn nhận lưu lượng multicast.
Khi RP nhận thông điệp đăng ký cho một nhóm đang tồn tại, nghĩa là RP tin rằng nó nên truyền
gói tin đến nhóm đó, RP sẽ không gửi thông điệp Register-Stop. Thay vào đó, router sẽ phản ứng
đến thông điệp đăng ký bằng cách mở gói tin multicast và truyền đi.
Trạng thái của RP trong việc phản ứng lại thông điệp đăng ký chỉ ra một chức năng chủ yếu thứ
hai của thông điệp Register. Hai chức năng chính đó là:
- Cho phép một router thông báo cho RP rằng nó có địa chỉ nguồn nội bộ cho một nhóm
multicast.
- Cho phép một router truyền lưu lượng multicast đến RP, đóng gói bên trong một gói
unicast cho đến khi nào quá trình đăng ký là hoàn tất.
Để hiển thị quá trình hoàn tất, hình 20-15 cho thấy một ví dụ. Trong ví dụ, máy H1 đã tham gia
vào nhóm 228.8.8.8, như trong hình 20-14. Các bước sau đây sẽ chỉ ra trong hình 20-15. Lưu ý
là bước 3 tượng trưng cho việc truyền lưu lượng multicast được đóng gói trong thông điệp
Register ở bước 2.
1. máy S1 gửi lưu lượng multicast về nhóm 228.8.8.8
2. Router R1 đóng gói dữ liệu multicast, gửi nó bên trong thông điệp đăng ký gửi về R3
(RP).
3. R3, biết rằng nó cần truyền gói multicast, sẽ tháo gói và gửi nó về H1. Hành động này
cho phép R1 và R3 phân phối dữ liệu multicast trong khi quá trình đăng ký là hoàn thành.
R5 truyền lưu lượng nhóm đến R4 và R4 truyền lưu lượng đó trên LAN.
4. R3 tham gia cây SPT cho nguồn 10.1.1.10, nhóm 228.8.8.8, bằng cách gửi bản tin PIM-
SM Join cho nhóm (10.1.1.10, 228.8.8.8) tới nguồn 10.1.1.10.
5. Khi R1 và R2 nhận được thông báo PIM-SM Join từ R2 yêu cầu lưu lượng nhóm từ
nguồn, chúng bắt đầu chuyển tiếp lưu lượng nhóm đến RP. Tại thời điểm này, R3 (RP)
bây giờ nhận được lưu lượng này trên SPT từ nguồn. Tuy nhiên, R1 cũng vẫn đang gửi
các bản tin Register với các gói tin multicast được đóng gói tới R3.
6. R3 gửi các bản tin Register-Stop unicast tới R1. Khi R1 nhận được các bản tin Register-
Stop từ R3, nó sẽ ngừng gửi các bản tin Register unicast đã đóng gói đến R3.
Tiến trình này có vẻ như gặp nhiều rắc rối, nhưng cuối của tiến trình, các gói multicast sẽ được
phân phối về đúng vị trí chính xác. Tiến trình này sử dụng cây đường đi ngắn nhất từ nguồn về
RP và cây dùng chung shared tree (*,288.8.8.8) từ RP đến mạng cần nhận multicast.
Cũng lưu ý rằng giao thức PIM chỉ để router gấn nguồn đóng gói gói tin multicast bên trong
thông điệp unicast Register. Tuy nhiên, nó là không hiệu quả khi để R1 đóng gói mọi gói tin
multicast,làm cho R3 phải tháo ra mọi gói tin và sau đó để R3 truyền traffic. Vì vậy, PIM-SM có
RP, là R3 trong trường hợp này, tham gia vào cây của nhóm (S,G).
➢ Cây phân phối dùng chung
Trong hình 20-15, lưu lượng nhóm theo đường đi từ RP (R3) đến R5, đến R4 được gọi là cây
phân phối dùng chung. Cây này còn được gọi là root-path tree RPT vì gốc của cây nằm ở RP.
Nếu mạng có nhiều nguồn cho cùng một nhóm, lưu lượng từ các nguồn sẽ đi về RP trước và sau
đó sẽ đi theo cây dùng chung RPT đến tất cả các máy nhận. Bởi vì tất cả các nguồn trong nhóm
multicast là dùng chung một cây, cú pháp (*,G) được dùng để nhận ra một cây RPT. trong đó *
đại diện cho tất cả các nguồn và G đại diện cho địa chỉ nhóm multicast. RPT cho nhóm 228.8.8.8
trong Hình 20-14 sẽ được viết là (*, 228.8.8.8).
Ví dụ 20-7 cho thấy bảng định tuyến multicast cho R4 trong Hình 20-15.

Diễn giải các thông tin trên như sau:


- Dòng đầu tiên hiển thị rằng (*,G) cho nhóm 228.8.8.8 được tạo ra cách đây 8 giây và nếu
R4 không truyền lưu lượng của nhóm trong 2 phút và 58 giây, nó sẽ hết. Mỗi khi R4
truyền một gói tin, đồng hồ sẽ thiết lập lại giá trị 3 phút. Hàng này được tạo ra bởi vì R4
nhận thông điệp IGMP Join từ máy H1.
- RP cho nhóm này là 10.1.10.3 (R3). Cờ S chỉ ra rằng nhóm này dùng giao thức PIM-SM.
Cờ C chỉ ra rằng R4 có một nhóm kết nối trực tiếp cho nhóm 228.8.8.8.
- Cổng đi vào cho nhóm (*,228.8.8.8) là s0 và router láng giềng là 10.1.6.5. Đối với SPT,
cổng RPF được chọn lựa dựa trên đường đi về RP chứ không phải đường đi về nguồn.
- Lưu lượng nhóm được gửi ra cổng E0. Trong ví dụ này, E0 được thêm vào danh sách
cổng ra bởi vì thông điệp IGMP report được nhận trên cổng này. Cổng này đã ở trong
trạng thái chuyển tiếp trong 8 giây. Thông số timer chỉ ra rằng nếu một thông điệp IGMP
Join là không nhận được trên cổng này trong vòng 2 phút 52 giây kế tiếp, cổng này sẽ bị
xóa khỏi danh sách cổng ra.
➢ Hoạt động cập nhật trạng thái bằng thông điệp Join:
Để duy trì trạng thái chuyển tiếp của các cổng, PIM-SM phải gửi ra các thông điệp PIM Join
định kỳ. Nếu một router không gửi thông điệp Join định kỳ, PIM-SM sẽ đưa các cổng về trạng
thái loại bỏ pruned. PIM-SM chọn việc duy trì trạng thái chuyển tiếp trên các kết nối dựa trên hai
tiêu chuẩn chung:
- Một router downstream tiếp tục gửi thông điệp PIM Join cho nhóm.
- Một máy trạm kết nối cục bộ vẫn trả lời thông điệp truy vấn IGMP bằng thông điệp
IGMP Report.
Hình 20-16 cho thấy một ví dụ trong đó R5 duy trì trạng thái forwarding của các kết nối về R3
dựa trên cả hai nguyên nhân này. H2 cũng tham gia cây dùng chung 228.8.8.8. H1 đã tham gia
vào trước.
Ví dụ 20-8 cho thấy bảng định tuyến multicast của R5 trong Hình 20-16, với hai cổng này ở
trạng thái chuyển tiếp.

Trong ví dụ 20-8, Cổng S1 trong trạng thái chuyển tiếp vì R5 nhận được thông điệp PIM-SM
Join mỗi 60 giây từ R4. Trong PIM-SM, các router downstream cần tiếp tục gửi thông điệp PIM-
SM Join mỗi 60 giây đến router upstream. Khi R5 nhận một thông điệp PIM-SM từ R4 trên cổng
s1 của nó, nó sẽ thiết lập thông số thời gian prune timer về giá trị mặc định 3 phút. Nếu R5
không nhận được thông điệp PIM-SM Join từ R4 trước khi thời gian prune trên R5 trên cổng đó
bị hết, R5 đặt cổng s1 trong trạng thái prune và không truyền lưu lượng vào cổng đó.
Trái lại, cổng e0 của R5 được liệt kê như là chuyển tiếp trên danh sách cổng ra của R5 bởi vì R5
đã nhận một thông điệp IGMP Join từ H2.
Trên R5, R5 sẽ gửi thông điệp PIM Join về RP nếu nhận được thông điệp PIM Join từ R4 hoặc
thông điệp IGMP Report trên e0.
➢ Chuyển đổi cây đường đi ngắn nhất:
Các PIM-SM có thể tiếp tục truyền gói tin thông qua PIM-SM thông qua tiến trình hai bước
trong đó nguồn gửi gói tin đến RP và RP gửi gói tin đến tất cả các router khác dùng RPT. Tuy
nhiên khía cạnh thú vị nhất của hoạt động của PIM-SM là mỗi router PIM-SM có thể xây dựng
cây SPT giữa nó và nguồn của nhóm multicast lựa ra đường đi hiệu quả nhất từ nguồn đến
router. Trong hình 20-16, R4 đang nhận lưu lượng nhóm từ nguồn thông qua đường dẫn R1-R2-
R3-R5-R4. Tuy nhiên, rõ ràng là R4 sẽ hiệu quả hơn khi nhận lưu lượng nhóm trực tiếp từ R1
trên cổng s1 của R4.
Thiết kế của PIM-SM cho phép RP xây dựng một cây đường đi ngắn nhất giữa nó và router đang
gắn trực tiếp với nguồn (còn được gọi là DR nguồn) để “kéo” lưu lượng nhóm. Tương tự, PIM-
SM cho phép các router PIM-SM khác xây dựng một cây SPT giữa router và DR nguồn. Đặc
điểm này giúp một router PIM-SM tránh việc sử dụng các đường đi kém hiệu quả trên cây SPT.
Ngoài ra, khi một router bắt đầu nhận lưu lượng nhóm trên cây SPT, nó có thể gửi ra thông điệp
Prune đến các router upstream của cây dùng chung để dừng việc truyền lưu lượng cho nhóm.
Vấn đề đặt ra là, khi nào một router nên chuyển từ RPT sang SPT? RFC 2362 của PIM-SM chỉ
ra rằng “chính sách được khuyến cáo là bắt đầu chuyển sang cây SP sau khi nhận một số đáng kể
các gói dữ liệu trong một khoảng thời gian xác định từ một nguồn xác định”. Số lượng như thế
nào được xem là đáng kể? RFC không chỉ ra. Tuy nhiên, với Cisco router, quá trình chuyển đổi
từ RPT sang dạng cây đường đi ngắn nhất theo nguồn sau khi nó nhận được gói tin đầu tiên từ
cây dùng chung.
Lưu ý: Bạn có thể thay đổi trạng thái này bằng cách cấu hình lệnh toàn cục ip pim spt-threshold
rate trên bất kỳ router nào của bất kỳ nhóm nào. Khi lưu lượng vượt quá tốc độ chỉ ra, router sẽ
tham gia vào cây SPT. Lệnh này chỉ ảnh hưởng trên những router được cấu hình.
Nếu một router chuyển sang SPT, tại sao tham gia vào RPT trước? Trong PIM-SM, một router
không biết địa chỉ của nguồn cho đến khi nó nhận được ít nhất một gói tin của nhóm từ nguồn.
Sau khi nó nhận một gói tin từ RPT, nó có thể học địa chỉ IP của nguồn và bắt đầu chuyển sang
SPT cho nhóm (S,G).
Với hoạt động mặc định của Cisco PIM-SM, khi các gói multicast bắt đầu đến trên cổng s0 của
R4 thông qua cây dùng chung, R4 bắt đầu chuyển sang cây đường đi ngắn nhất cho nguồn
10.1.1.10. Hình 20-17 cho thấy các bước tổng quan.
Ba bước đầu tiên diễn ra như sau:
1. Nguồn (S1,10.1.1.10) gửi gói tin multicast đến router R1 đầu tiên.
2. R1 đẩy gói tin về RP (R3)
3. RP đẩy gói tin về R4 thông qua cây dùng chung. Ở bước 3, R4 học được rằng địa chỉ
nguồn của nhóm multicast 228.8.8.8 là 10.1.1.10. Vì vậy bên cạnh việc đẩy gói tin ở
bước 3, R4 có thể dùng thông tin này để tham gia vào cây SPT cho nhóm 228.8.8.8 từ
nguồn 10.1.1.10.
4. R4 tham khảo bảng định tuyến unicast, tìm ra địa chỉ next hop và cổng ra được dùng để
đến địa chỉ nguồn 10.1.1.10 và gửi thông điệp PIM-SM Join ra cổng đó (S1) về R1.
Thông điệp PIM-SM Join này đặc biệt chỉ cho nhóm (10.1.1.10, 228.8.8.8). Thông điệp
Join đi qua từng trạm cho đến khi nào nó đến được nguồn DR.
5. Kết quả các phép Join, R1 sẽ đặt cổng S1 của nó trong trạng thái chuyển tiếp (10.1.1.10,
228.8.8.8). Vì vậy R1 bắt đầu truyền multicast từ nguồn 10.1.1.10 đến 228.8.8.8 ra khỏi
cổng s1.
R4 bây giờ có trong bảng định tuyến multicast của nó một hàng SPT như trong ví dụ 20-10

Trong ví dụ 10-10, có hai hàng trong nhóm. Cờ J (join) cho cả hai hàng chỉ ra rằng lưu lượng
được chuyển từ RPT sang SPT và bây giờ (S,G) sẽ được dùng để đẩy lưu lượng multicast cho
nhóm. Lưu ý rằng cổng vào của nhóm (*,G) và (S,G) là khác nhau.
➢ Pruning từ cây dùng chung:
Sau khi router PIM-SM đã tham gia vào môt cây SPT hiệu quả hơn, nó có thể không cần nhận
các gói multicast qua cây RPT nữa. Ví dụ: khi R4 trong Hình 20-17 thông báo rằng nó đang nhận
lưu lượng nhóm qua cây RPT và cây SPT, nó có thể và nên yêu cầu RP dừng gửi lưu lượng đó.
Để ngăn RP chuyển tiếp lưu lượng đến một router downstream trên cây dùng chung, router
downstream sẽ gửi một bản tin PIM-SM Prune tới RP. Bản tin Prune tham chiếu đến cây SPT (S,
G) xác định địa chỉ IP của nguồn. Về cơ bản, bản tin Prune có ý nghĩa như sau đối với RP:
Dừng chuyển tiếp các gói từ địa chỉ IP nguồn được liệt kê, đến địa chỉ nhóm được liệt kê, xuống
RPT.
Ví dụ, Hình 20-18 là tiếp tục ví dụ Hình 20-17, R4 gửi một Prune ra cổng s0 của nó về phía R5.
Bản tin Prune liệt kê (S, G) (10.1.1.10, 228.8.8.8) và nó đặt một bit được gọi là bit RP-tree (RPT-
bit). Bằng cách đặt bit RPT trong bản tin Prune, R4 thông báo cho R5 (router downstream) rằng
nó đã chuyển sang SPT và bản tin Prune cho lưu lượng thừa của nhóm 228.8.8.8, từ 10.1.1.10,
mà R4 đang nhận trên cây dùng chung.
Để ngăn các gói được gửi qua RPT đến R4, R5 phải lược bỏ cổng s1 của nó trong RPT (*,
228.8.8.8). R5 cũng có thể tham gia SPT cho (10.1.1.10.228.8.8.8.8).

You might also like