Powered by Blogger.

IPV6 - BÀI SỐ 15: MULTICAST

Trong các bài viết trước, chúng ta đã khảo sát nhiều vấn để về IPv6: hoạt động cơ bản, các giao thức định tuyến, các cơ chế chuyển đổi v4 – v6,.v.v… Trong bài viết này, chúng ta tiếp tục khảo sát một vấn đề quan trọng của IPv4 sẽ được hiện thực như thế nào trên IPv6: Multicast.

Như thường lệ, chúng ta sẽ cùng trao đổi vấn đề đang quan tâm thông qua một bài lab ví dụ.

SƠ ĐỒ

 Hinh-1-So-do-bai-lab-vi-du
Hình 1 – Sơ đồ bài lab ví dụ.

MÔ TẢ

      · Sơ đồ lab ở trên gồm 5 router được đấu nối với nhau, mô phỏng một sơ đồ mạng doanh nghiệp nhiều chi nhánh. Sơ đồ này sẽ được chạy IPv6 và sử dụng giao thức định tuyến OSPFv3 để đảm bảo mọi địa chỉ trên sơ đồ có thể thấy được nhau.
      · Ta sẽ thực hiện triển khai định tuyến Multicast trên sơ đồ nói trên. Các user thuộc các mạng LAN của chi nhánh R4 và R5 là các receiver cho các lưu lượng multicast mà ta sẽ phát ra từ R1 để test.

THỰC HIỆN

BƯỚC 1: CẤU HÌNH ĐẶT ĐỊA CHỈ VÀ CHẠY ĐỊNH TUYẾN OSPFV3

       · Thực hiện đặt địa chỉ IPv6 cho các cổng trên các router theo quy hoạch IPv6 được chỉ ra trên hình 1.
       · Chạy định tuyến OSPFv3 đảm bảo mọi địa chỉ IPv6 thấy nhau.

CẤU HÌNH

Trên R1:
R1(config)#ipv6 unicast-routing
R1(config)#ipv6 router ospf 1
R1(config-rtr)#router-id 1.1.1.1
R1(config-rtr)#exit
R1(config)#interface loopback 0
R1(config-if)#ipv6 address fc00:1::1/64
R1(config-if)#ipv6 ospf 1 area 0
R1(config-if)#exit
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config-if)#ipv6 address 2001:12::1/64
R1(config-if)#ipv6 address fe80::1 link-local
R1(config-if)#ipv6 ospf 1 area 0
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ipv6 address 2001:13::1/64
R1(config-if)#ipv6 address fe80::1 link-local
R1(config-if)#ipv6 ospf 1 area 0
R1(config-if)#exit
Trên R2:
R2(config)#ipv6 unicast-routing
R2(config)#ipv6 router ospf 1
R2(config-rtr)#router-id 2.2.2.2
R2(config-rtr)#exit
R2(config)#interface loopback 0
R2(config-if)#ipv6 address fc00:2::2/64
R2(config-if)#ipv6 ospf 1 area 0
R2(config-if)#exit
R2(config)#interface f0/0
R2(config-if)#bandwidth 100000
R2(config-if)#no shutdown
R2(config-if)#ipv6 address 2001:12::2/64
R2(config-if)#ipv6 address fe80::2 link-local
R2(config-if)#ipv6 ospf 1 area 0
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#no shutdown
R2(config-if)#ipv6 address 2001:23::2/64
R2(config-if)#ipv6 address fe80::2 link-local
R2(config-if)#ipv6 ospf 1 area 0
R2(config-if)#exit
Trên R3:
R3(config)#ipv6 unicast-routing
R3(config)#ipv6 router ospf 1
R3(config-rtr)#router-id 3.3.3.3
R3(config-rtr)#exit
R3(config)#interface loopback 0
R3(config-if)#ipv6 address fc00:3::3/64
R3(config-if)#ipv6 ospf 1 area 0
R3(config-if)#exit
R3(config)#interface f0/0
R3(config-if)#no shutdown
R3(config-if)#ipv6 address 2001:13::1/64
R3(config-if)#ipv6 address fe80::3 link-local
R3(config-if)#ipv6 ospf 1 area 0
R3(config-if)#exit
R3(config)#interface f0/1
R3(config-if)#ipv6 address 2001:23::3/64
R3(config-if)#ipv6 address fe80::3 link-local
R3(config-if)#ipv6 ospf 1 area 0
R3(config-if)#exit
R3(config)#interface s0/0/0
R3(config-if)#no shutdown
R3(config-if)#ipv6 address 2001:34::3/64
R3(config-if)#ipv6 address fe80::3 link-local
R3(config-if)#ipv6 ospf 1 area 0
R3(config-if)#exit
R3(config)#interface s0/1/0
R3(config-if)#no shutdown
R3(config-if)#ipv6 address 2001:35::3/64
R3(config-if)#ipv6 address fe80::3 link-local
R3(config-if)#ipv6 ospf 1 area 0
R3(config-if)#exit
Trên R4:
R4(config)#ipv6 unicast-routing
R4(config)#ipv6 router ospf 1
R4(config-rtr)#router-id 4.4.4.4
R4(config-rtr)#exit
R4(config)#interface loopback 0
R4(config-if)#ipv6 address fc00:4::4/64
R4(config-if)#ipv6 ospf 1 area 0
R4(config-if)#exit
R4(config)#interface s0/0/0
R4(config-if)#no shutdown
R4(config-if)#ipv6 address 2001:34::4/64
R4(config-if)#ipv6 address fe80::4 link-local
R4(config-if)#ipv6 ospf 1 area 0
R4(config-if)#exit
R4(config)#interface f0/0
R4(config-if)#no shutdown
R4(config-if)#ipv6 address 2001:4::1/64
R4(config-if)#ipv6 ospf 1 area 0
R4(config-if)#exit
Trên R5:
R5(config)#ipv6 unicast-routing
R5(config)#ipv6 router ospf 1
R5(config-rtr)#router-id 5.5.5.5
R5(config-rtr)#exit
R5(config)#interface loopback 0
R5(config-if)#ipv6 address fc00:5::5/64
R5(config-if)#ipv6 ospf 1 area 0
R5(config-if)#exit
R5(config)#interface s0/0/0
R5(config-if)#no shutdown
R5(config-if)#ipv6 address 2001:35::5/64
R5(config-if)#ipv6 address fe80::5 link-local
R5(config-if)#ipv6 ospf 1 area 0
R5(config-if)#exit
R5(config)#interface f0/0
R5(config-if)#no shutdown
R5(config-if)#ipv6 address 2001:5::1/64
R5(config-if)#ipv6 ospf 1 area 0
R5(config-if)#exit

