Khi một nút tham gia vào mạng.

Một phần của tài liệu đồ án tối ưu hóa truyenf multicast trogn giải thuật truyền dữ liệu video stream ming (Trang 27 - 29)

Chương 4: Xây dựng cây cân bằng.

4.1. Khi một nút tham gia vào mạng.

Với những khó khăn đã nêu ra ở phần 3.3.1, sau đây là cơ chế giải quyết vấn đề khi một nút nào đó tham gia vào mạng.

Với mục đích, khuyến khích mỗi người dùng đóng góp băng thông của mình vào mạng nhiều nhất có thể để truyền dữ liệu cho các nút khác nhưng đồng thời vẫn phải đảm bảo là người dùng đó có đủ băng thông để kéo các luồng dữ liệu về cho bản thân mình. Chính vì thế mà mọi người dùng trong mạng sẽ cố định lượng băng thông để dành cho việc trao đổi dữ liệu cho các nút khác trước khi đóng góp phần băng thông còn lại cho mạng của chúng ta. Cụ thể hơn, giả định rằng bwpf là băng thông cần thiết để truyền một luồng dữ liệu con, cho nên băng thông của một nút bất kỳ là b.bwpf, nút đó sẽ phải dùng (k-1).bwpf (k là số cây con của nút gốc trong mạng) để gửi dữ liệu nó vừa nhận được từ nút cha trong suốt quá trình đẩy dữ liệu, cho k-1 nút khác thuộc cây con khác, cũng như nó dùng (k-1) . bwpf đó để kéo dữ liệu còn thiếu về cho chính nó. Vì thế mà, nút bất kỳ đang xét chỉ còn (b-(k-1)). bwpf để gửi dữ liệu cho các nút con qua quá trình đẩy dữ liệu. Do vậy, nút đang xét chỉ có thể có tối đa (b-(k-1)) nút con.

Trường hợp băng thông của nút nhỏ hơn hoặc bằng k. bwpf thì nó sẽ dành tối đa (k-1)* bwpf để gửi dữ liệu cho các nút khác theo cơ chế pull và it nhất 1* bwpf để gửi dữ liệu cho node con. Điều đó giúp tránh trường nhánh cây chứa nút đó, không thể có thêm con nếu có một nút mới muốn tham gia vào mạng và cấu trúc cây sẽ mất cân bằng, không đáp ứng được theo đúng định nghĩa

Sau đây, chúng ta sẽ đi vào chi tiết cơ chế xử lý khi một nút tham gia vào mạng. Hình 4.1 cho chúng ta thấy các bước cần thiết trong cơ chế xử lý khi một nút muốn tham gia vào mạng lưới truyền video streaming. Khi một nút muốn tham gia vào mạng, đầu tiên, nó sẽ gửi yêu cầu đến nút boostrap(là nút có vài trò giữ thông tin của toàn mạng). Nút boostrap này sẽ gửi thông báo yêu cầu tham gia đến nút nguồn, để nút nguồn xử lý yêu cầu tham gia đó. Khi một nút nhận được thông báo yêu cầu tham gia vào cây của một nút mới, nó sẽ thêm nút đó vào thành nút con của nó ngay lập tức nếu nút đó vẫn còn đủ băng thông để nhận thêm một nút. Nếu tổng số các liên kết kéo dữ

19

liệu cộng với các liên kết đẩy dữ liệu của nút đang nhận yêu cầu đúng bằng b* bwpf, nhưng số lượng các nút con thì nhỏ hơn (b-(k-1))* bwpf, thì nút đang nhận yêu cầu vẫn để nút đang muốn tham gia vào mạng thành nút con của nó và xóa đi một liên kết kéo dữ liệu. Liên kết kéo dữ liệu bị xóa đi sẽ được chọn theo độ ưu tiên của từng liên kết kéo đó, liên kết nào có độ ưu tiên thấp nhất sẽ được chọn để xóa bỏ. Độ ưu tiên của mỗi liên kết sẽ tỷ lệ thuận lượng dữ liệu trao đổi trên mỗi liên kết đó được tính toán ngay trên mỗi nút trong mạng.

