Định tuyến cho traffic multicast, kiểm tra RPF và hoạt động của giao thức PIM-DM
Định tuyến cho traffic multicast
Chức năng của bất kỳ giao thức định tuyến nào là giúp router chuyển một gói tin đi theo
đúng hướng để cuối cùng giúp gói tin đến được địa chỉ đích dự kiến. Để định tuyến một
gói tin, router sẽ kiểm tra địa chỉ đích của gói tin, tìm ra giá trị next-hop trong bảng định
tuyến và đẩy gói tin ra cổng phù hợp. Một gói tin unicast sẽ được truyền dọc theo một
đường đi duy nhất từ nguồn đến đích.
Hình trên mô tả một router sẽ ra quyết định về việc định tuyến một gói tin unicast như thế
nào thông qua việc tham khảo bảng định tuyến. Tuy nhiên khi router nhận được một gói
tin multicast, router không thể tiếp tục chuyển gói tin đi bởi vì địa chỉ IP multicast không
được liệt kê trong bảng định tuyến unicast.
Ngoài ra, router thường phải chuyển các gói multicast đồng thời ra nhiều cổng để đến tất
cả các máy nhận. Các yêu cầu này làm cho quá trình định tuyến multicast phức tạp hơn
unicast. Trên hình vẽ hiển thị một router đã nhận được một gói tin multicast với địa chỉ
đích là 226.1.1.1. Địa chỉ đích tượng trưng cho một nhóm thường xuyên biến động của
các máy nhận, không chỉ là địa chỉ của một máy nhận. Làm thế nào để router tìm ra các
người dùng này nằm ở đâu? Router sẽ đẩy những gói tin multicast này về đâu?
Chức năng của unicast-routing là tìm đường đi ngắn nhất đến một địa chỉ đích nào đó.
Tác vụ này được thực hiện bằng cách dùng các giao thức distance vector hay dùng các cơ
sở dữ liệu liên kết (linkstate). Kết quả của tác vụ này là một hàng trong bảng định tuyến,
chỉ ra cổng outbound hoặc chỉ ra router kế tiếp. Interface đầu ra có thể hiểu như là
interface gần nhất để đi về mạng đích.
Trái lại, chức năng của multicast routing là tìm ra upstream interface, tức là đường đi gần
nhất về source. Bởi vì các multicast routing protocol quan tâm tìm ra đường đi ngắn nhất
về source hơn là đường đi ngắn nhất về đích nên quá trình chuyển gói tin multicast được
gọi là reverse path forwarding.
Cách tốt nhất để một giao thức định tuyến multicast xác định đường đi ngắn nhất về máy
nguồn là tham khảo bảng định tuyến unicast. Tuy nhiên, các gói multicast sẽ được truyền
đi dựa trên thông tin của bảng multicast routing riêng biệt. Lý do cho việc này là router
không chỉ lưu lại cổng upstream mà còn lưu lại cổng downstream của cả nhóm multicast.
Các traffic IP phải được định tuyến giống như bất cứ một gói tin L3 nào. Sự khác nhau là
ở điểm cần phải biết để chuyển gói tin về đâu. Các gói tin L3 dạng unicast chỉ có một
cổng ra duy nhất trên router (ngay cả khi có quá trình load-balancing xảy ra), trong khi
multicast traffic có thể được chuyển mạch ra nhiều cổng, tuỳ thuộc vào các máy nhận
nằm ở đâu. Một vài giao thức định tuyến multicast hiện có.
Đầu tiên, ta phải cho phép định tuyến multicast bằng lệnh
Switch(config)# ip multicast-routing
Cây Multicast
Các router hoặc các multilayer switch trong một mạng phải xác định một tuyến đường để
phân phối các gói tin multicast từ máy nguồn đến từng máy nhận. Khi đó, toàn bộ mạng
giống như một cấu trúc cây, trong đó gốc của cây là nguồn của luồng traffic đó. Mỗi
router dọc theo đường đi sẽ là một nhánh rẽ của cây. Nếu một router biết tất cả các địa
chỉ multicast, router cũng phải biết cần phải nhân bản luồng multicast đó ra những nhánh
nào của cây. Một vài router không có các máy nhận trong các phân đoạn mạng của nó thì
các router đó sẽ không chuyển traffic. Các router khác sẽ có thể có các máy nhận
multicast traffic. Cấu trúc cây này tương tự như cấu trúc cây Spanning Tree vì nó có một
root và các lá. Cấu trúc cây này cũng đảm bảo là không bị vòng lặp sao cho traffic
multicast không bị chuyển ngược về cây.
Kiểm tra RPF (Reverse Path Forwarding)
Các router thường phải thực hiện một phép kiểm tra trên tất cả các gói multicast mà nó
nhận. Reverse Path Forwarding (RPF) là một công cụ để đảm bảo rằng các gói tin không
bị đưa ngược trở về cây multicast ở một vị trí bất kỳ nào đó. Khi một gói tin multicast
được nhận trên một cổng của router, ví dụ cổng E0 của router, địa chỉ nguồn của gói sẽ
được kiểm tra. Sau đó router sẽ so sánh địa chỉ nguồn này với một entry trong bảng định
tuyến unicast. Nếu cột out-going interface của bảng định tuyến cũng đúng bằng cổng
nhận gói multicast (tức E0 trong ví dụ này), gói multicast sẽ được xử lý và chuyển ra các
nhánh của cây. Nếu cổng là không so trùng, điều này có nghĩa là có một ai đó đã đưa gói
vào một vị trí không mong đợi, chuyển gói tin ngược về root. Gói tin lúc này sẽ bị loại
bỏ. Để thực hiện phép kiểm tra RPF này, router chạy giao thức PIM phải tìm kiếm địa chỉ
nguồn trong bảng định tuyến unicast.
Router không thể chỉ nhận gói multicast và sau đó chuyển bản sao ra tất cả các cổng mà
không gây vòng lặp. Để ngăn ngừa loop, các router không chuyển các gói multicast ra
cùng một cổng mà nó nhận. Các multicast router dùng một phép kiểm tra gọi là reverse-
path-forwarding (RPF) check để ngăn ngừa loop.
Phép kiểm tra này sẽ thêm vào một số bước trong hoạt động của một router.
Xem địa chỉ nguồn IP của gói multicast. Nếu có một tuyến đường đúng bằng vớI địa chỉ
nguồn trên, hãy kiểm tra cổng ra trên bảng định tuyến xem có đúng là cổng mà router
nhận được gói tin. Nếu đúng, gói tin đã vượt qua phép kiểm tra RPF. Nếu cổng nhận gói
tin khác với cổng đi ra trong bảng định tuyến, gói tin sẽ không được nhân bản và không
được truyền.
Trên hình mô tả một ví dụ trong đó R3 dùng phép kiểm tra RPF để kiểm tra hai bản sao
của cùng một gói multicast. Máy S1 gửi một gói multicast, R1 phát tán gói này ra R2 và
R3. R2 nhận được phiên bản này và cũng tiếp tục phát tán. Kết quả R3 nhận được cùng
một gói tin từ hai nguồn R2 trên cổng S0/0 và từ R1 trên cổng S0/1. Nếu không có phép
kiểm tra RPF, R3 sẽ tiếp tục chuyển gói tin mà nó nhận được từ R1 đến R2 và ngược lại.
Quá trình loop bắt đầu. Với cùng thuật toán này, R1 và R2 cũng lặp lại quá trình. Vòng
lặp xảy ra làm lãng phí băng thông và tài nguyên router. Một router sẽ không tiếp tục
chuyển gói tin multicast cho đến khi nào gói tin đã vượt qua phép kiểm tra RPF. Trong
hình dướI đây, R3 sẽ quyết định nó có chấp nhận gói tin multicast đến từ R1 hay R2 hay
không. Các bước kiểm tra RPF như sau:
1. R3 kiểm tra địa chỉ nguồn của từng gói tin muliticast đi vào, địa chỉ này là 10.1.1.10.
Địa chỉ nguồn này sẽ được dùng trong quá trình kiểm tra bước 2.
2. R3 xác định cổng của router dùng để đi về địa chỉ 10.1.1.10. Trong trường hợp này,
đường đi của R3 về mạng 10.1.1.0/24 là tìm thấy trong bảng định tuyến unicast. Cổng
của router để đi ra mạng này là cổng S0/1. Vì vậy cổng S0/1 là cổng RPF cho địa chỉ
10.1.1.10
3. R3 so sánh cổng đã xác định ở bước 2 với cổng mà gói tin multicast nhận được. Nếu
cổng này là trùng nhau, router sẽ chấp nhận gói tin và truyền đi, nếu không trùng, router
sẽ loại bỏ gói tin. Trong trường hợp này, R3 sẽ phát tán gói tin nhận trên cổng S0/1 từ R1
nhưng sẽ bỏ qua những gói tin nhận được trên S0/0 từ R2.
Phép kiểm tra RPF triển khai một chiến lược trong đó router chỉ chấp nhận những gói tin
đến đúng trên đường đi ngắn nhất và loại bỏ những gói tin nào đến từ đường đi dài hơn.
Các giao thức định tuyến multicast không thể dùng địa chỉ đích để giúp router truyền gói
tin bởi vì địa chỉ này tượng trưng cho nhóm. Vì vậy, các giao thức định tuyến multicast
dùng phép kiểm tra RPF để xác định rằng gói tin multicast có đến router dùng đường đi
ngắn nhất từ nguồn đến router. Nếu là đúng, giao thức sẽ chấp nhận gói tin và truyền đi.
Các giao thức khác nhau sẽ xác định của cổng RPF khác nhau theo những cách như sau:
- Distance Vector Multicast Routing Protocol (DVMRP) duy trì một bảng định tuyến
multicast và dùng nó để kiểm tra RPF check.
- Protocol Independent Multicast (PIM) và Core-Based Tree (CBT) thường dùng bảng
định tuyến uicast để kiểm tra RPF.
- PIM và CBT cũng có thể dùng bảng định tuyến của DVMRP, hoặc bảng định tuyến
Multiprotocol Border Gateway Protocol (MBGP) hoặc các route cấu hình tĩnh cho kiểm
tra RPF.
- Multicast OSPF không dùng phép kiểm tra RPF bởI vì nó tính toán cả chiều đến và
chiều đi ngắn nhất dựa trên thuật toán Dijkstra.
Tầm vực Multicast
Tầm vực multicast giới hạn việc truyền lưu lượng multicast đến một nhóm của router
nhằm mục đích quản trị, bảo mật hay các chính sách. Nói cách khác, tầm vực multicast là
việc định nghĩa giới hạn các lưu lượng multicast có thể đi xa đến đâu trong hệ thống
mạng. Các mục sau sẽ thảo luận hai phương pháp giới hạn tầm vực multicast:
- Giới hạn dựa trên thông số TTL (TTL scoping)
- Giới hạn quản trị (administrative scoping).
Giới hạn dựa trên thông số TTL
Khi dùng phương thức này, router so sánh giá trị TTL trên một gói tin multicast với một
giá trị TTL được chỉ định trước trên từng cổng của router. Một router truyền các gói tin
multicast chỉ trên những cổng mà giá trị TTL được cấu hình thì nhỏ hơn hoặc bằng giá trị
của các gói multicast. Cơ chế dùng TTL này sẽ khởi động giá trị TTL về giá trị 0 hoặc
vài số cao hơn khi router loại bỏ các gói multicast. Hình dưới đây mô tả một ví dụ của
router multicast với các giá trị TTL khác nhau được cấu hình trên các cổng:
Trong hình trên, một gói tin multicast đến trên cổng S1 với giá trị TTL bằng 18. Router
sẽ trừ giá trị TTL của gói tin đi 1, còn lại 17. Giả sử rằng router được cấu hình với chế độ
dense và cả bốn cổng của router đều kiểm tra RPF thành công. Nói cách khác, router sẽ
muốn truyền một bản sao của gói tin trên từng cổng. Router sẽ xem xét giá trị TTL còn
lại của gói tin, hiện là 17, với giá trị TTL được cấu hình trên từng cổng ra. Nếu giá trị
TTL của gói tin là cao hơn giá trị TTL được cấu hình trên cổng, router sẽ nhân bản gói
tin ra cổng đó. Nếu khác đi, router sẽ không truyền. Trên Cisco router, giá trị TTL mặc
định của tất cả các cổng là 0.
Trên cổng S0 và S2, người quản trị đã cấu hình giá trị TTL bằng 8 và 32. Một phiên bản
của gói tin sẽ được truyền trên cổng S0 và E0 bởi vì giá trị giới hạn TTL là nhỏ hơn 17.
Tuy nhiên, gói tin sẽ không được truyền trên cổng S2 vì giá trị TTL của cổng là 32, lớn
hơn 17. Cơ chế dùng TTL này có vài điểm yếu. Đầu tiên là nó triển khai khó trên một hệ
thống mạng lớn và phức tạp bởi vì việc phỏng đoán giá trị TTL chính xác trên nhiều
router và nhiều cổng là một công việc tốn sức.
Một vấn đề khác với cơ chế giới hạn tầm vực dùng TTL là các giá trị TTL được cấu hình
trên các cổng sẽ áp dụng tới tất cả các gói multicast. Nếu bạn muốn hỗ trợ cho nhiều
phiên multicast khác nhau, bạn phải thao tác trên ứng dụng để thay đổi giá trị TTL khi
gói tin rời khỏi nguồn.
Giới hạn dùng tầm vực quản trị
Trong các chương trước, tầm vực quản trị của các địa chỉ multicast là trong tầm từ
239.0.0.0 đến 239.255.255.255. Dãy địa chỉ này có thể được dùng để giớI hạn việc truyền
dữ liệu multicast ra ngoài một domain. Cơ chế này yêu cầu phảI cấu hình thủ công. Bạn
có thể cấu hình và áp dụng bộ lọc trên một cổng của router sao cho các dữ liệu multicast
và địa chỉ nhóm trong tầm địa chỉ private sẽ không được phép đi vào hay đi ra.
Giao thức PIM
Protocol Independent Multicast (PIM) là một giao thức định tuyến có thể được dùng để
chuyển các multicast traffic. PIM hoạt động độc lập với các giao thức định tuyến unicast
IP vì vậy PIM sử dụng bảng định tuyến IP. Cần chú ý là bảng unicast routing cũng không
phụ thuộc vào các giao thức định tuyến vì nhiều giao thức định tuyến có thể đóng góp
vào cùng một bảng định tuyến. PIM có thể hoạt động ở ba chế độ:
+ PIM Dense Mode
+ PIM Sparse Mode
+ PIM Sparse Dense Mode (do Cisco đưa ra)
PIM Dense Mode
Các giao thức định tuyến hoạt động theo chế độ dày đặc (dense mode) giả sử rằng các
ứng dụng multicast là nhiều đến mức ở mọi subnet đều có ít nhất một máy nhận lưu
lượng. Vì vậy, các giao thức hoạt động theo chế độ dày đặc này làm cho router đẩy lưu
lượng multicast ra tất cả những cổng đã được cấu hình, với một vài 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 ra một cổng mà nó
được nhận. Hình dưới đây mô tả một giao thức định tuyến hoạt động ở chế độ dense nhận
một gói multicast trên một cổng và đẩy những phiên bản sao chép ra tất cả những cổng
khác.
Hình trên mô tả hoạt động của chế độ dense trên R1. R1 sẽ phát tán tất cả các bản sao của
gói tin ra khỏi tất cả các cổng, ngoại trừ cổng mà gói tin được nhận. Mặc dù trên hình chỉ
hiển thị một router, các router khác có thể nhận lưu lượng multicast này và sẽ lặp lại cùng
một tiến trình. Tất cả các mạng sẽ nhận một bản sao của gói tin multicast ban đầu. Chế độ
dense giả sử rằng tất cả các subnet đều cần nhận một bản sao của gói tin, tuy nhiên chế độ
dense cho phép router không nhận lưu lượng của một nhóm multicast cụ thể. Chế độ
dense thường không muốn nhận gói multicast của một nhóm nếu cả hai điều kiện sau là
đúng:
1. Router này không có một router láng giềng bên dưới cần nhận gói cho nhóm đó
2. Router không biết bất kỳ host nào trên cổng kết nối trực tiếp đã tham gia vào 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 đó. Thông điệp này được gọi là thông điệp 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 đó đườ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
thông điệp Prune và PIM-SM sẽ không gửi lưu lượng cho đến khi nào router nhận được
thông điệp 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.
Hình thành các quan hệ láng giếng PIM dùng cơ chế 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 thông điệp 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 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ệ. Thông điệp 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 thường ba lần thời gian gửi hello của PIM.
Nếu bên router nhận không nhận được thông điệp 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 thông điệp 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 thông điệp 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 theo nguồn
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. Cây sẽ định nghĩa một đường đi
từ host nguồn (tạo ra các gói multicast) và tất cả các subnet cần phải nhận một phiên bản
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.
Chế độ cấu hình trên ba router thì đơn giản. Chỉ cần thêm vào lệnh ở chế độ toàn cục: ip
multicast-routing trên từng router và lệnh ở interface ip pim dense-mode trên tất cả các
cổng của router. 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 host lắng nghe đến địa chỉ nhóm. 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 trên sẽ
được viết là (10.1.1.10, 226.1.1.1). Đoạn cấu hình 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 thông điệp tham gia IGMP Join cho nhóm 226.1.1.1.
#show ip mroute
(10.1.1.10/32, 226.1.1.1), 00:00:12/00:02:48, flags: CT
Incoming interface: Serial0/1, RPF nbr 10.1.4.1
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:00:12/00:00:00
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).
Theo đặc tả của PIM-DM, bảng định tuyến multicast chỉ cần các hàng (S,G). Tuy nhiên,
đốI vớI từng hàng (S,G), một router sẽ tạo ra một (*,G) như là một hàng cha để tăng tính
hiệu quả thiết kế. Hàng (*,G) không được dùng để chuyển lưu lượng multicast cho một
nhóm dùng PM-DM. Vì vậy để đơn giản và rõ ràng, hàng (*,G) không được hiển thị
trong ví dụ dùng PIM-DM. Nếu bạn xây dựng như cùng một hình vẽ trên và cấu hình
PIM-DM, hàng (*,G) cũng sẽ được liệt kê trong kết quả của lệnh show ip mroute.
Thông điệp 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 thông
điệp Prune. Ví dụ, 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 thông điệp 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 thông điệp Prune:
Thông điệp 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 thông điệp Prune từ một cây (S,G).
Hình dưới đây mô tả sơ đồ mạng với R3 gửi thông điệp Prune đến R2.
Như là kết quả của thông điệp 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). Dưới đây là bảng định tuyến cho R2, trong đó hiển
thị trạng thái bị loại bỏ.
#show ip mroute
(10.1.1.10/32, 226.1.1.1), 00:00:14/00:02:46, flags: CT
Incoming interface: Serial0/0, RPF nbr 10.1.2.1
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:00:14/00:00:00
Serial0/1, Prune/Dense, 00:00:08/00:02:52
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 thông điệp 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 thông điệp 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 thông điệp Prune là hết, router thay đổi ngược về trạng thái forwarding
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 thông điệp
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.
PIMv2 có một giải pháp tốt hơn để duy trì tình trạng bị loại bỏ pruned của một cổng dùng
thông điệp State Refresh. Lưu ý rằng một multicast router có thể có nhiều hơn một cổng
trong danh sách cổng ra, nhưng router chỉ có thể có một cổng trên danh sách cổng vào.
Cổng duy nhất mà router sẽ nhận và xử lý multicast từ một nguồn đặc biệt là cổng RPF.
Router vẫn thực hiện một phép kiểm tra RPF với thông tin trên cổng vào và các cổng
RPF (thông tin trong kết quả câu lệnh show ip mroute có chỉ ra cổng RPF và các router
láng giềng).
PIM-DM: Phản ứng với một kết nối bị sự cố
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.
Trên hình, khi kết nối giữa R1 và R2 bị đứt. Sau khi giao thức định tuyến unicast hội tụ,
R3 cần phải cập nhật các router RPF láng giềng từ 10.1.4.1 (R1) sang thành 10.1.3.2
(R2). Trong trường hợp này, H1 gửi ra một thông điệp Leave. Dưới đây là kết quả bảng
multicast routing trên R3. Lưu ý rằng cổng RPF và các router láng giềng đã thay đổi, chỉ
sang R2.
(10.1.1.10/32, 226.1.1.1), 00:02:16/00:01:36, flags: CT
Incoming interface: Serial0/0, RPF nbr 10.1.3.2
Outgoing interface list:
FastEthernet0/0, Forward/Dense, 00:02:16/00:00:00
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 đã loại
bỏ cổng S0/1 của nó ra khỏi cây SPT. Vì vậy R2 cần phải thay đổi cổng S0/1 của nó trở
lại trạng thái forwarding cho cây SPT (10.1.1.10, 226.1.1.1). Ví dụ kế tiếp hiển thị bảng
định tuyến multicast cho (10.1.1.10, 226.1.1.1) trên R2.
(10.1.1.10/32, 226.1.1.1), 00:03:14/00:02:38, flags: T
Incoming interface: Serial0/0, RPF nbr 10.1.2.1
Outgoing interface list:
Serial0/1, Forward/Dense, 00:02:28/00:00:00
R2 thay đổi cổng S0/1 của nó sang trạng thái forwarding bởi vì thông điệp PIM graft
được gửi bởi R3. Trong ví dụ trên, 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 thông điệp 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 thông điệp Prune về R2.
Các luật cho quá trình loại bỏ
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 thông điệp 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. 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. Một router downstream là
một router mà R1 chuyển một vài gói multicast cho một cây SPT. Ví dụ, R1 là upstream
của R1 cho những gói tin mà R1 đang gửi đến 226.1.1.1. R3 là downstream router của R2
cũng cho những gói tin này bởi vì R2 gửi những gói tin này đến R3. PIM-DM có thể
chọn lựa để gửi thông điệp Prune vì nhiều lý do. Những lý do chính là:
- 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 cả hai sự kiện sau là đúng. Một là không có host cục bộ nào
trong một nhóm đang lắng nghe đến multicast. Hai là không có router downstream nào
đang lắng nghe đến nhóm.
Phần này giải thích nguyên nhân thứ hai của việc gửi thông điệp prune. Máy duy nhất cần
gửi gói tin đế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 dưới đây mô tả máy H2 gửi thông điệp rời khỏi nhóm Leave.
Sau đó PIM-DM dùng thông tin này để cập nhật động SPT.
Hình trên mô tả tiến trình hoạt động gồm ba bước:
1. Máy H2 rời khỏi nhóm multicast bằng cách gửi ra thông điệp rời khỏi nhóm.
2. R3 dùng thông điệp 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 thông điệp 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 thông điệp 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 thông điệp 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).
Bảng định tuyến multicast cho nhóm 226.1.1.1 trên R3
(10.1.1.10/32, 226.1.1.1), 00:03:16/00:01:36, flags: PT
Incoming interface: Serial0/0, RPF nbr 10.1.3.2
Outgoing interface list: Null
Sau khi tất cả các bước đã hoàn tất, R1 cũng không cần gửi gói tin về 226.1.1.1 ra bất kỳ
cổng nào. Sau khi nhận thông điệp Prune từ R2, R1 cũng cập nhật danh sách cổng ra,
trong đó hiển thị rằng chỉ có một cổng ra và cổng đó trong danh sách loại bỏ.
(10.1.1.10/32, 226.1.1.1), 00:08:35/00:02:42, flags: CT
Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0
Outgoing interface list:
Serial0/0, Prune/Dense, 00:00:12/00:02:48
Trong đoạn kết quả trên, 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 thông điệp Prune và thông điệp Join, thay
vào đó PIM-DM và PIM-SM dùng một thông điệp đơn duy nhấn gọI là thông điệp
Join/Prune. Một thông điệp Prune là một thông điệp Join/Prune có địa chỉ nhóm được chỉ
ra trong trường Prune. Một thông điệp Join là một thông điệp Join/Prune có địa chỉ nhóm
liệt kê trong trường Join.