Giao thức phân phối nhãn CR LDP trong MPLS

86 753 0
Giao thức phân phối nhãn CR LDP trong MPLS

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Sự phát triển của Chuyển Mạch Nhãn Đa Giao Thức MPLS chắc chắn là kết quả của một thực tế là nó cho phép mạng thực hiện tất cả các loại lưu lượng, từ lưu lượng IP đến lưu lượng VoiIP đến lưu lượng lớp 2. MPLS cung cấp phương tiện cho mạng IP để thống nhất nhiều mạng lưới thành một. MPLS có thể thống nhất ATM, Frame Relay, Voice, và mạng IP thành một cơ sở hạ tầng mạng lưới thống nhất, do đó tạo ra một ưu thế về chi phí rất lớn.Trong đồ án này, em sẽ khái quát và phân loại các giao thức phân phối nhãn trong MPLS. Tập trung vào giao thức phân phối nhãn dựa trên các ràng buộc, với thuật toán định tuyến ràng buộc CSPF, xác định các tuyến tường minh, truyền lưu lượng tận dụng tối ưu tài nguyên mạng. Để giải quyết các vấn đề đó đầu tiên chúng ta cần phải hiểu MPLS là gì, các lợi ích mà nó đem lại, các khái niệm và hoạt động cơ bản trong MPLS sẽ được giới thiệu trong chương 1. Chương 2, giải thích cách thức nhãn được phân phối trên mạng như thế nào và các cơ chế tái định tuyến trên mạng. Cuối cùng, sử dụng công cụ NS2 mô phỏng mô hình mạng sử dụng công nghệ MPLS với giao thức phân phối nhãn CRLDP ưu điểm hơn so với mạng IP truyền thống và so sánh 2 cơ chế tái định tuyến Kakam và Haskin.

