Kết luận Chƣơng 4

Một phần của tài liệu Kỹ thuật điều khiển lưu lượng trong chuyển mạch nhãn đa giao thức (Trang 60 - 107)

Chương 4 thực hiện mô phỏng các mô hình điều khiển lưu lượng trong mạng MPLS.

- Mô phỏng với NS2 có khả năng cung cấp những tính năng và thiết kế theo các mô hình lưu lượng .

- Mô phỏng truyền lưu lượng trên mạng IP để lấy căn cứ so sánh tương đối so với các mô hình điều khiển lưu lượng tiếp theo.

- Mô phỏng định tuyến bắt buộc biểu diễn quá trình thiết lập các đường định tuyến với mức ưu tiên đã được thiết kế trước. Không có sự lấn chiếm và ảnh

hưởng giữa các lưu lượng dẫn đến chất lượng mạng được đảm bảo theo thiết kế.

- Mô phỏng lấn chiếm lưu lượng mô tả thiết kế mạng theo đặc tính của lưu lượng và các mức ưu tiên. Khi lưu lượng có mức ưu tiên thấp hơn xâm lấn dung lượng của các lưu lượng khác, thiết kế sẽ đảm bảo mức ưu tiên cao hơn không bị ảnh hưởng.

- Mô phỏng chuyển lưu lượng trong mô hình Makam thực hiện mô tả quá trình chuyển hướng và khôi phục kết nối khi có lỗi trên mạng. Mô hình có sự mất gói và đảo trật tự gói tin cao so với các mô hình khác.

- Mô phỏng chuyển lưu lượng trong mô hình Haskin khắc phục được hiện tượng đảo trật tự gói nhưng tiêu tốn nhiều tài nguyên băng thông trên mạng. - Mô phỏng chuyển lưu lượng trong mô hình Shortest Dynamic tương tự như

KẾT LUẬN VÀ KIẾN NGHỊ

- Chương trình mô phỏng NS2 là một phần mềm có nhiều tính năng, là công cụ tốt cho việc nghiên cứu và phát triển các mô hình mạng và phần mềm.

- Các bài mô phỏng thể hiện rõ tính năng ưu việt của mạng chuyển mạch nhãn đa giao thức (MPLS) so với mạng IP truyền thống.

- Các mô hình điều khiển lưu lượng khác nhau có khả năng áp dụng rất mềm dẻo cho từng yêu cầu cụ thể của hệ thống mạng và đáp ứng được những đặc tính của các loại hình dịch vụ triển khai.

- Qua nội dung này, học viên có những nhìn nhận trực quan hơn về công nghệ, hỗ trợ tốt cho công tác thiết kế, điều hành và tối ưu mạng viễn thông hoạt động trên nền công nghệ MPLS.

Luận văn là một hướng phát triển trong nghiên cứu và thiết kế bổ sung những tính năng mới trong việc mô phỏng mô hình mạng chuyển mạch nhãn đa giao thức với phần mềm mô phỏng sử dụng mã nguồn mở NS2. Tuy trong điều kiện khó khăn trong việc sắp xếp thời gian giữa công việc và học tập, nghiên cứu, tác giả đã cố gắng đưa ra một số mô hình mô phỏng và đánh giá thiết thực nhất định.

Những luận văn viết về phần mềm mô phỏng NS2 sau này có thể kế thừa những tài liệu, mã nguồn và mô hình mạng để tiếp tục bổ sung, hoàn thiện những hàm chuẩn, tạo nên một công cụ mô phỏng hoàn chỉnh hơn.

Hướng phát triển tiếp theo của luận văn có những vấn đề sau:

- Áp dụng những mô hình mạng và tham số thực tế triển khai, từ đó so sánh và cung cấp cho người đọc những thông tin trực quan giữa mô phỏng và thực tế. - Thiết kế bổ sung một số module của công nghệ mới áp dụng trong mạng

TÀI LIỆU THAM KHẢO

[1]. Eric Osborne CCIE #4122, Ajay Simha CCIE #2970 “Traffic Engineering with MPLS

[2]. Haskin, et al. “A Method for Setting an Alternative Label Switched Paths to Handle Fast Reroute”, http://toos.ietf.org/html/draft-haskin-mpls-fast-reroute- 00.txt, Jun. 1999, 10 pages.

[3]. Jim Guichard CCIE #2069, Ivan Pepelnjak CCIE #1354 “MPLS and VPN Architectures

[4]. Johan Martin Olof Petersson “MPLS Based Recovery Mechanisms