KIỂM TRA

Ta thực hiện kiểm tra bảng định tuyến OSPF trên các router để xác nhận rằng các prefix của sơ đồ đều đã xuất hiện đầy đủ trong bảng định tuyến của chúng. Ví dụ, trên R1:
R1#show ipv6 route ospf
IPv6 Routing Table - 16 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
 U - Per-user Static route
 I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
 O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
O 2001:4::/64 [110/66]
 via FE80::3, FastEthernet0/1
O 2001:5::/64 [110/66]
 via FE80::3, FastEthernet0/1
O 2001:23::/64 [110/2]
 via FE80::3, FastEthernet0/1
 via FE80::2, FastEthernet0/0
O 2001:34::/64 [110/65]
 via FE80::3, FastEthernet0/1
O 2001:35::/64 [110/65]
 via FE80::3, FastEthernet0/1
O FC00:2::2/128 [110/1]
 via FE80::2, FastEthernet0/0
O FC00:3::3/128 [110/1]
 via FE80::3, FastEthernet0/1
O FC00:4::4/128 [110/65]
 via FE80::3, FastEthernet0/1
O FC00:5::5/128 [110/65]
 via FE80::3, FastEthernet0/1
Ta sử dụng một TCL Ping Script để kiểm tra rằng R1 đã đi đến được tất cả các địa chỉ khác trong mạng:
R1(tcl)#foreach i {
+>(tcl)#fc00:1::1
+>(tcl)#fc00:2::2
+>(tcl)#fc00:3::3
+>(tcl)#fc00:4::4
+>(tcl)#fc00:5::5
+>(tcl)#2001:12::1
+>(tcl)#2001:12::2
+>(tcl)#2001:13::1
+>(tcl)#2001:13::3
+>(tcl)#2001:23::2
+>(tcl)#2001:23::3
+>(tcl)#2001:34::3
+>(tcl)#2001:34::4
+>(tcl)#2001:35::3
+>(tcl)#2001:35::5
+>(tcl)#2001:4::1
+>(tcl)#2001:5::1
+>(tcl)#} {ping $i }

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:1::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/3/4 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:2::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/28/64 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:3::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/59/96 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:4::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/62/80 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00:5::5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 68/75/84 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:12::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/2/4 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:12::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/23/36 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:13::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/3/4 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:13::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/32/76 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:23::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/22/48 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:23::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/46/76 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:34::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/58/84 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:34::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/73/88 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:35::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/55/80 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:35::5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/68/88 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:4::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/80/96 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:5::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/64/88 ms
R1(tcl)#
Ta có thể thực hiện kiểm tra tương tự trên các router còn lại.