LỜI CAM ĐOAN Tôi xin cam đoan : Những nội dung đồ án thực hướng dẫn trực tiếp thầy Tăng Tấn Chiến Mọi tham khảo dùng đồ án trích dẫn rõ ràng tên tác giả Tên công trình nghiên cứu Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên thực Nguyễn Văn Tiến MỤC LỤC Trang THUẬT NGỮ VIẾT TẮT ATM Asynchnorous Tranfer Mode Truyền dẫn không đồng AS Autonomous System Hệ thống tự trị Alternate Path Routing Thuật toán định tuyến đường Algorithm thay APRA ASIC Application-Specific Integrated Circuit Mạch tích hợp chuyên dụng BGP Border Gateway Protocol Giao thức cổng biên CE Custom Edge Biên phía khách hàng CR Constraint-based Routing Định tuyến ràng buộc Constraint Label Distribution Giao thức phân phối nhãn dựa Protocol ràng buộc EGP Exterior Gateway Protocol Giao thức định tuyến ngoại ER Explicit Route Định tuyến tường minh FEC Forwarding Equivalency Class Lớp chuyển tiếp tương đương HDLC High-Level Data Link Control IPX Internetwork Packet Exchange Tổng đài gói liên mạng IGP Interior Gateway Protocol Giao thức cổng nội CR-LDP Điều khiển liên kết liệu chất lượng cao Trang ISP IS-IS Internet Service Provider Nhà cung cấp dịch vụ Internet Intermediate System-toIntermediate System LAN Local Area Network Mạng cuc LDP Label Distribution Protocol Giao thức phân phối nhãn LIB Label Information Base Bảng sở liệu nhãn LFIB Label Forwarding Instance Base Cơ sở thông tin chuyển tiếp nhãn LSP Label Switch Path Tuyến chuyển mạch nhãn LSR Label Switch Router MNS MPLS Netword Simulation Mô mạng MPLS MPLS Multiprotool Label Switching Chuyển mạch nhãn đa giao thức OSI Open Systems Interconnection Tổ chức tiêu chuẩn hoá quốc tế OSPF Open Shortest Path Cost PE Provider Edge Biên nhà cung cấp QoS Quanlity of Service Chất lượng dịch vụ RIP Routing Information Protocol Giao thức thông tin định tuyến RSVP Resource Reservation Protocol Giao thức dành trước tài nguyên SP Service Provider Nhà cung cấp Bộ định tuyến chuyển mạch nhãn Mở tuyến đường ngắn Trang SLA Service Level Agreement Hợp Đồng Lớp Dịch Vụ SPC Shortest Path Cost Tuyến chi phí thấp TCP Transmission Control Protocol Giao thức truyền tập tin tin cậy TE Traffic Engineering Kĩ thuật điều khiển lưu lượng TVL Type Label Value Kiểu-Nhãn-Giá trị UDP User Datagram Protocol VC Virtual Channel Kênh ảo VCI Virtual Channel Định danh kênh ảo VoIP Voice over IP Thoại qua IP VP Virtual Path Identifier Kênh ảo VPI Virtual Packet Indentifier Định danh gói ảo VPN Virtual Pravite network Mạng riêng ảo VRF Virtual routing/ forwarding Định tuyến/chuyển tiếp ảo WAN Wide Area Network Mạng diện rộng Giao thức truyền tập tin không tin cậy LỜI NÓI ĐẦU Trang Sự phát triển Chuyển Mạch Nhãn Đa Giao Thức MPLS chắn kết thực tế cho phép mạng thực tất loại lưu lượng, từ lưu lượng IP đến lưu lượng VoiIP đến lưu lượng lớp MPLS cung cấp phương tiện cho mạng IP để thống nhiều mạng lưới thành MPLS thống ATM, Frame Relay, Voice, mạng IP thành sở hạ tầng mạng lưới thống nhất, tạo ưu chi phí lớn Trong đồ án này, em khái quát phân loại giao thức phân phối nhãn MPLS Tập trung vào giao thức phân phối nhãn dựa ràng buộc, với thuật toán định tuyến ràng buộc CSPF, xác định tuyến tường minh, truyền lưu lượng tận dụng tối ưu tài nguyên mạng Để giải vấn đề cần phải hiểu MPLS gì, lợi ích mà đem lại, khái niệm hoạt động MPLS giới thiệu chương Chương 2, giải thích cách thức nhãn phân phối mạng chế tái định tuyến mạng Cuối cùng, sử dụng công cụ NS2 mô mô hình mạng sử dụng công nghệ MPLS với giao thức phân phối nhãn CR-LDP ưu điểm so với mạng IP truyền thống so sánh chế tái định tuyến Kakam Haskin Em xin gởi lời cảm ơn đến thầy cô giáo Khoa Điện Tử-Viễn Thông giảng dạy trang bị cho em kiến thức Em xin chân thành cảm ơn thầy Nguyễn Duy Nhật Viễn hướng dẫn định hướng cho em hoàn thành đồ án này! Đà Nẵng, ngày 29 tháng năm 2010 Chương 1: Tổng quan chuyển mạch nhãn đa giao thức (MPLS) Trang 1.1 Giới thiệu chương Chuyển mạch nhãn đa giao thức (MPLS) công nghệ mạng phổ biến sử dụng gói liệu dán nhãn để chuyển tiếp qua mạng lõi Trong chương giải thích vai trò ưu điểm mạng MPLS triển khai mạng đường trục, giúp hiểu làm MPLS hoạt động, hiểu mô hình xây dựng mạng MPLS, vị trí MPLS mô hình mạng OSI truyền thống, khái niệm hoạt động MPLS, giải thích nhãn sử dụng nào, cách sử dụng làm phân phối liệu mạng lưới Đầu tiên, cần hiểu MPLS 1.2 MPLS gì: Chuyển Mạch Nhãn Đa Giao Thức (MPLS) công nghệ mạng phổ biến sử dụng nhãn gắn với gói tin để chuyển tiếp liệu qua mạng Các nhãn MPLS quảng bá router để ánh xạ label-to-label Các nhãn dán vào gói tin IP, cho phép router chuyển tiếp lưu lượng truy cập nhãn địa IP đích Các gói tin chuyển tiếp chuyển mạch nhãn thay chuyển mạch IP MPLS công nghệ dùng chủ yếu mạng lõi, mạng lõi nơi mà liệu của mạng thuê bao đổ trước tới đích, chịu tải trọng lớn sử dụng công nghệ bình thường Kỹ thuật chuyển đổi nhãn mới, Frame Relay ATM sử dụng để chuyển tiếp khung tế bào mạng Trong Frame Relay, khung có chiều dài bất kỳ, ATM tế bào có chiều dài cố định, tế bào bao gồm phần tiêu đề byte phần liệu 48 byte liệu Các tiêu đề tế bào ATM khung Frame Relay sử dụng kênh ảo để chuyển tiếp tế bào khung Sự giống Frame Relay ATM nút mạng, phần tiêu đề thay đổi Điều khác với việc chuyển tiếp gói tin IP, router chuyển tiếp gói IP, không thay đổi địa IP đích gói tin Thực tế, nhãn MPLS sử dụng để chuyển tiếp gói tin không sử dụng Trang địa IP đích nửa, điều làm cho MPLS phát triển mạnh mẽ, tích hợp IP ATM MPLS VPN tốt 1.2.1 WAN gì: Trước MPLS, WAN giao thức phổ biến ATM Frame Relay sử dụng Giống MPLS, WAN sử dụng để thống mạng với Cùng với phát triển mạnh mẽ Internet, IP trở thành giao thức phổ biến nhất, tồn khắp nơi, VPN tạo giao thức WAN, khách hàng thuê kết nối ATM Frame Relay sử dụng đường dây thuê bao xây dựng mạng riêng họ Router nhà cung cấp dịch vụ chuyển tiếp lớp hướng tới router lớp thuê bao, bảm bảo chia tách cô lập thuê bao khác Các loại mạng gọi mạng chồng phủ Mạng chồng phủ đươc sử dụng đến ngày nay, nhiều khách hàng sử dụng dịch vụ MPLS VPN Giải thích lợi ích MPLS, giúp hiểu rõ MPLS lựa chọn tuyệt vời cho nhà cung cấp dịch vụ triển khai 1.2.2 Lợi ích MPLS: • Sử dụng sở hạ tầng mạng thống • Tốt IP-over-ATM • Không sử dụng Border Gateway Protocol (BGP) lõi • Các peer-to-peer cho mô hình MPLS VPN • Tối ưu dòng lưu lượng • Traffic Engineering Một ưu điểm dễ nhận thấy giao thức chuyển mạch nhãn tốc độ Chuyển mạch gói IP coi chậm so với chuyển mạch gói nhãn chuyển mạch nhãn cần tra nhãn để định tuyến, chuyển mạch gói IP, router chuyển tiếp gói IP cách nhìn vào IP đích, tìm Trang đường dẫn tốt tra bảng định tuyến Tuy nhiên, địa IP unicast multicast có đến octets, nên công việc định tuyến phức tạp hơn, nghĩa việc định chuyển gói tin IP khoảng thời gian so với chuyển mạch nhãn Vì lý nên số người cho việc tra nhãn đơn giản nhanh chóng tra IP đích chuyển mạch gói nhanh Ngày nay, liên kết router có băng thông lên đến 40Gbps Một router có liên kết tốc độ cao chuyển mạch cho tất gói IP cách sử dụng CPU để định chuyển tiếp, CPU có trách nhiệm xử lý Mặt phẳng xử lý tập hợp giao thức mặt phẳng liệu mặt phẳng chuyển tiếp Thành phần mặt phẳng xử lý giao thức định tuyến, định tuyến, điều khiển khác tín hiệu giao thức sử dụng để cung cấp cho mặt phẳng liệu Mặt phẳng liệu đường chuyển tiếp gói thông qua router switch Công việc chuyển tiếp gói (hay gọi mặt phẳng chuyển tiếp) thực phần cứng chế tạo đặc biệt, hay gọi mạch tích hợp chuyên dụng (ASIC).Việc sử dụng ASIC mặt phẳng chuyển tiếp router làm cho gói IP chuyển mạch nhanh chuyển mạch gói sử dụng nhãn Vì vậy, lý sử dụng MPLS mạng để thực chuyển mạch gói nhanh điều hoàn toàn sai lầm, lý không xác 1.3 MPLS mô hình OSI Mô hình OSI gồm có lớp, thể hình 1.1 Lớp lớp 1, lớp vật lý Lớp đầu lớp 7, lớp ứng dụng Trong lớp vật lý loại dây cáp, khí, thiết bị điện Lớp lớp liên kết liệu, liên quan đến định dạng khung Ví dụ lớp liên kết liệu Ethernet, PPP, HDLC Frame Relay Tầm quang trọng liên kết liệu tạo kết nối hai máy Lớp lớp mạng, liên quan đến định dạng gói liệu end-to-end, mà ví dụ giao thức hoạt động nối tiếng lớp giao thức IP Trang Hình 1.1: MPLS Mô hình OSI MPLS giao thức lớp 2, giao thức lớp Vì vậy, MPLS không phù hợp mô hình OSI xem MPLS giao thức lớp 2,5 Nguyên lý MPLS tất gói IP dán nhãn (label) chuyển tuyến đường LSP (Label Switched Path) Các router đường dẫn vào nội dung nhãn để thực định tuyển tiếp gói mà không cần kiểm tra header IP 1.4 Khái niệm hoạt động MPLS: 1.4.1 Mặt phẳng liệu mặt phẳng điều khiển: Một mặt phẳng điều khiển (control plane) tập hợp phần mềm, phần cứng thiết bị (chẳng hạn router) dùng để điều khiển nhiều hoạt động thiết yếu mạng, phân phối nhãn, tìm tuyến khắc phục lỗi Nhiệm vụ mặt phẳng điều khiển cung cấp dịch vụ cho mặt phẳng liệu Mặt phẳng liệu chịu trách nhiệm chuyển tiếp lưu lượng người dùng qua router Các thuật ngữ mặt phẳng người dùng (user plane) mặt phẳng truyền dẫn (transport plane) dùng để mô tả mặt phẳng liệu 1.4.2 Mặt phẳng liệu mặt phẳng điều khiển IP: Đối với giao thức Internet, ví dụ mặt phẳng điều khiển giao thức định tuyến OSPF, IS-IS, BGP Nó cho phép IP chuyển tiếp lưu lượng Trang cách xác Các tin điều khiển trao đổi router để thực nhiều hoạt động khác nhau, bao gồm: • Trao đổi tin nút để thiết lập tuyến liên kết • Trao đổi tin theo chu kì (gọi tin Hello) để nút gần kề hoạt động tốt • Trao đổi tin quảng cáo (advertisement) địa tuyến để xây dựng bảng định tuyến sử dụng IP để chuyển tiếp lưu lượng 1.4.3 Mặt phẳng liệu mặt phẳng điều khiển MPLS: MPLS hoạt động với mặt phẳng điều khiển liệu Nhiệm vụ mặt phẳng điều khiển quảng cáo nhãn, địa liên kết chúng với Bô định tuyến chuyển mạch nhãn router cấu hình để hổ trợ MPeLS Nó dùng sở thông tin chuyển tiếp nhãn (Label Forwarding Information BaseLFIB) để xác định cách xử lý gói MPLS đến, ví dụ xét xem nút nhận gói liệu nút Các tin điểu khiển trao đổi LSR để thực nhiều hoạt động khác nhau, bao gồm thiết lập liên kết Sau hoạt động hoàn thành, nút gọi LSR ngang hàng (peer), trao đổi tin chu kì (bản tin Hello) để nút gần kề hoạt động tốt, trao đổi tin địa nhãn để liên kết địa với nhãn xây dựng bảng chuyển tiếp cho mặt phẳng liệu MPLS Mặt phẳng liệu MPLS chuyển tiếp lưu lượng cách kiểm tra nhãn tiêu đề gói MPLS, địa IP không cần kiểm tra Tiêu đề nhãn sau bị loại bỏ địa IP dùng để phân phối lưu lượng đến đích cuối 1.4.4 Lớp chuyển tiếp tương đương-FEC: Thuật ngữ lớp chuyển tiếp tương đương-FEC (Forwarding Equivalence Classes) sử dụng hoạt động chuyển mạch nhãn FEC mô tả liên kết Trang 10 set sLSRmodule [$sLSR get-module "MPLS"] set er [$sLSRmodule constraint-based-routing $dLSRid $bw] if {$er != -1} { puts " > Ket qua dinh tuyen rang buoc lspid $lspid : Tuyen tuong minh=$er" # setup CR-LSP: {fec er lspid TRate Bucket_Size Packet_Size SPrio HPrio} $sLSRmodule setup-crlsp $dLSRid $er $lspid $bw 4000B 600B } else { puts " > Ket qua dinh tuyen rang buoc lspid $lspid : Tuyen tuong minh= No path" } } # Create a procedure "notify-erlsp-setup" proc notify-erlsp-setup {node lspid} { global src0 src1 src2 src3 set ns [Simulator instance] set module [$node get-module "MPLS"] #puts " o The CR-LSP of lspid $lspid has been just established at [$ns now]" switch $lspid { 1100 { $module bind-flow-erlsp 11 100 $lspid $src0 start } 1200 { $module bind-flow-erlsp 11 200 $lspid $src1 start } 1300 { $module bind-flow-erlsp 11 300 $lspid $src2 start } 1400 { $module bind-flow-erlsp 11 400 $lspid $src3 start } default { puts "error" exit } } } # Create a procedure "notify-erlsp-fail" proc notify-erlsp-fail {node status lspid tr} { puts "nodeid=[$node id] : status=$status lspid=$lspid tr=$tr" } # Create a procedure "recv-pkts" Trang 72 proc recv-pkts {} { global sink0 sink1 sink2 sink3 set ns [Simulator instance] set msg " Luong da truyen [$sink0 set expected_] goi, mat [$sink0 set nlost_] goi, ti le mat goi la [string range [expr [$sink0 set nlost_]*100.0/[$sink0 set expected_]] 3] */*" puts $msg $ns trace-annotate $msg set msg " Luong 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_]] 3] */*" puts $msg $ns trace-annotate $msg set msg " Luong da truyen [$sink2 set expected_] goi, mat [$sink2 set nlost_] goi, ti le mat goi la [string range [expr [$sink2 set nlost_]*100.0/[$sink2 set expected_]] 3] */*" puts $msg $ns trace-annotate $msg set msg " Luong da truyen [$sink3 set expected_] goi, mat [$sink3 set nlost_] goi, ti le mat goi la [string range [expr [$sink3 set nlost_]*100.0/[$sink3 set expected_]] 3] */*" puts $msg $ns trace-annotate $msg } # Create a procedure "finish" proc finish {} { global ns nf f0 f1 f2 f3 $ns flush-trace close $nf close $f0 close $f1 close $f2 close $f3 exec nam -r 8ms MPLS.nam & exit } #Create a traffic sink and attach it to the node node11 set sink0 [new Agent/LossMonitor] $ns attach-agent $R11 $sink0 $sink0 clear #Create a traffic sink and attach it to the node node11 set sink1 [new Agent/LossMonitor] $ns attach-agent $R11 $sink1 Trang 73 $sink1 clear #Create a traffic sink and attach it to the node node11 set sink2 [new Agent/LossMonitor] $ns attach-agent $R11 $sink2 $sink2 clear #Create a traffic sink and attach it to the node node11 set sink3 [new Agent/LossMonitor] $ns attach-agent $R11 $sink3 $sink3 clear #Create a traffic source set src0 [attach-expoo-traffic $R0 $sink0 600B 0 0.8M] $src0 set fid_ 100 $ns color 100 orange #Create a traffic source set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0.8M] $src1 set fid_ 200 $ns color 200 magenta #Create a traffic source set src2 [attach-expoo-traffic $R0 $sink2 600B 0 0.8M] $src2 set fid_ 300 $ns color 300 blue #Create a traffic source set src3 [attach-expoo-traffic $R0 $sink3 600B 0 0.8M] $src3 set fid_ 400 $ns color 400 red # start exec clear >@ stdout puts "\n BAI 2: MO PHONG GIAO THUC CR-LDP TRONG MANG MPLS SU DUNG THUAT TOAN DINH TUYEN CSPF \n" $ns at 0.1 "constraint-based-routing 1100 $LSR1 0.8M" $ns at 0.1 "$src0 start" $ns at 0.5 "constraint-based-routing 1200 $LSR1 0.8M" $ns at 0.5 "$src1 start" $ns at 1.0 "constraint-based-routing 1300 $LSR1 0.8M" $ns at 1.0 "$src2 start" $ns at 1.5 "constraint-based-routing 1400 $LSR1 0.8M" $ns at 1.5 "$src3 start" $ns at 2.0 "$ns trace-annotate {4 luong di theo cac tuyen duong khac ==> Su dung BW hieu qua !}" $ns at 3.0 "$src0 stop" $ns at 3.0 "$src1 stop" $ns at 3.0 "$src2 stop" $ns at 3.0 "$src3 stop" Trang 74 $ns at 3.1 "recv-pkts" $ns at 3.1 "finish" $ns run # Bài 3: Mô tái định tuyến theo chế Makam set ns [new Simulator] $ns rtproto LS set nf [open makam.nam w] $ns namtrace-all $nf set f1 [open flow_1.tr w] set f2 [open flow_seq.tr w] #Topo # 1.7M # R3 R6 # / / # 1.7M / /1.7M # / / # 5M / / # R0 -R1 R4 -R7 R9 -R11 # \ 2.7M \ 2.7M \ 1.7M \ 5M # \ \ \ \ # 3.7M \ 3.7M \ 3.7M \ 3.7M\ # \ \ \ \ # R2 R5 -R8 -R10 # 3.7M 1.7M 3.7M # # make nodes & MPLSnodes set R0 [$ns node] set LSR1 [$ns mpls-node] set LSR2 [$ns mpls-node] set LSR3 [$ns mpls-node] set LSR4 [$ns mpls-node] set LSR5 [$ns mpls-node] set LSR6 [$ns mpls-node] set LSR7 [$ns mpls-node] set LSR8 [$ns mpls-node] set LSR9 [$ns mpls-node] set LSR10 [$ns mpls-node] set R11 [$ns node] # make links $ns duplex-link $R0 $LSR1 5Mb 10ms DropTail $ns duplex-link $LSR1 $LSR4 1.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR7 2.7Mb 30ms DropTail Trang 75 $ns duplex-link $LSR7 $LSR9 1.7Mb 30ms DropTail $ns duplex-link $LSR1 $LSR2 3.7Mb 30ms DropTail $ns duplex-link $LSR2 $LSR5 3.7Mb 30ms DropTail $ns duplex-link $LSR5 $LSR8 1.7Mb 30ms DropTail $ns duplex-link $LSR8 $LSR10 3.7Mb 30ms DropTail $ns duplex-link $LSR10 $LSR9 3.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR5 3.7Mb 30ms DropTail $ns duplex-link $LSR7 $LSR8 3.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR3 1.7Mb 30ms DropTail $ns duplex-link $LSR3 $LSR6 1.7Mb 30ms DropTail $ns duplex-link $LSR6 $LSR7 1.7Mb 30ms DropTail $ns duplex-link $LSR9 $R11 5Mb 10ms DropTail # make topo $ns duplex-link-op $R0 $LSR1 orient right $ns duplex-link-op $LSR1 $LSR4 orient right $ns duplex-link-op $LSR4 $LSR7 orient right $ns duplex-link-op $LSR7 $LSR9 orient right $ns duplex-link-op $LSR9 $R11 orient right $ns duplex-link-op $LSR1 $LSR2 orient right-down $ns duplex-link-op $LSR4 $LSR5 orient right-down $ns duplex-link-op $LSR7 $LSR8 orient right-down $ns duplex-link-op $LSR9 $LSR10 orient right-down $ns duplex-link-op $LSR2 $LSR5 orient right $ns duplex-link-op $LSR5 $LSR8 orient right $ns duplex-link-op $LSR8 $LSR10 orient right $ns duplex-link-op $LSR4 $LSR3 orient right-up $ns duplex-link-op $LSR3 $LSR6 orient right $ns duplex-link-op $LSR7 $LSR6 orient right-up # $ns duplex-link-op $R0 $LSR1 label " 5M " $ns duplex-link-op $LSR1 $LSR4 label " 2.7M " $ns duplex-link-op $LSR4 $LSR7 label " 2.7M " $ns duplex-link-op $LSR7 $LSR9 label " 1.7M " $ns duplex-link-op $LSR9 $R11 label " 5M " $ns duplex-link-op $LSR4 $LSR3 label " 1.7M " $ns duplex-link-op $LSR3 $LSR6 label " 1.7M " $ns duplex-link-op $LSR6 $LSR7 label " 1.7M " $ns duplex-link-op $LSR1 $LSR2 label " 3.7M " $ns duplex-link-op $LSR2 $LSR5 label " 3.5M " $ns duplex-link-op $LSR5 $LSR8 label " 1.7M " $ns duplex-link-op $LSR8 $LSR10 label " 3.7M " $ns duplex-link-op $LSR9 $LSR10 label " 3.7M " $ns duplex-link-op $LSR9 $R11 label " 5M " Trang 76 $ns duplex-link-op $LSR4 $LSR5 label " 3.7M " $ns duplex-link-op $LSR7 $LSR8 label " 3.7M " # configure ldp agents on all mpls nodes $ns configure-ldp-on-all-mpls-nodes # set ldp-message color $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 # Create a procedure "record" proc record {} { global sink1 f1 set ns [Simulator instance] # Set the time after which the procedure should be called again set time 0.1 # How many bytes have been received by the traffic sink? set bw1 [$sink1 set bytes_] # Get the current time set now [$ns now] #Calculate the bandwidth (in MBit/s) and write it to the file puts $f1 "$now [expr $bw1/$time*8/1000000]" #Reset the bytes_ values on the traffic sink $sink1 set bytes_ #Re-schedule the procedure $ns at [expr $now+$time] "record" } set prvseqnb -1 set seqerrnb # Create a procedure "seq-record" proc seq-record {size rate ftime} { global prvseqnb seqerrnb sink1 f2 set ns [Simulator instance] #Set the time after which the procedure should be called again set tsize [parse-bw $size] set trate [parse-bw $rate] set time [expr double($tsize)/double($trate)/8.0] #Get the current time set now [$ns now] # seek the sequence number of packet set revseqnb [$sink1 set expected_] if {$prvseqnb > $revseqnb} { incr seqerrnb Trang 77 } # write the sequence number of packet to the file if {$prvseqnb != $revseqnb} { puts $f2 "$now [$sink1 set expected_]" set prvseqnb $revseqnb } #Re-schedule the procedure if { [expr $now+$time] < $ftime } { $ns at [expr $now+$time] "seq-record $size $rate $ftime" } } # Create a procedure "attach-expoo-traffic" 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 } # Create a procedure "notify-erlsp-setup" proc notify-erlsp-setup {node lspid} { global src1 set ns [Simulator instance] set msg " [string range [$ns now] 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 11 100 $lspid } 1200 { $module reroute-lsp-binding 1100 $lspid } default { puts " Error!" Trang 78 exit } } } # Create a procedure "notify-erlsp-fail" proc notify-erlsp-fail {node status lspid tr} { set ns [Simulator instance] set module [$node get-module "MPLS"] if { [$node id] == && $status=="BSNodeError" } { $module set-lib-error-for-lspid $lspid set msg " [string range [$ns now] 3]s: Phat hien loi tren tuyen duong lam viec LSP_$lspid Chuyen sang tuyen duong bao ve LSP_1200 !" } if { [$node id] == && $status=="NodeRepair" } { $module set-lib-error-for-lspid $lspid -1 set msg " [string range [$ns now] 3]s: Loi da duoc khoi phuc Chuyen luu luong tro lai tuyen duong lam viec LSP_$lspid !" } puts $msg $ns trace-annotate $msg } # Create a procedure "recv-pkts" proc recv-pkts {} { global sink1 seqerrnb set ns [Simulator instance] set msg " Luong 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_]] 3] */*" puts $msg $ns trace-annotate $msg set msg " Tong so packet bi sai thu tu : $seqerrnb goi" puts $msg $ns trace-annotate $msg } # Create a procedure "finish" proc finish {} { global ns nf f1 f2 $ns flush-trace close $nf close $f1 close $f2 exec nam -r 2ms makam.nam & exit Trang 79 } #Create a traffic sink and attach it to the node node11 set sink1 [new Agent/LossMonitor] $ns attach-agent $R11 $sink1 #Create a traffic source, packet_size=600, rate=0.8Mbps set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0.8M ] $src1 set fid_ 100 $ns color 100 blue #Reroute: MAKAM $ns enable-reroute notify-prenegotiated [$LSR4 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100 [$LSR7 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100 # Start exec clear >@ stdout puts "\n BAI 3:TAI DINH TUYEN SU DUNG CO CHE MAKAM \n" $ns at 0.00 "record" $ns at 0.00 "seq-record 600 800k 5.5" $ns at 0.15 "$ns trace-annotate {Bao hieu thiet lap tuyen lam viec: LSP_1100, ER=1_4_7_9 }" $ns at 0.15 "[$LSR1 get-module "MPLS"] setup-erlsp 1_4_7_9 1100" $ns at 0.15 "$ns trace-annotate {Bao hieu thiet lap tuyen bao ve: LSP_1200, ER=1_2_5_8_10_9 }" $ns at 0.15 "[$LSR1 get-module "MPLS"] setup-erlsp 1_2_5_8_10_9 1200" $ns at 0.50 "$ns trace-annotate {Luong 1: BW=0.8M (start=0.3 stop=3.0) su dung LSP_1100, ER=1_4_7_9 }" $ns at 0.50 "$src1 start" $ns rtmodel-at 1.00 down $LSR4 $LSR7 $ns rtmodel-at 1.30 up $LSR4 $LSR7 $ns at 2.0 "$src1 stop" $ns at 2.1 "recv-pkts" $ns at 2.1 "finish" $ns run # Bài 4: Mô tái định tuyến theo chế Haskin set ns [new Simulator] $ns rtproto LS set nf [open haskin.nam w] $ns namtrace-all $nf set f1 [open luong_1.tr w] set f2 [open luong_seq.tr w] Trang 80 #Topo # 1.7M # R3 R6 # / / # 1.7M / /1.7M # / / # 5M / / # R0 -R1 R4 -R7 R9 -R11 # \ 2.7M \ 2.7M \ 1.7M \ 5M # \ \ \ \ # 3.7M \ 3.7M \ 3.7M \ 3.7M\ # \ \ \ \ # R2 R5 -R8 -R10 # 3.7M 1.7M 3.7M # # make nodes & MPLSnodes set R0 [$ns node] set LSR1 [$ns mpls-node] set LSR2 [$ns mpls-node] set LSR3 [$ns mpls-node] set LSR4 [$ns mpls-node] set LSR5 [$ns mpls-node] set LSR6 [$ns mpls-node] set LSR7 [$ns mpls-node] set LSR8 [$ns mpls-node] set LSR9 [$ns mpls-node] set LSR10 [$ns mpls-node] set R11 [$ns node] # make links $ns duplex-link $R0 $LSR1 5Mb 10ms DropTail $ns duplex-link $LSR1 $LSR4 1.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR7 2.7Mb 30ms DropTail $ns duplex-link $LSR7 $LSR9 1.7Mb 30ms DropTail $ns duplex-link $LSR1 $LSR2 3.7Mb 30ms DropTail $ns duplex-link $LSR2 $LSR5 3.7Mb 30ms DropTail $ns duplex-link $LSR5 $LSR8 1.7Mb 30ms DropTail $ns duplex-link $LSR8 $LSR10 3.7Mb 30ms DropTail $ns duplex-link $LSR10 $LSR9 3.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR5 3.7Mb 30ms DropTail $ns duplex-link $LSR7 $LSR8 3.7Mb 30ms DropTail $ns duplex-link $LSR4 $LSR3 1.7Mb 30ms DropTail $ns duplex-link $LSR3 $LSR6 1.7Mb 30ms DropTail $ns duplex-link $LSR6 $LSR7 1.7Mb 30ms DropTail Trang 81 $ns duplex-link $LSR9 $R11 5Mb 10ms DropTail # make topo $ns duplex-link-op $R0 $LSR1 orient right $ns duplex-link-op $LSR1 $LSR4 orient right $ns duplex-link-op $LSR4 $LSR7 orient right $ns duplex-link-op $LSR7 $LSR9 orient right $ns duplex-link-op $LSR9 $R11 orient right $ns duplex-link-op $LSR1 $LSR2 orient right-down $ns duplex-link-op $LSR4 $LSR5 orient right-down $ns duplex-link-op $LSR7 $LSR8 orient right-down $ns duplex-link-op $LSR9 $LSR10 orient right-down $ns duplex-link-op $LSR2 $LSR5 orient right $ns duplex-link-op $LSR5 $LSR8 orient right $ns duplex-link-op $LSR8 $LSR10 orient right $ns duplex-link-op $LSR4 $LSR3 orient right-up $ns duplex-link-op $LSR3 $LSR6 orient right $ns duplex-link-op $LSR7 $LSR6 orient right-up # $ns duplex-link-op $R0 $LSR1 label " 5M " $ns duplex-link-op $LSR1 $LSR4 label " 2.7M " $ns duplex-link-op $LSR4 $LSR7 label " 2.7M " $ns duplex-link-op $LSR7 $LSR9 label " 1.7M " $ns duplex-link-op $LSR9 $R11 label " 5M " $ns duplex-link-op $LSR4 $LSR3 label " 1.7M " $ns duplex-link-op $LSR3 $LSR6 label " 1.7M " $ns duplex-link-op $LSR6 $LSR7 label " 1.7M " $ns duplex-link-op $LSR1 $LSR2 label " 3.7M " $ns duplex-link-op $LSR2 $LSR5 label " 3.5M " $ns duplex-link-op $LSR5 $LSR8 label " 1.7M " $ns duplex-link-op $LSR8 $LSR10 label " 3.7M " $ns duplex-link-op $LSR9 $LSR10 label " 3.7M " $ns duplex-link-op $LSR9 $R11 label " 5M " $ns duplex-link-op $LSR4 $LSR5 label " 3.7M " $ns duplex-link-op $LSR7 $LSR8 label " 3.7M " # configure ldp agents on all mpls nodes $ns configure-ldp-on-all-mpls-nodes # set ldp-message color $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 # Create a procedure "record" Trang 82 proc record {} { global sink1 f1 set ns [Simulator instance] # Set the time after which the procedure should be called again set time 0.1 # How many bytes have been received by the traffic sink? set bw1 [$sink1 set bytes_] # Get the current time set now [$ns now] #Calculate the bandwidth (in MBit/s) and write it to the file puts $f1 "$now [expr $bw1/$time*8/1000000]" #Reset the bytes_ values on the traffic sink $sink1 set bytes_ #Re-schedule the procedure $ns at [expr $now+$time] "record" } set prvseqnb -1 set seqerrnb # Create a procedure "seq-record" proc seq-record {size rate ftime} { global prvseqnb seqerrnb sink1 f2 set ns [Simulator instance] #Set the time after which the procedure should be called again set tsize [parse-bw $size] set trate [parse-bw $rate] set time [expr double($tsize)/double($trate)/8.0] #Get the current time set now [$ns now] # seek the sequence number of packet set revseqnb [$sink1 set expected_] if {$prvseqnb > $revseqnb} { incr seqerrnb } # write the sequence number of packet to the file if {$prvseqnb != $revseqnb} { puts $f2 "$now [$sink1 set expected_]" set prvseqnb $revseqnb } #Re-schedule the procedure if { [expr $now+$time] < $ftime } { $ns at [expr $now+$time] "seq-record $size $rate $ftime" } } Trang 83 # Create a procedure "attach-expoo-traffic" 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 } # Create a procedure "notify-erlsp-setup" proc notify-erlsp-setup {node lspid} { global src1 LSR4 LSR7 set ns [Simulator instance] set msg " [string range [$ns now] 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 11 100 $lspid } 1200 { $module reroute-lsp-binding 1100 $lspid } 1300 { [$LSR4 get-module "MPLS"] reroute-lsp-binding 1100 $lspid [$LSR7 get-module "MPLS"] reroute-lsp-binding 1100 $lspid } default { puts " Error!" exit } } } # Create a procedure "recv-pkts" proc recv-pkts {} { global sink1 seqerrnb Trang 84 set ns [Simulator instance] set msg " Luong 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_]] 3] */*" puts $msg $ns trace-annotate $msg set msg " Tong so packet bi sai thu tu : $seqerrnb goi" puts $msg $ns trace-annotate $msg } # Create a procedure "finish" proc finish {} { global ns nf f1 f2 $ns flush-trace close $nf close $f1 close $f2 exec nam -r 2ms haskin.nam & exit } #Create a traffic sink and attach it to the node node11 set sink1 [new Agent/LossMonitor] $ns attach-agent $R11 $sink1 #Create a traffic source, packet_size=600, rate=0.8Mbps set src1 [attach-expoo-traffic $R0 $sink1 600B 0 0.8M ] $src1 set fid_ 100 $ns color 100 red #Reroute: HASKIN $ns enable-reroute drop [$LSR4 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100 [$LSR7 get-module "MPLS"] set-protection-lsp 0.7 0.01 1100 # Start exec clear >@ stdout puts "\n BAI 4: TAI DINH TUYEN SU DUNG CO CHE (HASKIN) \n " $ns at 0.0 "record" $ns at 0.0 "seq-record 600 800k 5.5" $ns at 0.05 "$ns trace-annotate {Bao hieu thiet lap tuyen lam viec: LSP_1100, ER=1_4_7_9 }" $ns at 0.05 "[$LSR1 get-module "MPLS"] setup-erlsp 1_4_7_9 1100" $ns at 0.05 "$ns trace-annotate {Bao hieu thiet lap tuyen bao ve: LSP_1200, ER=1_2_5_8_10_9 }" $ns at 0.05 "[$LSR1 get-module "MPLS"] setup-erlsp 1_2_5_8_10_9 1200" Trang 85 $ns at 0.3 "$ns trace-annotate {Bao hieu thiet lap tuyen reverse backup: LSP_1300, ER=9_7_4_1_L1200 }" $ns at 0.3 "[$LSR9 get-module "MPLS"] setup-erlsp 9_7_4_1_L1200 1300" $ns at 0.5 "$ns trace-annotate {Luong 1: BW=0.8M (start=0.5 stop=2.0) su dung LSP_1100, ER=1_4_7_9 }" $ns at 0.5 "$src1 start" $ns rtmodel-at 1.00 down $LSR4 $LSR7 $ns at 2.0 "$src1 stop" $ns at 2.1 "recv-pkts" $ns at 2.1 "finish" $ns run Trang 86 [...]... phối nhãn trong MPLS 2.1 Giới thiệu chương: Trong chương này chúng ta giải quyết cách thức làm thế nào xác định tuyến đường trên mạng hỗ trợ kĩ thuật MPLS bằng giao thức phân phối nhãn (LDP) , giao thức dành trước tài nguyên (RSVP) và giao thức phân phối nhãn dựa trên sự ràng buộc (CR- LDP) , so sánh 2 giao thức RSVP và CR- LDP, giải quyết sự cố trên mạng bằng các cơ chế tái định tuyến 2.2 Định tuyến trong. .. chặn kế trong MPLS, nó chính là tập con của LIB Nó là nơi mà nhãn đến và nhãn đi trong LSP Nhãn đến là nhãn từ nhãn cục bộ (Local Binding) trên LSR cụ thể Nhãn đi là nhãn từ nhãn từ xa (Remote Binding) được chọn bởi LSR trong tất cả các nhãn từ xa có khả năng Tất cả các nhãn từ xa được chọn từ LIB LFIB chỉ chọn 1 nhãn trong số trong số tất cả các nhãn từ xa trong LIB và thiết lập nó lên LFIB Các nhãn. .. là giao thức chính và được sử dụng nhiều nhất Tuy nhiên một số giao thức khác như RSVP (Resource Reservation Protocol) hay BGP (Border Gateway Protocol) vẫn có thể thực hiên trao đổi thông tin nhãn Đầu tiên chúng ta sẽ đề cầp đến giao thức LDP 2.3.1 Giao thức LDP: LDP là một giao thức mới cho việc phân phối thông tin kết hợp với nhãn tới các LSR trong mạng MPLS Nó được sử dụng để ánh xạ các FEC tới nhãn, ... độ phân phối nhãn: MPLS cho phép hai chế độ hoạt động của các LSR để phân phối các ánh xạ nhãn, đó là phân phối không cần yêu cầu (downstream unsolicited) và phân phối theo yêu cầu (downstream on demand) Thuật ngữ downstream ở đây ngụ ý rằng phía downstream sẽ thực hiện gán kết nhãn và thông báo gắn kết đó cho phía upstream 1.7.1 Chế độ nhãn không cần yêu cầu: Downstream-LSR phân phối các gán kết nhãn. .. BoS được thiết lập là 1 Một số ứng dụng MPLS cần nhiều hơn 1 nhãn trong một ngăn xếp để chuyển tiếp gói tin Ví dụ: 2 ứng dụng của MPLS là MPLS VPN và AToM, cả 2 đều đặt 2 nhãn trong nhãn ngăn xếp Nhãn ngăn xếp nằm ở đâu? Nhãn ngăn xếp nằm ở phía trước của lớp 3, nghĩa là trước tiêu đề của giao thức vận chuyển, nhưng sau tiêu đề của lớp 2 Thông thường, các ngăn xếp MPLS được gọi là tiêu đề chèn do vị trí... mạch nhãn (LSP) FEC là một nhóm hoặc một luồng các gói tin được chuyển tiếp trên cùng tuyến đường và được xử lý như nhau MPLS hỗ trợ hai phương pháp để dán nhãn vào một FEC, gọi là điều khiển độc lập và điều khiển tuần tự, chúng ta hoàn toàn có thể kết hợp 2 kỹ thuật trên trong mạng Chương tiếp theo chúng ta sẽ tìm hiểu về các giao thức phân phối nhãn trong MPLS Trang 20 Chương 2: Định tuyến và phân phối. .. đã biết có 3 loại nhãn được sử dụng: • Giao thức lớp 2 không có cấu trúc xác định thì nhãn có dạng là nhãn chèn thêm (shim label) nằm giữa tiêu đề lớp 2 và lớp 3 • Nếu giao thức lớp 2 là ATM thì giá trị nhãn chứa trong vùng thông tin VCI và VPI • Nếu giao thức lớp 2 là Frame Relay thì nhãn được chứa trong vùng DLCI Khi nhận được bản tin Path, các LSR sẽ giữ lại trong khối trạng thái đường dẫn (Path... hoặc nhiều nhãn lên nhãn ngăn xếp và chuyển các gói tin di Nếu gói tin chưa có nhãn, LSR có thể tạo một nhãn ngăn xếp và đặt nó vào gói Một LSR cũng có khả năng trao đổi (swap) nhãn, nghĩa là khi nhận được một gói đã có nhãn, phần đầu của nhãn trong nhãn ngăn xếp được trao đổi với nhãn mới và chuyển gói tin đi 1.5.5 Đường chuyển mạch nhãn (Label Switch Path-LSP): Một con đường chuyển mạch nhãn (LSP)... nhãn ràng buộc phải đi qua Nút trừu tượng có thể là một nút (địa chỉ IP) hoặc một nhóm nút (như IP prefix hoặc một AS) Nếu ER chỉ quy định một nhóm trong số các nút mà đường chuyển mạch nhãn ràng buộc đi qua thì nó được gọi là “losse ER” Ngược lại, nếu ER quy định toàn bộ các nút trên đường chuyển mạch nhãn ràng buộc thì được gọi là “strict ER” 2.3 Các giao thức phân phối nhãn: Trang 23 Giao thức LDP. .. ràng buộc (chứa 1 địa chỉ mạng và 1 nhãn) tới các node lân cận 2.2.2 Định tuyến ràng buộc (Constrain-based Routing): Trang 21 Nhắc lại về những giao thức định tuyến sử dụng trong mạng IP Mạng IP là tập hợp của nhiều AS, những giao thức định tuyến sử dụng trong phạm vi một AS được gọi là giao thức định tuyến nội vùng (IRP) như RIP, OSPF, IS-IS, IGRP Ngược lại những giao thức định tuyến được sử dụng trao

Ngày đăng: 24/06/2016, 19:04

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan