• If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Multicast trong mạng hoạt động (Active network)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Multicast trong mạng hoạt động (Active network)

    Tác giả:

    + Lê Anh Đức
    + Ngô Tự Nhiên


    8.1. Tổng quan về multicast

    Có ba kiểu truyền IP traffic trên router và switch:

    • Unicast: Các gói tin được gửi từ một địa chỉ nguồn đến một địa chỉ đích. Một router hoặc một thiết bị lớp 3 sẽ chuyển các gói tin bằng cách tìm địa chỉ đích trong bảng định tuyến. Nếu một thiết bị là L2, nó chỉ cần dựa vào địa chỉ MAC.
    • Broadcast: Các gói tin được gừi từ một máy nguồn đến một địa chỉ đích broadcast. Địa chỉ đích có thể là địa chỉ tất cả các hosts (255.255.255.255) hoặc là một phần của địa chỉ subnet. Một router hoặc một L3 switch sẽ không cho phép chuyển các dữ liệu broadcast này. Một thiết bị L2 sẽ cho phép phát tán broadcast traffic ra tất cả các cổng của nó.
    • Multicast: Các gói được gửi từ một địa chỉ nguồn đến một nhóm các máy tính. Địa chỉ đích tượng trưng bằng các hosts muốn nhận traffic này. Mặc định, một router hoặc một L3 switch sẽ không chuyển các gói tin này trừ khi phảI cấu hình multicast routing. Một thiết bị L2 switch không thể nhận biết được vị trí của địa chỉ multicast đích. Tất cả các gói sẽ được phát tán ra tất cả các port ở chế độ mặc định.

    Có hai thái cực được mô tả ở đây. Cơ chế dùng unicast thì dữ liệu sẽ đi từ host đến host; broadcast thì traffic sẽ đi đến tất cả các host trên phân đoạn mạng đó. Cơ chế multicast sẽ nằm giữa hai thái cực này, trong đó máy nguồn chỉ gửi những gói tin từ một host đến các người dùng muốn nhận loại traffic đó. Nhóm này gọi là nhóm multicast. Các máy nhận multicast traffic có thể nằm ở bất cứ nơi nào chứ không chỉ trên phân đoạn mạng cục bộ.

    Các traffic dạng multicast thường là một chiều (unidirectional). Do có nhiều host nhận cùng một dữ liệu, nên thông thường các gói tin không được phép gửi ngược về máy nguồn trên cơ chế multicast. Một host đích sẽ trả traffic ngược về nguồn theo cơ chế unicast. Cơ chế multicast cũng sẽ được truyền theo kiểu phi-kết-nối (connectionless). Multicast dùng UDP chứ không dùng TCP.

    Các host muốn nhận dữ liệu từ một nguồn multicast có thể tham gia hoặc rời khỏi một nhóm multicast ở bất kỳ thời điểm nào. Hơn nữa, một host sẽ quyến định có trở thành thành viên của một hay nhiều nhóm multicast hay không . Nguyên tắc cần quan tâm là sẽ hoạch định làm thế nào để phân phối các multicast traffic đến các thành viên của nhóm mà không ảnh hưởng đến các thành viên ngoài nhóm.

    8.2. Địa chỉ multicast:

    Các router và switch phảI có phương thức để phân biệt traffic dạng multicast vớI dạng unicast hay broadcast. Điều này thực hiện thông qua việc gán địa chỉ IP, bằng cách dùng địa chỉ lớp D từ 224.0.0.0 đến 239.255.255.255 chỉ cho multicast. Các thiết bị mạng có thể nhanh chóng lọc ra các địa chỉ multicast bằng cách đọc 4 bit bên trái của một địa chỉ. Bốn bit này của một địa chỉ multicast luôn luôn bằng 1110.

    Làm thế nào mà một router và switch kết hợp một địa chỉ multicast của IP với một địa chỉ MAC. Do không có cơ chế tương đương với cơ chế ARP, một dạng giá trị đặc biệt dành riêng cho địa chỉ MAC của multicast sẽ được dùng. Các địa chỉ này bắt đầu bằng 0100.5e. Phần 28 bit sau của địa chỉ multicast Ip sẽ được ánh xạ vào 23 bit thấp của địa chỉ MAC bằng một giải thuật đơn giản.



    Hình 8. 1 Ánh xạ địa chỉ IP với địa chỉ MAC

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

    - Toàn bộ không gian địa chỉ multicast: 224.0.0.0-239.255.255.255
    - Địa chỉ link-local: 224.0.0.0-224.0.0.255 được dùng bởi các giao thức định tuyến. Router sẽ không chuyển các gói tin có địa chỉ này. Các địa chỉ bao gồm địa chỉ tất cả các host all-hosts 224.0.0.1, tất cả các router 224.0.0.2, tất cả các OSPF routers 224.0.0.5…Đây là địa chỉ các nhóm cố định vì các địa chỉ này được định nghĩa trước.
    - Tầm địa chỉ dành cho quản trị (239.0.0.0-239.255.255.255) được dùng trong các vùng multicast riêng, giống như dãy địa chỉ dành riêng trong RFC1918. Địa chỉ này không được route giữa các domain nên nó có thể được dùng lại nhiều lần.
    - Địa chỉ toàn cục (224.0.1.0-238.255.255.255) được dùng bởi bất cứ đối tượng nào. Các địa chỉ này có thể được route trên Internet, vì vậy địa chỉ này phải duy nhất.

    8.3. Định tuyến cho traffic 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ó. Bài viết này tập trung vào PIM.

    8.3.1. 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.

    8.3.2. 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 đượ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.

    8.3.3. IGMP

    Làm thế nào một router biết được các máy cần nghe multicast traffic? Để nhận multicast traffic từ một nguồn, cả nguồn và các máy nhận đầu tiên phải gia nhập (join) vào một nhóm multicast. Nhóm này được xác định thông qua địa chỉ multicast. Một host có thể tham gia vào một nhóm multicast bằng cách gửi các yêu cầu đến router gần nhất. Tác vụ này được thực hiện thông qua giao thức IGMP. IGMPv1 được định nghĩa trong RFC1112 và bản cải tiến của nó, IGMPv2 được định nghĩa trong RFC2236. Khi có vài host muốn tham gia vào nhóm, giao thức PIM sẽ thông báo cho nhau giữa các router và hình thành nên cây multicast giữa các routers.

    8.3.3.1. IGMPv1

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

    8.3.3.2. IGMPv2

    Phiên bản IGMPv2 giới thiệu vài sự khác biệt so với phiên bản đầu tiên. Các gói tin truy vấn bây giờ được gọi là General Queries. Các gói này có thể gửi tới địa chỉ all-hosts hoặc tới từng nhóm cụ thể. Một cải tiến khác nữa là các host được phép rời khỏi nhóm. Khi một host quyết định rời khỏi một nhóm nó đã tham gia, nó sẽ gửi thông điệp LeaveGroup đến địa chỉ all-router 224.0.0.2. Tất cả các router trên một phân đoạn mạng nội bộ sẽ lưu ý thông điệp này và router truy vấn sẽ tiếp tục quá trình. Router sẽ trả lời thông điệp trên bằng thông điệp truy cập gửi theo nhóm. Thông điệp này sẽ hỏi rằng có còn host nào muốn nhận traffic cho nhóm đó nữa không? Bất cứ host nào cũng phải trả lời lại bằng thông điệp membership report. Nếu khác đi, router sẽ kết luận một cách an toàn là không cần thiết chuyển traffic cho nhóm đó trên phân đoạn mạng đó.

    8.3.3.3. IGMPv3

    Hỗ trợ lọc nguồn cho phép một máy nhận multicast báo hiệu cho một router các group mà nó muốn tham gia vào việc nhận multicast traffic và từ nguồn nào mà nó muốn nhận traffic từ nguồn đó, với IGMPv3 thì các máy nhận sẽ báo hiệu ở 2 trạng thái:

    • Include mode: ở mode này bên nhận sẽ công bố sự liên hệ với một nhóm các máy và cung cấp một danh sách các địa chỉ nguồn mà nó muốn nhận traffic.
    • Exclude mode: bên nhận sẽ công bố sự liên hệ với một nhóm các máy và cung cấp một danh sách các nguồn mà nó không muốn nhận traffic và nó chỉ nhận những traffic từ những IP không có trong danh sách.

    8.3.4. 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 IP vì vậy PIM sử dụng bảng định tuyến IIP và không giữ các bảng multicast routing. 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 ở hai chế độ:

    PIM Dense Mode
    PIM Sparse Mode

    8.3.4.1. PIM Dense Mode

    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. Đị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.

    Cây multicast được xây dựng bằng cách cho phép phát tán các traffic từ nguồn đến tất cả các router trong mạng. Cây sẽ phát triển từ trên xuống dưới. Trong một thờI gian ngắn, các traffic không cần thiết sẽ được lưu chuyển giống như trong broadcast traffic. Tuy nhiên khi các router nhận được traffic cho một nhóm, router sẽ quyết định nó có các máy nhận muốn nhận dữ liệu hay không? Nếu là muốn, router sẽ duy trì tình trạng im lăng và để dòng traffic tiếp tục. Nếu không có host nào đăng ký cho nhóm multicast đó (thông qua IGMP), router sẽ gửi thông điệp Prune đến các router láng giềng của nó (theo hướng về gốc của cây. Nhánh của cây sau đó sẽ bị loại bỏ (prune) sao cho các traffic không cần thiết sẽ không được phát tán về hướng đó.



    Hình 8. 2 PIM dense mode

    Cây multicast sẽ được xây dựng theo một làn sóng của các yêu cầu tham gia vào nhóm. Sau đó các switch không có các host tham gia sẽ bị xóa ra khỏi cây. Cây kết quả sau cùng được hiển thị ở hình. kế tiếp.



    Hình 8. 3 Cây PIM dense mode và cây PIM sparse mode

    PIM-DM sẽ nhận biết các thiết bị láng giềng bằng cách trao đổi các gói hello. Thông tin láng giềng này được dùng trước để xây dựng cây đến tất cả các láng giềng. Sau đó, các nhánh của cây sẽ lần lượt được loại bỏ. Nếu một dòng multicast bắt đầu, cây sẽ được xây dựng, cây sẽ chỉ tồn tại khi các thành viên tích cực còn tồn tại. Nếu một host mới đăng ký tham gia nhóm, nhánh của phân đoạn mạng đó sẽ được đính thêm vào cây.
    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
Trung Tâm Tin Học VnPro
149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
Tel : (08) 35124257 (5 lines)
Fax: (08) 35124314

Home page: http://www.vnpro.vn
Support Forum: http://www.vnpro.org
- Chuyên đào tạo quản trị mạng và hạ tầng Internet
- Phát hành sách chuyên môn
- Tư vấn và tuyển dụng nhân sự IT
- Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

Network channel: http://www.dancisco.com
Blog: http://www.vnpro.org/blog

  • #2
    8.3.4.2. 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ây từ điểm RP đến các thành viên thật ra là một cây con của cây từ nguồn đến các thành viên. Nếu một router ở bất kỳ đâu trong mạng có thể đăng ký với RP, cấu trúc cây này sẽ hoàn tất. Chế độ spare-mode còn được gọi là Shared tree. Các dòng multicast được mô tả như (*,G) bởi vì cây luôn cho phép bất cứ nguồn nào gửi đến một nhóm.

    Khi một host tham gia vào một nhóm multicast dùng IGMP, router cục bộ sẽ chuyển các thông điệp Membership report về gốc của cây multicast. Mỗi router dọc theo đường đi sẽ thêm nhánh đó vào cây dùng chung shared-tree. Quá trình loại bỏ nhanh chỉ thực hiện khi một thành viên của nhóm bị xóa ra khỏi một nhóm. Quá trình này được hiển thị ở hình dưới đây:



    Hình 8. 4 Bước 1: Member tham gia vào nhóm để xây dựng cây

    Chú ý là quá trình này chỉ bao gồm 1 bước. Các router không tham gia vào nhóm sẽ không bị loại bỏ vì nó không bao giờ là một thành phần của cây.

    8.3.4.3. PIM Version 1

    Đối với các router chạy PIMv1, các router RP có thể được cấu hình bằng tay hoặc theo cơ chế tự động.

    Ta có thể giới hạn phạm vi các nhóm multicast được hỗ trợ bởi RP bằng cách dùng một access-list. Từ khóa overrise cho phép RP được ưu tiên hơn bất cứ một RP nào được bầu chọn bời quá trình tự động. RP phải được định nghĩa trên tất cả các vùng mạng chạy PIM, kể cả trên router RP.
    Các cổng giao tiếp sẽ quảng bá địa chỉ router RP. Phạm vi của thông địêp quảng bá này sẽ bị giới hạn bởi thông số TTL. Router cũng sẽ quảng bá chính nó như là một candidate RP cho nhóm được định nghĩa trong access-list.

    8.3.5. Switching Multicast Traffic

    Các router hoặc các MLS switch có thể xây dựng các cây multicast và chuyển các gói tin đi một cách hiệu quả. Tuy nhiên ở lớp 2, một switch chỉ kiểm tra phần header của frame Ethernet để tìm địa chỉ nguồn và địa chỉ đích. Các switch này không thể hoạt động ‘theo yêu cầu giống như router. Thông tin tốt nhất mà một switch biết được là địa chỉ multicast đích và khi đó frame đó cần phải được phát tán ra tất cả các cổng của vlan. Có hai phương thức được phát triển để cho phép các switch chuyển các gói tin multicast một cách thông minh: dùng IGMP snooping và dùng CGMP. Một phương thức đòi hỏi phần cứng mạnh, phương thức kia thì học hỏi thông tin từ các router láng giềng.

    IGMP Snooping


    Trong chế độ hoạt động bình thường, một host muốn tham gia vào một nhóm multicast phải liên lạc với một router gateway để router đưa host đó vào nhóm multicast. IGMP snooping cho phép một switch lắng nghe các thông điệp IGMP membership report này sao cho nó có thể tìm ra host nào đang yêu cầu nhóm nào. Để tham gia vào một nhóm, một host phải gửi các thông điệp multicast membership report về chính địa chỉ multicast của nhóm đó. Một switch L2 phải lắng nghe đến tất cả các multicast frame để tìm ra thông tin IGMP. Đây rõ ràng là một gánh nặng cho CPU của switch. Một thiết bị L3 switch thì có lợi thế rõ ràng hơn, nó có thể tách ra thông tin L3 trong một frame. Kiểu switch này phải lắng nghe mọi gói IGMP. Khi một thông địêp membership report được lắng nghe, switch sẽ thêm địa chỉ MAC của nhóm multicast vào bảng CAM của nó cùng với port nguồn nơi mà một gói IGMP được nhận. Tác vụ này sẽ liên kết địa chỉ nhóm với các host đã yêu cầu tham gia nhóm. Khi các host khác cũng yêu cầu tham gia nhóm, các switchport tương ứng sẽ được thêm vào bảng CAM. Khi có một frame cần đến một địa chỉ multicast, nó có thể được nhân bản ra chính xác các cổng của các host nhận.

    Với IGMP snooping, có hai trường hợp đặc biệt của thành viên nhóm trong bảng CAM:

    - Tất cả các địa chỉ IGMP là nhận biết bởi switch (học động) cũng sẽ được lưu trong bảng CAM. Các frame multicast phải được nhân bản về phía các router để các traffic này có thể được route nếu cần thiết.
    - CPU của switch cũng là một thành viên của nhóm multicast vì nó có thể xem các gói IGMP đến và đi. Chỉ có traffic của IGMP là được xử lý. CPU sẽ không kiểm tra các frame multicast khác. IGMP snooping được cho phép trên tất cả các cổng của switch và các interface vlan.

    8.4. Ý tưởng Multicast trong môi trường mạng hoạt động
    Chúng ta mô tả các thử nghiệm multicast trên môi trường ANTS theo 3 vấn đề: bài toán đặt ra, thiết kế cơ bản của dịch vụ trong ANTS và các mở rộng trong mạng hoạt động.
    Và sau đó chúng ta đi đến 2 kết luận dựa trên những thiết kế trên: đó là mặc dù mô hình PIM là rất phức tạp nhưng chúng ta hoànn toànn có khả năng xây dựng một dịch vụ tương tự như thế để cho các ứng dụng multicats có thể chạy được trong ANTS. Nghĩa là node API là đủ cho các ứng dụng trong thực tế. Thứ hai, chúng ta đã nhận thầy rõ ràng rằng có rất nhiều dịch vụ sinh ra những tác động khác nhau đến các client.
    8.4.1. Bài toán
    Vấn đề đặt ra cho multicast là làm sao để gửi một thông điệp đến nhiều nơi nhận được xác định bởi một địa chỉ nhóm multicast. Dịch vụ này có ứng dụng rộng rãi cho những hội nghị và nhân bản thông tin... như đã trình bày ở phần trên.
    8.4.2. Thiết kế dịch vụ
    Một trong những vấn đề đầu tiên đặt ra là có sự không phù hợp giữa cách thiết kế giữa PIM và ANTS. PIM giả sử rằng tất cả router trong khu vực đều là những router có khả năng hiểu multicast, trong khi ANTS cho phép trong mạng chỉ cần một tập con của các router là có khả năng lập trình lại hay nói cách khác thì chỉ cần một phần nhỏ là active node. PIM cũng sử dụng các bộ định giờ để duy trì thông tin định tuyến, trong khi ANTS không cung cấp các bộ định giờ để sử dụng trong mạng.
    Chúng ta sẽ xây dựng một dịch vụ multicast hoànn toànn mới và hoànn toànn độc lập với hệ thống multicast hiện tại. Chúng tôi chỉ dừng lại ở mức xây dựng dịch vụ cho hệ thống multicast này, sau này, khi triển khai các ứng dụng về multicast, chúng tôi hoànn toànn có thể nhúng chúng vào trong dịch vụ multicast đã xây dựng sẵn của chúng tôi, và có thể tận dụng được dịch vụ này để chạy các ứng dụng multicast một cách linh hoạt và hiệu quả không cần phải xây dựng lại dịch vụ mới nữa. Tuy nhiên để thuận tiện thì ta sẽ sử dụng các địa chỉ IP multicast để xác định các ANTS multicast group. Dịch vụ kết quả sẽ là sự kết hợp của 2 loại capsule cùng hoạt động đồng thời với nhau. Mỗi capsule sẽ có một tác dụng nhất định trong việc xây dựng dịch vụ và sẽ cho một loại ứng dụng sử dụng tùy theo ứng dụng đó có tác dụng gì trong môi trường multicast, và mỗi capsule sẽ được xử lý khác nhau ở mỗi active node mà nó đi qua.
    Sau đây chúng ta sẽ phân tích sự hoạt động của 2 lọai capsule này để có thể thấy rõ cách thức hoạt động của chúng trong môi trường mạng hoạt động như thế nào, sau đó chúng ta sẽ phân tích đến khả năng mở rộng của chúng trong một môi trường rộng lớn hơn khi có sự kết hợp của nhiều active node với nhau để cùng xử lý các multicast data. Hai lọai capsule này sẽ có các tác dụng được tóm tắt như sau:
    • MulticastCapsule: được gửi bởi nguồn (hay còn gọi là multicast server) để phân phát thông tin cho nhóm. Đây là gói tin dẫn đường cho dữ liệu multicast.
    • MulticastSubscribeCapsule: Là capsule được gửi bởi các client cho các active node cục bộ của nó khi nó muốn tham gia vào một group multicast để nhận dữ liệu từ đó.
    Sau đây là mã giả của MulticastSubscribeCapsule cũng như cách thức, mô hình hoạt động của chúng trong môi trường mạng hoạt động:
    MulticastSubscribeCapsule
    int group; // The multicast group (address).
    int lastnode; // Last node address.
    short destport; // Destination port
    public boolean evaluate(Node n) {
    /* Create a key and try to get our soft state. */
    MulticastCapsuleCacheKey mkey
    = new MulticastCapsuleCacheKey(group, getDst());
    MulticastCapsuleCacheValue mval
    = (MulticastCapsuleCacheValue)n.getCache().get(mkey) ;
    n.log(0, "MulticastSubscribeCapsule: Trying to get state for group "
    + NodeAddress.toString(group)
    + ", dest " + NodeAddress.toString(getDst())
    + ", key " + mkey.hashCode());

    if (mval == null) {
    /* No soft state available -- either:
    * a) we haven't seen this multicast before, or
    * b) our soft state expired and was removed
    */

    n.log(0, "MulticastSubscribeCapsule: No info at node "
    + NodeAddress.toString(n.getAddress())
    + "; (re)creating soft state...");

    /* Create new soft state. */
    mval = new MulticastCapsuleCacheValue();
    } else {
    /* We found our soft state! */

    n.log(0,
    "MulticastSubscribeCapsule: Found info at node "
    + NodeAddress.toString(n.getAddress()));
    }
    n.getCache().put(mkey, mval, 5);

    /*
    * If this capsule came from somewhere, record it in our soft
    * state so that we can route the multicast to the subscriber.
    */
    if (lastnode != 0) {
    boolean found = false;
    for (int i = 0;
    mval.addrs != null && i < mval.addrs.length;
    i++) {
    if (mval.addrs[i] == lastnode) {
    found = true;
    break;
    }
    }
    if (!found) {
    int len = (mval.addrs != null) ?
    mval.addrs.length : 0;
    int[] nn = new int[len+1];
    if (len > 0) n.arraycopy(mval.addrs, 0, nn, 0, len);
    nn[len] = lastnode;
    mval.addrs = nn;
    }
    }

    /*
    * Record the current node as the last to handle this capsule.
    */
    lastnode = n.getAddress();

    /*
    * If the last update was less than a second ago, don't
    * forward the multicast subscription request (to prevent an
    * implosion at the sender).
    */
    if (n.time() - mval.time < SUPPRESS_INTERVAL) return true;
    else mval.time = n.time();

    /*
    * Either deliver this capsule to the application, or forward
    * it to the target (multicast sender).
    */
    if (n.getAddress() == getDst())
    return n.deliverToApp(this, destport);

    // n.log("onward to "
    // + NodeAddress.toString(getDst()));

    return n.routeForNode(this, getDst());
    }
    Sau đây là sơ đồ hoạt động của capsule này:



    Hình 8. 5 Hoạt động của MulticastSubscribeCapsule

    Khi các capsule đến active router, vì trong capsule này chứa các các code để giúp router xử lý khi nó nhận được, nên việc xử lý sẽ linh hoạt hơn. Capsule sẽ chứa địa chỉ của multicast group mà nó muốn join vào, đồng thời có thêm một bộ đếm thời gian để đảm bảo là các client vẫn còn keepalive với router (Nghĩa là vẫn còn muốn nhận dữ liệu từ multicast group này). Các client sẽ định ký gửi các gói tin này đến active node cục bộ của nó, nếu sau khỏang thời gian nêu trên mả active node không thầy client gửi capsule đến để keepalive thì mặc định nó sẽ xóa entry về client đó ra khỏi bảng multicast của nó.

    Tương tự với MulticastCapsule:

    MulticastCapsule:

    int group; // The multicast group (address).
    short destport; // Destination port
    ByteArray data; // The actual data for this capsule.
    public boolean evaluate(Node n) {
    // Create a key and try to get our soft state.
    MulticastCapsuleCacheKey mkey
    = new MulticastCapsuleCacheKey(group, getDst());
    MulticastCapsuleCacheValue mval
    = (MulticastCapsuleCacheValue)n.getCache().get(mkey) ;
    n.log(0, "MulticastCapsule: Trying to get state for group "
    + NodeAddress.toString(group)
    + ", dest " + NodeAddress.toString(getDst())
    + ", key " + mkey.hashCode());

    if (mval != null) {
    /* We found an entry. */
    if (mval.addrs != null) {
    /* Send the capsule to all nodes listed. */
    for (int i = 0; i < mval.addrs.length; i++)
    n.routeForNode(this, mval.addrs[i]);
    } else {
    /* Deliver to application. */
    n.deliverToApp(this, destport);
    }
    } else {
    /* There is no entry, we can only drop it. */
    int count = ((int)data.getByte(4)) << 24
    | ((int)data.getByte(5)) << 16
    | ((int)data.getByte(6)) << 8
    | (data.getByte(7) & 0xff);
    n.log(0, "MulticastCapsule: Dropping capsule #" + count
    + " -- Nowhere to send!");
    }
    return true;
    }
    Và đây là sơ đồ hoạt động của capsule này:



    Hình 8. 6 Hoạt động của MulticastCapsule

    Đây là capsule do server gửi dữ liệu multicast đến cho các client trong group của mình, khi router nhận được capsule này, nó sẽ dò trong bảng multicast đã xây dựng từ trước của nó để biết xem đâu là interface có chức client của group này và tiến hành việc gửi dữ liệu ra cho interface đó.
    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
    Trung Tâm Tin Học VnPro
    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
    Tel : (08) 35124257 (5 lines)
    Fax: (08) 35124314

    Home page: http://www.vnpro.vn
    Support Forum: http://www.vnpro.org
    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
    - Phát hành sách chuyên môn
    - Tư vấn và tuyển dụng nhân sự IT
    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

    Network channel: http://www.dancisco.com
    Blog: http://www.vnpro.org/blog

    Comment

    • Working...
      X