
3.1. Mô hình l p trình capsuleậ
M t m ng ANTS bao g m: các ng d ng s d ng m ng b ng cách g i và nh nộ ạ ồ ứ ụ ử ụ ạ ằ ử ậ
nh ng gói tin đ c bi t đ c g i là các capsule qua m t active node c c b (hay cònữ ặ ệ ượ ọ ộ ụ ộ
g i là m t router có kh năng l p trình). M i active node đ c k t n i v i v i cácọ ộ ả ậ ỗ ượ ế ố ớ ớ
node lân c n v i nó. Các ng d ng có th l a ch n các lo i capcule khác nhau tùyậ ớ ứ ụ ể ự ọ ạ
thu c vào ph n m m. Code s đ c th c thi t i m i active node khi nó đi qua. Do đó,ộ ầ ề ẽ ượ ự ạ ỗ
đ t o ra m t d ch v m i thì nó ch c n xây d ng m t t p các lo i capsule m i v iể ạ ộ ị ụ ớ ỉ ầ ự ộ ậ ạ ớ ớ
các code l p trình t ng ng. Vì v y, mô hình này cho phép quá trình x lý tùy bi nậ ươ ứ ậ ử ế
d c theo m ng, và cho phép các ng d ng m i đ c tri n khai ch b ng m t b c màọ ạ ứ ụ ớ ượ ể ỉ ằ ộ ướ
không c n yêu c u vi c tri n khai thêm hay xây d ng th nghi m. Và các ng d ngầ ầ ệ ể ự ử ệ ứ ụ
m i đ c l a ch n m t cách rõ ràng b ng cách l a ch n lo i capsule h n là vi c nângớ ượ ự ọ ộ ằ ự ọ ạ ơ ệ
c p router.ấ
3.2. Forward packet m r ngở ộ
Mô hình l p trình capsule d hi u và linh ho t nh ng l i khó th c thi. Đ có th th cậ ễ ể ạ ư ạ ự ể ể ự
thi hi u su t cao c n đ c gi i h n theo 2 cách:ở ệ ấ ầ ượ ớ ạ
• Vi c forward m t capsule đ c chia làm các ph n nh : truy n code và th c thi code.ệ ộ ượ ầ ư ề ự
Vi c phân chia vi c th c thi nh ng forwarding thành nh ng ph n trên cho phép m iệ ệ ự ữ ữ ầ ỗ
ph n đ c th c thi v i các k thu t phù h p và cho phép code đ c cache nh ngầ ượ ự ớ ỹ ậ ợ ượ ở ữ
active node đ tăng hi u su t. Nhi u k thu t có th đ c s d ng đ truy n codeể ệ ấ ề ỹ ậ ể ượ ử ụ ể ề
ph thu c vào kích th c và t n su t c a vi c truy nụ ộ ướ ầ ấ ủ ệ ề
• Mô hình capsule đ c s a đ i đ phù h p v i 1 m ng mà trong đó ch nh ng nodeượ ử ổ ể ợ ớ ạ ỉ ữ
xác đ nh m i là active node. nh ng node bình th ng thì các capsule s đ cị ớ Ở ữ ườ ẽ ượ
forward nh nh ng gói tin IP bình th ng. ANTS xem nh ng active node nh nh ngư ữ ườ ữ ư ữ
node đ c bi t đ c nhúng vào m ng.ặ ệ ượ ạ
Hình 3. 1 Các tr ng trong gói capsuleườ
3.3. Các thành ph n ki n trúcầ ế
G m m t mô hình l p trình capsule, m t giao th c demand pull code và h đi u hànhồ ộ ậ ộ ứ ệ ề
c a nodeủ
3.4. Capsule programing module
G m 3 ph n: đ nh d ng c a capsule; lu t forward; và API c a nodeồ ầ ị ạ ủ ậ ủ
3.4.1. Đ nh d ng c a capsuleị ạ ủ
M i capuslemang theo nh ng tr ng sau: đ a ch ngu n, đích; resource limit (t ng tỗ ữ ườ ị ỉ ồ ươ ự
nh TTL c a IPv4 và hopcount c a IPv6); version( xác đ nh version c a ANTS);ư ủ ủ ị ủ
type(xác đ nh lo i forwarding routine t ng ng); previous address (đ c s d ng đị ạ ươ ứ ượ ử ụ ể

truy n code trong m ng); các tr ng header khác (ph thu c vào lo i capsule đ c xácề ạ ườ ụ ộ ạ ượ
đ nh tr ng type); payload.ị ở ườ
• Trong nh ng tr ng này thì tr ng type là quan trong nh t vì nó xác đ nh forwardingữ ườ ườ ấ ị
routine; code group và protocol mà capsule đó thu c v . M i bit đ u đ c s d ng độ ề ỗ ề ượ ử ụ ể
x lý capsule m i node. Yêu c u là type ph i là duy nh t d dàng ki m tra và phânử ở ỗ ầ ả ấ ễ ể
ph i.ố
• Code group và protocol đ c xác đ nh b i các c u trúc phân c p vì v y cho phép nóượ ị ở ấ ấ ậ
đ c s d ng an toàn trong m ng mà trong đó các code không ph i lúc nào cũng có.ượ ử ụ ạ ả
Đ nh nghĩa các capsule type b ng cách s cung c p 2 đ c tính quan tr ng:ị ằ ẽ ấ ặ ọ
- Các type m i có th đ c phân ph i m t cách nhanh chóng. Vì các d u hi u c a nóớ ể ượ ố ộ ấ ệ ủ
là duy nh t và type ph thu c vào code t ng ng, do đó ch c n ch n m t hàm d uấ ụ ộ ươ ứ ỉ ầ ọ ộ ấ
hi u v i m t t m l n đ làm cho kh năng đ ng đ là nh nh t. V i s hash 128 bitệ ớ ộ ầ ớ ể ả ụ ộ ỏ ấ ớ ố
ng u nhiên nh MD5 thì đ ng đ x y ra khi có 264 d u hi u đ ng th i. Do đó, cácẫ ư ụ ộ ả ầ ệ ồ ờ
d ch v m i có th đ c h tr b ng s đ ng ý t ng h gi a nh ng ph n xác đ nh. ị ụ ớ ể ượ ỗ ợ ằ ự ồ ươ ỗ ữ ữ ầ ị
- Các type s xác l p m t secure binding gi a capsule và code t ng ng. Vì hash làẽ ậ ộ ữ ươ ứ
m t chi u nên s xóa đ c nguy c gi code vì m i node có th nhanh chóng xác minhộ ề ẽ ượ ơ ả ỗ ể
(mà không c n thêm nh ng thông tin bên ngoàni) r ng m t t p các code xác đ nh sầ ữ ằ ộ ậ ị ẽ
t ng ng v i m t capsule t ng ng.ươ ứ ớ ộ ươ ứ
3.4.2. Active node API
Trong th c t , m t lo i routine có th đ c xác đ nh ph thu c vào active node APIự ế ộ ạ ể ượ ị ụ ộ
s n có. Ví d : n u không th l u và truy c p các tr ng thái node thì các ch ng trìnhẵ ụ ế ể ư ậ ạ ươ
capsule s không th giao ti p v i nhau. Ngoài ra vi c th c thi code ph thu c vàoẽ ể ế ớ ệ ự ụ ộ
API. Ví d : các hàng xóm c a m t node xác đ nh có th đ c tìm th y b ng cách điụ ủ ộ ị ể ượ ấ ằ
qua toànn b b ng đ nh tuy n đ h i nh ng node k c n hay h i tr c ti p node là phộ ả ị ế ể ỏ ữ ế ậ ỏ ự ế ụ
thu c vào hàm API nào đ c h tr . Ví d : Các hàm API cho capsule forwardingộ ượ ỗ ợ ụ
routine:
B ng 3.1: Các ph ng th c c a Nodeả ươ ứ ủ
Khi k t h p v i các kh năng đ c cung c p b i mô hình forward m r ng; nh ngế ợ ớ ả ượ ấ ở ở ộ ữ
lo i API này đ đ h tr các lo i d ch v m i m t cách hi u qu :ạ ủ ể ỗ ợ ạ ị ụ ớ ộ ệ ả
• Các đ c tính c a m ng có th đ c khám phá và nh ng đ ng m i đ c tính toánặ ủ ạ ể ượ ữ ườ ớ ượ
b ng cách s d ng các hàm truy nh p môi tr ng k t h p v i các header và vi cằ ử ụ ậ ườ ế ợ ớ ệ
truy n có ki m soát.ề ể
• Các d ch v đ nh tuy n m i đ c cung c p b ng cách s d ng soft-store đ duy trìị ụ ị ế ớ ượ ấ ằ ử ụ ể
nh ng đ ng v a đ c tính và forwarding s đi theo nh ng đ ng này.ữ ườ ừ ượ ẽ ữ ườ
• Multicast có th đ c cung c p b ng cách t o ra các capsule m i trong m ng vàề ượ ấ ằ ạ ớ ạ
chúng s đi theo nh ng đ ng đ c duy trì trong soft-store.ẽ ữ ườ ượ
3.4.3. Capsule forwarding:

Quá trình forward ph thu c vào lo i capsule tr khi nh ng node không ph i activeụ ộ ạ ừ ở ữ ả
thì quá trình forward IP m c đ nh s đ c s d ng. m i active node thì tr ng typeặ ị ẽ ượ ử ụ Ở ỗ ườ
s đ c s d ng đ xác đ nh lo i forward t ng ng (đ c truy n riêng). Sau khi đãẽ ượ ử ụ ể ị ạ ươ ứ ượ ề
xác đ nh thì routine t ng ng s đ c th c thi đ forward capsule. Vi c này x y raị ươ ứ ẽ ượ ự ể ệ ả
b ng m t mô hình th c thi.ằ ộ ự
• Tr c h t, các forarding routine đ c cho phép ch y trong m t th i gian ng n (phướ ế ượ ạ ộ ờ ắ ụ
thu c vào t c đ truy n đích c a capsule). Các active node s ép bu c quá trình x lýộ ố ộ ề ủ ẽ ộ ử
này b ng cách ki m soát capsule runtime. N u t c đ v t quá, thì node s bằ ể ế ố ộ ượ ẽ ỏ
forwarding và s s d ng quá trình forward m c đ nh.ẽ ử ụ ặ ị
• Th 2, ch m t l ng nh các tr ng thái đ c xác đ nh m t cách rõ ràng là đ cứ ỉ ộ ượ ỏ ạ ượ ị ộ ượ
mang theo cùng v i capsule.Các tr ng thái khác ph i đ c l u node đ x lý sau,ớ ạ ả ượ ư ở ể ử
hay s đ c ph c h i b i active node runtime. ANTS cho phép các nhà phát tri n d chẽ ượ ụ ồ ở ể ị
v đ nh nghĩa nh ng tr ng cho capsule đ nó có th đ c truy c p t bên trongụ ị ữ ườ ể ể ượ ậ ừ
m ng. Nh ng tr ng này đ c đ nh nghĩa cùng v i capsule forwarding routine.ạ ữ ườ ượ ị ớ
• Th 3, routine có th đ c ch y mà không b delay m i active node trong m ng.ứ ể ượ ạ ị ở ỗ ạ
Các forwarding routine có th th c hi n các l i g i thông qua API m i node. Ví d :ể ự ệ ờ ọ ở ỗ ụ
m t capsule theo m t route xác đ nh có th t o và forward m t capsule liên quan giúpộ ộ ị ể ạ ộ
tái thi t l p route n u nó th y route đó không còn t n t i trong m ng n a. Đ l i g iế ậ ế ấ ồ ạ ạ ữ ể ờ ọ
này thành công thì code c a c 2 lo i capsule ph i đ c truy n cùng nhau đ t t củ ả ạ ả ượ ề ể ấ ả
nh ng code đ c yêu c u có s n, đi u này d n đ n vi c đ nh nghĩa m t code groupữ ượ ầ ẳ ề ẫ ế ệ ị ộ
(m t t p bao đóng các forwarding code đ c g i t forwarding code) đ c truy n b iộ ậ ượ ọ ừ ượ ề ở
giao th c phân phát code. ứ
• Th 4, active node runtime b o đ m r ng d i góc nhìn c a các nhà phát tir n ngứ ả ả ằ ướ ủ ể ứ
d ng thì các capsule đ c truy n m t cách tu n t .ụ ượ ề ộ ầ ự
• cu i cùng, vi c x lý l i trong quá trình truy n. Các l i có th là không đ resourceố ệ ử ỗ ề ỗ ể ủ
đ truy n, thi u m t đ ng m c đ nh, và m t s di u ki n khác. Đ hi u qu thì quáể ề ế ộ ườ ặ ị ộ ố ề ệ ể ệ ả
trình x lý l i nên đ c th c hi n c c b .ử ỗ ượ ự ệ ụ ộ
3.5. Vi c truy n codeệ ề
Khi m t ng d ng m i đ c bi u di n trong m t capsule thì nó ph i đ c th c thiộ ứ ụ ớ ượ ể ễ ộ ả ượ ự
trong h t ng m ng tr c khi đ c s d ng. ANTS cung c p m t giao th c phân ph iạ ầ ạ ướ ượ ử ụ ấ ộ ứ ố
code theo yêu c u cho phép ng d ng b t đ u có th s d ng m t ng d ng m i. ầ ứ ụ ắ ầ ể ử ụ ộ ứ ụ ớ
Vi c phân ph i code trong ANTS đ c thi t k cho nh ng m u traffic mà trong đóệ ố ượ ế ế ữ ẫ
vi c caching là hi u qu . H th ng demand pull truy n code đ th c thi m t d ch vệ ệ ả ệ ố ề ể ự ộ ị ụ
m i cho nh ng node d c theo đ ng mà m t capsule s d ng d ch v đi theo. Code sớ ữ ọ ườ ộ ử ụ ị ụ ẽ
đ c cache nh ng node này cho nh ng capsule sau s d ng. K thu t này có ích l iượ ở ữ ữ ử ụ ỹ ậ ợ
là kích th c nh c a code đ cung c p vi c truy n không tin c y: vi c phân ph iướ ỏ ủ ể ấ ệ ề ậ ệ ố
code s thành công m t cách nhanh chóng hay đôi khi fail.ẽ ộ
3.5.1. Các m c đích thi t kụ ế ế