BƯỚC 2: CẤU HÌNH IPV6 MULTICAST ROUTING

      · Bật định tuyến multicast trên tất cả các router trên sơ đồ hình 1.
      · Tắt PIM trên link Ethernet nối giữa R1 và R3.
      · Cấu hình khai báo tĩnh router RP cho hệ thống là router R3, sử dụng địa chỉ trên cổng loopback 0 của R3 làm địa chỉ RP.
      · Cấu hình để các cổng F0/0 của R4 và R5 tham gia nhóm multicast FF05::5/128. Kiểm tra rằng router R1 có thể ping thành công đến nhóm multicast này.
      · Cấu hình để R5 phát gói query của giao thức MLD xuống VLAN nằm trên cổng F0/0 theo định kỳ 10s/lần.

CẤU HÌNH

Trên tất cả các router từ R1 đến R5:
R(config)#ipv6 multicast-routing
R(config)#ipv6 pim rp-address fc00:3::3
Trên R1 và R3:
R1(config)#interface f0/1
R1(config-if)#no ipv6 pim
R1(config-if)#exit
R3(config)#interface f0/1
R3(config-if)#no ipv6 pim
R3(config-if)#exit
Trên R4:
R4(config)#interface f0/0
R4(config-if)#ipv6 mld join-group FF05::5
R4(config-if)#exit
Trên R5:
R5(config)#interface f0/0
R5(config-if)#ipv6 mld join-group ff05::5
R5(config-if)#ipv6 mld query-interval 10
R5(config-if)#exit

GHI CHÚ

Tương tự như với IPv4 multicast, để có thể triển khai được một giải pháp truyền dữ liệu theo phương thức multicast trên nền IPv6, ít nhất chúng ta phải xây dựng các thành phần sau của một hệ thống multicast trên các thiết bị mạng:
      · Một dải địa chỉ dành riêng cho hoạt động multicast.
      · Phương thức định tuyến multicast để đảm bảo các luồng dữ liệu multicast được phân phối theo các lộ trình tối ưu từ nguồn phát đến các thiết bị thu.
      · Một cơ chế báo hiệu để các thiết bị nhận đầu cuối báo hiệu lên hệ thống mạng về nhóm multicast mà chúng muốn nhận dữ liệu.
Như đã đề cập đến trong bài viết đầu tiên của chuỗi bài viết về IPv6, dải địa chỉ IPv6 multicast là tất cả các IP nằm trong dải FF00::/8. Nói cách khác, một địa chỉ IPv6 multicast luôn luôn có byte đầu tiên có giá trị là FF. Ta có thể nhắc lại một vài địa chỉ multicast dùng trên local link tiêu biểu:
Địa chỉ
Ứng dụng
FF02::1
Tất cả các host trên link.
FF02::2
Tất cả các router trên link.
FF02::5, FF02::6
OSPFv3.
FF02::9
RIPng.
FF02::A
EIGRPv6.
Bảng 1 – Một số địa chỉ Multicast thông dụng.
Trong câu lab này chúng ta đã thực hiện cấu hình định tuyến multicast bằng cách sử dụng giao thức PIMv2 cho IPv6 (PIM: Protocol Independent Multicast). Cơ chế này có rất nhiều điểm tương đồng với PIMv2 cho IPv4, tuy nhiên PIMv2 cho IPv6 không hỗ trợ Dense Mode mà chỉ hỗ trợ Sparse Mode.
Chúng ta sử dụng câu lệnh sau để bật định tuyến multicast cho IPv6 trên các router:
R(config)#ipv6 multicast-routing
Khi chúng ta bật định tuyến Multicast, giao thức PIM cũng sẽ được tự động bật trên tất cả các cổng IPv6. Để có thể tắt PIM trên một số cổng nào đó, chúng ta có thể vào cổng đó và sử dụng lệnh:
R(config-if)#no ipv6 pim
Chúng ta có thể sử dụng phương thức khai báo tĩnh địa chỉ của RP (Rendezvous Point) hoặc sử dụng giao thức BSR để các router có thể học tự động địa chỉ RP. Trong bài lab này, chúng ta thực hiện khai báo tĩnh:
R(config)#ipv6 pim rp-address Địa_chỉ_của_RP
Giao thức MLD – Multicast Listener Discovery dựa trên nền tảng ICMPv6 được dùng để thay thế cho giao thức IGMP đối với giải pháp multicast trên hạ tầng IPv6. Về đặc điểm, MLDv1 tương đương với IGMPv2 và MLDv2 tương đương với IGMPv3 của bên IPv4 multicast.
MLD hỗ trợ ba kiểu thông điệp tương tự như với các thông điệp của các giao thức IGMP: Query, Report và Done (tương đương với thông điệp IGMP Leave của IGMPv2). Các timer của MDL hoàn toàn giống với các timer của IGMPv2 và IGMPv3. Trong câu lab này, chúng ta chỉ hiệu chỉnh query – interval của MLD trên cổng F0/0 của R5:
R5(config)#interface f0/0
R5(config-if)#ipv6 mld query-interval 10
R5(config-if)#exit
Để cấu hình một cổng router tham gia vào một group multicast nào đó để giả lập user của nhóm này, chúng ta sử dụng lệnh:
R(config-if)#ipv6 mld join-group Địa_chỉ_group

