Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để lưu trữ và tìm kiếm vị từ
Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để
lưu trữ và tìm kiếm vị từ cho kỹ thuật chuyển tiếp thông
điệp trong định tuyến hướng dịch vụ
Nguyen Thanh Long
Informatic Center of Ha noi Telecommunications
75 Dinh Tien Hoang, Hoan Kiem, Ha Noi, Viet Nam
Nguyen Duc Thuy
Research Institute of Posts and Telecommunications
122 Hoang Quoc Viet, Nghia Tan, Cau Giay, Hanoi, Viet Nam
Pham Huy Hoang
Hanoi University of Science and Technology
1 Dai Co Viet Road, Hanoi, Viet Nam
__________________________________________________________________________________________
Tóm tắt
MANET là viết tắt của Mobile Ad Hoc Network bao gồm 1 tập các node mạng di động, cấu hình mạng
thay đổi rất nhanh. Mỗi node phải thực hiện như 1 bộ định tuyến để duy trì hoạt động của mạng. Không có node
trung tâm điều khiển hoạt động toàn bộ mạng. Không có một nền tảng có sẵn nào, các node mạng phải tự liên kết
với nhau, hình thành cấu trúc mạng tự động. Do vậy việc định tuyến trong MANET là một việc quan trọng.
Trong định tuyến hướng nội dung, dữ liệu được truyền từ node nguồn đến tập các node có yêu cầu không dựa
trên địa chỉ node nhận. Việc trao đổi dữ liệu có thể được thực hiện không trực tiếp giữa bên nhận và bên truyền.
Vì vậy việc trao đổi dữ liệu mềm dẻo và tin cậy hơn kiểu truyền dữ liệu truyền thống. Mô hình
Publish/Subscription (P/S) là kiểu tương tác không đồng bộ được thực hiện trong các hệ thống định tuyến dựa
trên nội dung [3].Định tuyến hướng dịch vụ được xây dựng trên cơ sở kế thừa từ mô hình định tuyến hướng nội
dung [3, 4], được kết hợp với 1 số kỹ thuật quan trọng như đa truyền phát (Multicast) để tăng tốc độ truyền, giảm
tải cho mạng, mã hoá dữ liệu đảm bảo an toàn. Kết hợp với đảm bảo chất lượng dịch vụ (QoS) như băng thông,
độ trễ để phục vụ cho các ứng dụng quan trọng như Multimedia, ứng dụng trực tuyến, ...
Để truyền dữ liệu hiệu quả và nhanhyêu cầu việc lưu trữ các địa chỉ theo nội dung một cách khoa học, giúp
cho việc tìm kiếm nhanh và giảm không gian lưu trữ. Trong bài viết này phân tích để cải tiến kỹ thuật lưu trữ và
tìm kiếm vị từ dựa trên cây tìm kiếm tam phân và nhị phân.
__________________________________________________________________________________________
Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để lưu trữ và tìm kiếm vị từ
Keywords – Ad hoc network, MANET, ternary,
search, tree, routing, service, content, binary,
predicate, address.
1. Giới thiệu
Mô hình Publish/Subscription (viết tắt P/S) là mô
hình tương tác không đồng bộ trong định tuyến theo
nội dung [3].
Hình 1: Mô hình mạng định tuyến hướng dịch vụ.
Như một số các giao thức định tuyến theo nội
dung chuẩn [3, 4], khi 1 node đưa nội dung lên mạng
sử dụng giao thức chuẩnBroadcast. Nội dung đưa
lên từ các node cung cấp sẽ được lưu trữ trên tất cả
các bộ định tuyến trên mạng. Khi 1 node có yêu cầu
nhận nội dungnào đó, sẽ hình thành thông điệp yêu
cầu (subscription message) rồi gửi lên mạng bằng
giao thức broadcast, không cần biết trước nội dung
yêu cầu được lưu ở đâu trên mạng. Khi 1 node nào
đó trên mạng nhận được thông điệp yêu cầu nó sẽ so
sánh các yêu cầu nhận được với nội dung được gửi
đến từ các node khác và của chính node hiện tại.
Nếu thấy phù hợp thì nội dung phù hợp sẽ được gửi
về node nhận. Hoặc mạng có thể hoạt động theo mô
hình, khi các node đưa các yêu cầu tìm kiếm nội
dung lên mạng theo giao thức broadcast, các yêu cầu
này sẽ được lưu trữ tại mọi node trên mạng. Khi một
node có 1 nội dung cần publish lên mạng, tại mỗi
node nhận được sẽ kiểm tra xem có các node nào có
yêu cầu sẽ gửi nội dung này cho các node đó.Mỗi
node mạng có thểđảm nhận cùng 1 lúc các vai trò:
cung cấp nội dung, phân phát nội dung, nhận nội
dung. Hiện tại có nhiều giao thức định tuyến đã
được áp dụng cho MANET như OLSR, CBR, DSR,
DSDV, AODV, ODMRP, … trong đó có cả định
tuyến theo nội dung.
2. Cấu trúc của các loại thông điệp
trong mạng SBR
Hình 2: Mô hình truyền thông điệp trong mạng định
tuyến hướng dịch vụ.
2.1.Giới thiệu các loại thông điệp[3,4,6]
1. Cặp thông điệp subscription/unsubscription: dùng để
đăng ký/ huỷ đăng ký yêu cầu tìm kiếm nội dung từ
1 node của mạng.
2. Thông điệp content: cung cấp nội dung của node lên
mạng.
3. Thông điệp quảng bá nội dung: quảng bá nội dung
node, hướng các yêu cầu từ các node đến các node
cung cấp nội dung phù hợp. Tránh làm tràn các yêu
cầu ra toàn mạng. Khi 1 node quảng bá nội dung của
nó sử dụng giao thức broadcast, nội dung này được
lưu trữ tại tất cả các node trong mạng. Khi 1 thông
điệp yêu cầu xuất hiện trong mạng, tại node nhận
được thông điệp sẽ kiểm tra thông điệp xem có phù
hợp với nội dung công bố của nó. Nếu đúng nội
dung phù hợp sẽ được gửi đến node có yêu cầu. Nếu
không, nó sẽ so sánh với các thông điệp quảng bá
nội dung được cache trên node. Rồi thông điệp yêu
cầu này sẽ được truyền đến tập các node có thông tin
cung cấp phù hợp. Vì vậy ta sẽ phải tạo cây
multicast từ node yêu cầu đến tập các node có nội
dung phù hợp để giảm trễ và tải cho mạng.
4. Cặp thông điệp update request và reply sender: để
duy trì bảng định tuyến của giao thức định tuyến
theo nội dung. Bởi việc sử dụng cây MST
(Minimum Spanning Tree, được xây dựng theo thuật
toán PRIM) để truyền dữ liệu từ node nguồn đến tập
các node đích. Do vậy để duy trì cây multicast này,
node nguồn phải định kỳ gửi thông điệp yêu cầu cập
nhật đến tập node đích là các node lá của cây. Khi
node đích nhận được thông điệp này, nó sẽ tạo ra
thông điệp trả lời reply sender bao gồm 1 số thông
tin lấy từ thông điệp update request nhận được kết
hợp với nội dung bảng định tuyến của node, rồi
truyền về node nguồn theo giao thức unicast. Trên
đường đi qua các node trung gian, mỗi node trung
gian sẽ cập nhật bảng định tuyến được lưu tại node
vào nội dung bảng định tuyến của thông điệp rồi
chuyển tiếp gói tin về node nguồn. Khi node nguồn
nhận được gói tin reply sender, sẽ cập nhật bảng
định tuyến theo bảng định tuyến nhận được từ thông
điệp.
5. Cặp thông điệp route request và route reply: Khi một
node của mạng nhận được một thông điệp nội dung
từ mạng, node sẽ căn cứ vào bảng định tuyến theo
nội dung để tìm tập các node có yêu cầu phù hợp với
thông điệp nhận được. Khi đó node sẽ sử dụng cặp
thông điệp route request và route reply này để phát
hiện các tuyến từ node nguồn đến tập node đích để
hình thành cây multicast có đảm bảo các yêu cầu
chất lượng dịch vụ để truyền thông điệp nội dung
nhận được đến tập các node có yêu cầu phù hợp.Đối
với các ứng dụng có yêu cầu tốc độ truyền như
multimedia, online transaction, có thể sử dụng các
Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để lưu trữ và tìm kiếm vị từ
thuật toán được trình bày ở phần sau để xây dựng
cây multicast có đảm bảo băng thông truyền.
2.2. Thông điệp yêu cầu/ huỷ yêu cầu [3,4]:
Thông điệp yêu cầu/ hủy yêu cầu được phát ra từ
các lớp dịch vụ ứng dụng trên mạng để đăng ký/ huỷ
đăng ký các yêu cầu nội dung. Các thông điệp có
cấu trúc là: địa chỉ của subscriber và danh sách các
ràng buộc trên dịch vụ và nội dung yêu cầu. Trong
đó, mỗi ràng buộc là 1 bộ 3 thành phần, có dạng:
{key, operator, value}. Ví dụ nội dung của thông
điệp đăng ký: [service_class=”Network monitor”
Λ
alert-type=”instrusion”
Λ
severity>2] hoặc [service_class=”Network monitor”
Λ
class=”alert”
Λ
device-type=
“web-server”], 2 thông điệp yêu cầu thuộc lớp dịch
vụ Network monitor.
a) Cấu trúc thông điệp yêu cầu/ hủy yêu cầu
Hình 3:Cấu trúcthông điệp yêu cầu.
Trong đó:
1) Subscriber address là địa chỉ của node yêu
cầu.
2) Predicate là vị từ tìm kiếm dịch vụ và nội
dung : là 1 tập các ràng buộc. Đầu tiên là ràng
buộc dịch vụ, tiếp theo là các ràng buộc nội
dung.
a) Mỗi constraint gồm 3 thành phần: khóa
(key), toán tử (operator), giá trị (value).
b) Trong đó khóa là một chuỗi ký tự, toán tử
thì tuỳ thuộc vào giá trị.
c) Nếu giá trị là số thì toán tử là : =, <, >, <=,
>=, in;
d) Nếu giá trị là chuỗi thì toán tử là : =,<, >,
<=, >=, substring (sb), prefix (pf), postfix (ps).
e) Nếu toán tử là substring (sb) có thêm 2
tham số kèm theo là chỉ số bắt đầu (start index) và
chỉ số kết thúc (stop index) để lấy ra chuỗi cần
thiết trong 1 chuỗi giá trị của thuộc tính của thông
điệp nội dung để so sánh với chuỗi giá trị của ràng
buộc.
f) Nếu toán tử prefix (pf) có thêm 1 tham số là
số ký tự sẽ được lấy ra trong chuỗi giá trị của
thuộc tính để so sánh với chuỗi giá trị của ràng
buộc.
g) Nếu toán tử là postfix (ps) có thêm 1 tham
số là số ký tự sẽ được lấy ra trong chuỗi giá trị của
thuộc tính để so sánh với chuỗi giá trị của ràng
buộc.
2.3. Thông điệp nội dung [3, 4]
Thông điệp nội dung được truyền đi từ các máy
chủ cung cấp dịch vụ. Các thông điệp này sẽ được
truyền lên mạng, rồi sẽ được truyền đến các máy có
yêu cầu căn cứ vào subscription message nhận được
từ các máy đó.
a) Cấu trúc thông điệp nội dung
Hình 4 :Cấu trúcthông điệp nội dung.
Trong đó:
1)Source node address là địa chỉ node sinh ra thông
điệp.
2)Tiếp theo attribute
1
, attribute
2
, …, attribute
n
là các
thuộc tính của thông điệp. Thuộc tính đầu tiên
attribute
1
xác định dịch vụ của thông điệp, các
thuộc tính còn lại xác định nội dung của thông
điệp.
b) Các thành phần của thông điệp nội dung:
1) Thông điệp nội dung bao gồm địa chỉ node sinh ra
thông điệp và 1 tập các thuộc tính (property), mỗi
thuộc tính là 1 cặp (tên thuộc tính, giá trị) được
ngăn cách nhau bởi dấu “=”.
2) Tên thuộc tính là một chuỗi ký tự.
3) Giá trị có thể có kiểu chuỗi ký tự hoặc kiểu số.
4) Ví dụ 1 thông điệp nội dung:
{node_a, [service_class=”Network monitor”,
class=”alert”, severity=6, device-type=”web-
server”, alert-type=”hardware failure”]}.
2.4. Thông điệp quảng cáo nội dung [3], [4]
Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để lưu trữ và tìm kiếm vị từ
Hình 5:Mô tả quá trình truyền thông điệp
advertisement
1) Advertisement message là thông điệp
quảng bá những nội dung cơ bản mà ứng dụng
dịch vụ nào đó cung cấp. Nhằm hướng các yêu
cầu đến đúng nơi cung cấp. Ngăn tình trạng lan
truyền thông điệp yêu cầu ra toàn mạng.
2) Các thông điệp quảng cáo được truyền theo
cây khung tối thiểu từ node xuất phát.
3) Advertisement message cũng có cấu trúc
tương tự thông điệp nội dung, gồm 1 tập các
thuộc tính. Như vậy thông điệp nội dung là mở
rộng của thông điệp quảng cáo.
4) Advertisement message được truyền đi từ
các hệ thống cung cấp dịch vụ.
2.5. Cặp thông điệp sender request và
update reply [3, 4]
Sender request message Update reply message
Hình 6: Cấu trúc cặp thông điệp sender request và
update reply.
1) Sender request: yêu cầu từ router, cấu trúc gồm 3
trường. Hai trường sender address và request
number xác định tính duy nhất của thông điệp.
Timeout xác định thời gian lâu nhất bên gửi đợi
nhận trả lời. Thông điệp này được truyền theo cây
khung tối thiểu (Minimum Spanning Tree viết tắt là
MST) bắt đầu từ router gửi (hình thành theo thuật
toán DIJSKTRA và PRIM) đến các router khác
trong mạng.
2) Khi router lá của cây MST nhận được thông điệp
sender request, nó sẽ trả lời bằng thông điệp update
reply (UR). Thông điệp gồm có 3 trường, 2 trường
đầu lấy từ sender request, trường thứ 3 lưu trữ
content based address routing table của nó. Thông
điệp UR được lan truyền trở lại router gửi theo giao
thức unicast.
3) Trên đường đi các router trung gian sẽ kết hợp
content based address routing tablecủa nó với của
thông điệp và đẩy tiếp về router gửi.
4) Khi router gửi nhận được nó cập nhật bảng định
tuyến của nó. Kết thúc quá trình thực hiện.
3. Các khái niệm và thuật ngữ
3.1. Khái niệm bảng chuyển tiếp theo dịch
vụ
a) Mỗi dịch vụ có 1 bảng chuyển tiếp riêng.
b) Bảng chuyển tiếp bao gồm các vị từ
(predicate) hay còn được gọi là content-based
address.
c) Bảng chuyển tiếp là liên kết 1-1 giữa
Predicate và định danh của các subscriber.
d) Predicate là tuyển của các bộ lọc nhận được
từ subscriber.
e) Thuật toán chuyển tiếp là giải thuật tìm
trong bảng chuyển tiếp các filter phù hợp với nội
dung thông điệp nhận.
f) Bộ lọc (filter) là yêu cầu nội dung
(subscription) từ subscriber. Mỗi filter là kết hợp
giữa định danh của subscriber và hội của các ràng
buộc (constraint).
3.2. Kỹ thuật chuyển tiếp thông điệp trong
định tuyến hướng dịch vụ
a) Khái niệm và thuật ngữ:
1) Thuật toán chuyển tiếp là giải thuật tìm trong bảng
chuyển tiếp các filter phù hợp với nội dung thông
điệp nhận.
2) Bảng chuyển tiếp là liên kết 1-1 giữa Predicate và
định danh của các subscriber.
3) Bộ lọc (filter) là yêu cầu nội dung (subscription) từ
subscriber. Mỗi filter là kết hợp giữa định danh của
subscriber và hội của các ràng buộc (constraint).
4) Predicate là tuyển của các bộ lọc nhận được từ
subscriber.
5) Bảng chuyển tiếp bao gồm các vị từ hay còn được
gọi là content-based address.
b)Tìm các node có yêu cầu phù hợp
Xây dựng cây tìm kiếm:
Ta chia các ràng buộc làm 2 loại: loại 1 là các ràng
buộc có giá trị là 1 chuỗi ký tự và số, loại 2 là các
ràng buộc có giá trị là 1 số. Với các ràng buộc loại 1
sẽ được lưu trữ trong cây tìm kiếm tam phân. Các
ràng buộc loại 2 được lưu trữ trong 1 mảng, mỗi
Nghiên cứu cải tiến, áp dụng cây tìm kiếm tam phân để lưu trữ và tìm kiếm vị từ
phần tử mảng là gốc của 1 cây có nhiều nhánh tương
ứng với các toán tử sẽ được trình bày ở phần tiếp
theo.
Tìm kiếm các ràng buộc phù hợp:
Khi nhận được thông điệp nội dung từ mạng, hệ
thống sẽ duyệt qua các thuộc tính của thông điệp.
Với mỗi thuộc tính căn cứ vào giá trị của thuộc tính,
rồi tìm kiếm trong cây tìm kiếm tam phân với thuộc
tính có giá trị chuỗi. Nếu là thuộc tính có giá trị số:
áp dụng tìm kiếm nhị phân trên 1 danh sách.
4. Cách lưu trữ vị từ bằng cây tam
phân cho ràng buộc có giá trị chuỗi
4.1. Tổng quan cây tìm kiếm tam phân
1) Cây tìm kiếm tam phân là 1 cấu trúc dữ liệu
dạng cây ở đó các node con của 1 cây chuẩn được
sắp xếp như 1 cây tìm kiếm nhị phân. Việc tìm kiếm
1 chuỗi trong 1 cây tìm kiếm tam phân bao gồm 1
loạt các bước tìm kiếm nhị phân, mỗi bước cho việc
tìm kiếm 1 ký tự trong chuỗi. Ký tự hiện tại trong
chuỗi được so sánh với ký tự tại node hiện tại:
a) Nếu nhỏ hơn thì tìm kiếm
tiếp với node con bên trái.
b) Nếu lớn hơn thì tìm kiếm
tiếp với node con bên phải.
c) Nếu bằng nhau, thì tìm
kiếm tiếp với node con giữa và chuyển sang ký
tự tiếp theo trong chuỗi.
2) Không giống như cây tìm kiếm nhị phân, 1
cây tìm kiếm tam phân có thể cân bằng hoặc không
cân bằng, dựa trên thứ tự của các chuỗi được thêm
vào cây. Việc tìm kiếm 1 chuỗi độ dài m trong 1 cây
tìm kiếm tam phân cân bằng có n chuỗi phải sử dụng
m+log2(n) phép so sánh ký tự. Nói cụ thể là, mỗi
phép so sánh hoặc là tìm được 1 ký tự trong cây
hoặc là chia vùng tìm kiếm ra làm 2 phần.
4.2. Cải tiến cây tìm kiếm tam phân để lưu
trữ vị từ (địa chỉ theo nội dung)
a) Như đã trình bày vị từ bao gồm các ràng buộc
(constraint), mỗi ràng buộc là 1 bộ gồm 3 thành
phần {key, operator, value}.
b) Đối với constraint có giá trị (value) kiểu
chuỗi, sẽ được lưu trữ trên cây tìm kiếm tam phân
(Ternary Search Tree - TST) có cải tiến.
c) Node kết thúc một chuỗi bất kỳ có thể là khoá
(key) của ràng buộc lưu con trỏ đến danh sách động
các con trỏ, mỗi con trỏ này chỉ đến danh sách động
lưu các toán tử, được mô tả trong sơ đồ dưới đây:
Hình 7: Cải tiến cây tam phân lưu trữ các vị từ trong
bảng chuyển tiếp.
d) Giả sử miền giá trị của mỗi key của các ràng
buộc là phân biệt.
e) Trong trường hợp một key liên quan tới nhiều
ràng buộc sẽ tổ chức thành nhóm. Trong đó, các toán
tử liên kết với 1 giá trị được đưa vào 1 mảng động,
có con trỏ chỉ đến phần tử đầu là List_op_header_i.
f) Các con trỏ List_op_header_i này là 1 trong 2
thành phần của các phần tử được lưu trữ trong 1
mảng động. Thành phần thứ 2 của mỗi phần tử là
con trỏ chỉ đến node xuất phát của nhánh thuộc cây
TST lưu trữ giá trị của ràng buộc. Con trỏ giúp cho
việc tìm kiếm tập hợp giá trị của các ràng buộc có
key đang xét nhanh hơn.
g) Các phần tử lưu trữ toán tử của các ràng buộc
có cùng giá trị được lưu trữ trong 1 mảng động. Mỗi
phần tử của mảng động có 3 thành phần: op: lưu trữ
toán tử; start idx viết tắt của start index: lưu trữ vị trí