D thích ng v i vi c thay đ i route và node failure; có th thích h p cho nh ng m ngễ ứ ớ ệ ổ ể ợ ữ ạ
l n, t i thi u hóa l ng code đ c l u t i nh ng node và kh ang cách mà code đ cớ ố ể ượ ượ ư ạ ữ ỏ ượ
truy n. Lý t ng là: m t forward routine xác đ nh ch nên đ c truy n m t l n trênề ưở ộ ị ỉ ượ ề ộ ầ
m i liên k t m ng và ch cho nh ng active node yêu c u nó; t i thi u hóa kh ang th iỗ ế ạ ỉ ữ ầ ố ể ỏ ờ
gian k t khi m t capsule đ n m t node cho đ n lúc code t ng ng đ c l y, ch ngể ừ ộ ế ộ ế ươ ứ ượ ấ ố
vi c gi code, không gây ngh n.ệ ả ẽ
• Chi n l c c a ANTS là s d ng pull code d c theo đ ng mà capsule đi theo v iế ượ ủ ử ụ ọ ườ ớ
m t giao th c connectionless và code các active node. Đ kh i t o quá trình này thìộ ứ ở ể ở ạ
ng d ng rìa c a m ng ph i l y code đ th c thi m t ng d ng m i tr c khiứ ụ ở ủ ạ ả ấ ể ự ộ ứ ụ ớ ướ
chúng có th s d ng d ch v , và sau đó s d ng k thu t: duy trì tr ng thái c a codeể ử ụ ị ụ ử ụ ỹ ậ ạ ủ
d c theo đ ng khi chúng đang đ c s d ng và đ c xem nh là m t lo i k t n iọ ườ ượ ử ụ ượ ư ộ ạ ế ố
m m. Có th thích ng v i vi c thay đ i đ ng đi và không ph thu c vào các kề ể ứ ớ ệ ổ ườ ụ ộ ỹ
thu t truy n tin c y cũng nh pha thi t l p.ậ ề ậ ư ế ậ
3.5.2. Phân ph i code các h th ng đ u cu iố ở ệ ố ầ ố
Vi c phân ph i code cho m t d ch v m i x y ra các h th ng đ u cu i n i mà cácệ ố ộ ị ụ ớ ả ở ệ ố ầ ố ơ
ng d ng có th truy c p vào m ng ANTS. M t ng d ng ph i l y code đ th c thiứ ụ ể ậ ạ ộ ứ ụ ả ấ ể ự
m t ng d ng m i tr c khi có th th c thi nó. Nghĩa là t t c các capsule forwardingộ ứ ụ ớ ướ ể ự ấ ả
routine th c thi giao th c t ng ng v i d ch v . Đ th c hi n vi c này thì m t ngự ứ ươ ứ ớ ị ụ ể ự ệ ệ ộ ứ
d ng ph i tham kh o m t th m c đ ánh x tên d ch v cho code t ng ng. Trongụ ả ả ộ ư ụ ể ạ ị ụ ươ ứ
ANTS toolkit thì th m c này là file system c c b . Vi c ánh x này đ c s d ng đư ụ ụ ộ ệ ạ ượ ử ụ ể
tách bi t giao di n v i vi c th c thi. Các ng d ng s d ng các tên c p cao đ bi uệ ệ ớ ệ ự ứ ụ ử ụ ở ấ ể ể
th m t giao di n v i m ng và con ng i có th đ c đ c. Trong network layer thì cácị ộ ệ ớ ạ ườ ể ọ ượ
d ch v đ c th c thi d a trên các capsule type.ị ụ ượ ự ự
Khi m t ng d ng đã l y đ c code c n thi t, nó s đăng ký code v i active node c cộ ứ ụ ấ ượ ầ ế ẽ ớ ụ
b c a nó. Node sau đó s có th tính toán lo i c a capsule s d ng d ch v khi nó vàoộ ủ ẽ ể ạ ủ ử ụ ị ụ
m ng, và s có code c n thi t đ kh i t o vi c th c thi d ch v đó trong m ng. Lúc đóạ ẽ ầ ế ể ở ạ ệ ự ị ụ ạ
ng d ng có th t do g i các capsule thu c v ng d ng m i đó vào m ng thông quaứ ụ ể ự ử ộ ề ứ ụ ớ ạ
node c c b . Nh ng capsule này s kh i t o quá trình phân ph i code trong m ng.ụ ộ ữ ẽ ở ạ ố ạ
Cu i cùng khi ng d ng hoànn t t vi c s d ng d ch v m i, nó s unregister code.ố ứ ụ ấ ệ ử ụ ị ụ ớ ẽ
3.5.3. Vi c phân ph i code trong m ngệ ố ạ
các node trong m ng ANTS, vi c phân ph i code s đ c th c thi khi node nh nỞ ạ ệ ố ẽ ượ ự ậ
đ c m t lo i capsule mà nó không bi t. K thu t demand load s đ c s d ng đượ ộ ạ ế ỹ ậ ẽ ượ ử ụ ể
l y code t node tr c mà capsule đã đi qua sau đó s cache code t i node hi n t i đấ ừ ướ ẽ ạ ệ ạ ể
s d ng sau.ử ụ
Code đ c truy n ph i tuân theo m t s yêu c u sau: nó ph i đ thông tin đ forwardượ ề ả ộ ố ầ ả ủ ể
capsule khi đã load nó lên và ph i nên có kích th c nh đ không t n resource. Cu iả ướ ỏ ể ố ố
cùng, nó ph i cho phép các lo i capsule d a trên d u hi u đ c xác minh đ codeả ạ ự ấ ệ ượ ể
không th b gi .ể ị ả

