• NAM Visual Simulation Mơ phỏng ảo NAM
• Tracing and Monitoring Simulation Mô phỏng Lần vết và Giám sát 3.1.2 C++ và OTcl
Hình 3.3 biểu diễn kiến trúc chung của NS. Người dùng có thể tưởng tượng mình đang đứng ở góc trái dưới, thiết kế và chạy các mô phỏng trong Tcl. Tcl dùng các đối tượng mô phỏng trong OTcl. Các đối tượng Bộ lập lịch Sự kiện và hầu hết các đối tượng Thành phần Mạng thực thi bằng C++ và sẵn có cho OTcl qua một liên kết OTcl.
Liên kết OTcl này được thực thi dùng TclCL. Tất cả đã làm nên NS, bộ biên dịch Tcl mở rộng hướng đối tượng và các thư viện mô phỏng mạng.
Tcl OTcl OTcl TclCL TclCL ns-2 Ev en t Sc he du le r Network Components Ev en t Sc he du le r Network Components C/C++ Hình 3.3: Kiến trúc của NS-2
• NS sử dụng hai ngơn ngữ lập trình: Ngơn ngữ kịch bản (Tcl – Tool Command Language, đọc là tickle) và Ngơn ngữ lập trình hệ thống (C/C++)
• NS là tầng biên dịch Tcl để chạy các kịch bản Tcl
• Bằng cách sử dụng C++/OTcl, bộ mơ phỏng mạng phải hồn tồn là hướng đối tượng
Hình 3.4 chỉ ra các đối tượng C++ có liên kết OTcl. Khi đó, nếu chúng tạo nên một phân cấp thì các đối tượng OTcl cũng có một phân cấp tương ứng như vậy
Hình 3.4: C++ và OTcl: Sự đối ngẫu
TclCL là ngôn ngữ được sử dụng để cung cấp liên kết giữa C++ và OTcl. Các kịch bản Tcl/OTcl được viết để thiết lập và cấu hình topology của mạng. TclCL cung cấp liên kết giữa phân cấp lớp, khởi tạo đối tượng, kết nối biến và gửi lệnh.
Hình 3.5: TclCL hoạt động như liên kết giữa A và B
Vậy, tại sao NS lại cần sử dụng đến hai ngơn ngữ? Lý do là vì Bộ mơ phỏng cần
thực hiện hai việc khác nhau.
Một mặt là vì các mơ phỏng cho các giao thức u cầu một ngơn ngữ lập trình hệ thống có thể tính tốn một cách hiệu quả các byte, các tiêu đề packet và các thuật toán thực thi đang chạy trên một tập dữ liệu lớn. Với tác vụ này, run-time speed (tốc độ thời gian chạy thực) là quan trọng trong khi turn-around time (thời gian thay đổi) thì ít quan trọng hơn. Turn-around time bao gồm thời gian chạy mơ phỏng, thời gian tìm lỗi, thời gian sửa lỗi, thời gian biên dịch lại và thời gian chạy lại.
Mặt khác, khi nghiên cứu mạng thì rất cần quan tâm đến các tham số và các cấu hình có thay đổi nhưng khơng đáng kể, hay quan tâm đến các scenario (tình huống) cần khám phá thật nhanh chóng. Trong tác vụ này thì iteration time (thời gian lặp lại, tức là thời gian hay đổi mơ hình và chạy lại) là quan trọng hơn. Vì cấu hình chỉ chạy một lần lúc bắt đầu mơ phỏng nên run-time trong tác vụ này rõ ràng kém quan trọng hơn.
3.2 Xây dựng chương trình mơ phỏng
3.2.1 Mục tiêu mô phỏng
Cho trước một topology mạng gồm 10 nút bộ định tuyến như trong hình dưới đây:
Hình 3.6: Mơ hình mạng
Các nguồn phát lưu lượng (src) đều đặt tại nút 0 và các đích nhận lưu lượng (sink) đều đặt tại nút 0. Các liên kết giữa các nút đều là full-duplex với thời gian trễ là 30 ms và có băng thơng như sau :
Nút 0 – Nút 1: 3M ; Nút 9 – Nút 10: 3M
Nút 1 – Nút 2: 1M ; Nút 2 – Nút 4:1M ; Nút 3 – Nút 4: 1 M ; Nút 3 – Nút 5: 1 M ; Nút 5 – Nút 7: 1M ; Nút 7 – Nút 8: 1 M ; Nút 7 – Nút 9: 1 M ;
Nút 1 – Nút 3: 2 M ; Nút 4 – Nút 7: 2 M ; Nút 4 – Nút 7: 2 M ; Nút 5 – Nút 7: 2 M
Nút 0 và Nút 10 là bộ định tuyến IP thông thường (R0 và R10). Các nút từ 1 đến 9 là các bộ định tuyến có hỗ trợ MPLS (LSR1 đến LSR9) tạo thành một miền MPLS. Có một nguồn lưu lượng (scr1) được tạo thành và gắn vào nút R0. Tương ứng có 1 đích lưu lượng (sink1) gắn vào nút R10. Nguồn phát luồng lưu lượng với tốc độ 0,8 Mbps, kích thước gói 600B.
Mục tiêu chương trình mơ phỏng hướng tới :
1. Thông tin mơ phỏng chung của tồn mạng : bao nhiêu gói được tạo ra , bao nhiêu gói được chuyển tiếp , bao nhiêu gói bị mất mát.
2. Theo dõi quá trình thiết lập đường làm việc, đường bảo vệ và tái thiết lập chúng ra sao.
3. Biểu diễn q trình mơ phỏng bằng các phần mềm ứng dụng NS2 như Nam, XGRAPH
3.2.2 Thực hiện và kết quả
3.2.2.1 Mơ phỏng với lịch trình qui định trong script mô phỏng
1. Thiết lập đường làm việc: LSP_1100 (ER=1_3_5_7_9)
2. Thiết lập đường bảo vệ toàn cục: LSP_1200 (ER=1_2_4_6_8_9) 3. Thời điểm 0,5s: Luồng 1 (src1_sink1) bắt đầu truyền đến LSP_1100 4. Thời điểm 2,0s: Liên kết giữa LSR5_LSR7 bị đứt, đến 3,5s thì khơi phục.
5. Thời điểm 5,0s: Luồng 1 ngưng truyền.
Hình 3.7: Lịch trình mơ phỏng
3.2.2.2 Biểu diễn trên đồ thị XGRAPH
Từ Xgraph (hình 3.8) ta thấy tại thời điểm LSR5-LSR7 bị đứt (2,06s), LSR5 phát một bản tin FIS về LSR1. Sau khi LSR1 nhận được thơng điệp này, nó sẽ chuyển luồng lưu lượng từ đường làm việc sang đường bảo vệ tồn cục đã thiết lập. Do thơng điệp thơng báo phải mất một khoảng thời gian mới đến được LSR1 nên trong thời gian này, các gói vẫn cịn được truyền trên đường dẫn có liên kết bị hỏng và bị mất gói đồng thời phải mất 1 thời gian trễ nhất định các gói tin đầu tiên trên đường thiết lập bảo vệ toàn cục mới chuyển tới LSR10. Nên ta thấy tại thời điểm 2s đến 2.4s, lượng băng thông giảm đột ngột rồi tăng lại ổn định như cũ sau 1 khoảng thời gian
Hình 3.8: Đồ thị Xgraph
.
Tại thời điểm 3.5s khôi phục đường truyển lượng băng thông tăng đột biến rồi giảm về ổn định 0,8 Mb/s do trễ gói tin trên đường thiết lập bảo vệ tồn cục.
Rõ ràng việc tỉ lệ mất gói tin khá lớn do một số lượng gói tin nhất định bị mất mát trên đường liên kết hỏng do trễ gói tin là nhược điểm cơ chế Makam. Nhược điểm này được khắc phục ở cơ chế Resever Backup.
3.2.2.3 Biểu diễn NAM
• Báo hiệu thiết lập đường làm việc và đường bảo vệ
• Đường thiết lập LSP ER=1_3_5_7_9
• Đường bảo vệ LSP ER =1_2_4_6_8_9.
Hình 3.9: Báo hiệu thiết lập đường làm việc và bảo vệ
o Luồng 1: BW=0.8M chạy o start = 0.5
o stop = 5.0
o sử dụng ER =1_3_5_7_9
Hình 3.10: Sử đường làm việc ER=1_3_5_7_9
• Thời điểm 2,06s phát hiện lỗi trên đường làm việc LSP_1100.
• Chuyển sang đường bảo vệ LSP_1200
Hình 3.11: Phát hiện lỗi
Hình 3.12: Chuyển sang đường bảo vệ
• Tại 3,5s lỗi đã được khơi phục
Hình 3.13: Lỗi đã được khơi phục
Hình 3.14: Chuyển lưu lượng trở lại đường làm việc
• Tại 5,0 s kết thúc q trình truyền gói
• 750 gói được truyền, mất 57 gói
Hình 3.15: Kết thúc q trình truyền gói
3.3 Tổng kết
Trong chương này chúng ta giới thiệu về phần mềm mô phỏng NS2 và ứng dụng nó vào kỹ thuật lưu lượng giao thức MPLS, cụ thể là ta đã mô phỏng thành công cơ chế bảo vệ và thiết lập đường. Nó giúp ta hiểu kĩ về quá trình thiết lập đường truyền và thiết lập bảo vệ ra sao đồng thời giúp ta theo dõi được q trình truyền gói tin, mất mát gói và độ trễ.
Các file Otcl Scripts thực hiện bài tốn mơ phỏng trình bày trong phụ lục của đồ án này.
KẾT LUẬN
Với những ưu điểm vượt trội, MPLS được xem là công nghệ đầy hứa hẹn trong tương lai nhằm đáp ứng nhu cầu đa dịch vụ, đa phương tiện của khách hàng.
Sau một thời gian nghiên cứu, đồ án đã giải quyết được một số vấn đề sau:
Tìm hiểu tổng quan về công nghệ MPLS.
Nghiên cứu vấn đề điều khiển lưu lượng và bài toán điều khiển lưu lượng trong MPLS.
Xây dựng chương trình mơ phỏng cơ chế bảo vệ và khôi phục đường trong kỹ thuật lưu lượng MPLS
Các vấn đề được nêu ra trong đồ án cho ta một cái nhìn tổng quan hơn về cơng nghệ MPLS. Kĩ thuật điều khiển lưu lượng sử dụng trong công nghệ MPLS đã giúp giải quyết vấn đề tắc nghẽn mạng nhờ đó nâng cao hiệu năng mạng. Nghiên cứu điều khiển lưu lượng trong MPLS là vấn đề rất quan trọng nhằm mở ra các kĩ thuật mạng để nâng cao hiệu quả sử dụng mạng trong tương lai.
Công việc nghiên cứu về công nghệ MPLS vẫn đang được các tổ chức tiếp tục nghiên cứu, phát triển và hoàn thiện tiêu chuẩn. Việc hồn thiện các tiêu chuẩn có vai trị quan trọng đối với các nhà sản xuất thiết bị, cũng như các nhà cung cấp mạng nhằm đạt được một mạng tối ưu nhất.
Đối với cơ sở hạ tầng thông tin quốc gia, việc triển khai công nghệ MPLS cần được nghiên cứu sâu hơn để phát huy những ưu điểm của MPLS đồng thời phù hợp với nhu cầu thị trường của Việt Nam.
Một lần nữa xin gửi lời cảm ơn chân thành tới các thầy cô giáo đã giúp đỡ em trong những năm tháng học tập tại trường.
Hà nội, tháng 11 năm 2008 Đỗ Tiến Thành
TÀI LIỆU THAM KHẢO
[1] Công nghệ MPLS –TS Nguyễn Tiến Ban 2008
[2] Rosen, E., Viswanathan, A. and R. Callon, “Multiprotocol Label Switching Architecture”, RFC 3031.
[3] L. Andersson, P. Doolan, N. Feldman, A. Fredette, B. Thomas, “LDP Specification”, RFC 3036.
[4] MPLS Fundamentary ( Luc De Ghein- CisscoPress 2006)
[5] ATM & MPLS: Theory and Application ( Eric Osborne, Ajay Simha- Ciscopress 2002)
[6] D. Awduche, J. Malcolm, J. Agogbua, M. O’Dell, J. McManus “Traffic Engineering in MPLS”, RFC 2702.
[7] Keping Long, Zhongshan Zhang, Shiduan Cheng, “Load balancing algorithms in MPLS traffic engineering”, High Performance Switching and Routing, 2001 IEEE Workshop on, 2001.
[8] TS. Phùng Văn Vận, KS. Đỗ Mạnh Quyết, “Công nghệ chuyển mạch nhãn đa giao thức MPLS”, Nhà xuất bản Bưu Điện, 2003.
[9] Eric Osborne, Ajay Simha, “Traffic Engineering with MPLS”, Cissco Press, 2003.
[10] Hồng Trọng Minh, Bài giảng ”Cơng nghệ chuyển mạch nhãn đa giao thức MPLS”, Học viện cơng nghệ bưu chính viễn thơng.
[11] Ns-manual http://www.isi.edu/nsna m /ns/ns-doc u m entation.ht m l [12] MNS-Manual - http://flow e r.ce.cnu.ac.kr/~fog1/mns/.
PHỤ LỤC
Mã nguồn chương trình mơ phỏng
# Tao ra mot doi tuong mo phong
set ns [new Simulator] $ns rtproto LS
# Tao file de xuat ket qua cho NAM set nf [open bai4.nam w]
$ns namtrace-all $nf
# Tao cac file de luu du lieu cho xgraph set f1 [open luong_1.tr w]
set f2 [open luong_seq.tr w]
# So do ket noi mang
1M 2M 1M # LSR2---------------LSR4------------------LSR6-------------------LSR8 # / / / / \ # / / / / \ # 1M / 1M / 1M / 1 M / \ 2M # / / / / \ # / / / / \ # R0-----------LSR1----------------LSR3------------------LSR5----------------LSR 7----------LSR9---------R10 # 2M 1M 2M 1M
# Khai bao 2 nut IP (R0,R10) va 9 nut MPLS (LSR1 --> LSR9) set R0 [$ns node]
foreach i "1 2 3 4 5 6 7 8 9" { set LSR$i [$ns mpls-node] set m LSR$i
eval $$m color blue }
set R10 [$ns node]
# Khai bao liên kết: odes bw delay queue $ns duplex-link $R0 $LSR1 3Mb 10ms DropTail $ns duplex-link $LSR1 $LSR3 2Mb 30ms DropTail $ns duplex-link $LSR3 $LSR5 1Mb 30ms DropTail $ns duplex-link $LSR5 $LSR7 2Mb 30ms DropTail $ns duplex-link $LSR7 $LSR9 1Mb 30ms DropTail $ns duplex-link $LSR9 $R10 3Mb 10ms DropTail $ns duplex-link $LSR1 $LSR2 1Mb 30ms DropTail $ns duplex-link $LSR2 $LSR4 1Mb 30ms DropTail $ns duplex-link $LSR4 $LSR6 2Mb 30ms DropTail $ns duplex-link $LSR6 $LSR8 1Mb 30ms DropTail $ns duplex-link $LSR8 $LSR9 2Mb 30ms DropTail $ns duplex-link $LSR3 $LSR4 1Mb 30ms DropTail $ns duplex-link $LSR5 $LSR6 1Mb 30ms DropTail $ns duplex-link $LSR7 $LSR8 1Mb 30ms DropTail # Ve dang so do mang
$ns duplex-link-op $R0 $LSR1 orient right $ns duplex-link-op $LSR1 $LSR3 orient right $ns duplex-link-op $LSR3 $LSR5 orient right $ns duplex-link-op $LSR5 $LSR7 orient right $ns duplex-link-op $LSR7 $LSR9 orient right $ns duplex-link-op $LSR9 $R10 orient right $ns duplex-link-op $LSR1 $LSR2 orient 0.333 $ns duplex-link-op $LSR2 $LSR4 orient right $ns duplex-link-op $LSR4 $LSR6 orient right $ns duplex-link-op $LSR6 $LSR8 orient right $ns duplex-link-op $LSR8 $LSR9 orient 1.667 $ns duplex-link-op $LSR3 $LSR4 orient 0.333 $ns duplex-link-op $LSR5 $LSR6 orient 0.333 $ns duplex-link-op $LSR7 $LSR8 orient 0.333 # Ghi chu $ns duplex-link-op $LSR1 $LSR3 label " 2M " $ns duplex-link-op $LSR3 $LSR5 label " 1M "
$ns duplex-link-op $LSR5 $LSR7 label " 2M " $ns duplex-link-op $LSR7 $LSR9 label " 1M " $ns duplex-link-op $LSR1 $LSR2 label " 1M " $ns duplex-link-op $LSR2 $LSR4 label " 1M " $ns duplex-link-op $LSR4 $LSR6 label " 2M " $ns duplex-link-op $LSR6 $LSR8 label " 1M " $ns duplex-link-op $LSR8 $LSR9 label " 2M" $ns duplex-link-op $LSR3 $LSR4 label " 1M " $ns duplex-link-op $LSR5 $LSR6 label " 1M " $ns duplex-link-op $LSR7 $LSR8 label " 1M " $R0 label "Nguon" $R10 label "Dich" $LSR1 label "Ingress " $LSR9 label " Egress"
# Cau hinh LDP agent tren tat ca cac nut MPLS $ns configure-ldp-on-all-mpls-nodes
# Dat color cho cac ban tin LDP $ns ldp-request-color blue $ns ldp-mapping-color red $ns ldp-withdraw-color magenta $ns ldp-release-color orange $ns ldp-notification-color green #---------------------------------------------------------------------- # Dinh nghia cac ham su dung trong chuong trinh chinh #---------------------------------------------------------------------- # Tao mot procedure ghi nhan bang thong theo mot chu ki $time proc record {} {
global sink1 f1
set ns [Simulator instance]
# Dinh chu ki ghi nhan bang thong set time 0.1
# Lay so luong packet nhan duoc trong chu ky o moi sink
set bw1 [$sink1 set bytes_]
set now [$ns now]
puts $f1 "$now [expr $bw1/$time*8/1000000]"
# Reset gia tri bytes_ cua sink $sink1 set bytes_ 0
#Dinh thoi goi lai ham record sau chu ky $time $ns at [expr $now+$time] "record"
}
#----------------------------------------------------
set prvseqnb -1 set seqerrnb 0
# Thu tuc ghi lai so packet nhan duoc dung thu tu proc seq-record {size rate ftime} {
global prvseqnb seqerrnb sink1 f2 set ns [Simulator instance]
# Dat chu ky thoi gian chay lai thu tuc nay set tsize [parse-bw $size]
set trate [parse-bw $rate]
set time [expr double($tsize)/double($trate)/8.0]
set now [$ns now]
# Tim so thu tu cua packet