[5]. Lancy Lobo, - CCIE No. 4690, Umesh Lakshman “MPLS Configuration on Cisco IOS Software

[6]. RSVP-TE\ns “http://netgroup-serv.iet.unipi.it/rsvp-te_ns” [7]. RFC 3031 : Multiprotocol Label Switching Architecture

[8]. RFC 3032 : MPLS Label Stack Encoding

[9]. RFC 3035 : MPLS using LDP and ATM VC Switching

[10].RFC 3036 : LDP Specification

[11].S.Makam, V.Sharma, K.Owens, C.Huang “Protection/Restoration of MPLS Networks” draft-makam-mpls-protection-00.txt October 1999

PHỤ LỤC I

Các bước cài đặt phần mềm mô phỏng NS2 và RSVP-TE

Bƣớc 1:

- Sử dụng hệ điều hành Fedora Core 7.

- Cài đặt và cấu hình chương trình ns-allinone-2.26 trong thư mục $/usr. - Sử dụng quyền root để cài đặt và chạy chương trình.

Bƣớc 2:

- Tải phần mềm ns-allinone-2.26 từ trang web: http://www.isi.edu/nsnam/dist/

- Lựa chọn phiên bản ns-allinone-2.26, tải về thư mục $/usr trong máy tính. - Sử dụng lệnh ls để kiểm tra sự tồn tại của file ns-allinone-2.26.tar.gz trong

thư mục $/usr

Bƣớc 3:

- Chọn thư mục thực hiện cài đặt: $cd /usr

- Giải nén ns-allinone-2.26:

$tar -xzvf ns-allinone-2.31.tar.gz

- Kiểm tra thư mục chứa các file đã được giải nén

Bƣớc 4:

- Cài đặt ns-allinone-2.26: $cd /usr/ns-allinone-2.26 $./install

- Sau khi cài đặt xong, tiếp tục thực hiện các bước kiểm tra: $./validate

$cd ns-2.26 $./validate

Bƣớc 5:

- Sửa lại biến môi trường: $ gedit ~/.bashrc

- Ghi lại những nội dung sau:

# LD_LIBRARY_PATH OTCL_LIB=/usr/ns-allinone-2.26/otcl-1.0a8 NS2_LIB=/usr/ns-allinone-2.26/lib X11_LIB=/usr/X11R6/lib USR_LOCAL_LIB=/usr/local/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_ LOCAL_LIB # TCL_LIBRARY TCL_LIB=/usr/ns-allinone-2.26/tcl8.3.2/library USR_LIB=/usr/lib export TCL_LIBRARY=$TCL_LIB:$USR_LIB # PATH

XGRAPH=/usr/ns-allinone-2.26/bin:/usr/ns-allinone- 2.26/tcl8.3.2/unix:/usr/ns-allinone-2.26/tk8.3.2/unix NS=/usr/ns-allinone-2.26/ns-2.26/

NAM=/usr/ns-allinone-2.26/nam-1.9/ PATH=$PATH:$XGRAPH:$NS:$NAM

- Để những biến môi trường sau có khả năng thực thi ngay mà không cần khởi động lại máy tính:

$ source ~/.bashrc

Bƣớc 6:

- Tải file vá lỗi

$cd /usr/ns-allinone-2.26

$wget http://heim.ifi.uio.no/~johanmp/ns-2/mns-for-2.26.tar.gz - Cài đặt các bản vá lỗi cho MNS

$tar -xzvf mns-for-2.26.tar.gz

Đổi tên /ns-allinone-2.26/ns-2.26 thành ns-allinone-2.26/ns-2.26_old copy /ns-allinone-2.26/ns-2.26_old thành ns-allinone-2.26/ns-2.26_mod $cd /usr/ns-allinone-2.26/

$patch -p0< rsvp_te_ns.patch

Đổi lại tên /ns-allinone-2.26/ns-2.26_mod thành /ns-allinone-2.26/ns-2.26 $cd /usr/ns-allinone-2.26/

./install

- Lưu ý: phiên bản này hoạt động tốt nhất với phiên bản gcc 2.95.

Bƣớc 7:

- Kiểm tra chương trình cài đặt đã hoàn thành hay chưa, thực hiện download file rsvp-te_ns_test.tcl về thư mục

$cd /usr/ns-allinone-2.26/example

$wget http://netgroup-serv.iet.unipi.it/rsvp-te_ns/rsvp_te_test.tcl

$ns rsvp-te_ns_test.tcl

Bƣớc 8:

- Chạy chương trình mô phỏng : haskin.tcl

