MỤC LỤC
DANH SÁCH HÌNH VẼ iii
DANH SÁCH BẢNG BIỂU v
THUẬT NGỮ VIẾT TẮT vi
LỜI MỞ ĐẦU ix
CHƯƠNG 1. CÁC ĐẶC ĐIỂM KỸ THUẬT CỦA CHUYỂN MẠCH NHÃN ĐA GIAO THỨC 1
1.1 Giới thiệu chung về MPLS. 1
1.1.1 Các tiền đề phát triển MPLS. 1
1.1.2 Các đặc điểm nổi bật của kỹ thuật MPLS. 3
1.2 Các khái niệm cơ bản trong MPLS. 4
1.2.1 Miền chuyển mạch nhãn MPLS. 4
1.2.2 Lớp chuyển tiếp tương đương. 5
1.2.3 Nhãn và ngăn xếp nhãn. 6
1.2.4 Hoán đổi nhãn. 9
1.2.5 Đường chuyển mạch nhãn. 9
1.2.6 Truyền tải lưu lượng trong miền chuyển mạch nhãn MPLS. 12
1.3 Kiến trúc chức năng MPLS. 13
1.3.1 Kiến trúc chức năng bộ chuyển mạch nhãn LSR, LER 13
1.3.2 Mặt phẳng điều khiển. 15
1.3.3 Mặt phẳng chuyển tiếp. 15
1.4 Định tuyến trong MPLS. 17
1.4.1 Giao thức định tuyến nội miền IGP 17
1.4.2 Giao thức định tuyến ngoại biên mở rộng MP-BGP 18
1.4.3 Các giao thức định tuyến ràng buộc và tường minh. 22
1.5 Cơ chế phân phối và trao đổi nhãn trong MPLS. 25
1.5.1 Giao thức phân phối nhãn LDP 26
1.5.2 Các cơ chế trao đổi nhãn. 28
1.5.3 Các cơ chế duy trì nhãn. 29
1.5.4 Các cơ chế điều khiển LSP 30
1.6 Kết luận chương 1. 30
CHƯƠNG 2. KỸ THUẬT LƯU LƯỢNG TRONG MPLS VÀ CÁC CƠ CHẾ BẢO VỆ, KHÔI PHỤC 32
2.1 Tổng quan về kỹ thuật lưu lượng. 32
2.1.1 Khái niệm kỹ thuật lưu lượng. 32
2.1.2 Bài toán tắc nghẽn và kỹ thuật lưu lượng. 33
2.1.3 Kỹ thuật lưu lượng tại lớp liên kết dữ liệu. 34
2.1.4 Kỹ thuật lưu lượng tại lớp mạng. 36
2.1.5 Kỹ thuật lưu lượng trong MPLS. 37
2.2 Kỹ thuật lưu lượng MPLS-TE 38
2.2.1 Sự cần thiết của MPLS-TE 38
2.2.2 Tổng quan cơ chế hoạt động của MPLS-TE 39
2.2.3 Các thuộc tính ràng buộc của liên kết 42
2.2.4 Các thuộc tính ràng buộc của trung kế lưu lượng. 43
2.2.5 Phân phối thông tin ràng buộc. 49
2.2.6. Tính toán và thiết lập, báo hiệu đường ràng buộc. 51
2.2.7 Truyền tải lưu lượng của trung kế lưu lượng lên LSP ràng buộc. 59
2.3 Bảo vệ, khôi phục trong MPLS-TE 63
2.3.1 Sự cần thiết của bảo vệ, khôi phục trong MPLS-TE 63
2.3.2 Khái niệm và phân loại các cơ chế bảo vệ, khôi phục trong MPLS-TE 64
2.3.3 Các mô hình bảo vệ, khôi phục đường. 66
2.3.4 So sánh hiệu năng các mô hình bảo vệ, khôi phục đường. 70
2.4 Kết luận chương 2. 73
CHƯƠNG 3. MÔ PHỎNG VÀ KHẢO SÁT MỘT SỐ CƠ CHẾ BẢO VỆ, KHÔI PHỤC ĐƯỜNG TRONG MPLS-TE 75
3.1 Lựa chọn công cụ mô phỏng. 75
3.2 Phần mềm mô phỏng NS-2. 77
3.2.1 Kiến trúc NS-2, C++ và OTcl 77
3.2.2 Kiến trúc module MNS v2.0. 78
3.2.3 Kiến trúc các hàm giao diện API trong MNSv2.0. 81
3.3 Mô phỏng và khảo sát một số cơ chế bảo vệ, khôi phục đường trong kỹ thuật lưu lượng MPLS-TE 82
3.3.1 Chuẩn bị công cụ mô phỏng. 83
3.3.2 Xây dựng Topology mô phỏng. 83
3.3.3 Mô phỏng mô hình bảo vệ, khôi phục đường Makam 85
3.3.4 Mô phỏng mô hình bảo vệ, khôi phục đường Haskin. 90
3.3.5 Mô phỏng mô hình bảo vệ, khôi phục đường Shortest-Dynamic. 93
3.3.6 Mô phỏng mô hình bảo vệ, khôi phục đường Simple-Dynamic. 97
3.3.7 Mô phỏng mô hình bảo vệ, khôi phục đường Simple-Static. 101
3.4 Phân tích và đánh giá kết quả mô phỏng tổng hợp. 105
3.5 Một số giải pháp lựa chọn mô hình bảo vệ, khôi phục đường. 111
3.6 Kết luận chương 3. 113
KẾT LUẬN. 115
PHỤ LỤC: MÃ NGUỒN CÁC CHƯƠNG TRÌNH MÔ PHỎNG . 117
TÀI LIỆU THAM KHẢO 134
DANH SÁCH HÌNH VẼ
Hình 1.1: Kỹ thuật MPLS và mô hình kết nối hệ thống mở OSI 2
Hình 1.2: So sánh cơ chế định tuyến/chuyển mạch sử dụng IP và MPLS. 3
Hình 1.3: Miền chuyển mạch nhãn MPLS. 4
Hình 1.4: Lớp chuyển tiếp tương đương (FEC) trong MPLS. 5
Hình 1.5: Định dạng của một thực thể nhãn trong ngăn xếp nhãn. 6
Hình 1.6: Ngăn xếp nhãn (MPLS Label Stack). 7
Hình 1.7: Giá trị PID trong các giao thức lớp liên kết dữ liệu nhận dạng thành phần tải tin là khung dữ liệu MPLS. 7
Hình 1.8: Mã hóa ngăn xếp nhãn trong chế độ (khung) Frame-Mode. 8
Hình 1.9: Mã hóa ngăn xếp nhãn trong chế độ tế báo (Cell-Mode). 9
Hình 1.10: Thiết lập đường chuyển mạch nhãn LSP 11
Hình 1.11: Phân cấp LSP trong MPLS. 11
Hình 1.12: Truyền tải lưu lượng trong miền chuyển mạch nhãn MPLS. 12
Hình 1.13: Kiến trúc chức năng của các bộ chuyển mạch LER/LSR 13
Hình 1.14: Mặt phẳng điều khiển MPLS. 15
Hình 1.15: Hoạt động trong mặt phẳng chuyển tiếp MPLS. 16
Hình 1.16: Giao thức định tuyến nội miền IGP trong MPLS. 18
Hình 1.17: Giao thức định tuyến ngoại biên BGPv4. 19
Hình 1.18: Giao thức ngoại biên mở rộng MP-BGP với ứng dụng MPLS-VPN 22
Hình 1.19: Định tuyến/Chuyển mạch IP truyền thống. 23
Hình 1.20: Định tuyến ràng buộc CBR 24
Hình 1.21: Thủ tục thăm dò LSR lân cận của giao thức phân phối nhãn LDP 27
Hình 1.22: Cơ chế trao đổi nhãn DoD 28
Hình 1.23: Cơ chế trao đổi nhãn UD 29
Hình 2.1: Bài toán tắc nghẽn. 34
Hình 2.2: Mô hình xếp chồng. 35
Hình 2.3: Kỹ thuật lưu lượng tại lớp 2. 36
Hình 2.4: Kỹ thuật lưu lượng trong MPLS. 38
Hình 2.5: Tổng quan cơ chế hoạt động của MPLS-TE 40
Hình 2.6: Các thuộc tính ER và Path Options trên thiết bị định tuyến của Cisco. 48
Hình 2.7: Băng thông khả dụng hiện thời tương ứng với mức độ ưu tiên của trung kế lưu lượng và giao thức OSPF. 51
Hình 2.8: Tính toán đường ràng buộc cho trung kế lưu lượng. 54
Hình 2.9: Loại bỏ các đường dẫn không thỏa mãn thuộc tính ràng buộc. 55
Hình 2.10: CSPF lựa chọn đường dẫn phù hợp nhất 55
Hình 2.11: Thiết lập đường ràng buộc CR-LSP với giao thức CR-LDP 57
Hình 2.12 Thiết lập đường ràng buộc TE-LSP với giao thức RSVP-TE 58
Hình 2.13: Truyền tải lưu lượng lên TE-LSP bằng phương thức Autoroute Announce. 61
Hình 2.14: Truyền tải lưu lượng lên TE-LSP bằng phương thức Forwarding Adjacency. 62
Hình 2.15: Mô hình Makam 67
Hình 2.16: Mô hình Haskin. 68
Hình 2.17: Mô hình Shortest-Dynamic. 69
Hình 2.18: Mô hình Simple-Dynamic. 70
Hình 3.1: Nguyên tắc hoạt động của NS-2 dưới góc độ người dùng. 78
Hình 3.2: Kiến trúc chức năng nút MPLS với module MNSv2.0. 79
Hình 3.3: Quá trình xử lý dành riêng tài nguyên tại mỗi nút 80
Hình 3.4: Kiến trúc chức năng nút MPLS với module MNSv2.0 mở rộng. 81
Hình 3.5: Topology mô phỏng bảo vệ, khôi phục đường. 84
Hình 3.6: Mô hình Makam – Đường đi của lưu lượng trước thời điểm sự cố. 86
Hình 3.7: Mô hình Makam – Lưu lượng bị mất gói tại thời điểm sự cố. 87
Hình 3.8: Mô hình Makam – Đường đi của lưu lượng sau thời điểm sự cố. 87
Hình 3.9: Mô hình Makam – Đồ thị thông lượng theo thời gian nhận được tại R10. 88
Hình 3.10: Mô hình Makam – Tỷ lệ mất gói trong thời gian hội tụ. 89
Hình 3.11: Mô hình Haskin – Lưu lượng được chuyển mạch sang đường dự phòng đảo sau thời điểm xảy ra sự cố. 91
Hình 3.12: Mô hình Haskin – Đồ thị thông lượng theo thời gian nhận được tại R10. 91
Hình 3.13: Mô hình Haskin – Tỷ lệ mất gói trong thời gian hội tụ. 92
Hình 3.14: Mô hình Shortest-Dynamic – Lưu lượng được chuyển mạch sang đường khôi phục tránh liên kết LSR5-LSR7 bị lỗi sau thời điểm xảy ra sự cố. 94
Hình 3.15: Mô hình Shortest-Dynamic – Đồ thị thông lượng theo thời gian nhận được tại nút R10 95
Hình 3.16: Mô hình Shortest-Dynamic – Tỷ lệ mất gói trong thời gian hội tụ. 95
Hình 3.17: Mô hình Simple-Dynamic – Lưu lượng được chuyển mạch sang đường khôi phục ngắn nhất tới Tailend-LSR sau thời điểm xảy ra sự cố. 98
Hình 3.18: Mô hình Simple-Dynamic – Đồ thị thông lượng theo thời gian nhận được tại R10 98
Hình 3.19: Mô hình Simple-Dynamic – Tỷ lệ mất gói trong thời gian hội tụ. 99
Hình 3.20: Mô hình Simple-Static – Lưu lượng được chuyển mạch sang đường khôi phục ngắn nhất tới Tailend-LSR sau thời điểm xảy ra sự cố. 102
Hình 3.21: Mô hình Simple-Dynamic – Đồ thị thông lượng theo thời gian nhận được tại R10 102
Hình 3.22: Mô hình Simple-Static – Tỷ lệ mất gói trong thời gian hội tụ. 103
Hình 3.23: Biểu đồ tổng hợp thông lượng trung bình. 106
Hình 3.24: Biểu đồ tổng hợp tỷ lệ mất gói trong thời gian hội tụ. 107
Hình 3.25: Biểu đồ tổng hợp thời gian ngưng dịch vụ. 108
Hình 3.26: Biểu đồ tổng hợp độ trễ toàn trình trung bình. 110
DANH SÁCH BẢNG BIỂU
Bảng 1.1: Giá trị PID nhận dạng phần tải tin MPLS trong các giao thức liên kết dữ liệu. 7
Bảng 1.2: Nội dung bản tin cập nhật của BGP (BGP-Update). 20
Bảng 1.3: Nội dung trường Path-Attribute. 20
Bảng 1.4: So sánh các giao thức phân phối nhãn trong MPLS. 25
Bảng 2.1: Các sub-TLV của OSPF mở rộng cho MPLS-TE 49
Bảng 2.2: Các sub-TLV của IS-IS mở rộng cho MPLS-TE 50
Bảng 2.3: So sánh đặc điểm các mô hình bảo vệ, khôi phục đường trong MPLS-TE 66
Bảng 2.4: So sánh đặc điểm các mô hình bảo vệ, khôi phục đường. 71
Bảng 3.1: Kết quả mô phỏng mô hình Makam 90
Bảng 3.2: Kết quả mô phỏng mô hình Haskin. 93
Bảng 3.3: Kết quả mô phỏng mô hình Shortest-Dynamic. 97
Bảng 3.4: Kết quả mô phỏng mô hình Simple-Dynamic. 100
Bảng 3.5: Kết quả mô phỏng mô hình Simple-Static. 104
Bảng 3.6: Bảng tổng hợp các tham số đo kiểm 105
THUẬT NGỮ VIẾT TẮT
AAL ATM Adaptation Layer Lớp tương thích ATM
AS Autonomous System Hệ tự trị
ASIC Application-Specific Integrated Circuit Mạch tích hợp ứng dụng xác định
ATM Asynchronous Transfer Mode Giao thức truyền tải cận đồng bộ
BGP Border Gateway Protocol Giao thức định tuyến cổng biên
CR Constraint-based Routing Định tuyến ràng buộc
CR-LDP Constraint-based Routing Label Distribution Protocol Giao thức phân phối nhãn hỗ trợ định tuyến ràng buộc
CR-LSP Constraint-based Routing Label Switched Path Đường chuyển mạch nhãn được định tuyến ràng buộc
CSPF Constraint-based Shortest Path First Thuật toán tìm đường dẫn ngắn nhất trước tiên dựa trên định tuyến ràng buộc
DiffServ Differentiated Service Phân biệt dịch vụ
DLCI Data Link Connection Identifier Thành phần nhận dạng giao diện liên kết dữ liệu
DSCP Differentiated Service Code Point Mã phân biệt dịch vụ
EBGP External Border Gateway Protocol Giao thức định tuyến cổng biên ngoại miền
EGP External Gateway Protocol Giao thức định tuyến ngoại miền
ER Explicite Route Đường tường minh
ERO Explicite Route Object Đối tượng đường tường minh
EXP Experimetal Bit Trường thực nghiệm
FEC Forwarding Equivalence Class Lớp chuyển tiếp tương đương
FIB Forwarding Information Base Cơ sở thông tin chuyển tiếp
FIS Fault Information Signal Tín hiệu thông báo xảy ra lỗi
FR Frame-Relay Công nghệ Frame-Relay
FRS Fault Recovery Signal Tín hiệu thông báo khôi phục lỗi
FTN FEC to NHLFE Map Ánh xạ FEC sang NHLFE
GMPLS Generalized MPLS MPLS tập trung
IBGP Internal Border Gateway Protocol Giao thức định tuyến cổng biên nội miền
IEEE Institute of Electrical and Electronics Engineers Viện các kỹ sư điện và điện tử nghiên cứu tiêu chuẩn quốc tế
IETF Internet Engineering Task Force Lực lượng nghiên cứu Internet
IGP Interior Gateway Protocol Giao thức định tuyến nội miền
ILM Incoming Label Map Ánh xạ nhãn đầu vào
IP Internet Protocol Giao thức Internet
IPv4, IPv6 Internet Protocol version 4, 6 Giao thức Internet phiên bản 4, 6
IS-IS Intermediate System – Intermediate System Giao thức định tuyến giữa các hệ thống trung gian
LC-ATM Label Controlled ATM Giao thức ATM điều khiển nhãn
LDP Label Distribution Protocol Giao thức phân phối nhãn
LER Label Edge Router Bộ chuyển mạch nhãn tại biên
LFIB Label Forwarding Information Base Cơ sở thông tin chuyển tiếp nhãn
LIB Label Information Base Cơ sở thông tin nhãn
LSA Link-State Advertisement Bản tin quảng bá trạng thái liên kết
LSP Label Switched Path Đường chuyển mạch nhãn
LSR Label Switching Router Bộ chuyển mạch nhãn
MNS MPLS module for NS Module mô phỏng MPLS cho NS
MPLS Multiprotocol Label Switching Chuyển mạch nhãn đa giao thức
MPLS-TE Multiprotocol Label Switching-Traffic Engineering Kỹ thuật lưu lượng trong chuyển mạch nhãn đa giao thức
MTU Maximum Transfer Unit Đơn vị truyền tải tối đa
NAM Network Animator Mô hình hóa mạng mô phỏng NS
NGN Next-Generation Network Mạng thế hệ kế tiếp
NHLFE Next Hop Label Forwarding Entry Chỉ mục nhãn chuyển tiếp kế tiếp
NHRP Next Hop Resolution Protocol Giao thức phân giải địa chỉ
NLRI Network Layer Reachability Information Thông tin khả tới tại lớp mạng
NS Network Simulator Phần mềm mô phỏng mạng
OSI Open System Interconnection Kết nối hệ thống mở
OSPF Open Shortest Path First Giao thức định tuyến mở đường dẫn ngắn nhất trước tiên
PID Protocol Identifier Thành phần nhận dạng giao thức
PHP Penultimate Hop Popping Gỡ nhãn ở chặng cuối
PIL Protection Ingress LSR LSR bảo vệ đầu vào
PML Protection Merging LSR LSR khôi phục
POR Point of Repair Điểm sửa chữa
PPP Point-to-Point Protocol Giao thức điểm-điểm
PSL Path Switch LSR LSR chuyển mạch đường
PVC Permanent Virtual Circuit Kết nối ảo tĩnh
RFC Request for Comment Các khuyến nghị
RIB Routing Information Base Cơ sở thông tin định tuyến
RSVP Resource Reservation Protocol Giao thức dành riêng tài nguyên
SONET Sychronous Optical Network Mạng quang đồng bộ
SPF Shortest Path First Thuật toán định tuyến đường dẫn ngắn nhất trước tiên
TCP Transmission Control Protocol Giao thức điều khiển truyền tải
TE Traffic Engineering Kỹ thuật lưu lượng
TLV Type, Length, Value Loại, độ dài, giá trị
TTL Time to live Thời gian tồn tại của gói tin
ToS Type of Service Loại dịch vụ của gói tin
UDP User Datagram Protocol Giao thức dữ liệu người dùng
146 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2577 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu và mô phỏng một số cơ chế bảo vệ, khôi phục đường trong mpls-Te, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
P truyền tải lưu lượng của các dịch vụ có tính chất nhạy cảm với trễ như các dịch vụ Voice/Video over IP, các dịch vụ tương tác Interactive, Streamming,…Mô hình Haskin có thể thích hợp trong việc bảo vệ, khôi phục các TE-LSP truyền tải lưu lượng Data thông thường hoạt động trên nền TCP/UDP. Trên thực tế, mô hình Hundessa (một cải tiến nâng cao của mô hình Haskin cải tiến) nên được triển khai thay thế nhằm khắc phục nhược điểm lãng phí tài nguyên gây ra bởi đường dự phòng đảo (Haskin) và nhược điểm đảo lộn trật tự gói (Haskin cải tiến)
Các mô hình Shortest-Dynamic và Simple-Dynamic, có ưu điểm là không yêu cầu thiết lập và báo hiệu chiếm giữ tài nguyên dự phòng trước khi xảy ra sự cố, nhờ đó tài nguyên tổng trong mạng có thể được sử dụng nhiều hơn. Tuy nhiên các mô hình này có thời gian hội tụ khá lâu dẫn đến tỷ lệ mất gói cao và thời gian ngưng dịch vụ khá lớn bởi các nút phải thực hiện các giải thuật phức tạp PCALC/CSPF và CR-LDP/RSVP-TE nhằm tính toán và thiết lập tài nguyên dự phòng.
→Do đó các mô hình Shortest-Dynamic và Simple-Dynamic hoàn toàn không thích hợp trong việc bảo vệ, khôi phục các TE-LSP truyền tải lưu lượng của các dịch vụ có tính chất nhạy cảm với mất gói và trễ như các dịch vụ đã trình bày ở trên (Voice/Video over IP/MPLS, Interactive, Streamming, UDP,…). Các mô hình này có thể thích hợp với các dịch vụ hoạt động trên nền TCP có khả năng sửa chữa lỗi mất gói. Tuy nhiên trong một hệ thống mạng có tính chất ổn định cao hoặc có tính chất khan hiếm về mặt tài nguyên thì các mô hình này vẫn có thể được triển khai cho bất cứ loại hình dịch vụ nào và khi có sự cố xảy ra thì các khách hàng phải chấp nhận sự sụt giảm đột ngột, ngưng dịch vụ trong một khoảng thời gian nào đó.
Mô hình Simple-Static, có tốc độ hội tụ cao bởi tài nguyên dự phòng đã được tính toán và thiết lập trước, từ đó mà hai ưu điểm nổi bật của Simple-Static đó là cho tỷ lệ mất gói rất thấp và thời gian ngưng dịch vụ rất ngắn. Một ưu điểm nữa là cho phép sửa chữa cục bộ nên mềm dẻo hơn so với các mô hình có tính chất sửa chữa toàn cục như Makam, Haskin. Nhược điểm của mô hình Simple-Static là yêu cầu tài nguyên dự phòng được thiết lập trước, tại thời điểm xảy ra lỗi, nút chỉ thực hiện báo hiệu, mô hình này đòi hỏi khối lượng cấu hình khá lớn đối với nhà quản trị.
→Do đó mô hình Simple-Static đặc biệt thích hợp trong việc bảo vệ, khôi phục các TE-LSP truyền tải lưu lượng của các dịch vụ có tính chất nhạy cảm với mất gói và trễ như các dịch vụ đã trình bày ở trên (Voice/Video over IP/MPLS, Interactive, Streamming, UDP,…) và cả các dịch vụ Data thông thường mà yêu cầu mức chất lượng dịch vụ cao. Mô hình này cho phép sửa chữa cục bộ, do đó thích hợp trong việc bảo vệ, khôi phục các tài nguyên nút/liên kết có tính ổn định kém. Trên thực tế triển khai với các giải pháp của hãng Cisco, mô hình Simple-Static luôn là mô hình chủ đạo trong việc bảo vệ, khôi phục đường trong MPLS-TE
Như vậy đồ án đã cố gắng tổng hợp và đưa ra một số giải pháp nhằm lựa chọn mô hình bảo vệ, khôi phục đường tối ưu nhất trong các tình huống yêu cầu bảo vệ, khôi phục đường truyền tải cho loại lưu lượng có tính chất cụ thể.
Nhìn chung với điều kiện mạng ổn định, tất cả các mô hình này đều có thể được áp dụng cho bất cứ loại hình dịch vụ nào, khi xảy ra sự cố, các khách hàng phải chấp nhận sự sụt giảm đột ngột, ngưng dịch vụ trong một khoảng thời gian cho phép nào đó. Tuy nhiên nhằm hướng tới sự hoàn chỉnh nhất, tối ưu nhất, mô hình Simple-Static nên trở thành giải pháp hoàn thiện nhất cho các nhà cung cấp dịch vụ mạng. Cách thức tổ chức sắp xếp tài nguyên dự phòng; bảo vệ nút nào, liên kết nào cho hợp lý và hiệu quả cao tùy thuộc vào từng hệ thống mạng của mỗi nhà cung cấp dịch vụ mạng. Việc tổ chức sắp xếp và thiết kế này nên được thực hiện theo một quá trình nghiêm túc, chặt chẽ và dựa trên một cơ sở khoa học vững vàng.
3.6 Kết luận chương 3
Nội dung đồ án tốt nghiệp tập trung vào 6 mô hình bảo vệ, khôi phục đường trong MPLS-TE bao gồm các mô hình Makam, Haskin, Hundessa, Shortest-Dynamic, Simple-Dynamic, Simple-Static. Sinh viên đã đưa ra một số nhận xét, đánh giá và so sánh về đặc điểm của các mô hình này trong phần lý thuyết chương 2 của đồ án, và trong chương 3 này sinh viên đã tiến hành nghiên cứu mô phỏng 5 mô hình bảo vệ, khôi phục đường Makam, Haskin, Shortest-Dynamic, Simple-Dynamic, Simple-Static nhằm kiểm nghiệm lại các kết luận đã rút ra ở phần trên.
Quá trình mô phỏng và khảo sát một số cơ chế bảo vệ, khôi phục đường trong chương 3 được thực hiện trên phần mềm mô phỏng NS-2 và đã thực hiện hoàn chỉnh các công việc sau:
Mô phỏng hoạt động của 5 mô hình bảo vệ, khôi phục đường: Makam, Haskin, Shortest-Dynamic, Simple-Dynamic, Simple-Static trong điều kiện liên kết gặp sự cố đứt đường truyền.
Khảo sát và đánh giá hiệu năng của 5 mô hình bảo vệ, khôi phục
Khảo sát và vẽ đồ thị thông lượng theo thời gian của lưu lượng
Khảo sát tỷ lệ mất gói trong thời gian hội tụ của từng mô hình
Khảo sát thời gian ngưng dịch vụ của từng mô hình
Khảo sát độ trễ toàn trình trung bình của lưu lượng trong từng mô hình
Đưa ra các đánh giá, so sánh và phân tích định lượng kết quả mô phỏng tổng hợp của cả 5 mô hình bảo vệ, khôi phục
Đề xuất một số giải pháp lựa chọn mô hình bảo vệ, khôi phục đường trong các tình huống yêu cầu bảo vệ, khôi phục đường truyền tải các lưu lượng có tính chất cụ thể
KẾT LUẬN
Đồ án tốt nghiệp đã đề cập về nguyên lý hoạt động và các thành phần cũng như kiến trúc các công nghệ MPLS, MPLS-TE. Qua đó đi sâu vào của các mô hình bảo vệ, khôi phục đường trong MPLS-TE.
Đồ án đã tập trung nghiên cứu cơ chế và nguyên lý hoạt động của 6 mô hình bảo vệ, khôi phục đường trong MPLS-TE bao gồm các mô hình Makam, Haskin, Hundessa, Shortest-Dynamic, Simple-Dynamic, Simple-Static. Sinh viên đã đưa ra một số nhận xét, đánh giá và so sánh về hiệu năng trong phần lý thuyết chương 2 của đồ án, và trong chương 3 sinh viên tiến hành thực hiện mô phỏng và khảo sát 5 mô hình bảo vệ, khôi phục đường Makam, Haskin, Shortest-Dynamic, Simple-Dynamic, Simple-Static nhằm kiểm nghiệm lại các kết luận đã rút ra ở chương 2.
Các thông số và các tiêu chí mà đồ án đã đưa ra để nhận xét, so sánh định tính ở chương 2 và khảo sát, phân tích định lượng ở chương 3 nhằm đánh giá hiệu năng của các mô hình bảo vệ, khôi phục đường bao gồm:
Thông lượng theo thời gian
Tỷ lệ mất gói trong thời gian hội tụ
Thời gian ngưng dịch vụ
Độ trễ toàn trình trung bình của gói tin
Độ chiếm dụng tài nguyên bảo vệ, khôi phục
Các nhận xét đánh giá từng mô hình bảo vệ, khôi phục đường theo từng thông số và tổng hợp được trình bày chi tiết trong chương 3 của đồ án.
Sau khi có được các đánh giá về hiệu năng của từng mô hình bảo vệ, khôi phục, đồ án đề xuất một số các giải pháp lựa chọn mô hình bảo vệ, khôi phục đường tối ưu nhất và toàn diện nhất trong các tình huống yêu cầu bảo vệ đường truyền tải của lưu lượng có tính chất nhất định. Và theo nhận xét được rút ra thì mô hình bảo vệ, khôi phục Simple-Static là mô hình tối ưu và toàn diện hơn cả.
Một số hướng nghiên cứu và phát triển cho đồ án tốt nghiệp trong tương lai có thể là:
Nghiên cứu và mô phỏng mô hình bảo vệ, khôi phục đường Hundessa, mô hình duy nhất mà sinh viên chưa thể thực hiện mô phỏng hoàn thiện trong 6 mô hình đã được mô phỏng và khảo sát
Nghiên cứu, mô phỏng và khảo sát các mô hình bảo vệ, khôi phục đường hiện tại nhưng dựa trên nền giao thức RSVP-TE thay vì CR-LDP như trong đồ án đã thực hiện. Mặc dù giao thức CR-LDP có nhiều ưu điểm hơn giao thức RSVP-TE nhưng hiện nay giao thức RSVP-TE đang ngày một được sử dụng nhiều hơn trong các hệ thống triển khai thực tế.
Nghiên cứu, phát triển mô hình bảo vệ, khôi phục đường mới với hiệu năng tốt hơn các mô hình bảo vệ, khôi phục sẵn có.
Một lần nữa, em xin được gửi lời cảm ơn chân thành nhất đến thày giáo hướng dẫn đồ án, TS. Nguyễn Tiến Ban, thày đã tận tình định hướng phương pháp tiếp cận, nghiên cứu khoa học, hướng dẫn các vấn đề chuyên môn cho em không chỉ với đồ án tốt nghiệp lần này mà còn trong suốt những năm tháng em học tập tại Học Viện Công Nghệ Bưu Chính Viễn Thông.
Em cũng xin chân thành cảm ơn tất cả các thày cô giáo trong bộ môn Mạng Viễn Thông, thày giáo KS. Nguyễn Đình Long và cô giáo ThS. Nguyễn Thị Thu Hằng, các thày cô đã dìu dắt em trong những ngày tháng làm đề tài nghiên cứu khoa học đầu tiên cho tới khi thực tập chuyên sâu tại bộ môn và làm đồ án tốt nghiệp.
Hà Nội, ngày 16 tháng 12 năm 2009
Sinh viên thực hiện
Nguyễn Tuấn Anh
PHỤ LỤC: MÃ NGUỒN CÁC CHƯƠNG TRÌNH MÔ PHỎNG
KỊCH BẢN 1 – MÔ HÌNH BẢO VỆ, KHÔI PHỤC 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 kichban1.nam w]
$ns namtrace-all $nf
# Tao cac tracefile de luu du lieu cho xgraph
set f1 [open luong_1.tr w]
set tracefile [open out.tr w]
$ns trace-all $tracefile
# 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: 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 " 2Mbps "
$ns duplex-link-op $LSR3 $LSR5 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR7 label " 2Mbps "
$ns duplex-link-op $LSR7 $LSR9 label " 1Mbps "
$ns duplex-link-op $LSR1 $LSR2 label " 1Mbps "
$ns duplex-link-op $LSR2 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR4 $LSR6 label " 2Mbps "
$ns duplex-link-op $LSR6 $LSR8 label " 1Mbps "
$ns duplex-link-op $LSR8 $LSR9 label " 2Mbps"
$ns duplex-link-op $LSR3 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR6 label " 1Mbps "
$ns duplex-link-op $LSR7 $LSR8 label " 1Mbps "
$R0 label "Source"
$R10 label "Destination"
$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"
}
#----------------------------------------------------
# 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
$ns trace-annotate $msg
set module [$node get-module "MPLS"]
switch $lspid {
1100 {
$module bind-flow-erlsp 10 100 $lspid
}
1200 {
$module 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
}
#----------------------------------------------------
# Thu tuc dong file va the hien ket qua khi ket thuc mo phong
proc finish {} {
global ns nf f1 tracefile
$ns flush-trace
close $nf
close $f1
close $tracefile
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Kich ban 1: Khoi phuc duong theo co che Makam" -tf "helvetica-12" &
exec nam -r 2ms kichban1.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: MAKAM
$ns enable-reroute notify-prenegotiated
[$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 --------------------------------------------------------------------------"
puts "\n KICH BAN 1: KHOI PHUC DUONG THEO CO CHE SUA CHUA TOAN CUC (MAKAM)"
puts "\n KHAO SAT CAC THAM SO: PACKET-LOSS, PACKET-DELAY, SERVICE DISRUPTION TIME"
puts "\n NGUYEN TUAN ANH - D2005VT1, HVCNBCVT"
puts "\n nta.work@gmail.com @11/2009"
puts "\n --------------------------------------------------------------------------"
$ns at 0.00 "record"
# Thiet lap LSP lam viec
$ns at 0.15 "$ns trace-annotate {Bao hieu thiet lap duong lam viec: LSP_1100, ER=1_3_5_7_9 }"
$ns at 0.15 "[$LSR1 get-module "MPLS"] setup-erlsp 9 1_3_5_7_9 1100"
# Thiet lap LSP bao ve
$ns at 0.15 "$ns trace-annotate {Bao hieu thiet lap duong bao ve: LSP_1200, ER=1_2_4_6_8_9 }"
$ns at 0.15 "[$LSR1 get-module "MPLS"] setup-erlsp 9 1_2_4_6_8_9 1200"
$ns at 0.50 "$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.50 "$src1 start"
# Link giua LSR5 va LSR7 bi dut tai thoi diem 2.5s
$ns rtmodel-at 2.5 down $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
----------------------------------------------------------------------------------------------------------------------------------------
KỊCH BẢN 2 – MÔ HÌNH BẢO VỆ, KHÔI PHỤC 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 kichban2.nam w]
$ns namtrace-all $nf
# Tao cac tracefile de luu du lieu cho xgraph
set f1 [open luong_1.tr w]
set tracefile [open out.tr w]
$ns trace-all $tracefile
# 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 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 " 2Mbps "
$ns duplex-link-op $LSR3 $LSR5 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR7 label " 2Mbps "
$ns duplex-link-op $LSR7 $LSR9 label " 1Mbps "
$ns duplex-link-op $LSR1 $LSR2 label " 1Mbps "
$ns duplex-link-op $LSR2 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR4 $LSR6 label " 2Mbps "
$ns duplex-link-op $LSR6 $LSR8 label " 1Mbps "
$ns duplex-link-op $LSR8 $LSR9 label " 2Mbps"
$ns duplex-link-op $LSR3 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR6 label " 1Mbps "
$ns duplex-link-op $LSR7 $LSR8 label " 1Mbps "
$R0 label "Source"
$R10 label "Destination"
$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"
}
#----------------------------------------------------
# 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"]
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
}
#----------------------------------------------------
# Thu tuc dong file va the hien ket qua khi ket thuc mo phong
proc finish {} {
global ns nf f1 tracefile
$ns flush-trace
close $nf
close $f1
close $tracefile
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Kich ban 2: Khoi phuc duong theo co che Haskin" -tf "helvetica-12" &
exec nam -r 2ms kichban2.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: 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 --------------------------------------------------------------------------"
puts "\n KICH BAN 2: KHOI PHUC DUONG THEO CO CHE REVERSE-BACKUP (HASKIN)"
puts "\n KHAO SAT CAC THAM SO: PACKET-LOSS, PACKET-DELAY, SERVICE DISRUPTION TIME"
puts "\n NGUYEN TUAN ANH - D2005VT1, HVCNBCVT"
puts "\n nta.work@gmail.com @11/2009"
puts "\n --------------------------------------------------------------------------"
$ns at 0.0 "record"
# 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 tai thoi diem 2.0s
$ns rtmodel-at 2.5 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
KỊCH BẢN 3 – MÔ HÌNH BẢO VỆ, KHÔI PHỤC 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 kichban3.nam w]
$ns namtrace-all $nf
# Tao cac tracefile de luu du lieu cho xgraph
set f1 [open luong_1.tr w]
set tracefile [open out.tr w]
$ns trace-all $tracefile
# 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: 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 " 2Mbps "
$ns duplex-link-op $LSR3 $LSR5 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR7 label " 2Mbps "
$ns duplex-link-op $LSR7 $LSR9 label " 1Mbps "
$ns duplex-link-op $LSR1 $LSR2 label " 1Mbps "
$ns duplex-link-op $LSR2 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR4 $LSR6 label " 2Mbps "
$ns duplex-link-op $LSR6 $LSR8 label " 1Mbps "
$ns duplex-link-op $LSR8 $LSR9 label " 2Mbps"
$ns duplex-link-op $LSR3 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR6 label " 1Mbps "
$ns duplex-link-op $LSR7 $LSR8 label " 1Mbps "
$R0 label "Source"
$R10 label "Destination"
$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"
}
#----------------------------------------------------
# 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"]
switch $lspid {
1100 {
$module bind-flow-erlsp 10 100 $lspid
}
1101 { # LSP_1101 tu dong chon duong ngan nhat vong qua loi
$module secondary-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
}
#----------------------------------------------------
# Thu tuc dong file va the hien ket qua khi ket thuc mo phong
proc finish {} {
global ns nf f1 tracefile
$ns flush-trace
close $nf
close $f1
close $tracefile
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Kich ban 3: Khoi phuc duong theo co che Shortest-Dynamic" -tf "helvetica-12" &
exec nam -r 2ms kichban3.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 --------------------------------------------------------------------------"
puts "\n KICH BAN 3: KHOI PHUC DUONG THEO CO CHE SHORTEST-DYNAMIC"
puts "\n KHAO SAT CAC THAM SO: PACKET-LOSS, PACKET-DELAY, SERVICE DISRUPTION TIME"
puts "\n NGUYEN TUAN ANH - D2005VT1, HVCNBCVT"
puts "\n nta.work@gmail.com @11/2009"
puts "\n --------------------------------------------------------------------------"
$ns at 0.0 "record"
# 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 tai thoi diem tu 2.0s
$ns rtmodel-at 2.5 down $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
----------------------------------------------------------------------------------------------------------------------------------------
KỊCH BẢN 4 – MÔ HÌNH BẢO VỆ, KHÔI PHỤC 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 kichban4.nam w]
$ns namtrace-all $nf
# Tao cac tracefile de luu du lieu cho xgraph
set f1 [open luong_1.tr w]
set tracefile [open out.tr w]
$ns trace-all $tracefile
# 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: 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 " 2Mbps "
$ns duplex-link-op $LSR3 $LSR5 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR7 label " 2Mbps "
$ns duplex-link-op $LSR7 $LSR9 label " 1Mbps "
$ns duplex-link-op $LSR1 $LSR2 label " 1Mbps "
$ns duplex-link-op $LSR2 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR4 $LSR6 label " 2Mbps "
$ns duplex-link-op $LSR6 $LSR8 label " 1Mbps "
$ns duplex-link-op $LSR8 $LSR9 label " 2Mbps"
$ns duplex-link-op $LSR3 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR6 label " 1Mbps "
$ns duplex-link-op $LSR7 $LSR8 label " 1Mbps "
$R0 label "Source"
$R10 label "Destination"
$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"
}
#----------------------------------------------------
# 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 module [$node get-module "MPLS"]
switch $lspid {
9999 { # LSP_9999 tu dong chon duong vong den egress
set msg " [string range [$ns now] 0 3]s: Tunnel LSP_$lspid (Ingress=LSR[$node id]) tu dong chon duong ngan nhat den Egress !"
puts $msg
$ns trace-annotate $msg
}
default {
puts " Error!"
exit 1
}
}
}
#----------------------------------------------------
# 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
}
#----------------------------------------------------
# Thu tuc dong file va the hien ket qua khi ket thuc mo phong
proc finish {} {
global ns nf f1 tracefile
$ns flush-trace
close $nf
close $f1
close $tracefile
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Kich ban 4: Khoi phuc duong theo co che Simple-Dynamic" -tf "helvetica-12" &
exec nam -r 2ms kichban4.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: SIMPLE-DYNAMIC
$ns enable-reroute simple-dynamic
[$LSR5 get-module "MPLS"] set-protection-flow 0.1 0.01 10 -1
[$LSR1 get-module "MPLS"] enable-data-driven
# Bat dau mo phong
#exec clear >@ stdout
puts "\n --------------------------------------------------------------------------"
puts "\n KICH BAN 3: KHOI PHUC DUONG THEO CO CHE SIMPLE-DYNAMIC"
puts "\n KHAO SAT CAC THAM SO: PACKET-LOSS, PACKET-DELAY, SERVICE DISRUPTION TIME"
puts "\n NGUYEN TUAN ANH - D2005VT1, HVCNBCVT"
puts "\n nta.work@gmail.com @11/2009"
puts "\n --------------------------------------------------------------------------"
$ns at 0.0 "record"
$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 tai thoi diem 2.5s
$ns rtmodel-at 2.5 down $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
----------------------------------------------------------------------------------------------------------------------------------------
KỊCH BẢN 5 – MÔ HÌNH BẢO VỆ, KHÔI PHỤC SIMPLE-STATIC
# 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 kichban5.nam w]
$ns namtrace-all $nf
# Tao cac tracefile de luu du lieu cho xgraph
set f1 [open luong_1.tr w]
set tracefile [open out.tr w]
$ns trace-all $tracefile
# 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: 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 " 2Mbps "
$ns duplex-link-op $LSR3 $LSR5 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR7 label " 2Mbps "
$ns duplex-link-op $LSR7 $LSR9 label " 1Mbps "
$ns duplex-link-op $LSR1 $LSR2 label " 1Mbps "
$ns duplex-link-op $LSR2 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR4 $LSR6 label " 2Mbps "
$ns duplex-link-op $LSR6 $LSR8 label " 1Mbps "
$ns duplex-link-op $LSR8 $LSR9 label " 2Mbps"
$ns duplex-link-op $LSR3 $LSR4 label " 1Mbps "
$ns duplex-link-op $LSR5 $LSR6 label " 1Mbps "
$ns duplex-link-op $LSR7 $LSR8 label " 1Mbps "
$R0 label "Source"
$R10 label "Destination"
$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"
}
#----------------------------------------------------
# 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"]
switch $lspid {
1100 {
$module bind-flow-erlsp 10 100 $lspid
}
1200 {
[$LSR5 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
}
#----------------------------------------------------
# Thu tuc dong file va the hien ket qua khi ket thuc mo phong
proc finish {} {
global ns nf f1 tracefile
$ns flush-trace
close $nf
close $f1
close $tracefile
exec xgraph luong_1.tr -M -nb -bg white -fg black -zg black \
-geometry 500x230 -y "BW (Mbps)" -x "Time (sec)" \
-t "Kich ban 5: Khoi phuc duong theo co che Simple-Static" -tf "helvetica-12" &
exec nam -r 2ms kichban5.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: HASKIN
$ns enable-reroute drop
[$LSR5 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100
# Bat dau mo phong
#exec clear >@ stdout
puts "\n --------------------------------------------------------------------------"
puts "\n KICH BAN 5: KHOI PHUC DUONG THEO CO CHE SIMPLE-STATIC"
puts "\n KHAO SAT CAC THAM SO: PACKET-LOSS, PACKET-DELAY, SERVICE DISRUPTION TIME"
puts "\n NGUYEN TUAN ANH - D2005VT1, HVCNBCVT"
puts "\n nta.work@gmail.com @11/2009"
puts "\n --------------------------------------------------------------------------"
$ns at 0.0 "record"
# 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=5_6_8_9 }"
$ns at 0.1 "[$LSR1 get-module "MPLS"] setup-erlsp 9 5_6_8_9 1200"
$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 tai thoi diem 2.5s
$ns rtmodel-at 2.5 down $LSR5 $LSR7
$ns at 5.0 "$src1 stop"
$ns at 5.5 "recv-pkts"
$ns at 5.5 "finish"
$ns run
TÀI LIỆU THAM KHẢO
TS. Nguyễn Tiến Ban, Học Viện Công Nghệ Bưu Chính Viễn Thông, “Chương trình bồi dưỡng kiến thức IP và NGN cho kỹ sư Điện tử Viễn Thông của tập đoàn VNPT – Công Nghệ MPLS”.
Gaeil Ahn, Woojik Chun, Dept. of Comput. Eng., Chungnam Nat. Univ., Taejon, “Simulator for MPLS Path Restoration and Performance Evaluation”, IEEE Magazine, April, 2001.
Sangsik Yoon Hyunseok Lee Deokjai Choi Youngcheol Kim Gueesang Lee Lee, M., Dept. of Comput. Sci., Chonnam Nat. Univ., Kwangju, “An efficient recovery mechanism for MPLS-based protection LSP”, IEEE Magazine, April, 2001.
Bartos, R. Raman, M. Gandhi, A. Dept. of Comput. Sci., New Hampshire Univ., Durham, NH; “New approaches to service restoration in MPLS-based networks”, IEEE Magazine, July, 2001.
Hundessa, L. Pascual, J.D., Dept. d'Arquitectura de Computadors, Univ. Politecnica de Catalunya, Barcelona; “Fast rerouting mechanism for a protected label switched path”, IEEE Magazine, October, 2001.
Banerjee, G. Sidhu, D. Maryland Center for Telecommun. Res., Maryland Univ., Baltimore, MD, “Label switched path restoration under two random failures”, IEEE Magazine, November, 2001.
Changcheng Huang Sharma, V.Owens, K.Makam, S. Dept. of Syst. & Comput. Eng., Carleton Univ., Ottawa, Ont., “Building reliable MPLS networks using a path protection mechanism”, IEEE Magazine, March, 2002.
Yimin Qiu Jianxun Chen Jinguang Gu Xin Xu, Coll. of Comput. Sci. & Technol., Wuhan Univ. of Sci. & Technol., Wuhan, “A Simulation for MPLS Global Recovery Model”, IEEE Magazine, November, 2008.
Eric Osborne, Ajay Simha, “Traffic Engineering with MPLS” Cisco Press, July 17, 2002
David McDysan, Dave Paw, “ATM & MPLS: Theory and Application”, McGrawHill, 2002.
Johan Martin Olof Petersson, “MPLS Based Recovery Mechanisms”, Master Dessertation, University of Oslo, May, 2005.
Luc De Ghein, “MPLS Fundamentals”, Cisco Press, November 21th, 2006.
Monique Morrow, Azhar Sayeed, “MPLS and Next-Generation Networks: Foundations for NGN and Enterprise Virtualization, Cisco Pres, 2006
RFCs: 2283, 2370, 2858, 3031, 3032, 3035, 3036, 3209, 3469, 3906, 4201; IETF, proposed-standards