Upload
hyun-lee
View
68
Download
4
Embed Size (px)
Citation preview
1. KI N TRÚC H ĐI U HÀNH IOS Ế Ệ Ề
( INTERNETWORK OPERATING SYSTEM )
3.
3.1. Đ nh nghĩa IOSị IOS vi t t t c a t Internetwork Operating System, là ế ắ ủ ừ
m t h đi u hành ho t đ ng trên ph n c ng c a router Cisco, nó đi u ộ ệ ề ạ ộ ầ ứ ủ ề
khi n ho t đ ng đ nh tuy n và chuy n m ch c a m t router Rên c a h ể ạ ộ ị ế ể ạ ủ ộ ủ ệ
đi u hành IOS thì g m có 3 ph n: aaaa-bbbb-cccc trong đó: - aaaa: dòng ề ồ ầ
s n ph m áp d ng h đi u hành này - bbbb: các tính năng c a IOS - cc: ả ẩ ụ ệ ề ủ
đ nh d ng file IOS, n i IOS ch y, k u nén c a IOSị ạ ơ ạ ể ủ
Ví d :tên m t IOS: C3620-i-mz_113-8T1.bin ụ ộ
3.2. T ng quan v ki n trúc c a IOS c a Ciscoổ ề ế ủ ủ Khi mà l i ích c a vi c ợ ủ ệ
đ nh tuy n qua m ng tr nên phát tri n, đòi h i router ph i h tr m t sị ế ạ ở ể ỏ ả ỗ ợ ộ ố
nh ng giao th c và cung c p nh ng ch c năng khác, nh c u n i gi a các ữ ứ ấ ữ ứ ư ầ ố ữ
m ng. Cisco đã thêm nh ng tính năng m i cho ph n m m c a router. K t ạ ữ ớ ầ ề ủ ế
qu có nhi u ch c năng c u n i và đ nh tuy n nh ngày nay. Nh ng h u ả ề ứ ầ ố ị ế ư ư ầ
nh c u trúc c b n c a h đi u hành v n gi ng nh ban đ u. IOS th t s ư ấ ơ ả ủ ệ ề ẫ ố ư ầ ậ ự
là m t c u trúc đ n gi n, c c nh . IOS đ c thi t k d a vào nh ng ràng ộ ấ ơ ả ự ỏ ượ ế ế ự ữ
bu c v b nh , v t c đ , ph n c ng c a router. Hình 3.1: mô t ki n ộ ề ộ ớ ề ố ộ ầ ứ ủ ả ế
trúc c a m t IOS c a Cisco ủ ộ ủ
Hình 3.1 ki n trúc IOS c a Ciscoế ủ
3.2.1. Các ti n trình (processes)ế
Là nh ng tuy n riêng l k t h p v i d li u đ th c hi n nh ng tác v , ữ ế ẻ ế ợ ớ ữ ệ ể ự ệ ữ ụ
nh duy trì h th ng, chuy n m ch gói d li u, th c hi n giao th c đ nh ư ệ ố ể ạ ữ ệ ự ệ ứ ị
tuy n… ế
3.2.2. Nhân ( Kernel ) Cung c p nh ng d ch v c b n c a h th ng tùy ấ ữ ị ụ ơ ả ủ ệ ố
thu c vào IOS, nh : qu n lý b nh , l p l ch các ti n trình... Nó cung c p ộ ư ả ộ ớ ậ ị ế ấ
qu n lý tài nguyên ph n c ng (CPU, b nh ) cho các ti n trình. ả ầ ứ ộ ớ ế
3.2.3. B đ m gói ( Packet buffer )ộ ệ Cung c p các b đ m toàn c c và k t ấ ộ ệ ụ ế
h p v i ch c năng qu n lý b đ m đ l u tr gói d li u đang đ c ợ ớ ứ ả ộ ệ ể ư ữ ữ ệ ượ
chuy n m ch. ể ạ
3.2.4. Trình đi u khi n thi t b ( Device drivers )ề ể ế ị Làm ch c năng đi u ứ ề
khi n giao ti p gi a ph n c ng và thi t b ngo i vi, giao ti p gi a các ti n ể ế ữ ầ ứ ế ị ạ ế ữ ế
trình IOS, kernel, và ph n c ng. Chúng cũng giao ti p v i các ph n m m ầ ứ ế ớ ầ ề
chuy n m ch nhanh (fast switching software). ể ạ
3.2.5. Ph n m m chuy n m ch nhanhầ ề ể ạ Ch c năng chuy n m ch gói d ứ ể ạ ữ
li u cao. ệ
3.3. T ch c b nhổ ứ ộ ớ
IOS ánh x toàn b b nh v t lý thành m t không gian đ a ch o ph ng ạ ộ ộ ớ ậ ộ ị ỉ ả ẳ
r ng l n. MMU ( memory map unit ) c a CPU có giá tr khi đ c s d ng ộ ớ ủ ị ượ ử ụ
đ t o không gian đ a ch o th m chí khi mà IOS không t n d ng m t ể ạ ị ỉ ả ậ ậ ụ ộ
kh i nh o tr n v n. ố ớ ả ọ ẹ
3.3.1. Mi n b nh (memory region)ề ộ ớ IOS chia không gian đ a ch này ị ỉ
thành nh ng mi n b nh g i là ữ ề ộ ớ ọ region, m i ỗ region phù h p v i nh ng lo iợ ớ ữ ạ
b nh v t lý khác nhau. Ví d , SRAM có th l u tr gói d li u và DRAM ộ ớ ậ ụ ể ư ữ ữ ệ
có th l u tr ph n m m ho c d li u. Phân l p b nh thành các ể ư ữ ầ ề ặ ữ ệ ớ ộ ớ region
cho phép IOS phân lo i các lo i b nh khác nhau vì v y mà ph n m m ạ ạ ộ ớ ậ ầ ề
không c n bi t chi ti t v b nh trên m i platform (N n v ph n c ng). ầ ế ế ề ộ ớ ỗ ề ề ầ ứ
Các region đ c phân chia thành m t trong tám m c nh hình 3.2 ượ ộ ụ ư
Hình 3. 2 các lo i ạ region
Nh ng ữ region cũng có th đ c đ t trong m i quan h cha con. M c d u ể ượ ặ ố ệ ặ ầ
không có m t áp đ t gi i h n trên chi u sâu c a m i quan h này. Nh ng ộ ặ ớ ạ ề ủ ố ệ ữ
region đ t trong quan h này là nh ng ặ ệ ữ subregion (mi n con) c a mi n cha ề ủ ề
Hình 3.3: Hi n th cách b trí b nh o trên m t platform đi n hình, bao ể ị ố ộ ớ ả ộ ể
g m nh ng ồ ữ region và subregion mà IOS có th t o ể ạ
Hình 3. 3 Region và subregion
B n có th dùng l nh ạ ể ệ show region đ hi n th các ể ệ ị region đ c đ nh nghĩa ượ ị
trên h th ng: ệ ố router#show region Region Manager: Start End Size(b) Class
Media Name 0x01A00000 0x01FFFFFF 6291456 Iomem R/W iomem
0x31A00000 0x31FFFFFF 6291456 Iomem R/W iomem: (iomem_cwt)
0x4B000000 0x4B0FFFFF 1048576 PCI R/W pcimem 0x60000000
0x619FFFFF 27262976 Local R/W main 0x600088F8 0x61073609 17214738
IText R/O main:text 0x61074000 0x611000FF 573696 idata R/W main:data
0x61100100 0x6128153F 1578048 IBss R/W main:bss 0x61281540
0x619FFFFF 7858880 Local R/W main:heap 0x7B000000 0x7B0FFFFF
1048576 PCI R/W pcimem: (pcimem_cwt) 0x80000000 0x819FFFFF
27262976 Local R/W main: (main_k0) 0xA0000000 0xA19FFFFF 27262976
Local R/W main: )main_k1) Đ c mô t nh sau: Tên c a region, đ a ch ượ ả ư ủ ị ỉ
b t đ u, đ a ch k t thúc, và kích th c region đó. Ví d : ắ ầ ị ỉ ế ướ ụ Iomem R/W
iomem 0x31A00000 0x31FFFFFF 6291456 (tên region iomem, đ a ch b t ị ỉ ắ
đ ulàầ 0x31A00000, đ a ch k t thúc là:ị ỉ ế 0x31FFFFFF, kích th c:ướ 6291456
byte ) B n có th th y hình 1.2, toàn b DRAM t đ a ch 0x60000000 ạ ể ấ ở ộ ừ ị ỉ
đ n 0x619FFFFF đ c phân lo i nh là m t ế ượ ạ ư ộ region local và h n n a đ c ơ ữ ượ
chia thành các subregion. Nh ng ữ subregion này t ng đ ng v i nh ng ươ ươ ớ ữ
ph n khác nhau c a IOS (text, BSS, data) và heap. ầ ủ
3.3.2. Vùng b nh : (memory ộ ớ pool)
IOS qu n lý b nh r i, thông qua m t chu i các ả ộ ớ ỗ ộ ỗ memory pool. M i ỗ pool là
m t t p h p các kh i nh mà có th c p phát và thu h i khi c n. ộ ậ ợ ố ớ ể ấ ồ ầ Memory
pool đ c xây d ng bên ngoài các ượ ự region và đ c qu n lý b i kernel. ượ ả ở
Th ng thì, ườ pool t ng đ ng v i m t ươ ươ ớ ộ region đ c bi t. M tặ ệ ộ memory pool
có th đ c xây d ng t m t vài ể ượ ự ừ ộ region m r ng, cho phép b nh đ c ở ộ ộ ớ ượ
c p phát và thu h i t các mi n b nh khác nhau đ t i đa hi u qu ho t ấ ồ ừ ề ộ ớ ể ố ệ ả ạ
đ ng B n có th dùng l nh show ộ ạ ể ệ memory đ hi n th các ể ể ị pool này
router#show memory Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 61281540 7858880 3314128 4544752 4377808 4485428 I/O
1A00000 6291456 1326936 4964520 4951276 4964476 PCI 4B000000
1048576 407320 641256 641256 641212 ...
Mô t nh sau: (kích th c tính theo byte) ả ư ướ
- Total: kích th c c a ướ ủ pool
- Used: l ng b nh đ c c p phát ượ ộ ớ ượ ấ
- Free: l ng b nh s n sàng đ s d ngượ ộ ớ ẵ ể ử ụ
- Lowest: l ng b nh th p nh t s n sàng s d ng t khi mà ượ ộ ớ ấ ấ ẵ ử ụ ừ pool đ c ượ
t oạ
- Largest: kích th c kh i nh liên t c l n nh t s n sàng s d ng hi n t i. ướ ố ớ ụ ớ ấ ẵ ử ụ ệ ạ
L nh ệ show memory trên cung c p ba ở ấ pool v i các tham s t ng ng: ớ ố ươ ứ
heap, processor và I/O
3.4. Ti n trình IOS (processes IOS)ế
3.4.1. Vòng đ i c a m t ti n trìnhờ ủ ộ ế
M t ti n trình có th đ c t o ra ho c k t thúc b t c lúc nào trong khi ộ ế ể ượ ạ ặ ế ấ ứ
IOS đang ho t đ ng ngo i tr có ng t x y ra. Nó đ c t o ra b i kernel ạ ộ ạ ừ ắ ả ượ ạ ở
ho c b i m t ti n trình khác đang ch y khác.ặ ỏ ộ ế ạ
M t thành ph n có trách nhi m t o nhi u ti n trình trong IOS g i là ộ ầ ệ ạ ề ế ọ parser
(b phân tách). ộ Parser này là m t t p các ch c năng làm phiên d ch c u ộ ậ ứ ị ấ
hình IOS và dòng l nh EXEC. ệ Parser đ c yêu c u b i ượ ầ ở kernel trong su t quáố
trình kh i t o IOS và các ti n trình EXEC, đ cung c p m t giao ti p dòng ở ạ ế ể ấ ộ ế
l nh CLI thông qua giao ti p console (giao ti p ng i và máy) và các phiên ệ ế ế ườ
telnet. T i b t c th i đi m nào, m t l nh đ c nh p b i ng i dùng ho cạ ấ ứ ờ ể ộ ệ ượ ậ ở ườ ặ
m t c u hình đ c đ c t file, ộ ấ ượ ọ ừ parser phiên d ch dòng l nh và đ a ra ị ệ ư
nh ng ho t đ ng t c th i. M t vài l nh c u hình b i vi c gán giá tr , nh ữ ạ ộ ứ ờ ộ ệ ấ ở ệ ị ư
đ a ch IP, trong khi c u hình khác nh đ nh tuy n ho c giám sát. M t vài ị ỉ ấ ư ị ế ặ ộ
l nh làm cho ệ parser kh i t o m t ti n trình m i. Ví d : khi mà l nh c u ở ạ ộ ế ớ ụ ệ ấ
hình router eigrp đ c nh p vào, ượ ậ parser kh i t o m t ti n trình m i, g i là ỏ ạ ộ ế ớ ọ
ipigrp (n u nh ti n trình ế ư ế ipigrp đã đ c kh i t o r i), b t đ u x lý gói ipượ ở ạ ồ ắ ầ ử
EIGRP. N u nh l nh c u hình ế ư ệ ấ no router eigrpđ c nh p vào, parser k t ượ ậ ế
thúc ti n trình ế ipigrp và không còn ch c năng đ nh tuy n EIGRP. Ti n trìnhứ ị ế ế
IOS thì tr i qua m t các tr ng thái nh sau: hình 3.4ả ộ ạ ư
Hình 3. 4 Các tr ng thái c a m t ti n trình IOSạ ủ ộ ế
3.4.1.1. Tr ng thái kh i t o (Create)ạ ở ạ
Khi mà m t ti n trình m i đ c t o, nó nh n vùng stack riêng c a mình vàộ ế ớ ượ ạ ậ ủ
vào tr ng thái m i (new). Ti n trình có th di chuy n đ n tr ng thái đi u ạ ớ ế ể ể ế ạ ề
ch nh (modify). N u không có thay đ i c n thi t, thì ti n trình chuy n ỉ ế ổ ầ ế ế ể
sang tr ng thái th c thi (Execute) ạ ự
3.4.1.2. Tr ng thái đi u ch nh (modify)ạ ề ỉ
Không gi ng nh h u h t các h đi u hành, IOS không t đ ng truy n t i ố ư ầ ế ệ ề ự ộ ề ả
các tham s kh i t o ho c gán m t giao ti p đ n m t ti n trình m i khi nóố ở ạ ặ ộ ế ế ộ ế ớ
đ c t o, b i vì nó cho r ng h u h t các ti n trình không c n tài nguyên ượ ạ ở ằ ầ ế ế ầ
này. N u m t ti n trình c n ngu n tài nguyên này, tuy n mà t o nó có th ế ộ ế ầ ồ ế ạ ể
đi u ch nh đ thêm vào. ề ỉ ể
3.4.1.3. Tr ng thái th c thi (Execute)ạ ự
Sau khi m t ti n trình m i đ c t o thành công và đi u ch nh, nó chuy n ộ ế ớ ượ ạ ề ỉ ể
sang tr ng thái s n sàng (Ready) và vào tr ng thái th c thi (Execute). ạ ẵ ạ ự
Trong su t tr ng thái này, m t ti n trình có th truy c p CPU và ch y. ố ạ ộ ế ể ậ ạ
Trong su t tr ng thái th c thi, m t ti n trình có th là m t trong ba tr ng ố ạ ự ộ ế ể ộ ạ
thái: s n sàng, ch y, và r i (Idle). M t ti n trình tr ng thái s n sàng sẽ ẵ ạ ỗ ộ ế ở ạ ẵ
đ i chuy n sang tr ng thái truy c p CPU, và b t đ u th c thi l nh, m t ợ ể ạ ậ ắ ầ ự ệ ộ
ti n trình tr ng thái r i là đang ng , đ i s ki n bên ngoài xu t hi n ế ở ạ ỗ ủ ợ ự ệ ấ ệ
tr c khi nó có th ch y. M t ti n trình chuy n t tr ng thái s n sàng ướ ể ạ ộ ế ể ừ ạ ẵ
sang tr ng thái ch y khi mà nó đ c l p l ch đ ch y. V i đa tác v mà ạ ạ ượ ậ ị ể ạ ớ ụ
không u tiên (non-preemptive multitasking), m t ti n trình đ c l p l ch ư ộ ế ượ ậ ị
ch y trên CPU cho đ n khi t m ng ng ho c k t thúc. M t ti n trình có th ạ ế ạ ừ ặ ế ộ ế ể
t m d ng theo hai cách: nó có th t d ng b i vi c báo cho kernel, nó ạ ừ ể ự ừ ở ệ
mu n nh ng CPU, và chuy n sang tr ng thái s n sàng, và đ i đ n lúc ố ườ ể ạ ẵ ợ ế
ch y l i. Ti n trình cũng có th d ng b i m t ho t đ ng bên ngoài x y ra. ạ ạ ế ể ừ ở ộ ạ ộ ả
Khi mà m t ti n trình b t đ u đ i m t s ki n,kernel hoàn toàn d ng ti nộ ế ắ ầ ợ ộ ự ệ ừ ế
trìnhn này và chuy n nó sang tr ng thái r i. Sau khi m t s ki n x y ra r iể ạ ỗ ộ ự ệ ả ồ
thì kernel chuy n ti n trình tr l i tr ng thái s n sàng đ đ i ch y l i. ể ế ở ạ ạ ẵ ể ợ ạ ạ
3.4.1.4. Tr ng thái k t thúc (Terminal):ạ ế
Tr ng thái cu i cùng trong vòng đ i c a ti n trình là tr ng thái k t thúc. ạ ố ờ ủ ế ạ ế
M t ti n trình vào tr ng thái k t thúc khi nó hoàn thành ch c năng c a ộ ế ạ ế ứ ủ
mình và đóng l i ho c khi m t ti n trình khác đóng nó. Khi m t ti n trình ạ ặ ộ ế ộ ế
b đóng ho c t đóng, ti n trình chuy n sang tr ng thái ch t (Dead). Ti n ị ặ ự ế ể ạ ế ế
tình này tr ng thái ch t (không ho t đ ng) cho đ n khi kernel thu h i ỏ ạ ế ạ ộ ế ồ
t t c các tài nguyên c a nó. Sau khi tài nguyên đ c thu h i, ti n trình b ấ ả ủ ượ ồ ế ị
k t thúc thoát kh i tr ng thái ch t và đ c xóa kh i h th ng. ế ỏ ạ ế ượ ỏ ệ ố
3.4.2. Đ u tiên ti n trình IOSộ ư ế
IOS th c hi n ch d u tiên đ l p l ch các ti n trình trên CPU. T i th i ự ệ ế ộ ư ể ậ ị ế ạ ờ
đi m t o, m i ti n trình đ c gán m t trong 4 đ u tiên d a trên m c ể ạ ỗ ế ượ ộ ộ ư ự ụ
đích c a ti n trình. Đ u tiên là không đ i, chúng đ c gán khi m t ti n ủ ế ộ ư ổ ượ ộ ế
trình đ c t o và không bao gi thay đ i. Ta có các đ u tiên: ượ ạ ờ ổ ộ ư
- Critical:
Dành riêng cho nh ng ti n trình h th ng thi t y u mà gi i quy t nh ng ữ ế ệ ố ế ế ả ế ữ
v n đ c p phát tài nguyên ấ ề ấ
- High:
Đ c gán cho nh ng ti n trình mà cung c p th i gian đáp ng nhanh, nh ượ ữ ế ấ ờ ứ ư
ti n trình nh n gói tr c ti p t giao ti p m ngế ậ ự ế ừ ế ạ
- Medium:
Đ u tiên m c đ nh s d ng b i h u h t các ti n trình ộ ư ặ ị ử ụ ỏ ầ ế ế
- Low:
Đ c gán cho nh ng ti n trình cung c p nh ng tác v mang tính đ nh kỳ, ượ ữ ế ấ ữ ụ ị
nh b ng ghi l i... Đ u tiên các ti n trình cung c p s u đãi cho m t vàiư ả ỗ ộ ư ế ấ ự ư ộ
ti n trình đ truy c p CPU d a trên s quan tr ng c a nó đ i v i h ế ể ậ ự ự ọ ủ ố ớ ệ
th ng, nh r ng IOS không th c hi n quy n u tiên. M t ti n trình có đ ố ớ ằ ự ệ ề ư ộ ế ộ
u tiên cao h n không th ng t m t ti n trình có đ u tiên th p h n, ư ơ ể ắ ộ ế ộ ư ấ ơ
thay vào đó, ti n trình có đ u tiên cao h n thì có nhi u c h i h n đ ế ộ ư ơ ề ơ ộ ơ ể
truy c p CPU h n. ậ ơ
1. 3.5. Kernel IOS
IOS kernel không là m t đ n v đ n mà là m t t p các thành ộ ơ ị ơ ộ ậ
ph n và ch c năng liên k t ch t chẽ v i nhau. IOS kernel th c ầ ứ ế ặ ớ ự
hi n các ch c năng sau: L p l ch ti n trình, qu n lý b nh , cungệ ứ ậ ị ế ả ộ ớ
c p d ch v routimes đ trap (phát hi n ) và handle (đi u khi nấ ị ụ ể ệ ề ể
) nh ng ng t ph n c ng, duy trì timers (b đ nh th i gian), và ữ ắ ầ ứ ộ ị ờ
phát hi n ngo i l ph n m m. Các ch c năng chính c a kernel: ệ ạ ệ ầ ề ứ ủ
3.5.1. L p l chậ ị
Tác v l p l ch các ti n trình đ c th c hi n b i ụ ậ ị ế ượ ự ệ ở scheduler ( b ộ
l p l ch ậ ị ). Scheculer qu n lý t t c các ti n trình trong h th ng ả ấ ả ế ệ ố
b ng cách s d ng m t chu i các hàng đ i ti n trình mô t ằ ử ụ ộ ỗ ợ ế ả
tr ng thái c a m i ti n trình. Các hàng đ i này ch a n i dung ạ ủ ỗ ế ợ ứ ộ
thông tin cho ti n trình tr ng thái đó. Ti n trình chuy n t ế ở ạ ế ể ừ
tr ng thái này sang tr ng thái khác khi mà ạ ạ scheduler duy chuy n ể
ng c nh c a chúng t 1 hàng đ i ti n trình này đ n hàng đ i ữ ả ủ ừ ợ ế ế ợ
ti n trình khác. Có t t c sáu hàng đ i ti n trình.ế ấ ả ợ ế
- Idle queue: Ch a nh ng ti n trình mà v n ho t đ ng ứ ữ ế ẫ ạ ộ
nh ng đang đ i m t s ki n x y ra tr c khi có th ch y.ư ợ ộ ự ệ ả ướ ể ạ
- Dead queue: Ch a các ti n trình đã k t thúc nh ng c n b thu ứ ế ế ư ầ ị
h i tài nguyên tr c khi có th xóa chúng ra kh i h th ng. ồ ướ ể ỏ ệ ố
- Ready queues: Ch a các ti n trình mà có đ đi u ki n ch y, ứ ế ủ ề ệ ạ
có 4 lo i hàng đ i s n sàng, là m t trong nh ng đ u tiên c a ạ ợ ẵ ộ ữ ộ ư ủ
ti n trình: o Critical o High o Medium o Low Khi m t ti n trình ế ộ ế
đang ch y b t m ng ng, ạ ị ạ ư scheduler l y l i quy n đi u khi n ấ ạ ề ề ể
CPU và đ a ra m t thu t toán đ ch n ti n trình k ti p t hàngư ộ ậ ể ọ ế ế ế ừ
đ i s n sàng. Các b c cho thu t toán nh sau:ợ ẵ ướ ậ ư
B c 1:ướ scheduler đ u tiên ki m tra các ti n trình đang đ i ầ ể ế ợ
trong hàng đ i s n sàng có đ u tiên critical. Nó ch y m i ti n ợ ẵ ộ ư ạ ỗ ế
trình có đ u tiên critical, l n l t, cho đ n khi t t c có c h i ộ ư ầ ượ ế ấ ả ơ ộ
đ ch y. ể ạ
B c 2:ướ sau khi t t c cá ti n trình có đ u tiên critical có m t ấ ả ế ộ ư ộ
c h i đ ch y, ơ ộ ể ạ scheduler ki m tra hàng đ i có đ u tiên high, ể ợ ộ ư
n u không có ti n trình có đ u tiên high s n sàng, thì ế ế ộ ư ẵ
scheduler b qua b c 2 và t i b c 3, và ki m tra hàng đ i có ỏ ướ ớ ướ ể ợ
đ u tiên medium. M c khác, ộ ư ặ scheduler xóa m i ti n trình có đỗ ế ộ
u tiên high t hàng đ i và cho phép ch y. Gi a các ti n trình đư ừ ợ ạ ữ ế ộ
có u tiên high, ư scheduler ki m tra b t c kỳ ti n trình đ u ể ấ ứ ế ộ ư
tiên critical mà đã s n sàng và ch y t t c chúng tr c khi x lý ẵ ạ ấ ả ướ ử
ti n trình đ có đ u tiên high ti p theo. Sau khi t t c các ti n ế ộ ộ ư ế ấ ả ế
trình đ u tiên high có c h i, ộ ư ơ ộ scheduler b qua hàng đ i ỏ ợ
medium và low và tr v b c 1. ở ề ướ
B c 3: ướ sau khi không có ti n trình có đ u tiên high đang ch ế ộ ư ờ
đ ch y, ể ạ scheduler ki m tra hàng đ i có đ u tiên medium. N uể ợ ộ ư ế
không có ti n trình có đ u tiên medium s n sàng, ế ộ ư ẵ scheduler bỏ
qua b c 3 và t i b c 4 và ki m tra hàng đ i d u tiên low. ướ ớ ướ ể ợ ộ ư
M c khác, ặ scheduler xóa m i ti n trình đ u tiên medium t ỗ ế ộ ư ừ
hàng đ i và cho phép nó ch y. Gi a m i ti n trình đ u tiên ợ ạ ữ ỗ ế ộ ư
medium, sheduler ki m tra b t kỳ các ti n trình đ u tiên high ể ấ ế ộ ư
mà s n sàng và ch y t t c chúng tr c khi x lý các ti n trình ẵ ạ ấ ả ướ ử ế
đ u tiên meidum ti p theo. Sau khi các ti n trình đ u tiên ộ ư ế ế ộ ư
medium có c h i, ơ ộ scheduler b qua hàng đ i đ u tiên low, và ỏ ợ ộ ư
b t đ u l i b c1. ắ ầ ạ ướ Scheduler b qua hàng đ i đ u tiên low t i ỏ ợ ộ ư ố
đa là 15 l n tr c khi đ n b c 4. ầ ướ ế ướ Scheduler này là b máy d ộ ự
phòng đ m b o an toàn đ ngăn ch n s c , các ti n trình đ ả ả ể ặ ự ố ế ộ
u tiên low không đ c s d ng CPU.ư ượ ử ụ
B c 4:ướ khi không có ti n trình có đ u tiên high ho c mediumế ộ ư ặ
ch đ ch y (ho c hàng đ i đ u tiên low b b qua 15 l n) ờ ể ạ ặ ợ ộ ư ị ỏ ầ
scheduler ki m tra hàng đ i có đ u tiên low. ể ợ ộ ư Scheduler xóa m iỗ
ti n trình đ u tiên low t hàng đ i và cho phép ch y, gi a các ế ộ ư ừ ợ ạ ữ
ti n trình đ u tiên low, ế ộ ư scheduler ki m tra b t c các ti n ể ấ ứ ế
trình đ u tiên medium nào s n sàng và ch y chúng tr c khi ộ ư ẵ ạ ướ
th c hi n các ti n trình đ u tiên low ti p theo. ự ệ ế ộ ư ế
B c 5: ướ Cu i cùng ố scheduler tr v b c 1 và b t đ u l i. ở ề ướ ắ ầ ạ
3.5.2. Qu n lý b nhả ộ ớ B qu n lý b nh c a kernel, t i m c ộ ả ộ ớ ủ ạ ứ
cao, qu n lý t t c các vùng nh có s n c a IOS, bao g m b nhả ấ ả ớ ẵ ủ ồ ộ ớ
ch a IOS c a nó. B qu nl ý b nh bao g m ba thành ph n ứ ủ ộ ả ộ ớ ồ ầ
riêng bi t, v i nh ng nhi m v riêng. Ta có ba b qu n lý b ệ ớ ữ ệ ụ ộ ả ộ
nh sau: B qu n lý ớ ộ ả region, B qu n lý ộ ả pool, b qu n lý ộ ả chunk.
3.5.2.1. B qu n lý ộ ả region Đ nh nghĩa và duy trì nh ng ị ữ region
khác nhau trên m t platform. B qu n lý ộ ộ ả region có ch c năng ứ
duy trì t t c các ấ ả region. Nó cung c p các d ch v cho phép ấ ị ụ
nh ng ph n khác c a IOS t o ữ ầ ủ ạ region và gán các thu c tính c a ộ ủ
chúng. Nó cũng cho phép nh ng ph n khác truy v n nh ng ữ ầ ấ ữ
region có s n, vi d , quy t đ nh t ng l ng b nh có s n trên ẵ ụ ế ị ổ ượ ộ ớ ẵ
môt platform. 1.5.2.2. B qu n lý ộ ả pool Qu n lý vi c t o ra các ả ệ ạ
vùng nh ớ pool, c p phát và thu h i các kh i nh c a ấ ồ ố ớ ủ pool B ộ
qu n lý ả pool là m t thành ph n quan tr ng c a kernel. Trong khiộ ầ ọ ủ
scheduler qu n lý c p phát tài nguyên CPU đ x lý, b qu n lý ả ấ ể ử ộ ả
pool qu n lý c p phát b nh cho các ti n trình. T t c các ti n ả ấ ộ ớ ế ấ ả ế
trình ph i thông qua b qu n lý b nh ả ộ ả ộ ớ pool, tr c ti p ho c giánự ế ặ
ti p, đ đ nh ra vùng nh mà nó s d ng. B qu n lý b nh ế ể ị ớ ử ụ ộ ả ộ ớ
đ c yêu c u cho m i ti n trình s hàm h th ng chu n malloc ượ ầ ỗ ế ử ệ ố ẩ
và free đ l y và tr b nh . B qu n lý b nh ho t đ ng b i ể ấ ả ộ ớ ộ ả ộ ớ ạ ộ ở
vi c duy trì danh sách kh i nh r i cho m i ệ ố ớ ỗ ỗ pool, ban đ u, m i ầ ỗ
pool ch a ch m t kh i nh r i l n b ng kích th c m t ứ ỉ ộ ố ớ ỗ ớ ằ ướ ộ pool,
khi b qu n lý ộ ả pool yêu c u b nh . Kh i t o nh ng kh i nh cóầ ộ ớ ở ạ ữ ố ớ
kích th c nh h n. t i cùng m t th i đi m, các ti n trình có ứơ ở ơ ạ ộ ờ ể ế
th gi i phóng vùng nh tr v ể ả ớ ả ề pool, t o thành m t s vùng nhạ ộ ố ớ
r i không liên t c nhau, nhi u kích th c. Tr ng h p này g i ỗ ụ ề ướ ườ ợ ọ
là phân m nh b nh và đ c cung c p nh hình 3.5. ả ộ ớ ựơ ấ ư
Hình 3. 5 S phân m nh b nhự ả ộ ớ
Khi mà kh i r i đ c tr v cho m t ố ỗ ựơ ả ề ộ pool, b qu n lý ộ ả pool thêm vào kích
th c c a nó và b t đ u đ a ch m t trong danh sách kh i nh r i c a ướ ủ ắ ầ ị ỉ ộ ố ớ ỗ ủ
pool. M c đ nh b qu n lý b nh duy trì danh sách các kh i nh r i có ặ ị ộ ả ộ ớ ố ớ ỗ
kích th c sau: : 24, 84, 144, 204, 264, 324, 384, 444, 1500, 2000, 3000, ướ
5000, 10,000, 20,000, 32,768, 65,536, 131,072, and 262,144 bytes. Nh ng ữ
kích th c này không liên quan gì đ n b đ m h th ng.. Khi mà m t ti n ướ ế ộ ệ ệ ố ộ ế
trình yêu c u b nh t m t ầ ộ ớ ừ ộ pool. B qu n lý b nh b t đ u v i danh ộ ả ộ ớ ắ ầ ớ
sách r i k t h p v i kích th c yêu c u. Ph ng th c này giúp t o hi u ỗ ế ợ ớ ướ ầ ươ ứ ạ ể
qu s d ng b nh , phù h p v i yêu c u đ ph c h i kh i d li u mà ả ử ụ ộ ớ ợ ớ ầ ể ụ ồ ố ữ ệ
g n v i kích th c nh t. N u nh không có kh i nh r i phù h p , b ầ ớ ướ ấ ế ư ố ớ ỗ ợ ộ
qu n lý b nh ti p t c v i kh i nh có kích th c l n h n. Cho đ n khi ả ộ ớ ế ụ ớ ố ớ ứơ ớ ơ ế
tìm th y. n u nh m t kh i nh r i đ c tìm th y trong m t trong danh ấ ế ư ộ ố ớ ỗ ựơ ấ ộ
sách cao h n, b qu n lý b nh c t kh i nh đó và đ c nó trong vùng nhơ ộ ả ộ ớ ắ ố ớ ặ ớ
phù h p b i vi c k t h p thành m t kh i tr v cho kh i mà nó g n k ợ ở ệ ế ợ ộ ố ả ề ố ầ ề
v i kh i nh khác. B qu n lý b nh c g ng đi u khi n phân m nh b i ớ ố ớ ộ ả ộ ớ ố ắ ề ể ả ở
k t h p thành kh i mà và nó là k ti p c a m t kh i nh r i ,b qu n lý ế ợ ố ế ế ủ ộ ố ớ ỗ ộ ả
b nh k t h p hai kh i nh thành m t và thay th trên danh sách vùng ộ ớ ế ợ ố ớ ộ ế
nh thích h p. Nh hình 3.6. ớ ợ ư
Hình 3. 6 K t h p các kh i nhế ợ ố ớ
1.5.2.3. Qu n lý ả chunk Qu n lý ả pool cung c p nhi u cách hi u qu đ ấ ề ệ ả ể
qu n lý m t t p các kh i có kích th c khác nhau. Tuy nhiên, nh ng tính ả ộ ậ ố ướ ữ
năng này có chi phí c a nó, b qu n lý ủ ộ ả pool t o 32 byte overhead trên m i ạ ỗ
b nh . M c d u overhead này không quan tr ng l m đ i v i kh i d li u ộ ớ ặ ầ ọ ắ ố ớ ố ữ ệ
l n, đ i v i ớ ố ớ pool có hàng ngàn kh i d li u nh h n thì overhead m i tr ố ữ ệ ỏ ơ ớ ở
nên đáng quan tâm. Đ t o thêm s l a ch n thì kernel cung c p b qu n ể ạ ự ự ọ ấ ộ ả
lý b nh khác g i là b qu n lý b nh ộ ớ ọ ộ ả ộ ớ chunk, nó có th qu n lý l ng l nể ả ượ ớ
pool có nhi u kh i nh nh mà không có overhead Không gi ng nh qu n ề ố ớ ỏ ố ư ả
lý pool, b qu n lý chunk không t o ra nh ng danh sách vùng nh r i v i ộ ả ạ ữ ớ ỗ ớ
kích th c khác nhau, thay vào đó, b qu n lý chunk qu n lý m t t p các ướ ộ ả ả ộ ậ
kh i nh c đ nh đ c ch đ nh t m t trong các vùng nh pool. Trong ố ớ ố ị ượ ỉ ị ừ ộ ớ
m t vài tr ng h p, b qu n lý chunk có th đ c xem nh là m t b ộ ườ ợ ộ ả ể ượ ư ộ ộ
qu n lý ả pool vùng nh con. Các chính sách th ng đ c th c hi n là: m t ớ ườ ượ ự ệ ộ
ti n trình yêu c u m t v trí c a m t kh i nh t m t vùng nh ế ầ ộ ị ủ ộ ố ớ ừ ộ ớ pool đ c ặ
bi t. M t ti n trình sau đó g i đ n b qu n lý ệ ộ ế ọ ế ộ ả chunk đ chia kh i nh ể ố ớ
thành m t chu i các ộ ỗ chunk có kích th c c đ nh và nh h n và s d ng ướ ố ị ỏ ơ ử ụ
b qu n lý ộ ả chunk đ đ nh ra nh ng vùng nh r i khi c n. Thu t l i đây ể ị ữ ớ ỗ ầ ậ ợ ở
là ch có 32 byte overhead và b qu n lý ỉ ộ ả pool thì không b t bu c c p phát ắ ộ ấ
và l y l i hàng ngàn phân m nh nh h n. Vì v y, kh năng ph n m nh ấ ạ ả ỏ ơ ậ ả ầ ả
trong pool gi m đáng k . ả ể
1.5.2.4. V n đ c p phát b nhấ ề ấ ộ ớ N u yêu c u b nh mà nó có l i, ho c ế ầ ộ ớ ỗ ặ
không đ b nh đ c p phát thì sẽ xu t hi n thông báo nh sau: ủ ộ ớ ể ấ ấ ệ ư
%SYS-2-MALLOCFAIL: Memory allocation of 2129940 bytes failed from
0x6024C00C, pool I/O, alignment 32
- 60232A40 6025A6C8 60CEA748 - 60CDD700 60CDF5F8 60CDF6E8
60CDCB40 60286F1C 602951 C b n, có hai lý do gây ra l i này: - Không có ơ ả ỗ
đ b nh r i - B nh có s n nh ng nó b phân m nh vì v y các kh i nhủ ộ ớ ỗ ộ ớ ẵ ư ị ả ậ ố ớ
không liên t c làm không đ kích th c. L i do thi u b nh th ng x y ụ ủ ướ ỗ ế ộ ớ ườ ả
ra b i vì, th ng không đ b nh trên h đi u hành đ h tr t t c các ở ườ ủ ộ ớ ệ ề ể ổ ợ ấ ả
ho t đ ng c a h đi u hành. Khi đi u này x y ra , b n có hai l a ch n : ạ ộ ủ ệ ề ề ả ạ ự ọ
thêm b nh , ho c gi m tính năng c u hình, interface, cho đ n khi v n đ ộ ớ ặ ả ấ ế ấ ề
đ c gi i quy t. Trong m t vài tr ng h p thì b nh l i có th do l ượ ả ế ộ ườ ợ ộ ớ ỗ ể ổ
h ng đ c g i là l h ng b nh m t trong các ti n trình. M c memory ổ ượ ọ ổ ổ ộ ớ ở ộ ế ụ
leak đ c p đ n s ki n m t ti n trình ti p t c chi m gi vùng nh ề ậ ế ự ệ ộ ế ế ụ ế ữ ớ
nh ng không bao gi gi i phóng nó, cu i cùng là nó chi m h t t t c các ư ờ ả ố ế ế ấ ả
b nh có s n. L h ng b nh th ng b gây b i l i ph n m m. ộ ớ ẵ ỗ ổ ộ ớ ườ ị ở ỗ ầ ề
1.6. Qu n lý b đ m góiả ộ ệ Trong đ nh tuy n gói d li u, b t c ho t đ ng ị ế ữ ệ ấ ứ ạ ộ
l u tr hay chuy n d li u đ u ph i c n có m t n i đ l u tr d li u ư ữ ể ữ ệ ề ả ầ ộ ơ ể ư ữ ữ ệ
trong khi d li u đang đ c đ nh tuy n trên đ ng truy n. Thông th ng ữ ệ ượ ị ế ườ ề ườ
thì t o ra m t b đ m đ l u gi các gói đ n trong khi ho t đ ng chuy n ạ ộ ộ ệ ể ư ữ ế ạ ộ ể
m ch đang ho t đ ng. B i vì kh năng đ nh tuy n gói là trung tâm c a c uạ ạ ộ ở ả ị ế ủ ấ
trúc h đi u hành IOS. IOS ch a thành ph n chuyên bi t đ qu n lý nh ng ệ ề ứ ầ ệ ể ả ữ
vùng đ m này. Thành ph n này đ c g i là b qu n lý vùng đ m b nh . ệ ầ ượ ọ ộ ả ệ ộ ớ
IOS s d ng thành ph n này đ t o và qu n lý nh t quán m t chu i các ử ụ ầ ể ạ ả ấ ộ ỗ
vùng đ m cho chuy n m ch trên m i platform. B đ m trong vùng này ệ ể ạ ỗ ộ ệ
đ c bi t chung là nh ng b đ m h th ng B qu n lý vùng b đ m cung ượ ế ữ ộ ệ ệ ố ộ ả ộ ệ
c p m t cách ti n l i đ qu n lý m t t p các b đ m có kích th c c th .ấ ộ ệ ợ ể ả ộ ậ ộ ệ ướ ụ ể
M t d u nó có th đ c s d ng đ qu n lý b t c lo i b đ m nào, b ặ ầ ể ượ ử ụ ể ả ấ ứ ạ ộ ệ ộ
qu n lý b đ m đ c s d ng chính đ qu n lý nh ng vùng b đ m gói. ả ộ ệ ượ ử ụ ể ả ữ ộ ệ
Nh ng vùng đ m gói đ c t o t các vùng nh ữ ệ ượ ạ ừ ớ pool có s n. Đ t o m t ẵ ể ạ ộ
vùng, b qu n lý b đ m yêu c u m t kh i nh t b qu n lý pool và chia ộ ả ộ ệ ầ ộ ố ớ ừ ộ ả
cho b đ m. B qu n lý b đ m gói sau đó t o m t danh sách cho t t c ộ ệ ộ ả ộ ệ ạ ộ ấ ả
các b đ m r i và theo dõi các vùng nh này. Nh ng vùng đ m có th là ộ ệ ỗ ớ ữ ệ ể
đ ng hay tĩnh, vùng b đ m tĩnh đ c t o v i s b đ m c đ nh, không ộ ộ ệ ượ ạ ớ ố ộ ệ ố ị
thêm b đ m vào vùng b đ m tĩnh này. Vùng b đ m đ ng đ c t o v i ộ ệ ộ ệ ộ ệ ộ ượ ạ ớ
m t s b đ m t i thi u. G i là b đ m th ng xuyên, có th thêm ho c ộ ố ộ ệ ố ể ọ ộ ệ ườ ể ặ
xóa các b đ m. V i các vùng nh đ ng, n u b qu n lý b đ m nh n ộ ệ ớ ớ ộ ế ộ ả ộ ệ ậ
đ c yêu c u khi vùng nh r ng, nó c g ng m r ng vùng nh và đáp ượ ầ ớ ỗ ố ắ ở ộ ớ
ng yêu c u ngay l p t c. N u nó không th m r ng vùng nh , thì yêu ứ ầ ậ ứ ế ể ở ộ ớ
c u b l i và th c hi n m r ng vùng nh sau đó. Vùng b đ m đ c phân ầ ị ỗ ự ệ ở ộ ớ ộ ệ ượ
l p public (dùng chung) ho c private (dùng riêng). Vùng public, đ c s ớ ặ ượ ử
d ng b i b t c ti n trình c a h th ng, private đ c t o cho m t t p các ụ ở ấ ứ ế ủ ệ ố ượ ạ ộ ậ
ti n trình s d ng. ế ử ụ
1.6.1. B đ m h th ngộ ệ ệ ố M i IOS đ u có m t t p các b đ m public đ nh ỗ ề ộ ậ ộ ệ ị
tr c g i là nh ng b đ m h th ng, nh ng b đ m này đ c s d ng ướ ọ ữ ộ ệ ệ ố ữ ộ ệ ượ ử ụ
cho ti n trình chuy n m ch các gói d li u và t o gói (nh gói keepalive, ế ể ạ ữ ệ ạ ư
gói c p nh t đ nh tuy n..). ậ ậ ị ế
B n có th dùng câu l nh show buffer đ hi n th các vùng b đ m này ạ ể ệ ể ể ị ộ ệ
router#>show buffer Buffer elements: 500 in free list (500 max allowed)
747314 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104
bytes (total 50, permanent 50): 46 in free list (20 min, 150 max allowed)
530303 hits, 6 misses, 18 trims, 18 created 0 failures (0 no memory)
Middle buffers, 600 bytes (total 25, permanent 25): 25 in free list (10 min,
150 max allowed) 132918 hits, 3 misses, 9 trims, 9 created 0 failures (0 no
memory) Big buffers, 1524 bytes (total 50, permanent 50): 50 in free list (5
min, 150 max allowed) 47 hits, 0 misses, 0 trims, 0 created 0 failures (0 no
memory) VeryBig buffers, 4520 bytes (total 10, permanent 10): 10 in free
list (0 min, 100 max allowed) 26499 hits, 0 misses, 0 trims, 0 created 0
failures (0 no memory) Large buffers, 5024 bytes (total 0, permanent 0): 0
in free list (0 min, 10 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0
failures (0 no memory) Huge buffers, 18024 bytes (total 0, permanent 0): 0
in free list (0 min, 4 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0
failures (0 no memory) … Đ hi u đ c b qu n lý vùng b đ m ho t ể ể ượ ộ ả ộ ệ ạ
đ ng nh th nào v i b đêm h th ng, xem ví d sau: B t đ u v i 16 b ộ ư ế ớ ộ ệ ố ụ ắ ầ ớ ộ
đ m trong danh sách r i. Hình 3.7 ệ ỗ
Small buffers, 104 bytes (total 16, permanent 16): 16 in free list (8 min, 16
max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory)
Hình 3. 7 b đ m h th ngộ ệ ệ ố
IOS nh n 8 gói phù h p v i 8 vùng b đ m small 104 byte. Ph n m m ậ ợ ớ ộ ệ ầ ề
nh n gói yêu c u và nh n 8 và nh n 8 b đ m t vùng b đ m small. Lúc ậ ầ ậ ậ ộ ệ ừ ộ ệ
đó danh sách r i (free list) sẽ gi m xu ng còn 8 nh hình 3.8. ỗ ả ố ư Small buffers,
104 bytes (total 16, permanent 16): 8 in free list (8 min, 16 max allowed) 8
hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory)
Hình 3. 8 b đ m h th ngộ ệ ệ ố
Bây gi IOS nh n thêm 4 gói n a tr c khi x lý, Ph n m m nh n gói yêu ờ ậ ữ ướ ử ầ ề ậ
c u và nh n thêm 4 b đ m n a t vùng b đ m small. ầ ậ ộ ệ ữ ừ ộ ệ Small buffers, 104
bytes (total 16, permanent 16): 4 in free list (8 min, 16 max allowed) 12 hits,
4 misses, 0 trims, 0 created 0 failures (0 no memory) S b đ m trong danh ố ộ ệ
sách r i đã gi m còn 4 và có 12 đ y, miss là 4 do t i thi u (min) là 8 mà chỗ ả ầ ố ể ỉ
còn 4. Nh hình 3.9. ư
Hình 3. 9 b đ m h th ngộ ệ ệ ố
Vì d i m c t i thi u nên b qu n lý vùng b đ m, ch y ti n trình qu nở ướ ứ ố ể ộ ả ộ ệ ạ ế ả
lý pool đ m r ng vùng nh , và t o thêm b đ m. Sau khi t o xong b ể ở ộ ớ ạ ộ ệ ạ ộ
đ m ta có thêm 4 vùng nh nh hình 3.10 ệ ớ ư
Small buffers, 104 bytes (total 20, permanent 16): 8 in free list (8 min, 16 max
allowed) 12 hits, 4 misses, 0 trims, 4 created 0 failures (0 no memory
Hình 3. 10 b đ m h th ngộ ệ ệ ố
Bây gi gi s IOS yêu c u thêm 9 gói n a. Hình 3.11 ờ ả ử ầ ữ Small buffers, 104
bytes (total 20, permanent 16): 0 in free list (8 min, 16 max allowed) 20 hits,
13 misses, 0 trims, 4 created 1 failures (0 no memory)
Hình 3. 11 b đ m h th ngộ ệ ệ ố
Lúc này sẽ có m t l i (ộ ỗ failures), vì m t gói b tràn. Sau đó IOS x lý gói và ộ ị ử
tr v b đ m hình 3.12 ả ề ộ ệ Small buffers, 104 bytes (total 20, permanent 16):
17 in free list (8 min, 16 max allowed) 20 hits, 13 misses, 0 trims, 4 created 1
failures (0 no memory)
Hình 3. 12 b đ m h th ngộ ệ ệ ố
B đ m r i lúc này là 17, tuy nhiên t i đa (ộ ệ ỗ ố max) cho phép là 16 cho nên
ti n trình qu n lý vùng b đ m ho t đ ng đ rút l i b đ m. Nh hình ế ả ộ ệ ạ ộ ể ạ ộ ệ ư
3.13 Small buffers, 104 bytes (total 20, permanent 16): 17 in free list (8 min,
16 max allowed) 20 hits, 13 misses, 1 trims, 4 created 1 failures (0 no
memory)
Hình 3. 13 b đ m h th ngộ ệ ệ ố
Cu i cùng IOS x lý t t c các gói còn l i và tr b đ m v cho ố ử ấ ả ạ ả ộ ệ ề pool Small
buffers, 104 bytes (total 16, permanent 16): 16 in free list (8 min, 16 max
allowed) 20 hits, 13 misses, 4 trims, 4 created 1 failures (0 no memory)
1.7. Trình đi u khi n thi t bề ể ế ị IOS ch a trình đi u khi n thi t b cho các ứ ề ể ế ị
thi t b ph n c ng, nh flash card, NVRAM, nh ng đáng chú ý là trình đi u ế ị ầ ứ ư ư ề
khi n cho các giao ti p m ng Trình đi u khi n các giao ti p m ng cung ể ế ạ ể ể ế ạ
c p nh ng kh năng chính cho ho t đ ng c a gói d li u t i đ u ra c a ấ ữ ả ạ ộ ủ ữ ệ ạ ầ ủ
giao ti p. M i thi t b ch a hai thành ph n chính: thành ph n đi u khi n ế ỗ ế ị ứ ầ ầ ề ể
và thành ph n d li u. Thành ph n đi u khi n có trách nhi m qu n lý ầ ữ ệ ầ ề ể ệ ả
tình tr ng và tr ng thái c a thi t b (ví d , shut down trên m t c ng). ạ ạ ủ ế ị ụ ộ ổ
Thành ph n d li u có trách nhi m đ i v i t t c các lu ng ho t đ ng ầ ữ ệ ệ ố ớ ấ ả ồ ạ ộ
chuy n m ch gói d li u. Trình đi u khi n thi t b có quan h ch t chẽ ể ạ ữ ệ ề ể ế ị ệ ặ
v i ch c năng chuy n m ch gói Trình đi u khi n thi t b giao ti p m ng ớ ứ ể ạ ề ể ế ị ế ạ
d a trên h th ng IOS thông qua m t c u trúc đi u khi n đ c bi t g i là ự ệ ố ộ ấ ề ể ặ ệ ọ
IDB( interface descriptor block). IDB ch a, toàn b ch c năng đi u khi n ứ ộ ứ ề ể
thi t b , d li u, tr ng thái thi t b , ví d : đ a ch IP, tr ng thái c ng, th ng ế ị ữ ệ ạ ế ị ụ ị ỉ ạ ổ ố
kê gói là m t trong các tr ng hi n t i trong IDB. IOS duy trì m t IDB cho ộ ườ ệ ạ ộ
m i giao ti p hi n t i trên m t platform ỗ ế ệ ạ ộ
1.8. C u trúc chuy n m ch góiấ ể ạ Chuy n m ch gói là m t trong các ch c ể ạ ộ ứ
năng quan tr ng nh t c a router. Ho t đ ng bao quát nh sau: ọ ấ ủ ạ ộ ư - M t gói ộ
đ n m t c ng,ế ộ ổ - Đ a ch đích c a gói đ c ki m tra và so sánh d a và danh ị ỉ ủ ượ ể ự
sách đích đã bi t,ế - N u phù h p, gói đ c chuy n ti p ra c ng phù h p, - ế ợ ượ ể ế ổ ợ
N u không phù h p, gói b h y. R ràng v n đ chuy n m ch không quá ế ợ ị ủ ỏ ấ ề ể ạ
ph c t p, nh ng đ chuy n m ch đ c nhanh thì v n đ tr nên ph c ứ ạ ư ể ệ ạ ượ ấ ề ở ứ
t p. T c đ ho t đ ng không ch d a vào t c đ CPU, còn có nh ng nhân ạ ố ộ ạ ộ ỉ ự ố ộ ữ
t khác, kh năng th c thi c a bus I/O, t c đ b nh , đ u có nh h ng ố ả ự ủ ố ộ ộ ớ ề ả ưở
đ n s th c thi c a chuy n m ch. Đây là m t th thách đ i v i các nhà ế ự ự ủ ể ạ ộ ử ố ớ
phát tri n IOS, làm th nào đ t c đ c chuy n m ch nhanh nh t mà có thể ế ể ố ộ ể ạ ấ ể
gi i h n trên các thành ph n CPU, b nh , bus I/O. Khi mà kích th c và ớ ạ ầ ộ ớ ướ
s m ng đ nh tuy n tăng lên, nh ng ng i phát tri n IOS ti p t c tìm ra ố ạ ị ế ữ ườ ể ế ụ
nh ng cách t t nh t đ gi i quy t th thách th c thi này. Đ u tiên thì IOS ữ ố ấ ể ả ế ử ự ầ
ch có ch c năng chuy n m ch nh ng đã đ c c i thi n v sau, m t vài ỉ ứ ể ạ ư ượ ả ệ ề ộ
ph ng th c chuy n m ch d a trên t i u v ph n c ng, m t s khác ươ ứ ể ạ ự ố ư ề ầ ứ ộ ố
trên kỹ thu t ph n m m đ ch y trên nhi u platform khác nhau. Ngày nayậ ầ ề ể ạ ề
IOS có th chuy n m ch t i vài trăm ngàn gói trên m t giây, s d ng b n ể ể ạ ớ ộ ử ụ ạ
đ nh tuy n t i vài trăm ngàn tuy n đi. Sau đây là m t vài ph ng th c ị ế ớ ế ộ ươ ứ
chuy n m ch trên IOS phiên b n 12.0. ể ạ ả - Process switching - Fast switching
- Autonomous switching - Silicon switching engine (SSE) switching -
Optimum switching - Distributed fast switching - Cisco Express Forwarding
(CEF) - Distributed Cisco Express Forwarding (dCEF ) Chúng ta ch đi chi ỉ
ti t ph ng th c: process switching ế ươ ứ
1.8.1. Process switching Là ph ng th c chuy n m ch đ c th c hi n ươ ứ ể ạ ượ ự ệ
đ u tiên trên IOS. C b n nó s d ng brute-force đ chuy n m ch. M c ầ ơ ả ử ụ ể ể ạ ặ
d u Process switching có th chi m m t l ng l n CPU. Nh ng nó có u ầ ể ế ộ ượ ớ ư ư
đi m là đ c l p v i ph n c ng, làm cho nó tr nên ph bi n trên t t c cácể ộ ậ ớ ầ ứ ở ổ ế ấ ả
s n ph m c a Cisco (t ng thích v i nhi u lo i ph n c ng). Nó cũng cung ả ẩ ủ ươ ớ ề ạ ầ ứ
c p m t vài kh năng phân b l u l ng t i mà các lo i chuy n m ch ấ ộ ả ố ư ượ ả ạ ể ạ
khác không có.
1.8.1.1. Ví dụ Các b c th c hi n c a Process switching: hình 3.14 ướ ự ệ ủ
Hình 3. 14 Process switching
B c 1:ướ B t đ u v i m t c ng trên router, nó nh n bi t đ c có m t gói ắ ầ ớ ộ ổ ậ ế ượ ộ
trên đ ng truy n c n đ c x lý. C ng đó nh n gói và chuy n t i b nhườ ề ầ ượ ử ổ ậ ể ớ ộ ớ
I/O. B c 2:ướ C ng sẽ g i m t ng t t i b x lý đ báo cho b vi x lý ổ ở ộ ắ ớ ộ ử ể ộ ử
chính, r ng nó nh n đ c m t gói và đang đ i trong b nh I/O c n đ c ằ ậ ượ ộ ợ ộ ớ ầ ượ
x lý. Đây g i là receive interrupt (nh n m t ng t). Ph n m m ng t c a ử ọ ậ ộ ắ ầ ề ắ ủ
IOS ki m tra thông tin header (lo i encapsulation, header l p m ng, ...). xácể ạ ớ ạ
đ nh nó là gói IP, đ t nó gói trên hàng đ i input đ th c hi n x lý thích ị ặ ợ ể ự ệ ử
h p. Đ i v i gói ip, ti n trình x lý đ c đ t tên là ip_input ợ ố ớ ế ử ượ ặ B c 3:ướ Có ít
nh t m t gói trong hàng đ i, ti n trình ip_input đ đi u ki n đ ch y. ấ ộ ợ ế ủ ề ệ ể ạ
B c 4 và 5:ướ Sau khi ti n trình ip_input ch y. Ho t đ ng chuy n gói th c ế ạ ạ ộ ể ự
s có th b t đ u. Trong ví d này: ip_input tìm trong b ng đ nh tuy n ự ể ắ ầ ụ ả ị ế
xem có t n t i đ ng đi t i đ a ch ip đích không. N u nh tìm th y thì nó ồ ạ ườ ớ ị ỉ ế ư ấ
l y đ a ch c a hop k ti p t b n đ nh tuy n. Sau đó nó tìm trong ARP ấ ị ỉ ủ ế ế ừ ả ị ế
cache đ l y thông tin c n thi t đ t o m t đ a ch mac m i cho hop k ể ấ ầ ế ể ạ ộ ị ỉ ớ ế
ti p. Ti n trình ip_input t o m t header có đ a ch mac m i. Cu i cùng gói ế ế ạ ộ ị ỉ ớ ố
đ c đ a vào hàng đ i đ truy n ra ngoài c ng đ c ch n. ượ ư ợ ể ề ổ ượ ọ B c 6:ướ Khi
mà c ng đ c ch n xác nh n, có m t gói đang đ i đ chuy n ra, thì nó l y ổ ượ ọ ậ ộ ợ ể ể ấ
t hàng đ i (t b nh I/O) và truy n đi trên m ng. ừ ợ ừ ộ ớ ề ạ B c 7: ướ Sau khi c ng ổ
k t thúc vi c truy n gói, nó sẽ báo cho b x lý gói đã đ c truy n đi. IOS ế ệ ề ộ ử ượ ề
sau đó c p nh t bi n đ m s gói đi ra ngoài và gi i phóng vùng nh I/O ậ ậ ế ế ố ả ớ
1.8.1.2. Phân b l u l ng t i v i Process switchingố ư ượ ả ớ M t trong nh ng ộ ữ
u đi m c a Process switching là kh năng phân b l u l ng t i trên gói. ư ể ủ ả ố ư ượ ả
L u l ng t i trên gói, cung c p m t cách khá đ n gi n trên nhi u link ư ượ ả ấ ộ ơ ả ề
(liên k t) khi t n t i nhi u đ ng t i đích. Khi có nhi u đ ng t i đích, ế ồ ạ ề ườ ớ ề ườ ớ
các gói đ c chuy n m ch t đ ng đ c phân ph i gi a gi a các đ ng cóượ ể ạ ự ộ ượ ố ữ ữ ườ
s n này d a trên metric đ c gán cho m i đ ng. Metric ho c cost cho ẵ ự ượ ỗ ườ ặ
m i đ ng trong b ng đ nh tuy n đ c s d ng đ tính toán m t bi n ỗ ườ ả ị ế ượ ử ụ ể ộ ế
đ m phân ph i t i. Mà th t s s d ng đ quy t đ nh đ ng nào đ c ế ố ả ậ ự ử ụ ể ế ị ườ ượ
ch n. Ví d : nh hình 3.15 ọ ụ ư
Hình 3. 15 phân b l u l ng t i .ố ư ượ ả
Router A có hai đ ng đ n m ng 10.1.4.0/24 ườ ế ạ
RouterA#show ip route 10.1.4.0 255.255.255.0 Routing entry for
10.1.4.0/24 Known via "static", distance 1, metric 0 Routing Descriptor
Blocks: 10.1.2.1 Route metric is 0, traffic share count is 1 * 10.1.3.1 Route
metric is 0, traffic share count is 1 Trong vi d này, thì gói th nh t sẽ dùng ụ ứ ấ
hop ti p theo là 10.1.3.1 và gói th hai 10.1.2.1, ti p t c nh v y. ế ứ ế ụ ư ậ
1.8.1.3. Nh c đi m c a process switchượ ể ủ
Nh c đi m c a ph ng pháp này t c đ c a nó. Process switch yêu c u ượ ể ủ ươ ố ộ ủ ầ
b ng đ nh tuy n cho m i gói, khi kích th c b ng đ nh tuy n tăng lên, th iả ị ế ọ ướ ả ị ế ờ
gian yêu c u tìm ki m trong b ng đ nh tuy n cũng tăng. Th i gian tìm ầ ế ả ị ế ờ
ki m tăng cũng là tăng th i gian s d ng CPU, nh h ng r t nhi u đ n ế ờ ử ụ ả ưở ấ ề ế
t c đ gói đ n. M c d u đi u này khó nh n th y trong nh ng m ng nh , ố ộ ế ặ ầ ề ậ ấ ữ ạ ỏ
nh ng đ i v i nh ng m ng lên t i hàng trăm, hàng ngàn node thì kích ư ố ớ ữ ạ ớ
th c b ng đ nh tuy n có ý nghĩa trong vi c s d ng CPU và s ti m n ướ ả ị ế ệ ử ụ ự ề ẩ
v đ nh tuy n (là th i gian gi a các gói đi vào và ra kh i h th ng). M t ề ị ế ờ ữ ỏ ệ ố ộ
nhân t nh h ng đ n Process switching là t c đ di chuy n d li u c a ố ả ưở ế ố ộ ể ữ ệ ủ
b nh . Đ i v i m t s h đi u hành, Process switch yêu c u các gói nh n ộ ớ ố ớ ộ ố ệ ề ầ ậ
đ c sao chép t vùng nh I/O đ n vùng nh khác tr c khi chúng đ c ượ ừ ớ ế ớ ướ ượ
chuy n m ch. Sau khi ti n trình đ nh tuy n k t thúc, nh ng gói ph i đ c ể ạ ế ị ế ế ữ ả ượ
sao chép tr l i vùng nh I/O tr c khi có th truy n đi. Ho t đ ng này ở ạ ớ ướ ể ề ạ ộ
c n s ho t đ ng m nh mẽ c a CPU, vì v y mà đ i v i nh ng h đi u ầ ự ạ ộ ạ ủ ậ ố ớ ữ ệ ề
hành này, Process switch có th th c thi r t ch m. Tr l i ví d trên, ti n ể ự ấ ậ ở ạ ụ ế
trình ip_input c n có 3 thành ph n khoá c a d li u đ chuy n m ch gói. -ầ ầ ủ ữ ệ ể ể ạ
Reachability (có đích đ n): ế Có đích hay không, n u có thì đ a ch m ng ế ị ỉ ạ
c a hop k ti p là gì đ chuy n gói t i đích. D li u này trong b ng đ nh ủ ế ế ể ể ớ ữ ệ ả ị
tuy nế
- Interface ( c ng ): ổ C ng nào sẽ đ c s d ng đ truy n gói d li u t i ổ ượ ử ụ ể ề ữ ệ ớ
đích. D li u này cũng n m trong b ng đ nh tuy n. ữ ệ ằ ả ị ế
- Header l p MAC:ớ Đ a ch MAC đ c đ t trên đ đ n đúng hop k ti p, ị ỉ ượ ặ ể ế ế ế
đ a MAC l y t b ng ARP (Address Resolution Protocol) cho ip ho c b ng ị ấ ừ ả ặ ả
tham chi u khác, nh b ng frame relay map.ế ư ả