Hình 3. 2 Quá trình demand load
Các b c trong giao th c demand load:ướ ứ
• M t capsule đ c forward b i m t active node (đ c g i là previous node) có s h uộ ượ ở ộ ượ ọ ở ữ
m t code group t ng ng. Tr c khi nó đ c g i thì tr ng previuos address sộ ươ ứ ướ ượ ử ườ ẽ
đ c thi t l p.ượ ế ậ
• Khi capsule đ n active node ti p theo (loading node) và n u code trùng v i type c aế ế ế ớ ủ
nó b thi u thì m t capsule yêu c u load s đ c sinh ra và đ c g i cho node đ cị ế ộ ầ ẽ ượ ượ ử ượ
xác đ nh b i tr ng previous address.ị ở ườ
• Khi yêu c u load đ n previous node thì m t nhóm các capsule load response s đ cầ ế ộ ẽ ượ
sinh ra, chúng s ch a code group đ c yêu c u và nh ng th khác đ load code.ẽ ứ ượ ầ ữ ứ ể
• Khi load response đ n loading node thì chúng s đ c tái t o l i đ xây d ng codeế ẽ ượ ạ ạ ể ự
group t ng ng và k t qu s đ c ki m tra và sau đó quá trình load s hoànn t t,ươ ứ ế ả ẽ ượ ể ẽ ấ
code group sau đó s đ c s d ng đ forward capsule và quay l i b c 1.ẽ ượ ử ụ ể ạ ướ
Trong ANTS, code đ c truy n thành nh ng đ n v forwarding routine thu c v codeượ ề ữ ơ ị ộ ề
group c n thi t c ng v i các lo i code group. Vì m t giao th c đ c đ nh nghĩa b iầ ế ộ ớ ạ ộ ứ ượ ị ở
code group type nên thông tin này đ đ tính capsule type và ngăn vi c gi code.ủ ể ệ ả
M t v n đ th c t n a trong vi c truy n các code group là vi c mã hóa các l i g iộ ấ ề ự ế ữ ệ ề ệ ờ ọ
gi a nh ng forwarding routine t o nên m t code group. Các l i g i s đ c bi u di nữ ữ ạ ộ ờ ọ ẽ ượ ể ễ
b i nh ng tên c c b đ c nhúng th ng trong code c a forwarding routine. Nh ng tênở ữ ụ ộ ượ ẳ ủ ữ
c c b này ch đ c liên k t trong code group đ c truy n đ ngăn vi c gi code.ụ ộ ỉ ượ ế ượ ề ể ệ ả
Ví d : M t routine xây d ng các route có th có tên là “producer”, còn routine khác điụ ộ ự ể
theo nh ng route đó có th có tên là “consumer”. Các producer routine có th đ c k tữ ể ể ượ ế
v i m t code group v i b t c consumer routine, vì v y cho phép các l i g i ch x y raớ ộ ớ ấ ứ ậ ờ ọ ỉ ả
m t cách b o m t gi a nh ng routine đ c ch n.ộ ả ậ ữ ữ ượ ọ