Professional Documents
Culture Documents
Tên Của Luận Văn: Trường Đại Học Công Nghệ
Tên Của Luận Văn: Trường Đại Học Công Nghệ
VŨ VĂN TRƯỞNG
Hà Nội - 2009
Trang-2-
Tôi xin cam đoan toàn bộ những nội dung và số liệu trong luận văn thạc
sĩ: “Kỹ thuật lưu lượng trong mạng chuyển mạch nhãn đa giao thức” là do tôi
Vũ Văn Trưởng
Trang-3-
LỜI CẢM ƠN
Để hoàn thành chương trình cao học và viết luận văn này,
Trước hết, tôi xin chân thành cảm ơn đến quí thầy cô
trường Đại học Công nghệ- Đại học Quốc gia Hà Nội, đặc
biệt là những thầy cô đã tận tình dạy bảo cho tôi suốt thời
gian học tập tại trường.
Tôi xin gửi lời biết ơn sâu sắc đến Phó giáo sư – Tiến
sĩ Trần Quang Vinh đã dành rất nhiều thời gian và tâm
huyết hướng dẫn nghiên cứu và giúp tôi hoàn thành luận
văn tốt nghiệp.
Mặc dù tôi đã có nhiều cố gắng hoàn thiện luận văn
bằng tất cả sự nhiệt tình và năng lực của mình, tuy
nhiên không thể tránh khỏi những thiếu sót, rất mong
nhận được những đóng góp quí báu của quí thầy cô và các
bạn.
MỤC LỤC
Trang phụ bìa .................................................................................................... 1
LỜI CAM ĐOAN .............................................................................................. 2
LỜI CẢM ƠN .................................................................................................... 3
MỤC LỤC .......................................................................................................... 4
THUẬT NGỮ VIẾT TẮT ................................................................................ 7
DANH SÁCH CÁC BẢNG............................................................................. 11
DANH SÁCH CÁC HÌNH MINH HỌA ....................................................... 11
MỞ ĐẦU .......................................................................................................... 13
Chương 1: CHUYỂN MẠCH NHÃN ĐA GIAO THỨC MPLS ................ 15
1.1 Tổng quan .............................................................................................. 15
1.1.1 Tính thông minh phân tán ............................................................. 15
1.1.2 MPLS và mô hình tham chiếu OSI ............................................... 16
1.2 Các khái niệm cơ bản trong MPLS .................................................... 17
1.2.1 Miền MPLS (MPLS domain)........................................................ 17
1.2.2 Lớp chuyển tiếp tương đương (FEC) .......................................... 18
1.2.3 Nhãn và chồng nhãn ...................................................................... 18
1.2.4 Hoán đổi nhãn (Label Swapping) ................................................ 19
1.2.5 Đường chuyển mạch nhãn LSP (Label Switched Path) ............. 19
1.2.6 Chuyển gói qua miền MPLS ......................................................... 21
1.3 Mã hóa nhãn và các chế độ đóng gói nhãn MPLS ............................ 21
1.3.1 Mã hóa chồng nhãn ....................................................................... 21
1.3.2 Chế độ Frame ................................................................................. 23
1.3.3 Chế độ Cell ..................................................................................... 23
1.4 Cấu trúc chức năng MPLS .................................................................. 25
1.4.1 Kiến trúc một nút MPLS (LER và LSR)..................................... 25
1.4.2 Mặt phẳng chuyển tiếp (mặt phẳng dữ liệu) ............................... 26
1.4.3 Mặt phẳng điều khiển.................................................................... 28
1.5 Hoạt động chuyển tiếp MPLS ............................................................. 28
1.5.1 Hoạt động trong mặt phẳng chuyển tiếp ..................................... 28
1.5.2 Gỡ nhãn ở chặng áp cuối PHP (Penultimate Hop Popping) ..... 29
1.5.3 Một ví dụ hoạt động chuyển tiếp gói ............................................ 30
1.6 Ưu điểm và ứng dụng của MPLS ........................................................ 31
1.6.1 Đơn giản hóa chức năng chuyển tiếp ........................................... 31
1.6.2 Kỹ thuật lưu lượng ........................................................................ 31
1.6.3 Định tuyến QoS từ nguồn ............................................................. 31
1.6.4 Mạng riêng ảo VPN ....................................................................... 31
1.6.5 Chuyển tiếp có phân cấp (Hierachical forwarding) ................... 32
1.6.6 Khả năng mở rộng (Scalability) ................................................... 32
1.7 Tổng kết chương ................................................................................... 32
Chương 2: ĐỊNH TUYẾN VÀ BÁO HIỆU MPLS ...................................... 34
2.1 Định tuyến trong MPLS ...................................................................... 34
2.1.1 Định tuyến ràng buộc (Constrain-based Routing) ..................... 34
2.1.2 Định tuyến tường minh (Explicit Routing) ................................. 35
2.2 Các chế độ báo hiệu MPLS ................................................................... 36
2.2.1 Chế độ phân phối nhãn ................................................................. 36
Trang-5-
Bảng 1: Một số giao thức phân phối nhãn trong MPLS .................................. 40
Bảng 2: Các loại bản tin LDP ............................................................................. 43
Bảng 3: Các lớp dịch vụ kỹ thuật lưu lượng...................................................... 56
MỞ ĐẦU
Trong những năm gần đây, với sự phát triển nhanh chóng các dịch vụ IP
và sự bùng nổ Internet đã dẫn đến một loạt thay đổi trong nhận thức kinh doanh
của các nhà khai thác. Lưu lượng lớn nhất hiện nay trên mạng trục là lưu lượng
IP. Giao thức IP thống trị toàn bộ các giao thức lớp mạng, hệ quả là tất cả các
xu hướng phát triển công nghệ lớp dưới đều hỗ trợ cho IP. Nhu cầu thị trường
cấp bách cho mạng tốc độ cao với chi phí thấp là cơ sở cho một loạt các công
nghệ mới ra đời, trong đó có MPLS.
Công nghệ MPLS đã chứng minh được tính ứng dụng thực tiễn các tính
năng vượt trội của nó so với các công nghệ chuyển mạch truyền thống khác
như ATM. Tập đoàn BCVT Việt Nam đã lựa chọn IP/MPLS làm công nghệ
cho lớp chuyển tải mạng NGN đang triển khai trên phạm vi toàn quốc. Một
trong những ưu điểm lớn nhất của MPLS là ở khả năng thực hiện kỹ thuật lưu
lượng. Đây cũng là đối tượng nghiên cứu chính của học viên khi thực hiện luận
văn này.
Luận văn được tổ chức thành 4 chương với các nội dung chính như sau:
Chương 1 - Chuyển mạch nhãn đa giao thức : Giới thiệu tổng
quan công nghệ MPLS, các khái niệm cơ bản, kiến trúc chức năng và cơ chế
hoạt động của MPLS.
Chương 2 - Định tuyến và báo hiệu MPLS : Trình bày các kỹ thuật định
tuyến được hỗ trợ bởi MPLS, các chế độ báo hiệu và một số giao thức báo hiệu
phân phối nhãn của MPLS.
Chương 3 - Kỹ thuật lưu lượng trong MPLS : Trình bày các khái niệm
và mục tiêu của kỹ thuật lưu lượng, khả năng và các cơ chế thực hiện kỹ thuật
lưu lượng của MPLS.
Nội dung tập trung vào vấn đề ánh xạ lưu lượng lên topology
vật lý, tức là tính toán đường đi tốt nhất qua mạng của lưu lượng sao cho
mạng hoạt động hiệu quả và tin cậy. Các vấn đề bảo vệ khôi phục đường - một
trong những nhiệm vụ của kỹ thuật lưu lượng cũng được trình bày trong
chương này.
Trang-14-
Chương 4 - Mô phỏng MPLS-TE và đánh giá : Học viên báo cáo kết
quả thực hiện mô phỏng MPLS-TE trên máy tính với phần mềm NS-2 để làm
rõ cơ chế thực hiện kỹ thuật lưu lượng của MPLS. Các mô hình bảo vệ khôi
phục lưu lượng của MPLS cũng được mô phỏng trong phần này.
Trang-15-
một hoặc nhiều chỉ mục nhãn tổ chức theo nguyên tắc vào sau ra trước (LIFO).
Tại mỗi chặng trong mạng chỉ xử lý nhãn hiện hành trên đỉnh chồng nhãn.
Chính nhãn này sẽ được LSR sử dụng để chuyển tiếp gói.
các giá trị nhãn ở các LSR dọc theo LSP bằng cách dùng thủ tục hoán đổi
nhãn. Khái niệm LSP tương tự như khái niệm mạch ảo (VC) trong ATM.
để hình thành một mục nhập nhãn. Hình 10 minh họa định dạng một mục nhập
nhãn trong chồng nhãn[1].
Hình 10: Định dạng một entry trong stack nhãn MPLS
Nhóm 32 bit ở hình trên là một mục nhập trong chồng nhãn, trong đó phần
giá trị nhãn thực sự chỉ có 20 bit. Tuy nhiên người ta thường gọi chung cho cả
mục nhập 32 bit nói trênlà một nhãn. Vì vậy khi thảo luận về nhãn cần phân
biệt là đang xem xét giá trị nhãn 20 bit hay nói về mục nhập 32 bit trong chồng
nhãn. Phần thông tin 12 bit cộng thêm gồm các trường sau đây:
EXP (một số tài liệu gọi là CoS - Class of Service – Lớp dịch vụ) –
Gồm 3 bit, có thể là một hàm của trường TOS (Type of Service- Loại
dịch vụ) hoặc Diffserv- Dịch vụ phân biệt trong gói IP. Đa số các nhà
sản xuất sử dụng các bit này để mang chỉ thị QoS, thường là copy trực
tiếp từ các bit TOS trong gói IP. Khi gói MPLS vào hàng đợi, có thể sử
dụng các bit EXP theo cách giống như các bit ưu tiên trong IP.
S – Gồm 1 bit, chỉ thị đáy của chồng nhãn. Khi một nhãn nằm ở đáy
chồng nhãn, thì bit S đặt lên 1; còn các nhãn khác có bit S đặt về 0. Bit
S là phương tiện để xác định đáy của chồng nhãn nằm ở đâu.
TTL – Gồm 8 bit, thường là copy trực tiếp từ trường TTL của header
IP, được giảm đi 1 qua mỗi chặng để chặn loop định tuyến giống như
IP. Tuy nhiên, các bit TTL cũng có thể được đặt khác với TTL trong
gói IP, thường dùng khi nhà khai thác mạng muốn che giấu topology
mạng MPLS. MPLS có thể hoạt động ở các chế độ: chế độ frame và
chế độ cell.
Trang-23-
Hình 11: Shim header được “chêm” vào giữa header lớp 2 và lớp 3
Router gởi frame phải có cách để báo cho router nhận biết rằng frame
này có chứa shim header, cách thức này khác nhau giữa các kỹ thuật lớp 2.
Ethernet sử dụng cặp giá trị ethertype 0x8847 và 0x8848 để chỉ thị frame đang
mang gói MPLS unicast và multicast tương ứng. PPP sử dụng NCP
(Network Control Program) sửa đổi gọi là MPLSCP (MPLS Control
Protocol) và đánh dấu tất cả các gói có chứa shim header bằng giá trị
0x8281 trong trường PPP Protocol.
1.3.3 Chế độ Cell
Chế độ Cell được dùng khi ta có một mạng gồm các ATM-LSR (là
các chuyển mạch ATM có hỗ trợ MPLS), trong đó nó sử dụng các giao
thức phân phối nhãn MPLS để trao đổi thông tin VPI/VCI thay cho báo
hiệu ATM. Nhãn được mã hoá trong trường gộp VPI/VCI, trong VPI hoặc
VCI của header cell ATM (RFC 3035).
Trang-24-
Hình 13: Đóng gói (encapsulation) gói có nhãn trên liên kết ATM
Khi đóng gói có nhãn MPLS trên ATM, toàn bộ chồng nhãn được đặt
trong AAL5 PDU. Giá trị thực sự của nhãn đỉnh được đặt trong trường
VPI/VCI, hoặc đặt trong trường VCI nếu 2 ATM-LSR kết nối nhau qua một
đường ảo ATM (VP). Mục nhập đỉnh chồng nhãn phải chứa giá trị 0 (coi như
mục nhập “giữ chỗ”) và được bỏ qua khi nhận. Lý do các nhãn phải chứa ở cả
trong AAL5 PDU và header ATM là để mở rộng độ sâu chồng nhãn. Khi các
cell ATM đi đến cuối LSP, nó sẽ được tái hợp lại. Nếu có nhiều nhãn trong
chồng nhãn, AAL5 PDU sẽ bị phân đoạn lần nữa và nhãn hiện hành trên đỉnh
chồng nhãn sẽ được đặt vào trường VPI/VCI.
Trang-25-
Base) trong mặt phẳng chuyển tiếp. Một LER có thể có thể chuyển tiếp các gói
IP, gắn nhãn vào gói (label push), hoặc gỡ nhãn ra khỏi gói (label pop), trong
khi đó một transit-LSR chỉ có khả năng chuyển tiếp gói có nhãn, thêm hoặc bỏ
bớt nhãn.
Như vậy, khi một gói không nhãn thuộc một FEC đi vào miền MPLS,
ingress-LER sẽ sử dụng một mục nhập LFIB loại FTN để chuyển gói không
nhãn thành gói có nhãn. Sau đó, tại các transit-LSR sử dụng một mục nhập
LFIB loại ILM để hoán đổi nhãn vào bằng nhãn ra. Cuối cùng, tại egress-LER
sử dụng một mục nhập LFIB loại ILM để gỡ bỏ nhãn đến và chuyển tiếp gói
không nhãn đến router kế tiếp.
1.4.2.2 Thuật toán chuyển tiếp nhãn
Các nút MPLS sử dụng giá trị nhãn trong các gói đến làm chỉ
mục để tra bảng LFIB. Khi tìm thấy mục nhập tương ứng với nhãn đến, nút
MPLS thay thế nhãn trong gói bằng nhãn ra và gởi gói đi qua giao diện ra để
đến chặng kế được đặc tả trong mục nhập phụ NHLFE. Nếu mục nhập phụ có
chỉ định hàng đợi ra, nút MPLS sẽ đặt gói trên hàng đợi đã chỉ định. Trường
hợp nút MPLS duy trì một LFIB riêng cho mỗi giao diện, nó sẽ dùng LFIB của
giao diện mà gói đến để tra cứu chuyển tiếp gói[1].
Hình 16: Quá trình chuyển tiếp một gói đến chặng kế
Nút MPLS có thể lấy định vị được các thông tin chuyển tiếp cần thiết
trong LFIB chỉ trong một lần truy xuất bộ nhớ, tốc độ thực thi rất cao nhờ các
chip ASIC.
1.4.2.3 Mục nhập chuyển tiếp nhãn ở chặng kế tiếp (NHLFE )
NHLFE là mục nhập phụ của ILM hoặc FTN, nó chứa các thông tin sau:
- Hop kế (chặng tiếp theo) của gói
- Tác vụ sẽ được tiến hành trên chồng nhãn của gói như sau:
Trang-28-
- Swap: Thay nhãn ở đỉnh của chồng nhãn bằng một nhãn mới được chỉ định.
- Pop: Bóc một nhãn ra khỏi chồng nhãn.
- Push: Chồng thêm một nhãn vào trong chồng nhãn.
sung theo các trường khác trong header IP như ToS hay Diffserv. FIB sử dụng
FEC để xác định ra giao tiếp đi đến chặng kế cho các gói IP, cách thực hiện
giống như các router cổ điển.
tiếp trên header IP. Để tránh việc xử lý phát sinh thêm này, MPLS định nghĩa
một tiến trình gọi là gỡ nhãn ở chặng áp cuối PHP (penultimate hop
popping), trong đó router áp cuối trên LSP sẽ gỡ nhãn thay vì egress-LER phải
làm việc đó. Nhờ vậy cắt giảm được việc xử lý ở router cuối cùng trên LSP.
1.5.3 Một ví dụ hoạt động chuyển tiếp gói
Trong ví dụ này thể hiện đường đi và các hoạt động chuyển tiếp được
thực hiện ở mỗi nút cho 2 LSP là LSP-1 và LSP-2. LSP-1 bắt đầu từ LER E1,
tại đó có một gói IP đến với địa chỉ đích là “a.b.c.d”. LER E1 kiểm tra bảng
FIB của nó và xác định rằng gói này thuộc về FEC “a.b.c/24”, nó gắn nhãn A
lên gói và xuất ra trên giao tiếp số 2. Tiếp theo, LSR S1 thấy có gói gắn nhãn
A đến trên giao tiếp số 1, LFIB của nó chỉ thị rằng gói sẽ xuất ra trên giao tiếp
số 4 và nhãn sẽ được thay thế bằng nhãn D. Gói có nhãn đi ra trên giao tiếp số
4 trên LSR S1 nối đến giao tiếp số 1 trên LSR S4.
Internet. Hơn nữa, cơ chế xếp chồng nhãn cho phép cấu hình nhiều VPN lồng
nhau trên hạ tầng mạng.
1.6.5 Chuyển tiếp có phân cấp (Hierachical forwarding)
Thay đổi đáng kể nhất được MPLS đưa ra không phải ở kiến trúc định
tuyến mà là kiến trúc chuyển tiếp. Sự cải tiến trong kiến trúc chuyển tiếp có tác
động đáng kể đến khả năng cung cấp chuyển tiếp phân cấp. Chuyển tiếp phân
cấp cho phép lồng một LSP vào trong một LSP khác (xếp chồng nhãn hay còn
gọi là điều khiển gói đa cấp). Thực ra chuyển tiếp phân cấp không phải là kỹ
thuật mới; ATM đã cung cấp cơ chế chuyển tiếp 2 mức với khái niệm đường ảo
(VP) và kênh ảo (VC). Tuy nhiên MPLS cho phép các LSP được lồng vào nhau
một cách tùy ý, cung cấp điều khiển gói đa cấp cho việc chuyển tiếp[5].
1.6.6 Khả năng mở rộng (Scalability)
Chuyển mạch nhãn cung cấp một sự tách biệt toàn diện hơn giữa định
tuyến liên miền (inter-domain) và định tuyến nội miền (intra-domain), điều
này cải thiện đáng kể khả năng mở rộng của các tiến trình định tuyến. Hơn
nữa, khả năng mở rộng của MPLS còn nhờ vào FEC (thu gom luồng), và xếp
chồng nhãn để hợp nhất (merging) hoặc lồng nhau (nesting) các LSP. Ngoài
ra, nhiều LSP liên kết với các FEC khác nhau có thể được trộn vào cùng một
LSP. Sử dụng các LSP lồng nhau cũng cải thiện khả năng mở rộng của MPLS.
1.7 Tổng kết chương
Trong các giao thức lớp mạng truyền thống, khi một gói đi từ một router
đến chặng kế tiếp thì quyết định chuyển tiếp phải được đưa ra độc lập ở mỗi
chặng. Việc chọn chặng kế dựa trên việc phân tích header của gói và kết quả
chạy giải thuật định tuyến. Một router xem hai gói là thuộc cùng một luồng
nếu chúng có cùng prefix địa chỉ mạng bằng cách áp dụng luật “longest prefix
match” cho địa chỉ đích của từng gói. Khi gói di chuyển qua mạng, ở mỗi
chặng đến lượt mình sẽ lại kiểm tra gói và gán lại vào một luồng.
Công nghệ chuyển mạch nhãn cho phép thay thế chuyển tiếp gói
truyền thống theo kiểu chặng đến chặng dựa trên địa chỉ đích bằng kỹ thuật
chuyển tiếp hoán đổi nhãn. Kỹ thuật này dựa vào các nhãn có độ dài cố định,
Trang-33-
cải thiện được năng lực định tuyến lớp 3, đơn giản hóa việc chuyển gói, cho
phép dễ dàng mở rộng và đặc biệt là hỗ trợ kỹ thuật lưu lượng.
Trang-34-
Để minh họa hoạt động của định tuyến ràng buộc, xét cấu trúc mạng
“con cá” kinh điển như hình 20. Giả sử rằng định tuyến ràng buộc sử dụng số
chặng (hop-count) và băng thông khả dụng làm các độ đo. Lưu lượng 600
Kbps được định tuyến trước tiên, sau đó là lưu lượng 500 Kbps và 200
Kbps. Cả 3 loại lưu lượng này đều hướng đến cùng router R4. Ta thấy rằng:
Vì lưu lượng 600 Kbps được định tuyến trước nên nó đi theo đường
ngắn nhất là R8-R2-R3-R4-R5.Vì băng thông khả dụng là như
nhau trên tất cả các chặng kênh (1 Mbps), nên lưu lượng 600 Kbps
chiếm 60% băng thông.
Sau đó, vì băng thông khả dụng của đường ngắn nhất không đủ cho cả
2 lưu lượng 600Kbps và 500 Kbps, nên lưu lượng 500 Kbps được định
tuyến đi theo đường mới qua R6 và R7 mặc dù nhiều hơn một chặng so
với đường cũ.
Với lưu lượng 200 Kbps tiếp theo, vì vẫn còn băng thông khả dụng trên
đường ngắn nhất nên đường này được chọn để chuyển lưu lượng 200
Kbps.
Định tuyến ràng buộc có 2 kiểu online và offline. Kiểu online cho phép các
router tính đường cho các LSP bất kỳ lúc nào. Trong kiểu offline, một server
tính đường cho các LSP theo định kỳ (chu kỳ có thể được chọn bởi nhà quản
trị, thường là vài giờ hoặc vài ngày). Các LSP được báo hiệu thiết lập theo các
đường đã được chọn.
minh nghiêm ngặt (strict ER). CR-LSP được mã hóa như là một chuỗi các
ER-Hop (chặng tường minh) chứa trong một cấu trúc Type-Length-Value
ràng buộc (constraint-based route TLV). Mỗi ER-Hop có thể xác định một
nhóm các nút. CR-LSP khi đó bao gồm tất cả các nhóm nút đã được xác định
theo thứ tự xuất hiện trong cấu trúc TLV.
2.2.1.1 Phân phối nhãn không cần yêu cầu (Downstream Unsolicited)
Downstream-LSR phân phối các gán kết nhãn đến upstream-LSR mà
không cần có yêu cầu thực hiện việc kết nhãn. Nếu downstream-LSR chính
là chặng kế đối với định tuyến IP cho một FEC cụ thể thì upstream-LSR có thể
sử dụng kiểu kết nhãn này để chuyển tiếp các gói trong FEC đó đến
downstream-LSR.
điểm là LSR chỉ cần duy trì số gán kết FEC-nhãn ít hơn, nhưng đáp ứng
chậm khi thay đổi định tuyến vì gán kết nhãn mới phải được yêu cầu và phân
phối lại. Đây là chế độ thích hợp cho các LSR chỉ hỗ trợ một số lượng nhãn
hạn chế (như các chuyển mạch ATM)[3].
Session: Để thiết lập, thương lượng các thông số cho việc khởi tạo, duy
trì và chấm dứt các phiên ngang hàng LDP. Nhóm này bao gồm bản tin
Initialization, KeepAlive.
Advertisement: Để tạo ra, thay đổi hoặc xóa các ánh xạ FEC tới nhãn.
Nhóm này bao gồm bản tin Label Mapping, Label Withdrawal, Label
Release, Label Request, Label Request Abort.
Notification: Để truyền đạt các thông tin trạng thái, lỗi hoặc cảnh báo.
Các thông điệp Discovery được trao đổi trên UDP. Các kiểu thông điệp
còn lại đòi hỏi phân phát tin cậy nên dùng TCP. Trường hợp hai LSR
có kết nối lớp 2 trực tiếp thì thủ tục phát hiện neighbor trực tiếp như
sau:
Một LSR định kỳ gửi đi bản tin Hello tới các cổng UDP 646 địa chỉ
multicast (tất cả các router trong subnet).
Tất cả các LSR tiếp nhận bản tin Hello này trên cổng UDP. Đến một
thời điểm nào đó LSR sẽ biết được tất cả các LSR khác mà nó có kết
nối trực tiếp.
Khi LSR nhận biết được địa chỉ của LSR khác bằng cơ chế này thì nó
sẽ thiết lập kết nối TCP đến LSR đó. Khi đó phiên LDP được thiết lập
giữa 2 LSR.
Phiên LDP là phiên song hướng nên mỗi LSR ở hai đầu kết nối đều có thể
yêu cầu và gửi liên kết nhãn.
Trong trường hợp hai LSR không có kết nối lớp 2 trực tiếp (neighbor
gián tiếp) thì LSR định kỳ gửi bản tin Hello đến cổng UDP đã biết tại địa chỉ IP
xác định được khai báo khi lập cấu hình. Đầu nhận bản tin này có thể trả lời lại
bằng bản tin Hello khác và việc thiết lập các phiên LDP được thực hiện như
trên.
- Label Request Abort : Nếu bản tin Label Request cần phải hủy bỏ trước khi
được chấp nhận (do nút kế tiếp trong FEC yêu cầu đã thay đổi), thì LSR yêu
cầu sẽ loại bỏ yêu cầu trước đó bằng bản tin Label Request Abort.
2.3.4 LDP điều khiển độc lập và phân phối theo yêu cầu
Ví dụ dưới đây minh họa việc sử dụng bản tin Label Request và Label
Mapping trong chế độ công bố nhãn theo yêu cầu và điều khiển LSP độc lập.
Trình tự thời gian trao đổi các bản tin LDP giữa các đối tác (peer) thiết lập một
LSP từ router lối vào R1 qua R2 rồi đến router lối ra R3 cho một FEC có prefix
“a.b/16” . R1 khởi tạo tiến trình bằng cách yêu cầu một nhãn cho FEC “a.b/16”
từ chặng kế của nó là R2. Vì sử dụng điều khiển độc lập nên R2 trả ngay một
ánh xạ nhãn về cho R1 trước khi R2 nhậnđược ánh xạ nhãn từ phía
downstream là R3. Cả R2 và R3 đáp ứng bằng bản tin Label Mapping, kết quả
là trong FIB của R1 và LFIB của R2, R3 có các entry gán kết nhãn hình thành
nên đường chuyển mạch nhãn LSP[1].
Hình 31: Ví dụ LDP chế độ điều khiển độc lập theo yêu cầu
LDP còn hỗ trợ các chế độ phân phối nhãn khác. Khi cấu hình ở chế độ
công bố không cần yêu cầu (downstream unsolicited), các router sẽ không dùng
Trang-46-
bản tin Label Request. Nếu điều khiển tuần tự (ordered control) được cấu hình
trên mỗi giao diện, các yêu cầu nhãn sẽ làm cho các bản tin Label Mapping
được trả về theo thứ tự từ R3 đến R2, rồi mới từ R2 về R1. Tổng quát, trong
chế độ phân phối theo yêu cầu điều khiển tuần tự, ánh xạ nhãn diễn ra đầu tiên
ở router lối ra, rồi sau đó lần lượt ngược về đến router lối vào.
LSR. Việc thiết lập một CR-LSP có thể thất bại vì nhiều lý do khác nhau
và các lỗi sẽ được báo hiệu bằng bản tin Notification[3].
A sẽ xem xét nút trừu tượng đầu tiên trong đối tượng ER là LSR B, tìm kết
nối đến LSR B và gởi bản tin Label Request trên kết nối đó. Khi LSR B nhận
bản tin Label Request, LSR B nhận thấy nó là nút trừu tượng đầu tiên trong
đối tượng ER. LSR B sau đó tìm kiếm nút trừu tượng kế tiếp là LSR C và
tìm kết nối đến LSR C. Sau đó LSR B thay đổi đối tượng ER và gởi bản tin
Label
cầu, và lưu ServiceID của nó vào bảng ERB. Cuối cùng, nó chuyển tiếp bản tin
LSP Mapping tới nút MPLS kề trước.
(peak rate), thùng thẻ (token bucket) để định nghĩa tốc độ và kích cỡ bùng phát,
đơn vị khống chế tối thiểu (minimum policed unit) và kích thước gói tối đa.
Khi bản tin PATH đi đến đích, bên nhận đáp ứng bằng một bản tin
RESV nếu nó đồng ý khởi tạo việc gán kết nhãn được yêu cầu trong bản tin
PATH. Bản tin RESV được truyền về theo đường ngược chiều với bản tin
PATH bằng cách dùng thông tin chặng kề trước trong bản tin PATH.
RESV cũng chứa cùng session-ID như ở bản tin PATH tương ứng, đối
tượng ghi tuyến tùy chọn (route record) và thông tin lệ thuộc kiểu dự trữ
(reservation style). Kiểu FF (fixed filter) có một nhãn và Tspec được ấn định
cho mỗi cặp sender-receiver. Kiểu SE (shared explicit) ấn định một nhãn khác
nhau cho mỗi sender, nhưng tất cả chúng phải áp dụng cùng một dự trữ luồng
rõ ràng. Đối tượng record-route ghi nhận tuyến đường thực tế được chọn bởi
LSP bắt đầu từ egress dẫn ngược về ingress. Nó có thể được một router
dùng để ghim một tuyến tường minh thả lỏng bằng cách copy tuyến ghi
được trong bản tin RESV sang đối tượng tuyến tường minh ERO trong một
bản tin PATH được gửi theo chiều ngược lại.
2.5.2 Các bản Tear Down, Error và Hello của RSVP-TE [1]
RSVP-TE định nghĩa 2 bản tin dành cho việc giải tỏa LSP là PATH
TEAR và RESV TEAR. Hai bản tin này được gửi theo chiều ngược với bản tin
PATH và RESV tương ứng. Bản tin TEAR xóa bỏ bất kỳ trạng thái đã cài đặt
liên quan đến bản tin PATH hay RESV. Các bản tin TEAR cũng có thể dùng
để xóa các trạng thái đáp ứng cho một lỗi ở bước đầu tiên trong hoạt động tái
định tuyến.
Có các bản tin thông báo lỗi cho bản tin PATH và RESV cũng như bản
tin RESV CONFIRMATION tùy chọn. Các bản tin lỗi cho biết có sự vi
phạm chính sách, mã hóa bản tin hoặc một số sự cố khác. Ví dụ, khi một LSP
thấy rằng nó không thể hỗ trợ Tspec đặc tả trong một bản tin RESV, nó sẽ
không chuyển tiếp bản tin RESV về cho phía upstream, thay vào đó nó tạo ra
một bản tin RESVERR gửi cho phía downstream để xóa bỏ nỗ lực thiết lập
LSP. Tuyến tường minh và các tùy chọn record-route của RSVP-TE có một số
các mã lỗi để phục vụ cho việc debug. RFC 3209 định nghĩa bản tin Hello tùy
Trang-51-
chọn cho RSVP-TE, nó cho phép một LSR phát hiện một neighbor bị lỗi nhanh
hơn khi so với RSVP làm tươi tình trạng hoặc phát hiện lỗi đường truyền bằng
một giao thức định tuyến IP. Điều này khá hữu ích trong việc tái định tuyến
nhanh.
2.5.3 Thiết lập tuyến tường minh điều khiển tuần tự theo yêu cầu
Hình 34 ví dụ việc trao đổi bản tin RSVP-TE sử dụng đối tượng tuyến
tường minh ERO (explicit route object) để cài đặt một LSP đi qua một con
đường không phải là đường ngắn nhất. Router R1 xác định rằng nó sẽ ấn định
FEC “a.b/16” cho một đường hầm LSP, và nó tính ra một tuyến tường minh
R4-R5-R3 để đi đến chặng kế cho FEC đó. R1 khởi tạo việc thiết lập LSP này
bằng cách phát ra một bản tin PATH đến R4 với một ERO, Tspec, sender
template (có chứa địa chỉ của sender) và một đối tượng label request. Mỗi
bản tin RESV liên quan đến đường hầm LSP này đều mang session-ID
và filter-spec nguyên thủy của sender R1 để giữ mối tương quan với nhau. Tiếp
theo, R4 tiếp nhận yêu cầu này và gửi bản tin PATH đến router kế tiếp ghi
trong ERO là R5. Đến lượt mình, R5 gửi bản tin này đến egress-router R3. Tại
đích đến của bản tin PATH, R3 xác định rằng liên kết chặng R3-R5 có thể hỗ
trợ cho yêu cầu và đó là chặng cuối cùng trên đường dẫn cho FEC “a.b/16”. R3
đáp ứng bằng bản tin RESV có chứa ERO, Tspec của dung lượng dự trữ, một
filter spec thỏa mãn bên gửi, và gán một nhãn null ngầm (implicit null) cho
chặng liên kết này. Theo RFC 3031, nhãn null là một quy ước được dùng trong
phân phối nhãn cho phép egress-router (ở đây là R3) báo hiệu cho đối tác
upstream của nó biết rằng đây là chặng áp cuối (penultimate hop) của LSP, do
vậy cần gỡ nhãn đỉnh của stack (xem LFIB của LSR R5). Tiếp theo, R5 thu
nạp bản tin RESV yêu cầu cho chặng R5-R4, ấn định nhãn B và gởi bản tin
RESV đến router kề trước trong ERO là R4. Cuối cùng, R4 chấp nhận yêu cầu,
ấn định nhãn A và gởi bản tin RESV ngược về R1. Đến lúc này, đường LSP
được thiết lập xong và các gói có nhãn cho FEC “a.b/16” được chuyển tiếp qua
đường hầm[6].
Trang-52-
RSVP và xử lý trường hợp mất các bản tin PATH TEAR và RESV TEAR vì
hai bản tin này không được làm tươi trong hoạt động RSVP. Cuối cùng, giải
pháp này định nghĩa một bản tin tổng kết (summary) để làm tươi trạng thái mà
không yêu cầu truyền toàn bộ bản tin làm tươi. Các cải tiến này nhằm giảm
lượng overhead làm tươi của RSVP trong mạng MPLS.
tích hợp với chi phí thấp. Điều quan trọng là MPLS còn đề xuất khả năng tự
động hóa các chức năng kỹ thuật lưu lượng.
3.2.1 Khái niệm trung kế lưu lượng (traffic trunk)
MPLS giới thiệu khái niệm trung kế lưu lượng để thực hiện các mục tiêu
TE. Trung kế lưu lượng là một khối thu gom (aggregate) các luồng lưu lượng
thuộc cùng lớp, được đặt bên trong một LSP. Trong một số hoàn cảnh có thể
nới lỏng định nghĩa này để cho phép trung kế lưu lưu lượng thu gom lưu lượng
đa lớp.
Trong mô hình dịch vụ đơn lớp, một trung kế lưu lượng có thể đóng gói
toàn bộ lưu lượng giữa một ingress-router và một egress-router. Trong
trường hợp phức tạp hơn, lưu lượng của các lớp dịch vụ phân biệt được
ấn định vào các trung kế lưu lượng riêng biệt với các đặc tính khác nhau.
Trung kế lưu lượng là đối tượng có thể định tuyến (tương tự như ATM
VC).
Trung kế lưu lượng phân biệt với LSP là đường cho trung kế đi xuyên
qua. Trong bối cảnh hoạt động, một trung kế lưu lượng có thể chuyển từ
LSP này sang một LSP mới, hoặc nhiều trung kế lưu lượng cùng đi
chung trên một LSP.
Trung kế lưu lượng là đơn hướng.
thức bên dưới khi các gói được phân loại và ánh xạ vào FEC tại lối vào miền
MPLS. Thực tế, một trung kế lưu lượng có thể đặc trưng hóa bởi:
Ingress-LSR và egress-LSR của trung kế lưu lượng
Tập các FEC được ánh xạ vào trung kế lưu lượng
Một tập các thuộc tính nhằm xác định các đặc trưng hành vi của trung
kế.
Hai vấn đề cơ bản có ý nghĩa đặc biệt là: (1) Tham số hóa các trung kế lưu
lượng và (2) những quy luật sắp đặt và duy trì đường dẫn cho các trung kế lưu
lượng.
3.3.1 Các hoạt động cơ bản trên trung kế lưu lượng
Là các tiến trình khác nhau xảy ra trong thời gian sống của một trung kế lưu
lượng:
Establish : Tạo ra một trung kế lưu lượng bằng cách quyết định một
LSP, gán các nhãn MPLS và quan trọng nhất là gán tài nguyên cho trung
kế đó.
Activate : Làm cho trung kế lưu lượng bắt đầu chuyển dữ liệu bằng cách
dùng một số chức năng định tuyến để đưa lưu lượng vào trung kế.
Deactivate : Làm cho trung kế lưu lượng ngưng chuyển dữ liệu cũng
bằng cách dùng một chức năng định tuyến để dừng việc đưa lưu lượng
vào trung kế.
Modify Attributes : Thay đổi các đặc trưng của trung kế lưu lượng,
chẳng hạn như băng thông khả dụng.
Reroute : Chọn một đường mới cho trung kế lưu lượng (thường là do
một số sự cố trong mạng hoặc khi khôi phục xong sự cố).
Destroy : Loại bỏ hoàn toàn một trung kế lưu lượng khỏi mạng và thu
hồi tất cả các tài nguyên đã cấp phát cho nó.
3.3.2 Thuộc tính tham số lưu lượng (Traffic Parameter)
Thuộc tính tham số lưu lượng đặc tả băng thông đòi hỏi bởi trung kế lưu
lượng cùng với các đặc trưng lưu lượng khác như tốc độ đỉnh, tốc độ trung
bình, kích thước bùng phát cho phép, v.v... Dưới góc độ kỹ thuật lưu lượng, các
Trang-66-
tham số lưu lượng rất quan trọng vì chúng cho biết các yêu cầu về tài nguyên
của trung kế lưu lượng.
3.3.3 Thuộc tính lựa chọn và quản lý đường (chính sách chọn đường)
Là các tiêu chuẩn lựa chọn và duy trì đường dẫn cho trung kế lưu lượng.
Con đường thực sự được chọn xuyên qua mạng có thể được cấu hình tĩnh bởi
nhà điều hành hoặc được gán động do mạng dựa vào các thông tin từ IGP (như
IS-IS hoặc OSPF). Các thuộc tính cơ bản và các đặc trưng hành vi liên quan
đến chọn đường và quản lý đường cho trung kế lưu lượng được mô tả sau đây:
3.3.3.3 Thuộc tính Affinity lớp tài nguyên (Resource Class Affinity)
Thuộc tính này cho phép operator thiết lập các chính sách chọn đường
bằng việc bao gồm hay loại trừ một số liên kết nào đó. Mỗi liên kết được gán
một thuộc tính lớp tài nguyên (Resource-Class). Thuộc tính Affinity lớp tài
nguyên có dạng chuỗi bit như sau:
Affinity(32-bit), Mask(32-bit)
Mặt nạ lớp tài nguyên chỉ thị các bit nào trong lớp tài nguyên cần được
kiểm tra. Liên kết được bao hàm khi chọn đường nếu chuỗi Affinity trùng với
Trang-67-
Resource-Class sau khi cùng thực hiện phép AND với mặt nạ. Giá trị default
của mặt nạ là 0x0000FFFF[3].
Hình 42: Một ví dụ băng thông dự trữ cho từng mức ưu tiên
Trang-69-
Một khi router đầu nguồn nhận được các thông cáo này thì nó không chỉ
biết được topology mạng mà còn biết được các thông tin tài nguyên khả dụng
của từng liên kết. Điều này rất cần thiết để tính toán các đường thỏa mãn các
đòi hỏi của trung kế lưu lượng.
Hình 44: Băng thông khả dụng ứng với từng mức ưu tiên
Các giao thức IGP sẽ quảng bá các thuộc tính tài nguyên khi dưới các điều
kiện hoặc sự kiện nào đó như:
Khi liên kết thay đổi trạng thái (ví dụ up, down…)
Khi lớp tài nguyên của liên kết thay đổi do tái cấu hình nhân công hoặc
trong trường hợp băng thông khả dụng biến động qua các mức ngưỡng
đặt trước.
Theo định kỳ (dựa vào một timer), router sẽ kiểm tra các thuộc tính tài
nguyên và quảng bá cập nhật thông tin.
Khi tham gia thiết lập một đường LSP nhưng thất bại. Liên kết D
Các giao thức IGP sẽ quảng bá các thuộc tính tài nguyên khi dưới các điều
kiện hoặc sự kiện nào đó như:
Khi liên kết thay đổi trạng thái (ví dụ up, down…)
Khi lớp tài nguyên của liên kết thay đổi do tái cấu hình nhân công hoặc
trong trường hợp băng thông khả dụng biến động qua các mức ngưỡng
đặt trước.
Trang-71-
Theo định kỳ (dựa vào một timer), router sẽ kiểm tra các thuộc tính tài
nguyên và quảng bá cập nhật thông tin.
Khi tham gia thiết lập một đường LSP nhưng thất bại.
3.5.2 Tính toán LSP ràng buộc (CR-LSP)
LSP cho một trung kế lưu lượng có thể được khai báo tĩnh hoặc tính
toán động. Việc tính toán sẽ xem xét các tài nguyên khả dụng, các thuộc tính
liên kết và cả các trung kế khác (vì vậy được gọi là tính toán đường ràng buộc).
Kết quả của việc tính toán này là tìm ra một chuỗi các địa chỉ IP đại diện cho
các chặng trên đường LSP giữa đầu nguồn và đầu đích của trung kế lưu lượng.
Sau đó, thực hiện báo hiệu LSP và hoàn thành việc thiết lập đường bằng các
giao thức báo hiệu cho MPLS như RSVP-TE[3].
Tiến trình tính toán đường ràng buộc luôn luôn được thực hiện tại
đầu nguồn trung kế lưu lượng và được kích hoạt do:
Một trung kế mới xuất hiện
Một trung kế đang tồn tại nhưng thiết lập LSP thất bại
Tái tối ưu hóa một trung kế đang tồn tại.
3.5.3 Giải thuật chọn đường
Việc chọn đường cho một trung kế lưu lượng sử dụng trọng số quản trị (TE
cost) của mỗi liên kết riêng biệt. Trọng số quản trị này mặc nhiên là bằng độ đo
IGP của liên kết. Giải thuật chọn đường ràng buộc theo các bước sau:
Cắt bỏ các liên kết có resource-class bị loại do phép tính Affinity ra khỏi
topology.
Cắt bỏ các liên kết không có đủ băng thông dự trữ theo yêu cầu của
trung kế.
Chạy giải thuật Dijktra để tìm ra đường có tổng TE-cost nhỏ nhất trên
phần topology còn lại.
Sau khi thực hiện các bước trên mà vẫn còn nhiều đường ứng cử cho LSP
(nhiều nhiều đường có cùng tổng độ đo TE) thì tiêu chuẩn thứ tự chọn lựa như
sau:
Đường có băng thông tối thiểu cao nhất
Đường có số chặng nhỏ nhất
Trang-72-
qua. Nếu không xét tài nguyên thì đường R1-R4-R6 có tổng cost thấp nhất là
30. Tất cả các đường khả thi khác đều có tổng cost cao hơn.
Khi tài nguyên được đưa vào tính toán, thấy rằng trên đường ngắn nhất
không có đủ băng thông thỏa mãn các đòi hỏi của trung kế lưu lượng (đòi hỏi
30 Mbps trong khi chỉ có 20 Mbps khả dụng). Kết quả là kết nối R4-R6 cũng bị
loại khỏi phép tính đường LSP.
Sau khi loại bỏ các liên kết không thỏa mãn các đòi hỏi của trung kế lưu
lượng, kết quả có hai đường LSP là: R1-R2-R3-R6 và R1-R5-R6. Cả hai đường
đều có tổng cost là 40, để chọn một đường phải giải quyết bằng luật “tie-
break”.
Trang-74-
Tái tối ưu hóa phải không được gây ra sai hỏng dịch vụ. Để thực hiện điều
này, đường LSP hiện có phải được duy trì cho đến khi LSP mới được thiết lập
xong và chuyển trung kế lưu lượng từ đường cũ sang đường mới. Sau đó,
đường LSP cũ mới được giải tỏa. Khái niệm này gọi là “make before break”.
3.6 Bảo vệ và khôi phục đường
Các cơ chế bảo vệ và khôi phục đường trong MPLS cung cấp một dịch vụ
tin cậy cho việc chuyển tải lưu lượng trong mạng MPLS và tái định tuyến lưu
lượng qua một đường chuyển mạch nhãn LSP. Trong phần này, ta có một vài
khái niệm sau:
Đường làm việc: Là đường chuyển tải trung kế lưu lượng trước khi xảy
ra lỗi. Đây là đường được bảo vệ bởi cơ chế khôi phục.
Đường khôi phục: Là đường mà trung kế lưu lượng sẽ được tái định
tuyến sau khi xảy ra lỗi, được thiết lập để bảo vệ cho đường làm việc.
PSL (Path Switch LSR): Là LSR đứng trước vị trí lỗi trên đường làm
việc chịu trách nhiệm chuyển mạch hoặc tái tạo lưu lượng sang đường
khôi phục.
PML (Path Merge LSR): Là LSR chịu trách nhiệm nhận lưu lượng trên
đường khôi phục, và sẽ: hoặc hợp nhất lưu lượng trở về đường làm việc,
hoặc chuyển lưu lượng ra khỏi miền MPLS nếu bản thân nó là đích.
POR (Point of Repair): POR là một LSR chịu trách nhiệm sửa chữa một
LSP, nó có thể là một PSL hoặc PML tùy theo cơ chế khôi phục nào
được dùng.
FIS (Fault Indication Signal): Là bản tin chỉ thị có lỗi xảy ra trên đường,
được chuyển tiếp bởi các LSR trung gian cho tới khi nó đến được POR.
FIS được phát đi theo chu kỳ bởi các nút cận kề vị trí lỗi.
FRS (Fault Recovery Signal): Là bản tin chỉ thị một lỗi trên đường làm
việc đã sửa chữa xong. FRS được chuyển tiếp cho tới khi nó đến được
một LSR đảm nhận việc chuyển trả lại đường nguyên thủy.
Trang-76-
thiết lập trước nên chuyển mạch bảo vệ nhanh hơn so với khôi phục bằng tái
định tuyến.
3.6.2 Mô hình Makam
Đây là mô hình khôi phục MPLS đầu tiên được đề xuất. Nó cung cấp
bảo vệ toàn cục cho một LSP bằng cách thiết lập đường khôi phục giữa ingress-
LSR và egress- LSR. Đường làm việc và khôi phục tách rời nhau (disjoint) cả
về liên kết và nút. Khi phát hiện lỗi ở bất kỳ vị trí nào trên đường làm việc, tín
hiệu FIS được dùng để chuyển thông báo lỗi về cho ingress-LSR (là PSL).
Ingress-LSR sẽ thực hiện chuyển mạch lưu lượng sang đường khôi phục. Mô
hình này hỗ trợ cả đường khôi phục thiết lập sẵn (chuyển mạch bảo vệ) và
đường khôi phục thiết lập động (tái định tuyến).
quay trở về đến PSL, lưu lượng được chuyển sang đường khôi phục toàn cục.
Đường dự phòng đảo và đường khôi phục phải thiết lập sẵn nên cách này tốn
kém tài nguyên.
trực quan gọi là Network Animator (NAM). Các số liệu kết quả mô phỏng cũng
được dùng để vẽ các đồ thị phân tích bằng chương trình XGraph theo các yêu
cầu nghiên cứu.
4.1.2 Chuẩn bị công cụ mô phỏng
NS-2 được thiết kế để chạy trong môi trường Unix. Tuy nhiên, ta vẫn có
thể cài đặt NS-2 trong Windows bằng cách dùng thêm chương trình Cygwin.
Học viên đã thử thực hiện cài đặt NS-2 trên Linux Ubuntu 9.04 và trên
Windows XP với Cygwin v1.5.24, cả hai môi trường này đều cho kết quả tốt.
Các công tác chuẩn bị đã thực hiện:
Cài đặt gói phần mềm ns-allinone-2.32. tại website
http://nsnam.isi.edu/nsnam . Trong gói này đã bao gồm ns-2.32, nam-
1.13, otcl-1.13 và tclcl-1.19.
4.2 Nội dung và kết quả mô phỏng
Để thuận tiện trong việc thực hiện mô phỏng và đánh giá, tất cả các bài
mô phỏng trong đề tài này đều thống nhất sử dụng một topology mạng gồm 10
nút router như trong hình dưới đây:
đó, các đường khác có đủ băng thông nhưng lại không được sử dụng (hình 57).
Đây chính là vấn đề sử dụng tài nguyên không hiệu quả trong mạng IP.
4.2.2.1 Mô hình
Topology như hình 55, trong đó nút 0 và nút 10 là router IP thông
thường (R0 và R10). Các nút từ 1 đến 9 là các router có hỗ trợ MPLS (LSR1
đến LSR9) tạo thành một MPLS domain.
Có 3 nguồn lưu lượng (src1, src2, src3) được tạo ra và gắn vào nút R0.
Tương ứng có 3 đích lưu lượng (sink1, sink2, sink3) gắn vào nút R10. Mỗi
nguồn phát luồng lưu lượng với tốc độ 0,8 Mbps, kích thước gói 600B.
Hình 58: Xuất nội dung bảng LIB ở các LSR ra màn hìn console
Trang-87-
4.2.3.1 Mô hình
Topology như hình 55, trong đó nút 0 và nút 10 là router IP thông
thường (R0 và R10). Các nút từ 1 đến 9 là các router có hỗ trợ MPLS (LSR1
đến LSR9) tạo thành một MPLS domain.
Có 2 nguồn lưu lượng (src1, src2) được tạo ra và gắn vào nút R0. Tương
ứng có 2 đích lưu lượng (sink1, sink2) gắn vào nút R10. Mỗi nguồn phát luồng
lưu lượng với tốc độ 0,8 Mbps, kích thước gói 600B.
theo ER=1_2_4_6_5_7_9. Như vậy, hai luồng lưu lượng cạnh tranh băng thông
trên kết nối LSR7-LSR9 do kết nối này không đủ băng thông yêu cầu cho cả
hai LSP. Vì LSP_1200 có độ ưu tiên thiết lập Sprio=5 cao hơn HPrio=6 của
LSP_1100 nên luồng 2 được đảm bảo cấp đủ băng thông theo yêu cầu là 0,8
Mbps. Trong bài mô phỏng, ta không quy định tái định tuyến sang đường khác
cho luồng 1 khi LSP_1100 bị lấn chiếm nên từ đây, luồng 1 được truyền theo
kiểu best-effort, nghĩa là tận dụng lượng băng thông 0,2 Mbps còn lại trên kết
nối.
Với hoạt động lấn chiếm (preemption), các trung kế lưu lượng có độ ưu tiên
nắm giữ thấp phải nhường tài nguyên cho các trung kế có độ ưu tiên thiết lập
cao. Kết quả trực quan trong cửa sổ NAM cho thấy chỉ có luồng 1 bị rớt gói tại
LSR7 để đảm bảo băng thông yêu cầu cho luồng 2 (hình 62).
4.2.4 Mô phỏng khôi phục đường theo cơ chế Makam
4.2.4.1 Mô hình
Topology như hình 55, trong đó nút 0 và nút 10 là router IP thông
thường (R0 và R10). Các nút từ 1 đến 9 là các router có hỗ trợ MPLS (LSR1
đến LSR9) tạo thành một MPLS domain.
Có 1 nguồn lưu lượng (src1) được tạo ra 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.
Hình 63: Đường đi của lưu lượng sau thời điểm sự cố (Makam)
4.2.5.1 Mô hình
Như mô hình bài trước ở mục 4.2.4.1.
Thời điểm 2,0s : Kết nối giữa LSR5-LSR7 bị đứt, đến 3,5s thì khôi
phục.
Thời điểm 5,0s : Luồng 1 ngưng truyền.
Kết quả truyền luồng: Truyền 750 gói, mất 5 gói, tỉ lệ mất gói: 0,66%
Hình 65: Đường đi của lưu lượng sau thời điểm sự cố (Haskin)
LSR5 được chuyển ngược trở lại LSR1 để đi sang đường bảo vệ. Tuy nhiên, độ
trễ sẽ tăng lên do đường đi của lưu lượng dài hơn.
4.2.6 Mô phỏng khôi phục đường theo cơ chế Shortest-Dynamic
4.2.6.1 Mô hình
Như mô hình bài trước ở mục 4.2.4.1.
Hình 67: Đường đi của lưu lượng sau thời điểm sự cố (Shortest-Dynamic)
4.2.7.1 Mô hình
Như mô hình bài trước ở mục 4.2.4.1.
4.2.7.2 Thực hiện và kết quả
Thực hiện mô phỏng với lịch trình quy định trong script mô phỏng:
Đường làm việc: ER=1_3_5_7_9
Thời điểm 0,5s : Luồng 1 (src1 – sink1) bắt đầu truyền trên đường làm
việc
Trang-95-
Thời điểm 2,0s : Kết nối giữa LSR5-LSR7 bị đứt, đến 3,5s thì khôi
phục.
Thời điểm 5,0s : Luồng 1 ngưng truyền.
Kết quả truyền luồng: Truyền 750 gói, mất 66 gói, tỉ lệ mất gói: 8,8%
Hình 69: Đường đi của lưu lượng sau thời điểm sự cố (Simple-Dynamic)
Trang-96-
KẾT LUẬN
Hiện nay MPLS là một giải pháp hàng đầu để giải quyết nhiều vấn đề
trong mạng như: tốc độ, khả năng mở rộng mạng, quản lý QoS và điều phối luu
lượng. MPLS là một công nghệ kết hợp tốt nhất giữa định tuyến lớp 3 và
chuyển mạch lớp 2 cho phép chuyển tải các gói rất nhanh trong mạng lõi và
định tuyến tốt ở mạng biên bằng cách dựa vào nhãn.
Luận văn đã trình bày được những khái niệm cơ sở sử dụng trong
chuyển mạch nhãn đa giao thức, từ đó nghiên cứu những nguyên lý hoạt động
cơ bản của MPLS và khả năng thực hiện kỹ thuật lưu lượng của nó. Bài toán cơ
bản của kỹ thuật lưu lượng trong MPLS là làm thế nào để ánh xạ đồ hình
nghiệm suy (induced graph) lên trên topology vật lý của mạng một cách hiệu
quả nhất, tối ưu hóa việc sử dụng tài nguyên, chống tắc nghẽn và tăng cường
QoS. Đặc biệt, đề tài tập trung nhiều vào các khía cạnh như:
Các yêu cầu của kỹ thuật lưu lượng trong chuyển mạch nhãn đa giao
thức.
Các cơ chế bảo vệ và khôi phục lưu lượng sử dụng trong MPLS.
Xây dựng các kịch bản mô phỏng từ các khái niệm ban đầu đến các
cơ chế được áp dụng trong kỹ thuật lưu lượng nhằm đưa ra các đánh giá dựa
trên các số liệu cụ thể. Điều này đặc biệt hữu ích khi học viên chưa có điều
kiện để tiếp cận và kiểm chứng trên hệ thống mạng trục IP/MPLS thực đang
hoạt động.
Tuy nhiên, kỹ thuật lưu lượng là một lĩnh vực rộng, đây cũng là bài toán
khó đặt ra cho bất kỳ một công nghệ truyền dẫn hoặc chuyển mạch mới nào. Vì
những lý do khách quan và chủ quan, đề tài khó tránh khỏi những thiếu sót, cụ
thể là:
Một số khái niệm, thuật ngữ mới chưa được thống nhất khi dịch
thuật.
Chưa đề cập nhiều đến quản lý QoS, Diffserv trong MPLS.
Chưa đề cập sâu đến ứng dụng MPLS trong mạng riêng ảo (VPN) là
một trong những công nghệ đang được ứng dụng rất nhiều trong các hệ
thống mạng hiện nay.
Trang-98-
Phần mềm mô phỏng mạng NS-2 rất khó can thiệp một cách đầy đủ
mà thường chỉ kế thừa, sử dụng tập lệnh và các module của nó cung cấp.
Vì vậy NS-2 chưa mô phỏng đầy đủ các hoạt động của một thiết bị thật
sự, do đó các số liệu kết quả thu được chỉ có độ tin cậy tương đối.
Qua đề tài này, học viên mong muốn nắm bắt được nền tảng kiến thức
về công nghệ MPLS, đặc biệt là ứng dụng của nó trong lĩnh vực kỹ thuật lưu
lượng. Hiện tại, MPLS vẫn thuộc loại chuyển mạch điện. Tuy nhiên, hướng
phát triển tiếp theo của MPLS là GMPLS (Generalized MPLS), trong đó áp
dụng ý tưởng chuyển mạch nhãn vào chuyển mạch quang, xem các bước sóng
quang như là nhãn. Công nghệ mới luôn luôn phát triển không ngừng và có tính
kế thừa, vì vậy việc nghiên cứu, cập nhật kiến thức để làm chủ thiết bị mạng
lưới là hết sức cần thiết.
Trang-99-
# 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 $R5 $R7 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 $R1 $R3 label " 2M "
$ns duplex-link-op $R3 $R5 label " 1M "
Trang-101-
proc finish {} {
global ns nf f1 f2
$ns flush-trace
close $nf
close $f1
close $f2
exec xgraph luong_1 luong_2 -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Bai 1: Mang IP khong ho tro MPLS" -tf "helvetica-12" &
exec nam -r 8ms 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 red
set src2 [attach-expoo-traffic $R0 $sink2 600B 0ms 0ms 0.9Mb ]
$src2 set fid_ 200
$ns color 200 green
# Bat dau mo phong
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
Bai2.tcl
###############################################################
# 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 LS
# 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 luong_1 w]
set f2 [open luong_2 w]
set f3 [open luong_3 w]
# So do ket noi mang
Trang-103-
#
# 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 link: nodes bw delay queue
$ns duplex-link $R0 $LSR1 3Mb 10ms DropTail
$ns duplex-link $LSR1 $LSR3 2Mb 30ms CBQ
$ns duplex-link $LSR3 $LSR5 1Mb 30ms CBQ
$ns duplex-link $LSR5 $LSR7 2Mb 30ms CBQ
$ns duplex-link $LSR7 $LSR9 1Mb 30ms CBQ
$ns duplex-link $LSR9 $R10 3Mb 10ms DropTail
$ns duplex-link $LSR1 $LSR2 1Mb 30ms CBQ
$ns duplex-link $LSR2 $LSR4 1Mb 30ms CBQ
$ns duplex-link $LSR4 $LSR6 2Mb 30ms CBQ
$ns duplex-link $LSR6 $LSR8 1Mb 30ms CBQ
$ns duplex-link $LSR8 $LSR9 2Mb 30ms CBQ
$ns duplex-link $LSR3 $LSR4 1Mb 30ms CBQ
$ns duplex-link $LSR5 $LSR6 1Mb 30ms CBQ
$ns duplex-link $LSR7 $LSR8 1Mb 30ms CBQ
# 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"
Trang-104-
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 f3
$ns flush-trace
close $nf
close $f1
close $f2
close $f3
exec xgraph luong_1 luong_2 luong_3 -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Bai 2: Dinh tuyen rang buoc trong MPLS" -tf "helvetica-12" &
exec nam bai2.nam &
exit 0
}
#----------------------------------------------------
# Tao ra sink1, sink2 va sink3 gan voi nut R10 (day la noi thu nhan traffic)
set sink1 [new Agent/LossMonitor]
set sink2 [new Agent/LossMonitor]
set sink3 [new Agent/LossMonitor]
$ns attach-agent $R10 $sink1
$ns attach-agent $R10 $sink2
$ns attach-agent $R10 $sink3
# Tao ra nguon luu luong src1, src2 va src3 gan voi nut R0 bang cach
# goi ham attach-expoo-traffic. Ca 3 luong co goi size=600B, rate=0.8Mbps
set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0 0.8M ]
$src1 set fid_ 100
$ns color 100 red
set src2 [attach-expoo-traffic $R0 $sink2 600B 0 0 0.8M ]
$src2 set fid_ 200
$ns color 200 green
set src3 [attach-expoo-traffic $R0 $sink3 600B 0 0 0.8M ]
$src3 set fid_ 300
$ns color 300 blue
# Bat dau mo phong
exec clear >@ stdout
puts "\n BAI 2: MO PHONG DINH TUYEN RANG BUOC TRONG MPLS DOMAIN \n"
$ns at 0.0 "record"
# Chon duong, bao hieu: {lspid sLSR dLSRid bw SPrio HPrio }
$ns at 0.201 "constraint-routing 1100 $LSR1 9 0.8M 7 7 "
$ns at 0.501 "$ns trace-annotate {Luong 1: BW=0.8M (start=0.5 stop=5.0) su dung
LSP_1100}"
$ns at 0.501 "$src1 start"
$ns at 0.601 "constraint-routing 1200 $LSR1 9 0.8M 7 7 "
$ns at 1.001 "$ns trace-annotate {Luong 2: BW=0.8M (start=1.0 stop=5.0) su dung
LSP_1200}"
$ns at 1.001 "$src2 start"
$ns at 1.001 "constraint-routing 1300 $LSR1 9 0.8M 7 7 "
$ns at 1.501 "$ns trace-annotate {Luong 3: BW=0.8M (start=1.5 stop=5.0) su dung
LSP_1300}"
$ns at 1.501 "$src3 start"
$ns at 2.001 "constraint-routing 1400 $LSR1 9 0.8M 7 7 "
$ns at 5.0 "[$LSR1 get-module "MPLS"] lib-dump"
$ns at 5.0 "[$LSR3 get-module "MPLS"] lib-dump"
$ns at 5.0 "[$LSR5 get-module "MPLS"] lib-dump"
$ns at 5.0 "[$LSR7 get-module "MPLS"] lib-dump"
$ns at 5.0 "[$LSR9 get-module "MPLS"] lib-dump"
$ns at 5.001 "$src1 stop"
$ns at 5.001 "$src2 stop"
$ns at 5.001 "$src3 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
Trang-107-
Bai3.tcl
#######################################################################
# BAI 3: MO PHONG HOAT DONG LAN CHIEM (PREEMPTION) TRONG MIEN MPLS #
#######################################################################
# 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 bai3.nam w]
$ns namtrace-all $nf
# Tao cac file de luu du lieu cho xgraph
set f1 [open luong_1 w]
set f2 [open luong_2 w]
# So do ket noi mang
#
# 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 "
$ns duplex-link-op $LSR7 $LSR9 queuePos 1.5
$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
# cfg-cbq-on-all-mpls-nodes {sbts_bw hbts_bw rt_bw st_bw}
$ns cfg-cbq-on-all-mpls-nodes 0.1 0.05 0.8 0.05
# Gan luong traffic co fid vao dich vu SBTS (Simple Best-effort)
$ns bind-flowid-to-SBTS 0
$ns bind-flowid-to-SBTS 100
$ns bind-flowid-to-SBTS 200
# 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
$ns collect-resource-info 4
#----------------------------------------------------------------------
# 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
Trang-109-
Bai4.tcl
#################################################################
# BAI 4: KHOI PHUC DUONG BANG TAI DINH TUYEN TOAN CUC #
# (MO HINH MAKAM) #
#################################################################
# 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
#
Trang-111-
# 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
set revseqnb [$sink1 set expected_]
if {$prvseqnb > $revseqnb} {
incr seqerrnb 1
}
# Ghi so thu tu cua packet vao file
if {$prvseqnb != $revseqnb} {
puts $f2 "$now [$sink1 set expected_]"
set prvseqnb $revseqnb
}
# Dinh thoi goi lai ham seq-record
if { [expr $now+$time] < $ftime } {
$ns at [expr $now+$time] "seq-record $size $rate $ftime"
}
}
#----------------------------------------------------
# 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 sau thong bao ER/CR-LSP da thiet lap de thuc hien tac vu khac
proc notify-erlsp-setup {node lspid} {
global src1 src2
set ns [Simulator instance]
set msg " [string range [$ns now] 0 3]s: Tunnel LSP_$lspid
(Ingress=LSR[$node id]) da duoc thiet lap xong !"
puts $msg
Trang-113-
Bai5.tcl
########################################################################
# BAI 5: KHOI PHUC DUONG THEO CO CHE DU PHONG DAO (REVERSE BACKUP) #
# (MO HINH HASKIN) #
########################################################################
# 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 bai5.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
#
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
set revseqnb [$sink1 set expected_]
if {$prvseqnb > $revseqnb} {
incr seqerrnb 1
}
# Ghi so thu tu cua packet vao file
if {$prvseqnb != $revseqnb} {
puts $f2 "$now [$sink1 set expected_]"
set prvseqnb $revseqnb
}
# Dinh thoi goi lai ham seq-record
if { [expr $now+$time] < $ftime } {
$ns at [expr $now+$time] "seq-record $size $rate $ftime"
}
}
#----------------------------------------------------
# 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 sau thong bao ER/CR-LSP da thiet lap de thuc hien tac vu khac
proc notify-erlsp-setup {node lspid} {
global src1 src2 LSR3 LSR5 LSR7
set ns [Simulator instance]
set msg " [string range [$ns now] 0 3]s: Tunnel LSP_$lspid
(Ingress=LSR[$node id]) da duoc thiet lap xong !"
puts $msg
$ns trace-annotate $msg
set module [$node get-module "MPLS"]
Trang-117-
switch $lspid {
1100 {
$module bind-flow-erlsp 10 100 $lspid
}
1200 {
$module reroute-lsp-binding 1100 $lspid
}
1300 {
[$LSR3 get-module "MPLS"] reroute-lsp-binding 1100 $lspid
[$LSR5 get-module "MPLS"] reroute-lsp-binding 1100 $lspid
[$LSR7 get-module "MPLS"] reroute-lsp-binding 1100 $lspid
}
default {
puts " Error!"
exit 1
}
}
}
proc notify-erlsp-fail {node status lspid tr} {
set ns [Simulator instance]
set module [$node get-module "MPLS"]
if { [$node id] == 1 && $status=="BSNodeError" } {
$module set-lib-error-for-lspid $lspid 1
set msg " [string range [$ns now] 0 3]s: Phat hien loi tren duong lam
viec LSP_$lspid. Chuyen sang duong bao ve LSP_1200 !"
}
if { [$node id] == 1 && $status=="NodeRepair" } {
$module set-lib-error-for-lspid $lspid -1
set msg " [string range [$ns now] 0 3]s: Loi da duoc khoi phuc. Chuyen
luu luong tro lai duong lam viec LSP_$lspid !"
}
puts $msg
$ns trace-annotate $msg
}
#----------------------------------------------------
# Thu tuc xuat tong so packet nhan duoc o cac sink
proc recv-pkts {} {
global sink1 seqerrnb
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 " Tong so packet bi sai thu tu : $seqerrnb goi"
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 luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Bai 5: Khoi phuc duong theo co che Haskin" -tf "helvetica-12" &
exec xgraph luong_seq.tr -p -nl -nb -bg white -fg black -zg black \
-geometry 500x250 -y "Packet No." -x "Time (sec)" \
-t "Bai 5: Bieu do so thu tu packet theo thoi gian" -tf "helvetica-12"
&
exec nam -r 2ms bai5.nam &
exit 0
}
Trang-118-
#----------------------------------------------------
# Tao ra sink1 gan voi nut R10 (day la noi thu nhan traffic)
set sink1 [new Agent/LossMonitor]
$ns attach-agent $R10 $sink1
# Tao ra nguon luu luong src1 gan voi nut R0 bang cach
# goi ham attach-expoo-traffic. Luong co packet_size=600, rate=0.8Mbps
set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0 0.8M ]
$src1 set fid_ 100
$ns color 100 red
# Cai dat co che khoi phuc: HASKIN
$ns enable-reroute drop
[$LSR3 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100
[$LSR5 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100
[$LSR7 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100
# Bat dau mo phong
exec clear >@ stdout
puts "\n BAI 5: KHOI PHUC DUONG CO CHE REVERSE BACKUP (HASKIN) \n "
$ns at 0.0 "record"
$ns at 0.0 "seq-record 600 800k 5.5"
# Thiet lap LSP lam viec
$ns at 0.1 "$ns trace-annotate {Bao hieu thiet lap duong lam viec: LSP_1100,
ER=1_3_5_7_9 }"
$ns at 0.1 "[$LSR1 get-module "MPLS"] setup-erlsp 9 1_3_5_7_9 1100”
# Thiet lap LSP bao ve
$ns at 0.1 "$ns trace-annotate {Bao hieu thiet lap duong bao ve: LSP_1200,
ER=1_2_4_6_8_9 }"
$ns at 0.1 "[$LSR1 get-module "MPLS"] setup-erlsp 9 1_2_4_6_8_9 1200”
# Thiet lap LSP du phong dao (reverse backup)
$ns at 0.3 "$ns trace-annotate {Bao hieu thiet lap duong reverse backup:
LSP_1300, ER=9_7_5_3_1_L1200 }"
$ns at 0.3 "[$LSR9 get-module "MPLS"] setup-erlsp 9 9_7_5_3_1_L1200 1300”
$ns at 0.5 "$ns trace-annotate {Luong 1: BW=0.8M (start=0.5 stop=5.0) su dung
LSP_1100, ER=1_3_5_7_9 }"
$ns at 0.5 "$src1 start"
# Link giua LSR5 va LSR7 bi dut tu 2.0s, den 3.5s thi khoi phuc lai
$ns rtmodel-at 2.0 down $LSR5 $LSR7
$ns rtmodel-at 3.5 up $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
Bai6.tcl
######################################################################
# BAI 6: KHOI PHUC DUONG THEO CO CHE SHORTEST-DYNAMIC #
######################################################################
# 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 bai6.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
Trang-119-
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x250 -y "BW (Mbps)" -x "Time (sec)" \
-t "Bai 6: Khoi phuc duong theo co che Shortest-Dynamic" -tf
"helvetica-12" &
exec xgraph luong_seq.tr -p -nl -nb -bg white -fg black -zg black \
-geometry 500x250 -y "Packet No." -x "Time (sec)" \
-t "Bai 6: Bieu do so thu tu packet theo thoi gian" -tf "helvetica-12"
&
exec nam -r 2ms bai6.nam &
exit 0
}
#----------------------------------------------------
# Tao ra sink1 gan voi nut R10 (day la noi thu nhan traffic)
set sink1 [new Agent/LossMonitor]
$ns attach-agent $R10 $sink1
# Tao ra nguon luu luong src1 gan voi nut R0 bang cach
# goi ham attach-expoo-traffic. Luong co packet_size=600, rate=0.8Mbps
set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0 0.8M ]
$src1 set fid_ 100
$ns color 100 red
# Cai dat co che khoi phuc: SHORTEST-DYNAMIC
$ns enable-reroute shortest-dynamic
[$LSR5 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100
[$LSR9 get-module "MPLS"] enable-reroute-egress-lsr
# Bat dau mo phong
exec clear >@ stdout
puts "\n BAI 6: KHOI PHUC DUONG THEO CO CHE SHORTEST-DYNAMIC \n "
$ns at 0.0 "record"
$ns at 0.0 "seq-record 600 800k 5.5"
# Thiet lap LSP lam viec
$ns at 0.2 "$ns trace-annotate {Bao hieu thiet lap duong lam viec: LSP_1100,
ER=1_3_5_7_9 }"
$ns at 0.2 "[$LSR1 get-module "MPLS"] setup-erlsp 9 1_3_5_7_9 1100”
$ns at 0.5 "$ns trace-annotate {Luong 1: BW=0.8M (start=0.5 stop=5.0) su dung
LSP_1100, ER=1_3_5_7_9 }"
$ns at 0.5 "$src1 start"
# Link giua LSR5 va LSR7 bi dut tu 2.0s, den 3.5s thi khoi phuc lai
$ns rtmodel-at 2.0 down $LSR5 $LSR7
$ns rtmodel-at 3.5 up $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
Bai7.tcl
#######################################################################
# BAI 7: KHOI PHUC DUONG THEO CO CHE SIMPLE-DYNAMIC #
#######################################################################
# 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 bai7.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
Trang-123-