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. Đ 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
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 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. ượ