Công nghệ mạng ảo qua mạng quang WDM Công nghệ mạng ảo qua mạng quang WDM Công nghệ mạng ảo qua mạng quang WDM luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI NGUYỄN TIẾN HẢI CÔNG NGHỆ MẠNG ẢO TRÊN MẠNG QUANG WDM LUẬN VĂN THẠC SỸ NGÀNH: KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG NGƯỜI HƯỚNG DẪN: PGS.TS NGÔ HỒNG SƠN HÀ NỘI – 2012 LỜI CAM ĐOAN Luận văn thạc sỹ kỹ thuật chuyên ngành Kỹ thuật máy tính truyền thơng với đề tài “ Công nghệ mạng ảo mạng quang WDM”, mã đề tài KTMT&TT11B-11 hướng dẫn PGS.TS Ngô Hồng Sơn – Viện Công nghệ thông tin truyền thông, Trường Đại học Bách Khoa Hà Nội Trong luận văn nghiên cứu mạng quang WDM, ảo hóa mạng phương pháp chia sẻ mạng dự phòng mạng quang WDM Tôi – Nguyễn Tiến Hải – cam kết LVTN cơng trình nghiên cứu thân Các kết nêu LVTN trung thực, khơng phải chép tồn văn cơng trình khác Hà Nội, ngày 24tháng 03 năm 2014 Tác giả LVTN Nguyễn Tiến Hải NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG LỜI CẢM ƠN Trước hết, em xin bày tỏ lòng biết ơn chân thành gửi lời cảm ơn sâu sắc tới thầy cô giáo trường Đại học Bách Khoa Hà Nội nói chung thầy Viện Công nghệ Thông tin Truyền thông, Viện Đào tạo sau đại học tận tình giảng dạy, truyền đạt cho em kiến thức kinh nghiệm quý báu suốt năm học tập rèn luyện trường Đại học Bách Khoa Hà Nội Em xin chân thành giử lời cảm ơn sâu sắc đến PGS.TS Ngô Hồng Sơn – trực tiếp chịu trách nhiệm hướng dẫn luận văn, giúp đỡ em trình thực luận văn tốt nghiệp Con xin gửi lời cảm ơn sâu sắc đến cha mẹ, người ủng hộ, động viên, chăm sóc, quan tâm đến bước Cuối cùng, xin cảm ơn bạn bè tôi, người trực tiếp hay gián tiếp giúp đỡ, động viên tơi hồn thành luận văn tốt nghiệp Hà Nội, ngày 20 tháng 03 năm 2014 Sinh viên Nguyễn Tiến Hải NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC CÁC HÌNH VẼ DANH MỤC TỪ VIẾT TẮT MỞ ĐẦU CHƯƠNG I MẠNG QUANG WDM VÀ ẢO HÓA MẠNG QUANG 1.1 Giới thiệu chung 1.1.1 Khái quát WDM 1.1.2 Nguyên lý hoạt động hệ thống tách/ghép kênh quang 10 1.1.3 Đặc điểm hệ thống WDM 12 1.1.4 Ảo hóa mạng quang 13 1.2 Một số tham số kỹ thuật hệ thống ảo hóa WDM 19 1.2.1 Suy hao xen 20 1.2.2 Suy hao xuyên kênh 20 1.2.3 Độ rộng kênh khoảng cách kênh 22 1.2.4 Số lượng kênh 22 1.3 Những vấn đề kỹ thuật cần quan tâm 24 1.3.1 Số kênh sử dụng khoảng cách kênh 24 1.3.2 Vấn đề ổn đinh bước sóng nguồn quang yêu cầu độ rộng phổ nguồn phát 26 1.4 Nhúng mạng ảo 27 1.5 Các bên tham gia ảo hóa 28 1.6 Giải pháp mạng quang ảo 30 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG 1.7 Mơ hình tốn học 32 1.7.1 Mạng 32 1.7.2 Yêu cầu mạng ảo 32 1.7.3 Bài toán ánh xạ mạng ảo 32 CHƯƠNG II 36 ẢO HÓA MẠNG QUANG CĨ CHIA SẺ DỰ PHỊNG 36 2.1 Phương pháp chia sẻ mạng dự phòng theo yêu cầu 36 2.2 Phương pháp chia sẻ mạng dự phòng phân phối trước tài nguyên 40 2.3 Công cụ đánh giá 42 CHƯƠNG III: MÔ PHỎNG 44 3.1 Mục tiêu 44 3.2 Phân tích - thiết kế chương trình 44 3.2.1 Mạng 46 3.2.2 Yêu cầu ảo hóa mạng 47 3.2.3 Server xử lý kiện 49 3.3 Các tham số chương trình 51 3.3.1 Phương pháp SOD_BK 52 3.3.2 Phương pháp SPA_BK 52 3.4 Kết thử nghiệm 53 3.4.1 Môi trường thử nghiệm 53 3.4.2 Đánh giá kết 55 KẾT LUẬN 63 TÀI LIỆU THAM KHẢO 64 PHỤ LỤC 65 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG DANH MỤC CÁC HÌNH VẼ Hình 1.1 - Hệ thống ghép kênh theo bước sóng WDM đơn hướng Hình 1.2 - Hệ thống ghép kênh theo bước sóng WDM song hướng Hình 1.3 - Mơ hình mạng ảo Hình 1.4 - Ảo hóa nút quang Hình 1.5 - Liên kết ảo hóa quang Hình 1.6 - Xuyên âm hệ thống Hình 1.7 - Khoảng cách kênh độ rộng kênh Hình 1.8 - Các bên tham gia mơi trường ảo hố mạng Hình 1.9 - Kiến trúc mạng IaaS/SON phù hợp với ảo hóa Hình 1.10 - Quy trình ánh xạ mạng ảo Hình 3.1 - Mơ hình lớp đối tượng thực phương pháp SPA_BK Hình 3.2 - Mơ hình lớp đối tượng thực phương pháp SOD_BK Hình 3.3 – Mạng Hình 3.4 - Lớp SNetwork lớp liên quan Hình 3.5 - Yêu cầu ảo hóa mạng Hình 3.6 - Lớp VNRequest lớp liên quan Hình 3.7 - Lớp Server lớp liên quan Hình 3.8 - Lớp Server_SOD lớp liên quan Hình 3.9 - Mơ hình 10 nút – 20 liên kết Hình 3.10 - Mơ hình 15 nút – 25 liên kết Hình 3.11 - Yêu cầu ảo hóa mạng Hình 3.12 - Đồ thị Lợi nhuận mơ hình 10 nút – 20 liên kết Hình 3.13 - Đồ thị Lợi nhuận mơ hình 15 nút – 25 liên kết Hình 3.14 - Tỉ lệ P_bk mơ hình 10 nút – 20 liên kết Hình 3.15 - Tỉ lệ P_bk mơ hình 15 nút – 25 liên kết NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG DANH MỤC TỪ VIẾT TẮT Từ viết tắt VN VPN InP VNP VNO ISP Nghĩa Tiếng Anh Virtual Network Virtual Private Network Infrastructure Provider Nghĩa Tiếng Việt Mạng ảo Mạng riêng ảo Nhà cung cấp hạ tầng Virtual Network Provider Nhà cung cấp mạng ảo Virtual Network Operator Nhà vận hành mạng ảo Internet Service Provider Nhà cung cấp dịch vụ Internet Shared On Demand Chia sẻ mạng dự phòng SOD_BK Backup Shared Pre-Allocation theo yêu cầu Chia sẻ mạng dự phòng SPA_BK Backup No Backup On Demand Backup phân phối trước tài ngun Khơng dự phịng Dự phịng theo u cầu Asynchronous Transfer (không chia sẻ) Chế độ truyền không đồng Mode Multiprotocol Label Chuyển mạch nhãn đa NO_BK OD_BK ATM MPLS WAN LAN QoS VM ROADM OXC TDM WDM Switching Wide Area Network Local Area Network Quality of Service Vitual machine Reconfigurable Optical Add/Drop Multiplexer Optical cross-connect Time-division multiplexing Wavelength Division Multiplexing giao thức Mạng diện rộng Mạng cục Chất lượng dịch vụ Máy ảo Cấu hình lại ghép kênh quang Add/Drop Kết nối chéo quang Ghép kênh theo miền thời gian Ghép kênh quang theo bước sóng NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG LỜI MỞ ĐẦU Tổng quan Trong vài thập niên vừa qua, Internet mở rộng quy mô nhanh chóng thành tựu khoa học cơng nghệ có ảnh hưởng lớn giới Tuy phát triển thay đổi nhanh chóng ứng dụng dịch vụ Internet tạo nên áp lực lên kiến trúc hạ tầng Internet Ngày nay, nhu cầu băng thông không ngừng gia tăng loại hình dịch vụ ngày đa dạng, kiến trúc lõi Internet dần bộc lộ nhược điểm bản: kiến trúc khó thay đổi nâng cấp, dẫn đến việc đưa công nghệ vào lõi Internet khó khăn Trong bối cảnh đó, ảo hóa mạng nhiều nhà nghiên cứu kỳ vọng làm cho Internet tương lai trở nên linh hoạt dễ quản lý Khi Internet hỗ trợ ảo hóa mạng, nhiều mạng ảo khác đồng thời tồn hạ tầng vật lý chung Trong có nhiều mơ hình ánh xạ nghiên cứu, ứng dụng để phân phối tài nguyên cho yêu cầu mạng ảo, lại chưa có nhiều nghiên cứu cho việc dự phịng trường hợp mạng bị hỏng Trong sở hạ tầng ảo hóa, lỗi liên kết đơn ảnh hưởng đến tất mạng ảo dùng chung tài nguyên Ngoài ra, phương pháp dự phịng cho riêng u cầu ảo hóa gây lãng phí tài ngun, khơng hiệu việc sử dụng tài nguyên mạng Nhận thấy vấn đề cấp thiết có nhiều ứng dụng tương lai, nên em chọn đề tài: “ Công nghệ mạng ảo mạng quang WDM” Mục tiêu luận văn, phương pháp nghiên cứu Mục tiêu luận văn nghiên cứu phương pháp chia sẻ mạng dự phòng mạng quang WDM đánh giá hai phương pháp chia sẻ mạng dự phịng, Chia sẻ mạng dự phòng theo yêu cầu ( SOD_BK) Chia sẻ mạng dự phòng phân phối trước tài nguyên ( SPA_BK), đồng thời so sánh hai phương pháp với với phương pháp ảnh xạ mạng ảo cổ điển Phương pháp ánh xạ mạng ảo khơng có dự phịng ( NO_BK) Phương pháp ánh xạ mạng ảo khơng có chia sẻ ( OD_BK) Kết đạt Ddựa ba tiêu chí giá trị Lợi nhuận (Revenue), Tỉ lệ chấp nhận yêu cầu (P_ac) Tỉ lệ băng thông dành cho dự phòng (P_bk), luận văn đưa kết quả, NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG đồ thị nhằm so sánh, đánh giá hai phương pháp với nhau, với hai phương pháp ánh xạ mạng ảo cổ điển khác (NO_BK OD_BK) Nội dung luận văn Luận văn trình bày ba chương, với cấu trúc chương sau: - - - Chương I – Mạng quang WDM ảo hóa mạng quang: Giới thiệu kiến thức liên quan: khái niệm, mơ hình WDM ảo hóa mạng quang Sau phần lý thuyết đưa mơ hình tốn học thực Chương II - Ảo hóa mạng quang có chia sẻ dự phịng: Trình bày hai phương pháp nghiên cứu phương pháp Chia sẻ mạng dự phòng theo yêu cầu phương pháp Chia sẻ mạng dự phòng phân phối trước tài ngun Chương III – Mơ phỏng: Trình bày phân tích, thiết kế chương trình mơ phỏng, phân tích kết đạt Phần kết luận tóm tắt lại kết luận văn đề cập đến phương hướng nghiên cứu tương lai Phần phụ lục trình bày số lưu ý chương trình mã nguồn số lớp NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG CHƯƠNG I MẠNG QUANG WDM VÀ ẢO HĨA MẠNG QUANG 1.1 Giới thiệu chung Trong năm gần đây, phát triển dịch vụ thoại phi thoại mà đặc biệt Internet số dịch vụ khác tạo bùng nổ nhu cầu dung lượng Điều đặt lên vai nhà cung cấp dịch vụ đường trục khó khăn thách thức Kĩ thuật ghép kênh theo miền thời gian TDM giải phần yêu cầu hạn chế Trong thực tế, tốc độ tín hiệu TDM thường nhỏ 10Gb/s Do ảnh hưởng tượng tán sắc, hiệu ứng phi tuyến sợi quang tốc độ thành phần điện tử nên tăng tốc độ bit kênh TDM lên giới hạn này, chất lượng hệ thống không đảm bảo Để thích ứng với tăng trưởng khơng ngừng thoả mãn u cầu tính linh hoạt mạng, công nghệ truyền dẫn khác nghiên cứu, triển khai thử nghiệm đưa vào ứng dụng, số phải kể đến cơng nghệ WDM, OTDM, Soliton… Phương pháp ghép kênh theo bước sóng WDM (Wavelength Division Multiplexing) tận dụng hữu hiệu nguồn tài nguyên băng rộng khu vực tổn hao thấp sợi quang đơn mode Ghép kênh theo bước sóng WDM nâng cao dung lượng truyền dẫn hệ thống mà không cần phải tăng tốc độ kênh bước sóng Do đó, WDM giải pháp tiên tiến kĩ thuật thông tin quang, đáp ứng nhu cầu truyền dẫn yêu cầu chất lượng truyền dẫn hệ thống 1.1.1 Khái quát WDM Trong hệ thống WDM, tín hiệu điện kênh quang điều chế với sóng mang quang khác Sau đó, chúng ghép lại truyền sợi quang đến đầu thu Phía thu thực q trình tách tín hiệu quang thành kênh NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG if(A < || B < 0) return false; if(ID.Array[A][B] != -1 return true; } else return false; } public SLink get_Slink(int node1, int node2) { SLink TMP = new SLink(); for(int i = 0; i < NUMBER_SUBSTRATE_LINKS; i++){ if((this.SubLink[i].from[0] == node1 && this.SubLink[i].to[0] node2) || (this.SubLink[i].from[1] == node1 && this.SubLink[i].to[1] == node2)){ == TMP = this.SubLink[i]; return TMP; } } return TMP; } Một giá trị đầu vào toán cplex, có giá trị 1, xác định việc có hay khơng liên kết s tuyến đường dự phịng r, nhiên việc xảy có liên kết f bị hỏng, nên biểu diễn ma trận chiều Lớp Matrix định nghĩa ma trận sau: //Khai báo ma trận I public int I[][][] = new int[NUMBER_SUBSTRATE_LINKS][NUMBER_SUBSTRATE_LINKS][BACKUP_PATHS_PER_LINK] ; //Khởi tạo giá trị ma trận I for(int f = 0; f < NUMBER_SUBSTRATE_LINKS; f++){ for(int s = 0; s < NUMBER_SUBSTRATE_LINKS; s++) for(int r = 0; r < BACKUP_PATHS_PER_LINK; r++) I[f][s][r] = 0; } //Tính tốn giá trị ma trận I for(int s = 0; s < NUMBER_SUBSTRATE_LINKS; s++){ for(int r = 0; r < BACKUP_PATHS_PER_LINK; r++) for(int i = 0; i < NUMBER_SUBSTRATE_NODES; i++) for(int j = 0; j < NUMBER_SUBSTRATE_NODES; j++){ //Kiểm tra có hay khơng liên kết s tuyến đường dự phòng r if((i != j) && (ID.Array[i][j] != -1) && Backup_paths[s][r].contains(Integer.toString(i)+", "+Integer.toString(j)) ){ I[ID.Array[i][j]] [s][r] = 1; } } } 84 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG Trong luận văn, liên kết bảo vệ tuyến đường dự phòng, nên tuyến đường lưu dạng String, chứa mảng Backup_paths[NUMBER_SUBSTRATE_LINKS][BACKUP_PATHS_PER_LINK], việc tính tốn tuyến đường dự phịng tính theo thuật tốn Tìm đường ngắn đỉnh đồ thị mạng nền, trọng số liên kết int d = 0; VariableGraph model = new VariableGraph("D:\\Always\\@Projects\\Cplex\\Test\\10node.dat”); YenTopKShortestPathsAlg yen = new YenTopKShortestPathsAlg(model); //Ma trận ID: đánh số substrate node Matrix_ID ID = new Matrix_ID(); List List = new Vector; //Tính đường ngăn cặp node for(int i = 0; i < NUMBER_SUBSTRATE_NODES; i++){ for(int j = 0; j < NUMBER_SUBSTRATE_NODES; j++){ if((i != j) && (ID.Array[i][j] != -1) && (ID.Check[i][j] == 1) ){ List = yen.get_shortest_paths(model.get_vertex(i), model.get_vertex(j), 6); int count = 0; for(int n = 0; n < List.size(); n++){ Path p = new Path(); p = List.get(n); // Nếu tuyến đường khơng phải liên kết đơn thêm vào danh sách Backup_paths if(!p.toString().contains("["+ i+", "+j+"]")){ Backup_paths[d][count] = p.toString(); count++; } //Dừng lại có đủ tuyến đường if(count == 5) break; } d++; } } } Việc tìm đường dự phịng cho liên kết mạng dựa tốn “Tìm k đường ngắn ” nút đồ thị Chi tiết địa mã nguồn toán đề cập phần D Phụ lục C.2 Lớp VNRequest Để mô tả yêu cầu mạng ảo, lớp VNRequest có mảng lưu nút ảo, liên kết ảo: 85 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG //Mảng public //Mảng public lưu nút ảo VNode[] VirNodes; liên kết ảo VLink[] VirLinks; Các thuộc tính yêu cầu mạng ảo mô tả sau: //Giá trị lợi nhuận public Double Revenue; //Thời gian đến yêu cầu public double arrive_time; //Thời gian yêu cầu public double depart_time; //Thời gian sống yêu cầu public Double life_time; //Mảng lưu ID nút gán public int[] MapNode_ID = new int[NumNodes]; //Mảng lưu ID liên kết gán public int[] MapLink_ID = new int[NumLinks]; //Phục vụ phương pháp SOD_BK: tương ứng với giá trị public Double [][] PrimaryFlow = new Double[CANDIDATE_PATHS][NUMBER_OF_VLINK]; //Phục vụ phương pháp SOD_BK: tương ứng với giá trị public Double [][] RestorationFlow = new Double[BACKUP_PATHS_PER_LINK] [SUBSTRATE_LINKS] ; //Phục vụ phương pháp SOD_BK: tương ứng với giá trị public Double [] ReservedBW = new Double[SUBSTRATE_LINKS]; //Phục vụ phương pháp SOD_BK: tương ứng với Ma trận I[v][s][p] = I[3][20][5] public int [][][] Intermediate = new int [NUMBER_OF_VLINK][SUBSTRATE_LINKS][CANDIDATE_PATHS]; Các thông số mô tả hàm khởi tạo sau: public VNRequest(double i){ //Khởi tạo giá trị Primary_flow for(int p = 0; p < CANDIDATE_PATHS; p++){ for(int v = 0; v < NUMBER_OF_VLINK; v++){ PrimaryFlow[p][v] = 0.0; } } //Khởi tạo giá trị Restoration_flow for(int f = 0; f < SUBSTRATE_LINKS; f++){ ReservedBW[f] = 0.0; for(int r = 0; r < BACKUP_PATHS_PER_LINK; r++){ RestorationFlow[r][f] = 0.0; } } //Ma tran I(s)(p) for(int v = 0; v < NUMBER_OF_VLINK; v++){ 86 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG for(int s = 0; s < SUBSTRATE_LINKS; s++){ for(int p = 0; p < CANDIDATE_PATHS; p++) Intermediate[v][s][p] = 0; } } this.ID = i; //Thời gian sống yêu cầu tuân theo phân bố hàm mũ với trung bình 70 this.life_time = Exponential(70.0); Random rnd = new Random(); //Mang random CPU tu [5, 20] Double [] RandomCPU = new Double[6]; for (int m = 0; m < 6; m++) RandomCPU[m] = m + 15.0; //Mang random BW tu [15, 30] Double[] RandomBW = new Double[16]; for (int m = 0; m < 16; m++) RandomBW[m] = m + 15.0; this.VirLinks = new VLink[NumLinks; this.VirNodes = new VNode[NumNodes]; //Random giá trị CPU yêu cầu for(int j = 0; j < NumNodes; j++){ this.VirNodes[j] = new VNode(j); int pos = rnd.nextInt(RandomCPU.length); this.VirNodes[j].vCPU = RandomCPU[pos]; SumCPU += this.VirNodes[j].vCPU; } //Random giá trị băng thông yêu cầu for(int k = 0; k < NumLinks; k++){ this.VirLinks[k] = new VLink(); int pos = rnd.nextInt(RandomBW.length); this.VirLinks[k].vBandwidth = RandomBW[pos] ; SumBW += this.VirLinks[k].vBandwidth; } //Giả thiết Node[0] nút trung tâm mơ hình nút – liên kết for(int d = 0; d < NumLinks; d++){ this.VirLinks[d].from = this.VirNodes[0].ID; this.VirLinks[d].to = this.VirNodes[d+1].ID; } //Tính tốn giá trị Lợi nhuận yêu cầu this.Revenue = life_time * ( SumCPU + SumBW ); } C.3 Lớp VNRequest_Array Lớp có nhiệm vụ tạo yêu cầu với giá trị CPU, băng thông ngẫu nhiên trình bày lớp VNRequest, sau ghi file excel Để ghi file, hàm cần có thêm thư viện JexcelAPI (xem phần D Phụ 87 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG lục) Mã nguồn lớp sau: public class VNRequest_Array { //Số lượng yêu cầu 5000 public int NUMBER_OF_VNREQUEST = 5000; //Hàm khởi tạo public VNRequest_Array() { //Tạo yêu cầu VNRequest[] VN_Req = new VNRequest[NUMBER_OF_VNREQUEST]; for(int i = ; i < NUMBER_OF_VNREQUEST; i++){ VN_Req[i] = new VNRequest(i); } //Sắp xếp yêu cầu theo Lợi nhuận trước ghi file excel for(int i = 0; i < NUMBER_OF_VNREQUEST; i++){ for(int j = i + 1; j < NUMBER_OF_VNREQUEST; j++){ if(VN_Req[i].Revenue < VN_Req[j].Revenue){ VNRequest tmp = new VNRequest(); tmp = VN_Req[i]; VN_Req[i] = VN_Req[j]; VN_Req[j] = tmp; } } } WritableWorkbook workbook; try { //Tạo file excel workbook = Workbook.createWorkbook(new File("Tino.xls")); //Tạo sheet WritableSheet sheet = workbook.createSheet("First Sheet", 0); for(int i = //Ghi giá for(int j j++){ ; i < NUMBER_OF_VNREQUEST ; i++){ trị CPU yêu cầu vào cột đầu = 0; j < VN_Req[i].NumNodes; Label label = new Label(j, i, VN_Req[i].VirNodes[j].vCPU.toString()); sheet.addCell(label); } //Ghi giá trị băng thông yêu cầu vào cột for(int k = 0; k < VN_Req[i].NumLinks; k++){ Label label = new Label(k+4, i, VN_Req[i].VirLinks[k].vBandwidth.toString()); sheet.addCell(label); } //Cột cuối thời gian sống yêu cầu 88 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG Label label = new Label((VN_Req[i].NumLinks + VN_Req[i].NumNodes), i, VN_Req[i].life_time.toString()); sheet.addCell(label); } workbook.write(); workbook.close(); } catch (WriteException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } C.4 Lớp Server_SOD Tương tự lớp Server gói SPA_BK, lớp Server_SOD dùng để xử lý yêu cầu, hàm execute có mã nguồn tương tự lớp Server Dưới trình bày số điểm khác so với lớp Server: Hàm tìm giá trị : private int[][][] Candidate_paths(int[] ID_of_SN) { YenTopKShortestPathsAlg K_Shortest_Paths = new YenTopKShortestPathsAlg(model); List List = new Vector(); int i, j, k; //Do yêu cầu mạng ảo có nút – liên kết nên với liên kết cần mảng riêng lưu tuyến đường ứng cử viên String [] Candidate_paths1 = new String[CANDIDATE_PATHS]; String [] Candidate_paths2 = new String[CANDIDATE_PATHS]; String [] Candidate_paths3 = new String[CANDIDATE_PATHS]; //Ma trận lưu giá trị int[][][] Intermediate = new int[NUMBER_OF_VLINK][SUBSTRATE_LINKS][CANDIDATE_PATHS] ; for(int v = 0; v < NUMBER_OF_VLINK; v++){ for(int s = 0; s < SUBSTRATE_LINKS; s++){ for(int p = 0; p < CANDIDATE_PATHS; 89 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG p++) Intermediate[v][s][p] = 0; } } for(i = 0; i < CANDIDATE_PATHS; i++){ Candidate_paths1[i] = " "; Candidate_paths2[i] = " "; Candidate_paths3[i] = " "; } //================================================================== List = K_Shortest_Paths.get_shortest_paths(model.get_vertex( ID_of_SN[0]), model.get_vertex(ID_of_SN[1] ), CANDIDATE_PATHS); for(i = 0; i < List.size(); i++){ Candidate_paths1[i] = List.get(i).toString(); } // Tính Ma trận liên kết ảo thứ for(k = 0; k < CANDIDATE_PATHS; k++){ for(i = 0; i < SUBSTRATE_NODES; i++) for(j = 0; j < SUBSTRATE_NODES; j++) if((i != j) && (ID.Array[i][j] != -1) && Candidate_paths1[k].contains(Integer.toString(i)+", "+Integer.toString(j)) ){ Intermediate[0] [ID.Array[i][j]] [k] = 1; } } List = K_Shortest_Paths.get_shortest_paths(model.get_vertex( ID_of_SN[0]), model.get_vertex(ID_of_SN[2]), CANDIDATE_PATHS); for(i = 0; i < List.size(); i++) Candidate_paths2[i] = List.get(i).toString(); // Tính Ma trận liên kết ảo thứ hai for(k = 0; k < CANDIDATE_PATHS; k++){ for(i = 0; i < SUBSTRATE_NODES; i++) for(j = 0; j < SUBSTRATE_NODES; j++) if((i != j) && (ID.Array[i][j] != -1) && Candidate_paths2[k].contains(Integer.toString(i)+", "+Integer.toString(j)) ){ Intermediate[1] [ID.Array[i][j]] [k] = 1; } } //================================================================== List = 90 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG K_Shortest_Paths.get_shortest_paths(model.get_vertex( ID_of_SN[0]), model.get_vertex(ID_of_SN[3]), CANDIDATE_PATHS); for(i = 0; i < List.size(); i++) Candidate_paths3[i] = List.get(i).toString(); // Tính Ma trận liên kết ảo thứ ba for(k = 0; k < CANDIDATE_PATHS; k++){ for(i = 0; i < SUBSTRATE_NODES; i++) for(j = 0; j < SUBSTRATE_NODES; j++) if((i != j) && (ID.Array[i][j] != -1) && Candidate_paths3[k].contains(Integer.toString(i)+", "+Integer.toString(j)) ){ Intermediate[2] [ID.Array[i][j]] [k] = 1; } } return Intermediate; } Khác với lớp Server, hàm Update_resource, Restore_resource tài nguyên cập nhật theo cách khác, private void Update_Resource(int[] ID_of_VN, int[] ID_of_SN, SubNW sub_NW, VNRequest REQ_Being_Served){ int s, p, v, r, f, i, k; Double TMP = 0.0; //Ghi lại giá trị, phục vụ việc tính tốn P_bk for(i = 0; i < (Sim_Time/Window_Time); i++){ if( (Window_Time * i) < time && time < (i+1) * Window_Time ){ for( k = 1; k < ID_of_SN.length ; TMP += sub_NW.get_Slink(ID_of_SN[0], ID_of_SN[k]).sBandwidth ; Backup_BW[i] += REQ_Being_Served.ReservedBW[ID.Array[ID_of_SN[0]][ID_of_SN[k]]] ; } Capacity_BW[i] += TMP; } } //Cập nhật CPU nút …… //Cập nhật băng thông lại liên kết for(s = 0; s < SUBSTRATE_LINKS; s++){ TMP = 0.0; for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++){ TMP += REQ_Being_Served.Intermediate[v][s][p] * REQ_Being_Served.PrimaryFlow[p][v]; 91 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG } } …… } //Cập nhật tổng lượng băng thơng dự phịng for(s = 0; s < SUBSTRATE_LINKS; s++){ RESERVED_BW[s] += REQ_Being_Served.ReservedBW[s]; ……… } //Cập nhật lượng băng thơng dự phịng for(s = 0; s < SUBSTRATE_LINKS; s++){ System.out.println(); Double tmp = 0.0; for(f = 0; f < SUBSTRATE_LINKS; f++){ for(r = 0; r < BACKUP_PATHS_PER_LINK; r++){ tmp += MT.I[f][s][r] * REQ_Being_Served.RestorationFlow[r][f]; } RESTORATION_FLOW[s][f] += tmp; …… } } } // Hàm trả lại tài nguyên private void Restore_Resource(VNRequest REQ_Being_Served, SubNW sub_NW) { int s, p, v, r, f; //Cập nhật tài nguyên CPU nút …… //Cập nhật lượng băng thơng dành cho dự phịng for(s = 0; s < SUBSTRATE_LINKS; s++){ Double tmp = 0.0; for(f = 0; f < SUBSTRATE_LINKS; f++){ for(r = 0; r < BACKUP_PATHS_PER_LINK; r++){ tmp += MT.I[f][s][r] * REQ_Being_Served.RestorationFlow[r][f]; } RESTORATION_FLOW[s][f] -= tmp; } } //Cập nhật tổng lượng băng thông dành cho dự phòng Double[] Info = new Double[SUBSTRATE_LINKS]; for(s = 0; s < SUBSTRATE_LINKS; s++){ Double max = 0.0; for(f = 0; f < SUBSTRATE_LINKS; f++){ max = Find_max(RESTORATION_FLOW[s]); } Info[s] = RESERVED_BW[s]; 92 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG RESERVED_BW[s] = max; } //Cập nhật lượng băng thơng cịn lại liên kết for(s = 0; s < SUBSTRATE_LINKS; s++){ Double TMP = 0.0; for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++){ TMP += REQ_Being_Served.Intermediate[v][s][p] * REQ_Being_Served.PrimaryFlow[p][v] ; } } …… } } D Bài toán tối ưu hóa Do tham số tốn tối ưu hóa nên mơ tả biến tốn tối ưu hóa phương pháp SPA_BK SOD_BK D.1 Trong phương pháp SPA_BK //Tạo mơ hình cplex IloCplex cplex = new IloCplex(); //Biến alpha lưu mảng 20 phần tử, có giá trị từ đến IloNumVar[] alpha = cplex.numVarArray(NUMBER_SUBSTRATE_LINKS, 0.0, 1.0); //Biến IloNumVar[][] RF = new IloNumVar[BACKUP_PATHS_PER_LINK] [NUMBER_SUBSTRATE_LINKS]; //OBJECTIVES: Hàm mục tiêu toán IloLinearNumExpr Expr = cplex.linearNumExpr(); for (int s = 0; s < NUMBER_SUBSTRATE_LINKS; s++){ Expr.addTerm(BandWidth[s], alpha[s]); } //Đưa hàm mục tiêu vào mơ hình cplex.addMaximize(Expr); //RESTORATION FLOW CONSTRAIN: tương ứng với ràng buộc for(int r = 0; r < BACKUP_PATHS_PER_LINK; r++) RF[r] = cplex.numVarArray(NUMBER_SUBSTRATE_LINKS, 0.0, 20.0); for(int f = 0; f < NUMBER_SUBSTRATE_LINKS; f++){ IloLinearNumExpr constrain9 = cplex.linearNumExpr(); IloLinearNumExpr tmp = cplex.linearNumExpr(); tmp.addTerm(alpha[f], BandWidth[f]); for (int r = 0; r < BACKUP_PATHS_PER_LINK; r++){ 93 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG constrain9.addTerm(1.5, RF[r][f]); } //Đưa Biểu thức ràng buộc vào mơ hình cplex.addEq(constrain9, tmp); } //RESTORATION BW CONSTRAIN: tương ứng với ràng buộc IloLinearNumExpr[][] Constrain10 = new IloLinearNumExpr[NUMBER_SUBSTRATE_LINKS][NUMBER_SUBSTRATE_LINKS]; for(int s = 0; s < NUMBER_SUBSTRATE_LINKS; s++){ IloNumExpr tmp = cplex.numExpr(); tmp = cplex.diff(1, alpha[s]); for(int f = 0; f < NUMBER_SUBSTRATE_LINKS; f++){ Constrain10[s][f] = cplex.linearNumExpr(); for (int r = 0; r < BACKUP_PATHS_PER_LINK; r++){ Constrain10[s][f].addTerm(MATRIX.I[f][s][r] , RF[r][f]); } //Đưa ràng buộc vào mơ hình cplex.addLe(Constrain10[s][f], cplex.prod(tmp, BandWidth[s]) ); } } //DOMAIN CONSTRAINS: tương ứng với ràng buộc 10 for(int s = 0; s < NUMBER_SUBSTRATE_LINKS; s++){ cplex.addGe(alpha[s], 0.0); } for(int r = 0; r < BACKUP_PATHS_PER_LINK; r++){ for(int f = 0; f < NUMBER_SUBSTRATE_LINKS; f++) cplex.addGe(RF[r][f], 0.0); } //Giải tốn tối ưu hóa if (cplex.solve()) { ……//Lấy giá trị biến băng hàm cplex.getValue() //Lấy giá trị hàm mục tiêu hàm cplex.getObjValue() } //Nếu khơng giải in hình else System.out.println("Can't solve this problem!"); System.out.println(" BANDWIDTH FOR MAPPING "); for(int i = 0; i < NUMBER_SUBSTRATE_LINKS; i++){ //Phân phối trước tài nguyên băng thông cho liên kết mạng this.SubLink[i].BW_for_Mapping = BandWidth[i] * cplex.getValue(alpha[i]); System.out.println(this.SubLink[i].BW_for_Mapping); } ……… 94 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG //Kết thúc tốn tối ưu hóa cplex.end(); D.2 Trong phương pháp SOD_BK Phần tối ưu hóa thực có yêu cầu mạng ảo đến: private boolean cplex(VNRequest REQ, SubNW Sub_NW) { int p, v, s, f, r; try{ //Khai báo mơ hình tối ưu hóa IloCplex cplex = new IloCplex(); //Khai báo biến thứ IloNumVar[][] Primary_Flow = new IloNumVar[CANDIDATE_PATHS][NUMBER_OF_VLINK]; for(p = 0; p < CANDIDATE_PATHS; p++) Primary_Flow[p] = cplex.numVarArray(NUMBER_OF_VLINK, 0, 6); //Khai báo biến thứ hai IloNumVar[][] Restore_Flow = new IloNumVar[BACKUP_PATHS_PER_LINK][SUBSTRATE_LINKS]; for(r = 0; r < BACKUP_PATHS_PER_LINK; r++) Restore_Flow[r] = cplex.numVarArray(SUBSTRATE_LINKS, 0, 100); //Khai báo biến thứ ba IloNumVar[] Reserved_BW = new IloNumVar[SUBSTRATE_LINKS]; Reserved_BW = cplex.numVarArray(SUBSTRATE_LINKS, 0, 100); //OBJECTIVES: Hàm mục tiêu //Khai báo mảng hàm mục tiêu IloNumExpr[] Obj = new IloNumExpr[SUBSTRATE_LINKS]; IloLinearNumExpr[] Sum = new IloLinearNumExpr[SUBSTRATE_LINKS]; for(s = 0; s < SUBSTRATE_LINKS; s++) { Obj[s] = cplex.numExpr(); Sum[s] = cplex.linearNumExpr(); IloLinearNumExpr Expr = cplex.linearNumExpr(); Double TMP = 1.0 /(Sub_NW.SubLink[s].sBandwidth + 0.0001); for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++){ Expr.addTerm(REQ.Intermediate[v][s][p] , Primary_Flow[p][v]); } } Obj[s] = cplex.prod(TMP, cplex.sum(Sum[s], Reserved_BW[s] )); } //Đưa hàm mục tiêu vào mơ hình 95 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG cplex.addMinimize(cplex.sum(Obj)); //CAPACITY CONSTRAINTS: tương ứng với ràng buộc IloLinearNumExpr Constrain3[] = new IloLinearNumExpr[SUBSTRATE_LINKS]; for(s = 0; s < SUBSTRATE_LINKS; s++){ Constrain3[s] = cplex.linearNumExpr(); for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++){ Constrain3[s].addTerm(REQ.Intermediate[v][s][p], Primary_Flow[p][v]) ; } } //Đưa ràng buộc vào mơ hình cplex.addLe(cplex.sum(Constrain3[s], Reserved_BW[s]), Sub_NW.SubLink[s].sBandwidth) ; } //PRIMARY FLOW CONSTRAINTS: tương ứng với ràng buộc IloLinearNumExpr Constrain4[] = new IloLinearNumExpr[NUMBER_OF_VLINK]; for(v = 0; v < NUMBER_OF_VLINK; v++){ Constrain4[v] = cplex.linearNumExpr(); for(p = 0; p < CANDIDATE_PATHS; p++){ Constrain4[v].addTerm(Primary_Flow[p][v], 1.0); } //Đưa ràng buộc vào mơ hình cplex.addEq(Constrain4[v], REQ.VirLinks[v].vBandwidth); } //RESTORATION FLOW CONSTRAINTS: tương ứng với ràng buộc //Khai báo mảng kiểu biểu thức tuyến tính IloLinearNumExpr Expr1[] = new IloLinearNumExpr[SUBSTRATE_LINKS]; IloLinearNumExpr Expr2[] = new IloLinearNumExpr[SUBSTRATE_LINKS]; for(f = 0; f < SUBSTRATE_LINKS; f++){ Expr1[f] = cplex.linearNumExpr(); Expr2[f] = cplex.linearNumExpr(); for(r = 0; r < BACKUP_PATHS_PER_LINK; r++){ Expr1[f].addTerm(Restore_Flow[r][f], 1); } for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++) Expr2[f].addTerm(REQ.Intermediate[v][f][p] 96 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG , Primary_Flow[p][v]); } //Đưa ràng buộc vào mơ hình cplex.addEq(Expr1[f], Expr2[f]); } //RESTORATION BW CONSTRAINTS: tương ứng với ràng buộc IloLinearNumExpr[][] Constrain6 = new IloLinearNumExpr[SUBSTRATE_LINKS][SUBSTRATE_LINKS]; for(s = 0; s < SUBSTRATE_LINKS; s++){ Double Tino = 0.0; for(f = 0; f < SUBSTRATE_LINKS; f++){ Constrain6[s][f] = cplex.linearNumExpr(); for(r = 0; r < BACKUP_PATHS_PER_LINK; r++){ Constrain6[s][f].addTerm(MT.I[f][s][r] , Restore_Flow[r][f]); } Tino = RESERVED_BW[s] - RESTORATION_FLOW[s][f]; //Đưa ràng buộc vào mơ hình cplex.addLe(Constrain6[s][f], cplex.sum(Reserved_BW[s], Tino)); } } //DOMAIN CONSTRAINTS: tương ứng với ràng buộc for(v = 0; v < NUMBER_OF_VLINK; v++){ for(p = 0; p < CANDIDATE_PATHS; p++) cplex.addGe(Primary_Flow[p][v], 0.0); } for(f = 0; f < SUBSTRATE_LINKS; f++){ for(r = 0; r < BACKUP_PATHS_PER_LINK; r++) cplex.addGe(Restore_Flow[r][f], 0.0); } for(s = 0; s < SUBSTRATE_LINKS; s++) cplex.addGe(Reserved_BW[s], 0.0); // SOLVE: Giải tốn tối ưu hóa if(cplex.solve()){ //Lấy giá trị hàm mục tiêu System.out.print("\nObjectives = " +cplex.getObjValue()); //Lấy giá trị Primary_Flow System.out.println("\nPrimary_Flow"); for(p = 0; p < CANDIDATE_PATHS; p++){ System.out.println(); for(v = 0; v < NUMBER_OF_VLINK; v++){ REQ.PrimaryFlow[p][v] = cplex.getValue(Primary_Flow[p][v] ); } } 97 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG //Lấy giá trị Restore_Flow System.out.println("\nRestore_Flow"); for(r = 0; r < BACKUP_PATHS_PER_LINK; r++){ System.out.println(); for(f = 0; f < SUBSTRATE_LINKS; f++){ REQ.RestorationFlow[r][f] = cplex.getValue(Restore_Flow[r][f]); } } //Lấy giá trị Reserved_BW System.out.println("\nReserved BW"); for(s = 0; s < SUBSTRATE_LINKS; s++){ REQ.ReservedBW[s] = cplex.getValue(Reserved_BW[s]); } cplex.end(); return true; } else{ System.out.println("CAN'T SOLVE THE PROBLEM ! Status = " + cplex.getStatus()); cplex.end(); } } catch (IloException ex){ Logger.getLogger(Server_SOD.class.getName()).log(Level.SEVERE, null, ex); } return false; } 98 NGUYỄN TIẾN HẢI – CB110424- KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THƠNG ... mách gói quang (OPS), WDM Tất cơng nghệ cịn hạn chế cho việc khai thác ảo hóa mạng quang Trong cơng nghệ OOFDM, ảo hóa WDM cơng nghệ triển vọng cho việc ảo hóa, tận dụng tài nguyên mạng Nguyên... thống 1.6 Giải pháp mạng quang ảo Ảo hóa mạng quang học tạo khả cho nhà khai thác mạng chủ sở hữu sở hạ tầng mạng quang qua khái niệm sở hạ tầng dịch vụ ( IaaS) hướng dịch vụ mạng ( SON) Điều cho... hiệu điện kênh quang điều chế với sóng mang quang có độ rộng phổ hẹp Tín hiệu quang đầu phát có bước sóng khác λ1 , λ λ n Các kênh quang ghép với nhờ ghép kênh quang MUX truyền sợi quang đến đầu