Chuyển đến thư mục ABC chứa file mã nguồn mô phỏng dạng haskin.tcl $cd /usr/ns-allinone-2.26/ABC

PHỤ LỤC II

Mã nguồn mô phỏng NS2 và RSVP-TE

I. Mô phỏng mạng không sử dụng MPLS

############################################################## # BAI 1: MO PHONG MANG IP KHONG HO TRO MPLS # ############################################################## # Tao ra mot doi tuong mo phong

set ns [new Simulator] $ns rtproto DV

# Tao file de xuat ket qua cho NAM

set nf [open bai1.nam w] $ns namtrace-all $nf

# Tao cac file de luu du lieu cho xgraph

set f1 [open unit_1_1.tr w] set f2 [open unit_1_2.tr w]

#

# So do ket noi mang # # 1M 2M 1M # R2---R4---R6---R8 # / / / / \ # / / / / \ # 1M / 1M / 1M / 1M / \ 2M # / / / / \ # / / / / \ # R0---R1---R3---R5---R7---R9---R10 # 2M 1M 2M 1M #

# Khai bao 10 nut mang IP thong thuong (co ten tu R0 --> R10)

foreach i "0 1 2 3 4 5 6 7 8 9 10" { set R$i [$ns node]

}

# Khai bao link: nodes bw delay queue

$ns duplex-link $R0 $R1 3Mb 10ms DropTail $ns duplex-link $R1 $R3 2Mb 30ms SFQ $ns duplex-link $R3 $R5 1Mb 30ms SFQ $ns duplex-link $R5 $R7 2Mb 30ms SFQ $ns duplex-link $R7 $R9 1Mb 30ms SFQ $ns duplex-link $R9 $R10 3Mb 10ms DropTail $ns duplex-link $R1 $R2 1Mb 30ms SFQ $ns duplex-link $R2 $R4 1Mb 30ms SFQ $ns duplex-link $R4 $R6 2Mb 30ms SFQ $ns duplex-link $R6 $R8 1Mb 30ms SFQ $ns duplex-link $R8 $R9 2Mb 30ms SFQ $ns duplex-link $R3 $R4 1Mb 30ms SFQ $ns duplex-link $R5 $R6 1Mb 30ms SFQ $ns duplex-link $R7 $R8 1Mb 30ms SFQ # Ve dang so do mang

$ns duplex-link-op $R0 $R1 orient right $ns duplex-link-op $R1 $R3 orient right $ns duplex-link-op $R3 $R5 orient right

$ns duplex-link-op $R7 $R9 orient right $ns duplex-link-op $R9 $R10 orient right $ns duplex-link-op $R1 $R2 orient 0.333 $ns duplex-link-op $R2 $R4 orient right $ns duplex-link-op $R4 $R6 orient right $ns duplex-link-op $R6 $R8 orient right $ns duplex-link-op $R8 $R9 orient 1.667 $ns duplex-link-op $R3 $R4 orient 0.333 $ns duplex-link-op $R5 $R6 orient 0.333 $ns duplex-link-op $R7 $R8 orient 0.333 # Ghi chu #$ns duplex-link-op $R0 $R1 label " 3M " $ns duplex-link-op $R1 $R3 label " 2M " $ns duplex-link-op $R3 $R5 label " 1M " $ns duplex-link-op $R5 $R7 label " 2M " $ns duplex-link-op $R7 $R9 label " 1M " #$ns duplex-link-op $R9 $R10 label " 3M " $ns duplex-link-op $R1 $R2 label " 1M " $ns duplex-link-op $R2 $R4 label " 1M " $ns duplex-link-op $R4 $R6 label " 2M " $ns duplex-link-op $R6 $R8 label " 1M " $ns duplex-link-op $R8 $R9 label " 2M" $ns duplex-link-op $R3 $R4 label " 1M " $ns duplex-link-op $R5 $R6 label " 1M " $ns duplex-link-op $R7 $R8 label " 1M " #$ns duplex-link-op $R3 $R5 queuePos 1.5 $R0 label "Source" $R10 label "Destination" #--- # 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 sink2 f1 f2 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 bw2 [$sink2 set bytes_] set now [$ns now]

puts $f1 "$now [expr $bw1/$time*8/1000000]" puts $f2 "$now [expr $bw2/$time*8/1000000]"

# Reset gia tri bytes_ cua sink

$sink1 set bytes_ 0 $sink2 set bytes_ 0

#Dinh thoi goi lai ham record sau chu ky $time

$ns at [expr $now+$time] "record" }

#---

