i, Khỏi niệm về tỡm kiếm địa chỉ IP
Trờn mỗi bộ định tuyến, cỏc thụng tin xử lý cho bảng chuyển tiếp được xõy dựng được từ một bảng định tuyến, trờn đú chỉ rừ địa chỉ cần đến và đường đi tương ứng. Bộ định tuyến dựa vào địa chỉ của gúi tin kết hợp với bảng định tuyến để chuyển gúi tin đi đỳng đến đớch. Bảng định tuyến của một bộđịnh tuyến là một bảng trong đú bao gồm cỏc khoản mục ở dạng <route – prefix , next – hop addr>, trong đú route–prefix là một tiền tố IP và next–hop addr là địa chỉ IP của chặng tiếp theo tương ứng với tiền tố route–prefix. Địa chỉđớch sẽ được đưa ra so sỏnh sự phự hợp với tiền tố tuyến khi cỏc bớt của tiền tố là giống với một sốbớt đầu tiờn của địa chỉđớch. Tiền tố của địa chỉ IP là phương phỏp đơn giản nhất để biểu diễn cỏc nhúm địa chỉ IP liền kề nhau nờn cú thể coi một tiền tố là một tập cỏc địa chỉ IP liền kề.
ii, Tỡm kiếm tuyến tớnh
Danh sỏch múc nối là một kiến trỳc cơ sở dữ liệu đơn giản nhất. Thuật toỏn sẽ tra cứu cỏc tiền tốđồng thời và đưa ra tiền tố phự hợp dài nhất. Độ phức tạp lưu trữ cho N tiền tố sẽ là O(N). Thuật toỏn tra cứu này sẽ rất chậm khi trong thực tế là N lớn. Thời
57
gian tra cứu trung bỡnh của thuật toỏn tuyến tớnh cú thể giảm nếu ta sắp xếp cỏc tiền tố theo thứ tựđộ dài giảm dần.
iii, Lưu vết
í tưởng lưu vết lại những dữ liệu cần truy nhập thường xuyờn lần đầu tiờn được sử dụng để tăng cường hiệu năng bộ xử lý cũng cú thể được ứng dụng cho việc tra cứu bảng định tuyến. Những địa chỉ đó từng được tỡm kiếm và kết quả tra cứu được lưu trong bộ nhớ lưu vết đường đi. Việc tra cứu (sử dụng thuật toỏn tiền tố dài nhất phự hợp) bõy giờ chỉ thực hiện khi mà địa chỉđớch đến khụng được tỡm thấy trong bộ nhớ lưu vết.
iv, Cỏc phương phỏp tỡm kiếm dựa vào cõy nhị phõn
Mỗi một cõy nhị phõn (hỡnh 3.5) đều cú thể được xem xột dưới hai khớa cạnh của cõy nhị phõn. P re fix L en g th Value 0 1 Prefix Node Internal Node Hỡnh 3.5: Cỏc khớa cạnh của một cõy nhị phõn
Khớa cạnh thứ nhất được nhỡn theo phương thẳng đứng, đú là chiều dài của cõy tỡm kiếm hay chớnh là số bớt để thực hiện đường đi từ nỳt gốc đến nỳt tiền tố (Prefix Node). Cũn khớa cạnh thứhai được nhỡn theo phương nằm ngang, đú là giỏ trị của nỳt tiền tố hay là số cổng đầu ra tương ứng với chuỗi bớt đường đi. Tương ứng với cỏc khớa cạnh trờn thỡ cũng cú hai giỏ trị được sử dụng để tỡm kiếm, đú là chiều dài tiền tố và giỏ trị tiền tố. Đồng thời trong phần này ta cũng sẽ xem xột đến hai phương phỏp tỡm kiếm đú là phương phỏp tỡm kiếm tuần tựvà phương phỏp tỡm kiếm nhị phõn.
iv, Tỡm kiếm tuần tự theo chiều dài tiền tố
Phương phỏp này sử dụng cỏch duyệt tất cả cỏc tiền tố cú trong bảng định tuyến cho đến khi tỡm được tiền tố phự hợp dài nhất. Trong quỏ trỡnh tỡm kiếm thỡ khi tỡm thấy được tiền tố phự hợp với đầu vào, ta khụng chỉ lưu giữ lại giỏ trị cổng ra mà ta
58
cũn phải lưu giữ chiều dài của tiền tố phự hợp. Kết quả cuối cựng thỡ tiền tố phự hợp nào cú chiều dài lớn nhất sẽđược chọn là tiền tố phự hợp dài nhất.
Trong trường hợp xấu nhất để tỡm ra được tiền tố phự hợp dài nhất thỡ thuật toỏn phải so sỏnh N lần với N là số khoản mục trong bảng định tuyến . Do vậy độ phức tạp của thuật toỏn tỡm kiếm tuần tự sẽ cú bậc là O(N).
Tỡm kiếm nhị phõn theo chiều dài tiền tố
Trong phương phỏp tỡm kiếm này thỡ bảng định tuyến sẽ được sắp xếp theo thứ tự chiều dài tiền tố từ nhỏđến lớn. Phương phỏp tỡm kiếm nhị phõn theo chiều dài tiền tố sẽ coi tất cả cỏc tiền tố trong bảng định tuyến là một khụng gian tỡm kiếm. Sau mỗi bước kiểm tra thỡ khụng gian này sẽ được chia làm đụi hoặc là gồm tất cả cỏc tiền tố cú chiều dài lớn hơn chiều dài đang kiểm tra hoặc là gồm tất cả cỏc tiền tố cú chiều dài nhỏhơn chiều dài đang kiểm tra tuỳ thuộc vào kết quả kiểm tra. Thuật toỏn sẽ dừng lại khi khụng gian này chỉ cũn duy nhất một tiền tố. Tiền tố phự hợp dài nhất chớnh là tiền tốđó được lưu lại cuối cựng trong tất cảcỏc bước kiểm tra.
Trong trường hợp xấu nhất để tỡm ra được tiền tố phự hợp dài nhất thỡ thuật toỏn phải so sỏnh log2W lần với W là chiều dài của tiền tố dài nhất trong bảng định tuyến. Do vậy độ phức tạp của thuật toỏn sẽ cú bậc là O(log2W).
Tỡm kiếm tuần tự theo giỏ trị tiền tố
Phương phỏp này sử dụng cỏch duyệt tất cả cỏc cổng ra cú trong bảng định tuyến cho đến khi tỡm được tiền tố phự hợp dài nhất. Trong quỏ trỡnh tỡm kiếm thỡ khi tỡm thấy được tiền tố phự hợp với đầu vào, ta khụng chỉ lưu giữ lại giỏ trị cổng ra mà ta cũn phải lưu giữ chiều dài của tiền tố phự hợp. Kết quả cuối cựng thỡ tiền tố phự hợp nào cú chiều dài lớn nhất sẽđược chọn là tiền tố phự hợp dài nhất.
Trường hợp này giống như trong tỡm kiếm tuần tự theo chiều dài tiền tố nờn cũng cú độ phức tạp của thuật toỏn tỡm kiếm tuần tự sẽ cú bậc là O(N).
Tỡm kiếm nhị phõn theo giỏ trị tiền tố
Trong phương phỏp tỡm kiếm này thỡ chiều dài lớn nhất trong tất cả cỏc tiền tố cú trong bảng dựng để phõn chia khụng gian giỏ trị tiền tố theo dải địa chỉ.
Trong trường hợp xấu nhất để tỡm ra được tiền tố phự hợp dài nhất thỡ thuật toỏn phải so sỏnh log2(2*N) lần với N là số khoản mục trong bảng định tuyến . Do vậy độ phức tạp của thuật toỏn tỡm kiếm tuần tự sẽ cú bậc là O(log2(2*N)).
v, Cỏc phương phỏp tỡm kiếm dựa trờn bảng băm
Cấu trỳc bảng định tuyến như trờn thực hiện việc tỡm kiếm cổng ra bằng cỏch so sỏnh cỏc khoản mục của bảng với địa chỉ đầu vào, do vậy thời gian truy xuất khụng
59
nhanh và phụ thuộc vào kớch thước của bảng. Một phương phỏp khỏc được sử dụng dựa trờn cấu trỳc bảng định tuyến cú tờn là bảng băm (Hash Table). Cơ sở của phương phỏp này này dựa vào 3 điểm quan trọng sau đõy: Thứ nhất, sử dụng băm để kiểm tra xem một địa chỉ cú phự hợp với tiền tố chiều dài riờng biệt hay khụng. Thứ hai, tỡm kiếm nhị phõn để giảm số bước tỡm kiếm xuống từ hàm tuyến tớnh thành hàm loga. Thứ ba, sử dụng tớnh toỏn trước đểngăn chặn Backtracking khi thất bại trong việc tỡm kiếm nhị phõn. Với mỗi loại bảng băm ta phải xỏc định được tập khoỏ K, xỏc định tập địa chỉ M và xõy dựng được hàm băm. Hàm băm là hàm biến đổi khoỏ của nỳt thành địa chỉ trờn bảng băm. Một bảng băm cho bảng định tuyến cú thểđược thực hiện như sau: Tập khoỏ đầu vào sẽ là tất cả cỏc tiền tố phự hợp cựng với cỏc cổng tương ứng sẽ được phõn ra thành cỏc tập cú cựng chiều dài, mỗi tập sẽ cú chiều dài khỏc nhau. Khi đú ta sẽ xõy dựng được một bảng băm gồm hai thành phần là chiều dài và con trỏ tương ứng chỉđến địa chỉ của mảng chứa cỏc tiền tố cú chiều dài đó chọn. Quỏ trỡnh tỡm kiếm với bảng băm được thực hiện bàng hai phương phỏp tỡm kiếm tuần tự và tiềm kiếm nhị phõn.
Tỡm kiếm tuần tự với bảng băm
Phương phỏp tỡm kiếm tuần tự trờn bảng băm được thực hiện từ tiền tố cú chiều dài tiền tố dài nhất cho đến khi kết thỳc. Nếu việc so sỏnh là thành cụng thỡ thuật toỏn sẽ dừng lại, nếu khụng thỡ chiều dài sẽ được giảm xuống đến giỏ trị gần nhất với giỏ trị đang xột. Giả sử tập khoỏ đầu vào của bảng băm cú K khoỏ và chiều dài của tập giỏ trị tương ứng với khoỏ là M. Do tỡm kiếm tuần tự trờn cả tập khoỏ và tập giỏ trị nờn quỏ trỡnh so sỏnh phải thực hiện nhiều nhất là K*M lần so sỏnh. Do vậy độ phức tạp của thuật toỏn tỡm kiếm tuần tự sẽ cú bậc là O(K*M).
Tỡm kiếm nhị phõn với bảng băm
Trong phương phỏp này ta sẽ tỡm kiếm nhị phõn trong tập cỏc chiều dài của tiền tố. Ta cũng coi như tất cả cỏc chiều dài này là một khụng gian, mỗi bước thỡ khụng gian này sẽđược chia làm đụi tuỳ theo kết quảmà xột bước tiếp theo hướng khụng gian cú chiều dài tăng hay giảm so với chiều dài đang xột. Thuật toỏn sẽ dừng lại khi khụng gian này chỉ cũn duy nhất một chiều dài. Để thực hiện được thuật toỏn này thỡ tập khoỏ đầu vào là chiều dài phải được sắp xếp theo thứ tự từ nhỏđến lớn
Giả sử tập khoỏ đầu vào của bảng băm cú K khoỏ và chiều dài của tập giỏ trịtương ứng với khoỏ là M. Do tỡm kiếm là nhị phõn trờn tập khoỏ và tuần tự trờn tập giỏ trị nờn quỏ trỡnh so sỏnh phải thực hiện nhiều nhất là log2K*M lần so sỏnh. Do vậy độ phức tạp của thuật toỏn tỡm kiếm tuần tự sẽ cú bậc là O(log2K*M).
60
vi, Phương phỏp tỡm kiếm sử dụng cõy nhị phõn (Binary Tree)
Thụng qua bảng định tuyến với cỏc tiền tố phự hợp và cỏc cổng ra, ta sẽ xõy dựng lờn được cõy nhị phõn với mục đớch để tỡm kiếm đầu ra tương ứng với cỏc đầu vào. Cõy nhị phõn này sẽ bao gồm cỏc nỳt mà mỗi nỳt trong đú sẽ cú ba thành phần: Thành phần thụng tin chỉ ra cổng ra tương ứng với tiền tố và hai con trỏ trỏi và phải để chỉ đến nỳt tiếp theo tương ứng theo hướng đi sang trỏi hoặc đi sang phải. Nếu nỳt khụng cú cỏc thành phần trỏi hoặc phải thỡ cỏc con trỏ trỏi hoặc phải sẽ cú giỏ trị là NULL.
Prefix Next Hop 10* 1010* 10101* 111* P1 P2 P3 P4 P3 P1 P2 P4 Root 1 1 1 1 1 0 0 Trie node next hop left-ptr right-ptr Routing Table A B C D E F G H Hỡnh 3.6: Vớ dụ về một cõy nhị phõn
Ta sẽquy ước rằng nếu bớt tiếp theo trong địa chỉ là 0 thỡ đường liờn kết tiếp theo sẽ đi theo nỳt con trỏ trỏi chỉ tới, ngược lại nếu bớt tiếp theo trong địa chỉ là 1 thỡ đường liờn kết tiếp theo sẽđi theo nỳt con trỏ phải chỉ tới. Cõy nhị phõn sẽ cú một nỳt gốc (Root) tương ứng với tiền tố cú chiều dài bằng 0 (tiền tố *). Vớ dụ về cõy nhị phõn của một bảng định tuyến như hỡnh vẽ 3.6. Trong phương phỏp tỡm kiếm sử dụng cõy nhị phõn, ta sẽ duyệt cõy nhị phõn theo chuỗi bớt đầu vào bắt đầu từ nỳt gốc theo quy tắc: Với bớt 0 thỡ ta sẽ đi về bờn trỏi của nỳt cũn bớt 1 thỡ ta sẽđi về phớa bờn phải của cõy. Trong qỳa trỡnh duyệt cõy, tiền tố được gặp trong quỏ trỡnh đi từ nỳt gốc sẽ được lưu lại và tiền tốđược gặp cuối cựng sẽ là tiền tố phự hợp dài nhất. Thuật toỏn sẽ kết thỳc nếu chuỗi bớt đầu vào kết thỳc hoặc khụng cũn đường đi tiếp theo trong quỏ trỡnh duyệt do nỳt trỏi hoặc nỳt phải của nỳt đang duyệt khụng cú hoặc ta đó duyệt đến nỳt lỏ. Độ phức tạp của thuật toỏn cú bậc là O(W) với W là chiều dài tiền tố dài nhất trong bảng định tuyến.
vii, Phương phỏp tỡm kiếm sử dụng cõy Patricia
Trong phần này ta sẽ xem xột một cấu trỳc cõy khỏc so với cõy nhịphõn đó trỡnh bày phần trước. Cấu trỳc cõy Patricia (PATRICIA-Practical Algorithm To Retrieve Information Coded In Alphanumeric) được nộn xuống từ cõy nhị phõn với sự khỏc biệt
61
là trong trong cõy Patricia sẽ khụng cú một nỳt nào chỉ cú một nỳt con (Cõy Patricia lỳc này sẽ là một cõy nhị phõn đỳng-Strictly binary tree). Mỗi chuỗi đường đi được nộn thành một đường đơn trong một cõy Patricia. Do đú giải thuật để duyệt cõy cú thể khụng cần thiết phải kiểm tra tất cả cỏc bớt liờn tiếp trong địa chỉ mà cú thể bỏ qua một số bớt tuỳ thuộc vào nhón của đường đi. Mỗi nỳt trong cõy Patricia bõy giờ sẽ được lưu trữ thờm một trường để xỏc định rừ vịtrớ bớt trong địa chỉ dựng đểxỏc định nhỏnh đi tiếp theo của nỳt. Cỏc tiền tố sẽđược lưu trữ tại cỏc nỳt lỏ (nỳt khụng cú nỳt con) của cõy Patricia. Giải thuật tỡm kiếm sẽ di dọc theo cõy từ nỳt gốc đến nỳt lỏ của cõy tuỳ theo chuỗi địa chỉ đầu vào. Tại mỗi nỳt thỡ nú sẽ thăm dũ đường đi tiếp theo bằng bớt trong địa chỉđược chỉ thị bởi trường vị trớ bớt của nỳt. Khi giải thuật tỡm kiếm đạt đến được nỳt lỏ của cõy, nú sẽ thực hiện so sỏnh giữa địa chỉđầu vào và với tiền tố được lưu trong nỳt lỏ. Tiền tố này sẽ được trả lời là tiền tố phự hợp dài nhất nếu kết quả so sỏnh là phự hợp. Nếu kết quả so sỏnh là khụng phự hợp thỡ giải thuật sẽ thực hiện quay lui đệ quy và tiếp tục tỡm kiếm trờn nỳt cha của nỳt lỏ này.
Nếu chiều dài của tiền tố dài nhất trong bảng định tuyến là W thỡ độ phức tạp của thuật toỏn tỡm kiếm trờn cõy nhị phõn sẽ là O(W2) do việc tỡm kiếm sẽ thực hiện đệ quy sang cả hai nhỏnh của nỳt cho đến khi tỡm thấy LPM.
viii, Phương phỏp tỡm kiếm hỗ trợ bởi phần cứng
Cỏc phương phỏp tỡm kiếm đó trỡnh bày ở cỏc phần trờn đú chớnh là cỏc giải phỏp về phần mềm để nõng cao hiệu quả tỡm kiếm của bộđịnh tuyến. Một giải phỏp về phần cứng, đú là việc sử dụng bộ nhớ CAM cũng cú thểđược sử dụng để nõng cao hiệu quả tỡm kiếm. Mỗi một bộ nhớ CAM sẽlưu giữ nhiều khoản mục cú cựng chiều dài trong bảng định tuyến, nghĩa là cỏc tiền tố cú cựng chiều dài sẽđược lưu vào trong một bộ nhớ CAM. Khi cú một địa chỉđầu vào để tỡm kiếm tiền tố phự hợp dài nhất thỡ địa chỉ này sẽđược đưa đến tất cả cỏc bộ nhớCAM để tỡm kiếm song song. Kết quảđầu ra sẽ so sỏnh độ ưu tiờn để cú được tiền tố phự hợp dài nhất. Như vậy việc tỡm kiếm sẽ cú kết quả đầu ra chỉ sau một vài chu kỳ truy nhập bộ nhớ vỡ tất cả cỏc khoản mục trong bảng định tuyến được tỡm kiếm song song tất cả trờn bộ nhớ CAM.
Mặc dự CAM hiệu quả về mặt tốc độ tỡm kiếm giỏ thành cao và CAM chỉ cú thể thực hiện tỡm kiếm trờn toàn bộ địa chỉ chứa trong nú mà khụng hỗ trợ cho việc tỡm kiếm một tiền tố cú chiều dài bất kỳ. Vỡ vậy, Một giải phỏp khỏc mềm dẻo hơn sử dụng bộ nhớ CAM, đú là việc sử dụng cỏc bộ nhớ TCAM (Ternary-CAM) cú khả năng so sỏnh địa chỉđầu vào với cỏc tiền tố cú chiều dài thay đổi.
62