Tiếp đến, nếu nút đang nhận được yêu câu tham gia không còn đủ băng thông để nhận thêm bất cứ một nút con nào khác (số nút con bằng (b-(k-1))* bwpf) thì nó sẽ chuyển tiếp thông báo yêu cầu đó tới một trong các nút con của nút đó. Quá trình này sẽ được lặp đi lặp lại cho đến khi nút gửi yêu cầu nhận được một vị trí thích hợp trong mô hình cấu trúc cây hiện thời.

Hình 4.1: Quy trình sử lý một nút tham gia vào mạng.

Như đã được đề cập trong phần 3.3.1, việc chọn một nút con nào đó trong danh sách các nút con hiện thời để chuyển tiếp thông báo là một vấn đề khá phức tạp. Chúng tôi không thể chọn một nút con nào đó theo cơ chế ngẫu nhiên, bới vì như thế, chúng tôi sẽ không đảm bảo được rằng , cấu trúc cây của chúng tôi sẽ được cân bằng như đúng định nghĩa. Để đảm bảo được rằng, tổng số nút và tổng băng thông của mỗi

20

cây con ở một nút bất kỳ phải tương đương nhau, chúng tôi đã nghiên cứu và đưa ra công thức sau đây:

BwAvg *((nodeNum(i) + 1 - nodeAvg)2 - (nodeNum(i) - nodeAvg)2)2 + nodeAvg *((BW(i) + BWnew - BwAvg)2 - (BW(i) - BwAvg)2)2

Trong đó:

+ BWnew là băng thông của nút đang muốn tham gia vào cây. + nodeNum(i) là tổng số nút của nhanh cây đang xét.

+nodeAvg là trung bình số nút của các cây con được tính theo công thức sau: nodeAvg = totalNodeNum+1

MaxChildNum , totalNodeNum là tổng số các nút con cháu trong tất cả các cây con đang nhận nút đang xét làm gốc, MaxChildNum là tổng số nút con.

+ BwAvg là trung bình băng thông của các cây con được tính theo công thông sau: BwAvg = totalBandwidth+BWnew

MaxChildNum , totalBandwidth là tổng băng thông của tất cả các nút trong các cây con.

+BW(i): tổng băng thông của tất cả các nút ở cây con đang xét.

Công thức trên sẽ được tính toán ở nút đang xét với từng cây con của nó và i là chỉ số của mỗi cây con tương ứng. Công thức trên được tạo nên với tư tưởng tính toán được độ chênh lệch băng thông và chênh lệch về tổng số nút ở mỗi cây con sau khi nút mới được chấp nhận tham gia vào. Và trong số cây con đang xét, nếu cây con nào có kết quả của công thức trên là bé nhất thì sẽ được chọn để chuyển tiếp tin nhắn yêu cầu tham gia vào mạng của nút mới. Mục tiêu của công việc này nhẳm để giảm bớt sự chênh lệch về cả băng thông cũng như tổng số nút ở các cây con. Do đó, sẽ giúp cấu trúc cây của chúng ta trở nên cân bằng hơn mỗi khi có một nút mới tham gia vào.

Các công việc trên sẽ lặp đi lặp lại cho đến khi nút đang yêu cầu tham gia, tìm được một vị trí thích hợp trong cấu trúc cây đang xây dựng của chúng ta. Sao đó, nút đó sẽ tổ chức tạo các liên kết kéo dữ liệu từ những nút ở những cây con khác theo cơ chế riêng (không được đề cập trong nghiên cứu này) và gửi tin nhắn cập nhật các thông tin về tổng băng thông và tổng số nút, cũng như danh sách nút lá lên các nút trên.

Một phần của tài liệu đồ án tối ưu hóa truyenf multicast trogn giải thuật truyền dữ liệu video stream ming (Trang 27 - 29)

Tải bản đầy đủ (PDF)

(48 trang)