# Ham tao mot nguon luu luong gan vao node voi sink, size goi, # burst, idle time, rate va colour cua luu luong

proc attach-expoo-traffic { node sink size burst idle rate } { set ns [Simulator instance]

set source [new Agent/CBR/UDP] $ns attach-agent $node $source set traffic [new Traffic/Expoo] $traffic set packet-size $size $traffic set burst-time $burst $traffic set idle-time $idle $traffic set rate $rate

$source attach-traffic $traffic $ns connect $source $sink

return $source }

#--- # Thu tuc xuat tong so packet nhan duoc o cac sink

proc recv-pkts {} { global sink1 sink2

set ns [Simulator instance]

set msg " Luong 1 da truyen [$sink1 set expected_] goi, mat [$sink1 set nlost_] goi, ti le mat goi la [string range [expr [$sink1 set nlost_]*100.0/[$sink1 set expected_]] 0 3] */*"

puts $msg

$ns trace-annotate $msg

set msg " Luong 2 da truyen [$sink2 set expected_] goi, mat [$sink2 set nlost_] goi, ti le mat goi la [string range [expr [$sink2 set nlost_]*100.0/[$sink2 set expected_]] 0 3] */*"

puts $msg

$ns trace-annotate $msg }

#---

# Thu tuc dong file va the hien ket qua khi ket thuc mo phong

proc finish {} { global ns nf f1 f2 $ns flush-trace close $nf close $f1 close $f2

exec xgraph unit_1_1.tr unit_1_2.tr -M -bg white -fg black -zg black \

-geometry 800x500 -y "BW (Mbps)" -x "Time (sec)" \

-t "Bai 1: Mang IP khong ho tro MPLS" -tf "helvetica-12" & exec nam -r 6ms bai1.nam &

exit 0 }

#--- # Tao ra sink1, sink2 gan voi nut R10 (day la noi thu nhan traffic)

set sink1 [new Agent/LossMonitor] set sink2 [new Agent/LossMonitor] $ns attach-agent $R10 $sink1 $ns attach-agent $R10 $sink2

# Tao ra nguon luu luong src1, src2 gan voi nut R0 bang cach

# goi ham attach-expoo-traffic. Ca 2 luong co goi size=700B, rate=0.8bps

set src1 [attach-expoo-traffic $R0 $sink1 600B 0ms 0ms 0.9Mb ] $src1 set fid_ 100

$ns color 100 green

set src2 [attach-expoo-traffic $R0 $sink2 600B 0ms 0ms 0.9Mb ] $src2 set fid_ 200

exec clear >@ stdout

puts "\n BAI 1: MO PHONG HOAT DONG MANG IP KHONG HO TRO MPLS \n"

$ns at 0.0 "record"

$ns at 0.5 "$ns trace-annotate {Luong 1: BW=0.9M (Start=0.5 stop=5.0)}" $ns at 0.5 "$src1 start"

$ns at 2.0 "$ns trace-annotate {Luong 2: BW=0.9M (Start=2.0 stop=5.0)}" $ns at 2.0 "$src2 start"

$ns at 2.5 "$ns trace-annotate {Ca 2 luong cung di tren duong ngan nhat ==> Su dung BW khong hieu qua !}"

$ns at 5.0 "$src1 stop" $ns at 5.0 "$src2 stop" $ns at 5.5 "recv-pkts" $ns at 5.5 "finish" $ns run

II. Mô phỏng mạng MPLS sử dụng định tuyến ràng buộc

############################################################### # BAI 2: MO PHONG DINH TUYEN RANG BUOC TRONG MPLS DOMAIN # # Duong rang buoc duoc tinh toan tu dong # ############################################################### # Tao ra mot doi tuong mo phong

set ns [new Simulator] $ns rtproto DV

# Tao file de xuat ket qua cho NAM

set nf [open bai2.nam w] $ns namtrace-all $nf

# Tao cac file de luu du lieu cho xgraph

set f1 [open unit_2_1 w] set f2 [open unit_2_2 w] set f3 [open unit_2_3 w]

# So do ket noi mang # # 1M 2M 1M # LSR2---LSR4---LSR6---LSR8 # / / / / \ # / / / / \ # 1M / 1M / 1M / 1M / \ 2M # / / / / \ # / / / / \ # R0---LSR1---LSR3---LSR5---LSR7---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] set LSRmpls1 [$LSR1 get-module "MPLS"]

Một phần của tài liệu Kỹ thuật điều khiển lưu lượng trong chuyển mạch nhãn đa giao thức (Trang 60 - 107)