Luận án Nghiên cứu cải thiện hiệu năng định tuyến mạng ngang hàng P2P
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Luận án Nghiên cứu cải thiện hiệu năng định tuyến mạng ngang hàng P2P", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu cải thiện hiệu năng định tuyến mạng ngang hàng P2P
in liên hệ về mỗi nút khác trong mạng để định tuyến 47 các bản tin truy vấnvà các nút mạng có thể lựa chọn gửi song song đồng thời bản tin truy vấn trên nhiều tuyến đường. Vì vậy hiệu năng tìm kiếm sẽ bị ảnh hưởng bởi tham số Alpha (số yêu cầu tìm kiếm đồng thời), trong kịch bản mô phỏng chọn giá trị Alpha lớn nhất để cải thiện hiệu năng tìm kiếm Kademlia. Bảng 2-1. Các tham số dùng cho mô phỏng Kademlia Tham số Ý nghĩa Giá trị Alpha Số yêu cầu tìm kiếm đồng thời trong ҡ-bucket 16 ҡ Số liên hệ (contact) trong ҡ-bucket 16 Stabtimer (s) Chu kỳ chạy thuật toán ổn định 144 Bảng 2-2. Các tham số dùng cho mô phỏng Tapestry Tham số Ý nghĩa Giá trị Base Cơ số của ID 16 Stabtimer (s) Chu kỳ chạy thuật toán ổn định 144 Redundancy Số nút dự phòng 4 Max_repair_num Số nút hỗ trợ sửa lỗi 10 Bảng 2-3. Các tham số dùng cho mô phỏng Chord Tham số Ý nghĩa Giá trị Base Cơ số ID 16 Successor Số lượng hàng xóm (successor) 16 Pnstimer (s) Chu kỳ cập nhật bảng fingers 144 Basictimer (s) Chu kỳ chạy thuật toán ổn định 144 48 2.4.3.3 Kết quả mô phỏng và thảo luận Nhóm 1: Kết quả mô phỏng cho thấy khi mô phỏng các tham số hiệu năng, định tuyến đệ quy cải thiện đáng kể so với định tuyến lặp. Cụ thể hình 2-14 độ dài đường tìm kiếm khi sử dụng Chord đệ quy đã cải thiện 25% so với Chord định tuyến lặp. Hình 2-14. Độ dài đường tìm kiếm trung bình Chord_iterative và Chord_recursive Độ trễ trung bình khi sử dụng định tuyến đệ quy đã giảm 50% so với định tuyến lặp hình 2-15, ngoài ra băng thông tiêu tốn và tỷ lệ tìm kiếm thành công cũng được cải thiện đáng kể. Hình 2-15. Trễ trung bình Chord_iterative và Chord_recursive 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 0 900 1800 2700 3600 A ve ra ge h o p c o u n t Life mean(s) Chord _ Iterative Chord_Recursive 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0 900 1800 2700 3600 A v e r a g e l a te n c y Life mean(s) Chord _ Iterative Chord_Recursive 49 Hình 2-16. Tỷ lệ thành công của Chord_iterative và Chord_recursive Hình 2-17. Băng thông tiêu tốn ( số bytes /s) Chord_iterative, Chord_recursive Kết quả mô phỏng khi cài đặt mạng SimpleUnderlay và InetUnderlay cho thấy các tham số hiệu năng như băng thông tiêu tốn hình 2-18 và độ dài đường tìm kiếm hình 2-19 là gần như đồng nhất. Tuy nhiên trễ tìm kiếm qua InetUnderlay giảm tới 300% so với mô hình SimpleUnderlay hình 2-20. Đây chính là nhược điểm của định tuyến qua mạng chồng phủ, trễ giữa hai nút của mạng chồng phủ quá lớn so với đường định tuyến lớp nền tảng. Hình 2-18. Bytes/s gửi từ SimpleUnderlayNetwork và InetUnderlayNetwork 0 10 20 30 40 50 60 70 80 90 100 0 900 1800 2700 3600 A v e r a g e d e li e r y r a ti o (% ) Life mean(s) Chord _ Iterative Chord_Recursive 0 10000 20000 30000 40000 50000 60000 0 900 1800 2700 3600 A v e r a g e b a n d w id th c o n su m p ti o n Life mean(s) Chord _ Iterative Chord_Recursive 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 0 5000 10000 15000 20000 B as e O ve rl ay : S en t To ta l B yt es /s Network size SimpleUnderlayNetwork InetUnderlayNetwork 50 Hình 2-19. Độ dài đường định tuyến qua mạng SimpleUnderlayNetwork và InetUnderlayNetwork Hình 2-20. Trễ tìm kiếm SimpleUnderlayNetwork và InetUnderlayNetwork Nhóm 2: Các kết quả mô phỏng cho cả ba thuật toán định tuyến DHTs: Kademlia, Tapestry và Chord được thể hiện trong hình 2-21 đến 2-26. Hình 2-21 thể hiện tỷ lệ tìm kiếm thành công của cả ba thuật toán với kích thước mạng khác nhau. Khi kích thước mạng tăng thuật toán Kademlia có tỷ lệ tìm kiếm giảm đáng kể so với Chord và Tapestry. Tapestry duy trì tỷ lệ tìm kiếm thành công đến 99% khi kích thước mạng tăng. Chord cũng duy trì khá tốt ở tỷ lệ tìm kiếm 97%. Hình 2-21. Tỷ lệ tìm kiếm thành công và số nút 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 0 5000 10000 15000 20000K B R T e st A p p :O n e -w a y H o p c o u n t Network size SimpleUnderlayNetwork InetUnderlayNetwork 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0 5000 10000 15000 20000K B R T e st A p p :O n e -w a y L a te n c y Network size SimpleUnderlayNetwork InetUnderlayNetwork 51 Kết quả hình 2-22 cho thấy tỷ lệ trễ liên kết trung bình của các thuật toán với kích thước mạng khác nhau. Thuật toán Tapestry sử dụng kỹ thuật sao lưu đường dẫn, vì vậy Tapestry có Tstretch nhỏ nhất. Thuật toán Chord cũng duy trì khá tốt khi số nút trong mạng tăng. Hình 2-22. Tỷ lệ trễ dãn cách trung bình Tstretch và số nút Hình 2-23 thể hiện băng thông tiêu tốn của cả ba thuật toán (bytes/s) với mạng có kích thước mạng khác nhau. Băng thông tiêu tốn của thuật toán Chord giảm đáng kể so với hai thuật toán còn lại. Hình 2-23. Băng thông tiêu tốn và số nút Phần kịch bản mô phỏng tiếp theo được thực hiện với mạng có kích cỡ 1000 nút và phân bố xác xuất tham gia và rời mạng của các nút theo phân bố weibull. Thời gian hoạt động trung bình của một nút (lifetime mean) thay đổi lần lượt 1800s, 2400s, 3000s, 3600s, 4200s. Khi mạng có độ ổn định thấp Chord có tỷ lệ tìm kiếm thành công khá thấp, kết quả được thể hiện hình 2-24. Tuy nhiên băng thông tiêu tốn của Chord duy trì không đổi và tốt nhất trong cả ba thuật toán ( Hình 2-25) 0 0.5 1 1.5 2 2.5 3 0 1000 2000 T st re tc h Số nút Chord Tapestry Kademlia 52 Hình 2-24. Tỷ lệ tìm kiếm thành công và thời gian hoạt động trung bình của nút Hình 2-25. Băng thông tiêu tốn và thời gian hoạt động trung bình của nút Hình 2-26 thể hiện tỷ lệ trễ dãn cách trung bình khi thời gian hoạt động trung bình của nút thay đổi. Tapestry duy trì khá tốt, Chord cải thiện khi mạng có độ ổn định cao. Hình 2-26. Tỷ lệ trễ dãn cách trung bình Tstretch và thời gian hoạt động trung bình của nút 0 1 2 3 4 5 1800 2400 3000 3600 4200 T s tr e tc h Thời gian hoạt đo ̣ng trung bình của nút(s) Chord Taspestry Kademlia 53 Dựa trên kết quả mô phỏng, có thể thấy Tapestry hoạt động tốt khi số nút tăng, băng thông tiêu tốn tăng không đáng kể, tỷ lệ thành công được duy trì trên 99%, Tstretch hầu như không thay đổi. Đối với Kademlia, khi số nút tăng, tỷ lệ tìm kiếm thành công giảm xuống dưới 96%, Tstretch tăng, băng thông tiêu tốn giảm. Điều đó chỉ ra rằng, Kademlia hoạt động tốt với số nút ít hơn nhưng tiêu tốn băng thông nhiều hơn. Đối với Chord, khi số nút tăng, băng thông tiêu tốn tăng không đáng kể, tỷ lệ thành công được duy trì trên 96%. Tuy nhiên khi mạng có độ ổn định thấp có nghĩa là khi thời gian hoạt động trung bình của nút nhỏ thì tỷ lệ tìm kiếm thành công giảm đáng kể. Hơn nữa tỷ lệ trễ dãn cách trung bình giữa đường định tuyến lớp chồng phủ và đường định tuyến của lớp nền tảng quá lớn khoảng gấp ba lần. Điều này dẫn tới trễ tìm kiếm tăng và dẫn tới giảm chất lượng dịch vụ khi triển khai qua mạng P2P. Qua kết quả phân tích và mô phỏng để phù hợp với mục tiêu của luận án, thuật toán Chord sử dụng kỹ thuật tìm kiếm đệ quy đã được chọn vì các tham số hiệu năng của Chord khá ổn định khi triển khai trên mạng diện rộng, đặc biệt chi phí cho việc duy trì ổn định của mạng nhỏ hơn so với các thuật toán khác. Chord tìm kiếm đệ quy còn cải thiện 50% thời gian trễ trung bình so với Chord tìm kiếm lặp. Tuy nhiên Chord cũng còn một số vấn đề cần giải quyết như: đường định tuyến lớp chồng phủ quá xa so với đường định tuyến lớp nền tảng, hiệu năng thấp khi mạng không ổn định. 2.5 Kết luận chương 2 Chương hai phân tích hoạt động của ba thuật toán DHTs, qua kết quả phân tích lý thuyết và mô phỏng Chord phù hợp với các ứng dụng quy mô lớn triển khai trên mạng ngang hàng, với rất nhiều các đặc tính hấp dẫn như: Đơn giản, phân tán, tự tổ chức, khả dụng, mở rộng, cân bằng tải, Bên cạnh đó việc đánh giá hiệu năng của các thuật toán định tuyến DHTs cũng được thực hiện qua phần mềm mô phỏng OverSim, qua kết quả mô phỏng cho thấy các tham số hiệu năng của thuật toán Chord duy trì ổn định khi mạng có kích thước 54 lớn và cấu trúc mạng có “Churn rate” cao. Nội dung của chương là kết quả nghiên cứu được công bố tại [V2]. 55 3. CHƯƠNG 3. CẢI THIỆN HIỆU NĂNG THUẬT TOÁN ĐỊNH TUYẾN CHORD Chord là một thuật toán định tuyến DHT được đánh giá đơn giản, dễ triển khai, hiệu quả tìm kiếm phù hợp với mạng có kích thước lớn. Chương ba phân tích hoạt động của thuật toán định tuyến Chord, qua đó thấy được ưu nhược điểm của thuật toán; đồng thời phân tích các hướng nghiên cứu cải thiện Chord của các tác giả trước để đưa ra hướng nghiên cứu cải thiện. Chord đại diện tiêu biểu cho thuật toán định tuyến DHT, được phát triển từ lâu và rất thích hợp để triển khai các dịch vụ trên diện rộng. Nội dung chương phân tích lý do chọn thuật toán Chord trong nghiên cứu; Các hướng cải thiện thuật toán Chord; Cải thiện thuật toán định tuyến Chord và phân tích đánh giá mô phỏng so sánh với các nghiên cứu cải thiện trước đây. 3.1 Giới thiệu chung Với sự gia tăng mạnh mẽ của băng thông Internet và ứng dụng của P2P trên mạng Internet như VoIP (Voice over IP), dịch vụ này nhanh chóng trở thành một phương tiện truyền thông rất phổ biến do chi phí thấp và tiện lợi cho người sử dụng Internet. Không giống như các hệ thống chia sẻ file, dữ liệu được sao lưu tại nhiều người dùng. Trong khi đó người dùng thoại Internet là duy nhất trong hệ thống, do đó khó khăn hơn và tốn kém để xác định chính xác vị trí người sử dùng. Việc tìm kiếm nhanh để xác định người sử dụng là một trong những vấn đề then chốt để đảm bảo chất lượng lượng dịch vụ [77], [83]. Ngoài ra, cơ sở hạ tầng P2P VoIP dự báo sẽ là ứng dụng phổ biến trên mạng Internet [42]. Thuật toán Chord đã được IETF P2PSIP nhóm 79 lựa chọn như một tiêu chuẩn của bộ giao thức P2PSIP [76], [77]. Như vậy, tất cả các ứng dụng thoại VoIP qua mạng P2P chọn Chord như một giao thức nền tảng [2], [25], [54], [77], [75],Do đó, việc cải thiện hiệu năng thuật toán định tuyến Chord góp phần cải thiện chất lượng dịch vụ thoại qua mạng ngang hàng (P2P VoIP). 56 3.2 Thuật toán định tuyến Chord Trong Chord cả nút và dữ liệu đều được khai báo định danh có độ dài M bít bởi hàm băm bảo mật SHA-1. Hàm băm SHA-1 được chứng minh có phân bố khá tốt và xác suất để hai khóa hoặc hai nút có cùng định danh băm là rất nhỏ [60]. 3.2.1 Hàm băm bảo mật SHA1 Không gian định danh của Chord bao gồm các chuỗi hữu hạn các bít nhị phân. Chiều dài của định danh có thể là M = 160 bits hoặc M = 128 bits và nó được sắp xếp trên một vòng tròn định danh modulo 2𝑀, định danh được gán từ 0 đến 2𝑀−1. Chord dùng địa chỉ IP và địa chỉ cổng TCP/IP như định danh ngoài eID. Định danh của một nút là giá trị băm địa chỉ IP và địa chỉ cổng TCP/IP của nút đó, ví dụ: 𝑛 = ℎ𝑐ℎ𝑜𝑟𝑑(𝐼𝑃 − 𝑎𝑑𝑑𝑟𝑒𝑠𝑠). Định danh của một khóa là giá trị băm của khóa đó 𝑘 = ℎ𝑐ℎ𝑜𝑟𝑑(𝑘𝑒𝑦). Trong đó M được gọi là độ dài của định danh, M phải đủ lớn để xác suất hai nút hoặc khóa có cùng định danh là rất nhỏ (hàm băm ℎ𝑐ℎ𝑜𝑟𝑑() như SHA-1 thì M = 160 bits). Hàm băm gán khóa vào các nút trong mạng Chord được thực hiện như sau: Sắp xếp các định danh theo thứ tự trên vòng định danh gồm 2𝑀 vị trí sắp xếp. Vòng tròn định danh là vòng tròn gồm các số từ 0 đến 2𝑀−1, chiều thuận là chiều kim đồng hồ. Vòng định danh còn được gọi là vòng Chord. Khóa k sẽ được gán cho nút đầu tiên có định danh bằng hoặc đứng sau định danh của k trong không gian định danh. Nút này được gọi là nút hàng xóm kề sau (successor) của k, được viết là succ(k). Để tăng tốc độ tìm kiếm, mỗi nút n duy trì một bảng định tuyến gồm tối đa M dòng (trong Chord số thực thể trong bảng định tuyến O(log2N), gọi là bảng finger (finger table). Hình 3.1 biểu diễn vòng Chord và bảng finger của nút 8, 42, 51 với độ dài M = 6 bits. Vòng Chord này có 10 nút. 57 Hình 3-1. Biểu diễn vòng Chord (M= 6) gồm 10 nút Biểu diễn hàm băm SHA1 của Chord như sau: Ánh xạ 𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔: (𝑒𝐼𝐷) → 𝑛 ∈ 𝐼 gán mỗi nút tương ứng với một định danh được thực hiện bằng cách sử dụng hàm băm SHA-1. Ánh xạ 𝑓𝑘𝑒𝑦−𝑚𝑎𝑝𝑝𝑖𝑛𝑔: Ҟ → I gán một giá trị thuộc Ҟ vào một định danh ID-Key trong I, cũng được thực hiện thông qua SHA-1. Ưu điểm của việc này là các đối tượng được phân bố đều trong không gian định danh. 3.2.2 Định tuyến Chord Hai thành phần cơ bản của định tuyến DHT quyết định tới hiệu năng của thuật toán, đó là cấu trúc bảng định tuyến và kỹ thuật định tuyến. Trong phần này nghiên cứu phân tích kỹ hoạt động của hai thành phần trên của thuật toán Chord . Cấu trúc bảng định tuyến: Bảng định tuyến 𝑇𝑟 tại mỗi nút có định danh n gồm tối đa M= log2N dòng, gọi là bảng finger. Dòng thứ j trong 𝑇𝑟 bao gồm địa chỉ IP của nút đầu tiên theo sau n bởi ít nhất 2j-1 vị trí trên vòng tròn định danh. 𝑓𝑟𝑜𝑢𝑡𝑖𝑛𝑔−𝑡𝑎𝑏𝑙𝑒=[𝑠𝑢𝑐𝑐((𝑛 + 2 0)𝑚𝑜𝑑2𝑀 , 𝑠𝑢𝑐𝑐((𝑛 + 21)𝑚𝑜𝑑2𝑀 , , 𝑠𝑢𝑐𝑐((𝑛 + 2𝑀−1)𝑚𝑜𝑑2𝑀] (3.1) Dòng đầu tiên trong 𝑇𝑟 liên kết trực tiếp tới nút tiếp theo. Dòng cuối cùng trong 𝑇𝑟 bao gồm liên kết đến nút theo sau n là 2 𝑀−1 vị trí trong vòng tròn Chord. Ngoài ra bảng định tuyến trong Chord còn chứa con trỏ chỉ tới nút có khoảng cách định danh nhỏ nhất với nó theo chiều ngược kim đồng hồ pred(n). Để phục vụ cho việc cải thiện Chord luận án đưa ra một số các định nghĩa sau: 58 Định nghĩa 3.1. Khoảng cách định danh trong không gian I là khoảng cách theo chiều kim đồng hồ. Cụ thể hơn, với 2 nút có định danh u và v, khoảng cách theo chiều kim đồng hồ 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑢, 𝑣), giữa chúng là: dclockwise(u,v) = { 𝑣 − 𝑢 𝑛ế𝑢 𝑣 ≥ 𝑢 2𝑚 + 𝑣 − 𝑢 𝑛ế𝑢 𝑣 ≺ 𝑢 (3.2) Vì không gian định danh của Chord không đối xứng nên khi xét trên khía cạnh khoảng cách theo chiều kim đồng hồ, có nghĩa là 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑢, 𝑣) ≠ 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑣, 𝑢) (trừ trường hợp 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑢, 𝑣) = 2 𝑀−1. Chính xác hơn 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑢, 𝑣) = 2 𝑀 - 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(v,u). Định nghĩa 3.2. Một nút p được cho là nút đứng gần n nhất theo chiều ngược kim đồng hồ (predecessor) trong vòng tròn Chord, ký hiệu là pred (n), nếu 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒(𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑝), 𝑛)= min 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒( 𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑞), 𝑛) (3.3) Nút p gọi là predecessor một nút q khác nếu p = pred( 𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑞)). Định nghĩa 3.3. Một nút p gọi là successor của một định danh n trong vòng tròn Chord, ký hiệu là succ(n), nếu 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒((𝑛, 𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑝)) = min 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒( 𝑛, 𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑞)) (3.4) Một nút p được cho là successor của nút q khác nếu p =succ (𝑓𝑛𝑜𝑑𝑒−𝑚𝑎𝑝𝑝𝑖𝑛𝑔(𝑞)). Kỹ thuật định tuyến: Để duy trì cấu trúc bảng định tuyến, Chord sử dụng hai thuật toán: Thuật toán ổn định: Mỗi nút chạy định kỳ các thuật toán ổn định để duy trì việc cập nhật thông tin về hàng xóm (successor) của nó. Mỗi lần một nút chạy thuật toán, nó hỏi successor về những nút predecessor của nó và nhận biết nếu có một nút mới có khả năng sẽ trở thành successor của nó. Thuật toán sửa bảng finger (fix_fingers): Mỗi nút định kỳ chạy thuật toán này. Thuật toán fix_fingers làm mới lại chính xác một finger. Để sửa lại tất cả các fingers, thuật toán fix_fingers ghi nhớ chỉ số i của finger được cập nhật cuối cùng và trong chu kỳ fix_finger tiếp theo, nó làm mới finger thứ (i+1). Ngoài ra, mỗi nút mạng cũng thực hiện một thuật toán để kiểm tra định kỳ các predecessor của nó. 59 Chiến lược định tuyến Greedy: Nút chuyển bản tin truy vấn đến nút có ID lớn nhất trong bảng định tuyến nhưng phải nhỏ hơn định danh khóa. Sau một số lần lặp hoặc đệ quy bản tin truy vấn sẽ được chuyển tới nút gần nhất với định danh khóa, nút kế tiếp này có trách nhiệm với định danh khóa đó là nút gốc 𝑟𝑜𝑜𝑡𝑘. Trong Chord độ dài đường định tuyến trung bình là O(𝑙𝑜𝑔 𝑁). Định nghĩa 3.4 (Clockwise GREEDY Routing): Trong một mạng Chord ánh xạ khoảng cách 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒 , định tuyến GREEDY đòi hỏi các quyết định sau đây: Đối với một khóa k cho trước, một nút p với tập các hàng xóm 𝐹𝑁(𝑝) sẽ chuyển tiếp bản tin truy vấn tới một nút mạng hàng xóm q∈ 𝐹𝑁(𝑝) sao cho 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒 (q,k) = min (x ∈ 𝐹𝑁(𝑝) ) 𝑑𝑐𝑙𝑜𝑐𝑘𝑤𝑖𝑠𝑒 (x,k). Chord chuyển truy vấn tìm kiếm theo kiểu lặp, đệ quy hoặc bán đệ quy. Với truy vấn lặp nút được liên hệ 𝑛𝑖 sẽ trả nút 𝑛𝑗 gần nhất với khóa k từ bảng định tuyến của nó đến nút truy vấn. Với truy vấn đệ quy truy vấn chuyển trực tiếp 𝑛𝑖 đến nút 𝑛𝑗 . 𝑛𝑗 tiếp tục định tuyến truy vấn đệ quy cho đến khi đạt được nút gốc 𝑟𝑜𝑜𝑡𝑘. Kết quả được trả về theo đường ngược lại. Trong truy vấn bán đệ quy việc tìm kiếm thực hiện giống đệ quy, nhưng kết quả của khóa tìm kiếm được gửi trực tiếp từ nút 𝑟𝑜𝑜𝑡𝑘 đến nút đến 𝑛𝑖 Hình 3-2. (a) Định tuyến lặp (b) Định tuyến đệ quy (c) Định tuyến bán đệ quy 3.2.3 Tìm kiếm khóa mở rộng Chord Để tăng tốc tìm kiếm, Chord duy trì thêm thông tin định tuyến phụ. Mỗi nút n duy trì một bảng định tuyến gồm tối đa M dòng gọi là bảng finger. 60 Khi nút n muốn tham gia vào mạng, nó phải tìm định danh của mình thông qua một số liên hệ trong mạng và chèn chính nó vào giữa succ(s) và pred(s) nhờ sử dụng một thuật toán ổn định (stabilization) chạy định kỳ. Bảng định tuyến của n được khởi tạo bằng cách sao chép bảng định tuyến của s hoặc yêu cầu s tìm các finger của n. Tập các nút cần điều chỉnh bảng định tuyến sau khi n ra nhậpvào mạng nhờ các nút này đều chạy thuật toán stabilization định kỳ. Nhiệm vụ cuối cùng là chuyển một phần các dữ liệu đang lưu trên nút s có định danh nhỏ hơn hoặc bằng n sang nút n. Việc di chuyển dữ liệu này được thực hiện bởi tầng ứng dụng của n và s. Thuật toán stabilization gồm 6 chức năng : create() join() stabilize() notify() fix_fingers() check_predecessor() Mỗi nút sẽ chạy thủ tục stabilize() định kì để biết về các nút mới ra nhập. Mỗi lần nút n chạy stabilize(), nó hỏi successor của nó về predecessor của nút này, nút p, và quyết định liệu p có phải là successor của nút này hay không. Nếu đúng, thì nút p chính là nút mới gia nhập mạng. Thêm vào đó, stabilize() thông báo successor của n về sự hiện diện của n để successor này thay đổi predecessor của nó về n. Successor chỉ thực hiện điều này nếu nó biết không có predecessor nào gần hơn n. Quá trình một nút n ra nhập mạng và chạy ổn định mạng Chord gồm các bước : Giả sử nút n gia nhập hệ thống, và định danh của nó nằm giữa nút np và ns. Trong hàm gọi join(), thì n sẽ xác nhận ns là successor của nó. Nút ns khi nhận được thông báo từ n, sẽ nhận n là predecessor của mình. Sau đó, trong lần chạy thủ tục stabilize() tiếp theo, np sẽ hỏi ns về predecessor của ns (bây giờ là n), sau đó np nhận n là successor của nó. Cuối cùng, np thông báo cho n và n sẽ nhận np làm predecessor của nó. Đến đây, tất cả các predecessor và successor đều đã đúng. Tại 61 mỗi bước trong quá trình này, ns vẫn là successor của np, nghĩa là việc tìm kiếm có thể xảy ra đồng thời với việc nút mới gia nhập mà mạng vẫn không bị sập. Ngay sau khi các con trỏ successor đã chính xác, việc gọi hàm find_successor() sẽ phản ánh có nút mới trong mạng. Các nút mới gia nhập mạng chưa được phản ánh trong bảng finger của các nút khác có thể khiến cho find_successor() ban đầu không tới được các nút cần tìm, nhưng vòng lặp trong thuật toán tìm kiếm sẽ theo
File đính kèm:
- luan_an_nghien_cuu_cai_thien_hieu_nang_dinh_tuyen_mang_ngang.pdf
- Tom tat luan an Vu TT Ha.pdf
- Trang TT LA Vu TT Hà (TA).pdf
- Trang TT LA Vu TT Ha (TV).pdf