KIỂM TRA

Chúng ta thực hiện ping multicast đến group FF05::5 từ R1, giả lập R1 như một nguồn phát multicast cho group này:
R1#ping ff05::5 repeat 100
Output Interface: FastEthernet0/0
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to FF05::5, timeout is 2 seconds:
Packet sent with a source address of 2001:12::1

Reply to request 0 received from 2001:4::1, 172 ms
Reply to request 0 received from 2001:5::1, 192 ms
Reply to request 1 received from 2001:5::1, 112 ms
Reply to request 1 received from 2001:4::1, 112 ms
Reply to request 2 received from 2001:5::1, 72 ms
Reply to request 2 received from 2001:4::1, 112 ms
Reply to request 3 received from 2001:5::1, 72 ms
Reply to request 3 received from 2001:4::1, 104 ms
Reply to request 4 received from 2001:5::1, 84 ms
Reply to request 4 received from 2001:4::1, 112 ms
Reply to request 5 received from 2001:4::1, 72 ms
Reply to request 5 received from 2001:5::1, 72 ms
Reply to request 6 received from 2001:4::1, 76 ms
Reply to request 6 received from 2001:5::1, 112 ms
Reply to request 7 received from 2001:4::1, 144 ms
Reply to request 7 received from 2001:5::1, 184 ms
Reply to request 8 received from 2001:5::1, 92 ms
Reply to request 8 received from 2001:4::1, 92 ms
Ta thấy mỗi gói tin ping gửi đi đều được reply về từ hai “end – user” trên hai cổng F0/0 của R4 và R5, cho thấy lưu lượng multicast đã được chuyển tải thành công qua mạng multicast vừa xây dựng.
Cổng multicast F0/0 của R5 đã được cấu hình đúng đắn giá trị query – timer của giao thức MLD:
R5#show ipv6 mld interface f0/0
FastEthernet0/0 is up, line protocol is up
 Internet address is FE80::221:A0FF:FE3B:D828/10
 MLD is enabled on interface
 Current MLD version is 2
 MLD query interval is 10 seconds
 MLD querier timeout is 25 seconds
 MLD max query response time is 10 seconds
 Last member query response interval is 1 seconds
 MLD activity: 8 joins, 0 leaves
 MLD querying router is FE80::221:A0FF:FE3B:D828 (this system)
Trên đây chúng ta đã hoàn tất một ví dụ lab đơn giản về cấu hình định tuyến multicast cho một sơ đồ chạy IPv6.
Multicast là một công nghệ lớn và phức tạp. Để có thể nắm vững các nguyên lý và cách thức triển khai multicast ở mức độ sâu hơn, chúng ta cần tìm hiểu kỹ bắt đầu từ multicast trên IPv4 và từ đó đưa ra sự tương quan với hiện thực trên IPv6 để có thể làm việc tốt với công nghệ này trên cả hai hạ tầng v4 và v6.
Bài viết về IPv6 multicast đã kết thúc chuỗi bài chuyên đề về IPv6 được trình bày trên www.ntps.edu.vn. Chúng ta sẽ tiếp tục với các chuyên đề khác trong các bài viết tới.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!
Nguồn  : http://www.ntps.edu.vn/blog/172-ipv6-bai-so-15-multicast

    Blogger Comment
    Facebook Comment