Clip Mininet là gì - Lớp.VN

Kinh Nghiệm về Mininet là gì Chi Tiết

Khoa Năng Tùng đang tìm kiếm từ khóa Mininet là gì được Cập Nhật vào lúc : 2022-04-06 12:49:07 . Với phương châm chia sẻ Kinh Nghiệm Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha.

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH KHOA VIỄN THÔNG II BÁO CÁO CHUYÊN ĐỀ KHOA VIỄN THÔNG II NĂM HỌC: 2022 Đề tài: Tìm hiểu một mạng SDN đơn giản NHÓM 3: Mai Chí Khương N16DCVT040 Văn Phước Kiên N16DCVT033 Lê Trung Lương N16DCVT041 Nguyễn Thành Lưu N16DCVT043 Trần Nhật Minh N16DCVT044 Võ Văn Minh N16DCVT046 Huỳnh Hồ Nam N16DCVT047 Lê Ngọc Tuấn Nhã N15DCVT061 Lê Hồng Phúc N16DCVT056 Huỳnh Chiếm Phương N16DCVT057 Giảng viên: ThS. NGUYỄN XUÂN KHÁNH TP.Hồ Chí Minh Tháng 4 năm 2022 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH KHOA VIỄN THÔNG II BÁO CÁO CHUYÊN ĐỀ KHOA VIỄN THÔNG II NĂM HỌC: 2022 Đề tài: Tìm hiểu một mạng SDN đơn giản NHÓM 3: Mai Chí Khương N16DCVT040 Văn Phước Kiên N16DCVT033 Lê Trung Lương N16DCVT041 Nguyễn Thành Lưu N16DCVT043 Trần Nhật Minh N16DCVT044 Võ Văn Minh N16DCVT046 Huỳnh Hồ Nam N16DCVT047 Lê Ngọc Tuấn Nhã N15DCVT061 Lê Hồng Phúc N16DCVT056 Huỳnh Chiếm Phương N16DCVT057 Giảng viên: ThS. NGUYỄN XUÂN KHÁNH TP.Hồ Chí Minh Tháng 4 năm 2022 NHẬN XÉT CỦA GIẢNG VIÊN i LỜI CẢM ƠN Đầu tiên, nhóm em xin gủi lời cảm ơn đến Thầy ThS. Nguyễn Xuân Khánh . Thầy luôn hướng dẫn tận tình cho nhóm trong suốt quá trình nhóm thực hiện đề tài. Thầy đã giải đáp những thắc mắc cũng như trở ngại vất vả mà nhóm gặp phải. Nhóm xin kính chúc Thầy dồi dào sức khỏe và ngày càng thành công trên con phố sự nghiệp giáo dục của tớ. Tiếp đến, nhóm em xin gửi lời cảm ơn đến những Thầy Cô trong khoa Viễn Thông II đã giúp nhóm em có những kiến thức và kỹ năng có ích để thực hiện đề tài này. Kính chúc những Thầy Cô dồi dào sức khỏe. Nhóm cũng xin gửi lời cảm ơn đến những thành viên trong lớp đã giúp sức nhóm trên lớp học và sau giờ học. Và ở đầu cuối, xin cảm ơn tất cả những thành viên trong nhóm đã tìm hiểu, xây dựng và hoàn thành xong đề tài. Hồ Chí Minh, tháng 4 năm 2022 Tập thể sinh viên nhóm 3 ii MỤC LỤC 1 TỔNG QUAN VỀ MININET 1 1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Các thành phần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 HOẠT ĐỘNG CỦA OPENFLOW 3 3 TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 6 3.1 Xây dựng một mạng SDN đơn giản . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.1 Khởi tạo Mininet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1.2 Cấu hình tạo Topo mạng . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.3 Thực thi lệnh tạo topo . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 3.3 3.4 4 Kiểm tra hoạt động và sinh hoạt giải trí thực hiện những cơ sản xuất luồng Một trong những host, ý nghĩa nội dung Flowtable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.1 Kiểm tra hoạt động và sinh hoạt giải trí thực hiện những cơ sản xuất luồng Một trong những host . . . . 9 3.2.2 Ý nghĩa nội dung flowtable . . . . . . . . . . . . . . . . . . . . . . . 11 Phân tích những bản tin giao thức OpenFlow khi khởi động mạng, ping và tạo luồng 12 3.3.1 Yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3.2 Thiết lập Wireshark và bắt gói tin . . . . . . . . . . . . . . . . . . . . 13 3.3.3 Các Message trong Openflow . . . . . . . . . . . . . . . . . . . . . . 15 3.3.4 Phân tích gói tin của quá trình khởi tạo link giữa controller và switch 16 3.3.5 Phân tích gói tin trong quá trình ping Một trong những host . . . . . . . . . . . 20 Tìm hiểu và triển khai 1 bộ điều khiển . . . . . . . . . . . . . . . . . . . . . . 31 3.4.1 Cài đặt JAVA trên Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . 31 3.4.2 Tải opendaylight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4.3 Cài npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4.4 Cài Opendaylight-openflow-app . . . . . . . . . . . . . . . . . . . . . 32 3.4.5 Chỉnh sửa nội dung env.module.js . . . . . . . . . . . . . . . . . . . . 32 3.4.6 Chạy opendaylight trên ubuntu . . . . . . . . . . . . . . . . . . . . . . 33 3.4.7 Giao diện GUI của Controller ODL . . . . . . . . . . . . . . . . . . . 35 KẾT LUẬN 38 iii DANH SÁCH HÌNH VẼ 1.1 Các thành phần trong Mininet . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Hoạt động đầu tiên của OpenFlow . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Flow Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Flow Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 Flow Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1 Đăng nhập vào Mininet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Thư mục thao tác hiện tại . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 Vị trí file thông số kỹ thuật topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 File topo-2sw-2host.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.5 Cấu hình từng phần tử trong topo . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.6 Thực thi lệnh tạo topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.7 tin tức thành phần topo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.8 Kiểm tra thông tin bảng luồng Switch 1 . . . . . . . . . . . . . . . . . . . . . 9 3.9 Kiểm tra luồng Switch 1,2 và 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.10 Ping không thành công . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.11 Sơ đồ mạng và cổng link của mạng SDN . . . . . . . . . . . . . . . . . . . 10 3.12 Tạo link Một trong những Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.13 Ping thành công . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.14 Kiểm tra lại luồng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.15 Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.16 Chọn cổng Ethernet trong WireShark . . . . . . . . . . . . . . . . . . . . . . 14 3.17 Lọc gói tin openflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.18 Các gói tin cho quá trình khởi tạo link . . . . . . . . . . . . . . . . . . . . . 16 3.19 Quá trình khởi tạo link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.20 Hello message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.21 tin tức Hello message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.22 Fetures message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.23 tin tức gói ofpt_features_reply . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.24 Các gói tin trong bước set configuration . . . . . . . . . . . . . . . . . . . . . 19 iv DANH SÁCH HÌNH VẼ 3.25 ofpt_flow_mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.26 tin tức trong ofpt_flow_mod . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.27 ofpt_echo_request/reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.28 Quá trình ARP request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.29 Quá trình ARP reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.30 Chỉnh nội dung env.module.js . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.31 Chạy opendaylight trên ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.32 Sơ đồ mạng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.33 Khởi tạo mạng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.34 Giao diện GUI của ODL Controller . . . . . . . . . . . . . . . . . . . . . . . 35 3.35 Mục Flow Mangerment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.36 Mục Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.37 Mục Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.38 Mục Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Nhóm 3 D16CQVT01-N Trang v CHƯƠNG 1 TỔNG QUAN VỀ MININET 1.1 Giới thiệu Mininet là một khối mạng lưới hệ thống dùng tạo nguyên mẫu cho những mạng lớn trong điều kiện tài nguyên trên một máy tính. Mininet sử dụng những đặc tính ảo hóa cấp hệ điều hành, gồm những tiến trình và không khí tên mạng, được cho phép nó giả lập lên đến mức hàng trăm node. Mininet tạo điều kiện thuận lợi cho những nhà nghiên cứu và phân tích trong nghành link mạng hoàn toàn có thể phát triển và triển khai những ý tưởng, ví dụ một kiến trúc mạng mới, một giao thức di động, hoặc một đặc tính tương hỗ update vào router. Mininet tạo ra một môi trường tự nhiên thiên nhiên tạo nguyên mẫu của một mạng với những đặc tính sau : • Linh động: Các địa hình và hiệu suất cao mới dược định nghĩa trong phần mềm, dùng những ngôn từ và hệ điều hành quen thuộc • Triển khai : Việc triển khai một nguyên mẫu đúng về mặt hiệu suất cao trên những mạng phần cứng và môi trường tự nhiên thiên nhiên thử nghiệm sẽ không cần thay đổi mã hoặc thông số kỹ thuật. • Tương tác: Việc quản lý và vận hành mạng sẽ thực hiện như trong mạng thực, như thể ta đang tương tác với mạng thực. • Qui mô : Tạo nguyên mẫu cho những mạng lên đến mức hàng trăm Hàng trăm chuyển mạch chỉ trên một máy tính. • Thực tế : Hành vi của nguyên mẫu là những hành vi thực với mức độ tin cây cao, ví dụ những ứng dụng và chồng giao thức cỏ thể sử dụng được mà không còn sự thay đổi nào. • Chia sẽ : những nguyên mẫu khép kín sẽ thuận tiện và đơn giản chia sẽ với những cộng tác viên. 1.2 Các thành phần • Links: Một cặp Ethernet ảo (veth pair) hoạt động và sinh hoạt giải trí in như một link dây giữa 2 tiếp xúc ảo; những gói gởi qua một tiếp xúc được đưa đến một tiếp xúc khác, và phẩn mềm ứng dụng và khối mạng lưới hệ thống nhìn thấy mỗi tiếp xúc như thể một cổng Ethernet với đầy đủ hiệu suất cao. 1 CHƯƠNG 1. TỔNG QUAN VỀ MININET Các cặp veth hoàn toàn có thể được gắn vào những chuyển mạch ảo như thể Linux bridge (mã thực hiện một tập con của chuẩn IEEE 802.1d) hoặc một chuyển mạch OpenFlow phần mềm • Hosts: Các namespace mạng là những container trạng thái mạng (phương pháp ảo hóa cấp hệ điều hành linux). Chúng đáp ứng cho những tiến trình (và nhóm những tiến trình) quyền sở hữu riêng biệt những tiếp xúc, những cổng và những bảng định tuyến (như ARP và IP). Ví dụ, 2 web server trong 2 namespace mạng hoàn toàn có thể đồng tồn tại trên một khối mạng lưới hệ thống, cả hai đều hoàn toàn có thể lắng nghe ở cổng 80 trên những tiếp xúc eth0 riêng. Một host trong Mininet đơn giản là một tiến trình shell (ví dụ bash) được đưa vào namespace mạng riêng của nó với yêu cầu khối mạng lưới hệ thống riêng biệt. Mỗi host có riêng những • Switches: Các chuyển mạch OpenFow bằng phần mểm đáp ứng cơ chế phân phối gói vể ý nghĩa in như những chuyển mạch phần cứng đáp ứng. • Controller: Các bộ điều khiển hoàn toàn có thể đặt ở bất kể nơi đâu trên mạng thực hoặc trên mạng mô phỏng, miễn sao thiết bị chạy những chuyển mạch có link mức IP với bộ điều khiển. Đối với Mininet chạy trong một máy ảo, bộ điều khiển hoàn toàn có thể chạy bên trong máy ảo này, chạy trên máy host, hoặc trong một đám mây. Hình 1.1: Các thành phần trong Mininet Nhóm 3 D16CQVT01-N Trang 2 CHƯƠNG 2 HOẠT ĐỘNG CỦA OPENFLOW Hình 2.1: Hoạt động đầu tiên của OpenFlow Bắt đầu gửi gói tin HTTP từ h1 sang h4, quá trình TCP conversation luôn luôn khởi động với 1 bản tin syn packet . Nếu s1 là sw chính như hình trên thì gói HTTP sẽ chuyển thẳng từ h1 sang h4 nhờ vào địa chỉ mac đã biết sẵn nên s1 sẽ biết chuyển gói tin đi đâu (H4). Đây là OpenFlow sw, s1 sẽ kiểm tra bản local flows của nó, vì đây là gói tin đầu tiên nên trong bản flowtable sẽ không còn entry matching của gói tin này, được gọi là table miss. Bình thường nếu không còn một flow matching thì sw sẽ gửi 1 gói tin lên controller được gọi là packet in. Gói tin này sẽ gồm có gói tin TCP SYN gốc bên trong nó kèm theo toàn bộ gói tin hoặc packet header và 1 buffer ID sẽ cho sw biết phải làm gì với gói đang tàng trữ. Khi controller nhận gói bản tin packet in thì sẽ có một số trong những action như thể Controller sẽ gửi 1 gói packet out hoặc flow modification trở về sw. • Định nghĩa packet out : là một trong bản tin hướng dẫn sw về những gì phải làm với gói tin rõ ràng, packet out hoàn toàn có thể gồm có một gói tin hoàn hảo nhất hoặc 1 buffer ID có liên quan gói tin mà nó đang tàng trữ. Controller sẽ hướng dẫn sw1 gửi 1 gói tin liên quan đến buffer id 250. 3 CHƯƠNG 2. HOẠT ĐỘNG CỦA OPENFLOW Hình 2.2: Flow Mode • Controller còn gửi 1 bản tin flow modification, hướng dẫn sw xây dựng 1 flow entry mới vào flow table của nó. Flow entrty cho sw biết những gói tương tự được gửi sau này gửi đi đâu nhờ vào matching field. Flow mod còn gồm có buffer id và nó sẽ cho sw biết rằng gói tin đầu tiên mà mình tàng trữ là buffer id 250 và lấy nó để bỏ vào action trong gói tin này, action hoạt động và sinh hoạt giải trí theo h1 yêu cầu sw. Ngoài ra 1 bản tin hoàn toàn có thể gồm có nhiều action như pop push swap. . . . . . . – Time out gồm có: ∗ idle time out =20: nếu như không còn matching HTTP requests trong vòng 20s thì nó sẽ xóa flow entry này và host time out =60s : sau 60s tránh việc phải biết đang làm gì sẽ xóa flow entry. ∗ prioty =5000: độ ưu tiên và nó sẽ sắp xếp thứ tự ưu tiên của những flow etry, nếu flow có độ ưu tiên to hơn thì sẽ được sử dụng và flow thấp hơn sẽ bị từ chối ∗ sw sẽ gửi gói tin tới h4. Nhóm 3 D16CQVT01-N Trang 4 CHƯƠNG 2. HOẠT ĐỘNG CỦA OPENFLOW Hình 2.3: Flow Entry – Mặc dù đã thiết lập flow entry h1 sang h4 nhưng khi gửi ngược từ h4 sang h1 thì flow entry của SYN ack không hề có flow entry nên thực hiện tương tự cách bước trình lên controller để có flow entry. Hình 2.4: Flow Entry – Sau khi 2 quá trình h1 sang h4, h4 sang h1 thì ta đã có flow entry cho tất cả đi và về trong flow table cho nên vì thế những gói tin gửi sau này sẽ gửi thẳng từ h1 sang h4 hoặc ngược lại mà tránh việc phải gửi tin nhắn lên controller. Nhóm 3 D16CQVT01-N Trang 5 CHƯƠNG 3 TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 3.1 Xây dựng một mạng SDN đơn giản Yêu cầu: Xây dựng một mạng SDN đơn giản gồm 1 bộ điều khiển,4 host và 3 switch 3.1.1 Khởi tạo Mininet • Trong báo cáo này, sử dụng VMware Workstation để làm nền tảng chạy máy ảo Mininet. • Đăng nhập vào Mininet với user là mininet và password là mininet Hình 3.1: Đăng nhập vào Mininet • Ta nhập lệnh $ pwd để in ra đường dẫn đến thư mục thao tác hiện tại. Hình 3.2: Thư mục thao tác hiện tại 6 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 3.1.2 Cấu hình tạo Topo mạng • Chúng ta sử dụng ngôn từ lập trình Python để thông số kỹ thuật topo cho file mặc định của Mininet. • File nằm trong đường dẫn /home/mininet/mininet/custom và mang tên là topo-2sw-2host.py Hình 3.3: Vị trí file thông số kỹ thuật topo • Để sửa file topo-2sw-2host.py mặc định ta di tán đến thư mục chưa nó bằng câu lệnh cd mininet/custom/. Sau đó để đọc file ta sử dụng lệnh nano topo-2sw-2host.py Hình 3.4: File topo-2sw-2host.py • Chúng ta tiến hành sửa file trực tiếp trên file mặc định. Cụ thể: – Thêm 1 switch với câu lệnh = self.addSwitch( ‘ ‘) Nhóm 3 D16CQVT01-N Trang 7 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Thêm 1 host với câu lệnh = self.addHost( ‘ ‘) – Thiết lập đường truyền bằng câu lệnh self.addLink( , ) Hình 3.5: Cấu hình từng phần tử trong topo • Sau đó nhấn Ctrl + x để lưu file với tên là chuyende.py 3.1.3 Thực thi lệnh tạo topo • Ta sử dụng lệnh $ sudo mn –custom /mininet/custom/chuyende.py –topo mytopo – mac –switch ovsk –controller remote chạy file chuyende.py để tạo mạng SDN. Sau khi chạy thành công sẽ xuất ra màn hình hiển thị 1 bộ điều khiển, 4 host và 3 switch. Hình 3.6: Thực thi lệnh tạo topo • Dùng câu lệnh sh sudo ovs-ofctl show s2 để kiểm tra thông tin của bảng luồng của switch 2. Nhóm 3 D16CQVT01-N Trang 8 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 3.2 Kiểm tra hoạt động và sinh hoạt giải trí thực hiện những cơ sản xuất luồng Một trong những host, ý nghĩa nội dung Flowtable 3.2.1 Kiểm tra hoạt động và sinh hoạt giải trí thực hiện những cơ sản xuất luồng Một trong những host • Kiểm tra những link của mạng vừa tạo với những câu lệnh như sau: – net: hiển thị interface trong những node. – dump: hiển thị thông tin rõ ràng tất cả những node. – nodes: hiển thị những node hiện tại. – links: hiển thị những đường truyền Hình 3.7: tin tức thành phần topo • Các đường truyền đã tạo thành công. Tạo luồng cho những host và switch: – Dùng lệnh sh ovs-ofctl show s1 để kiểm tra luồng switch 1 Hình 3.8: Kiểm tra thông tin bảng luồng Switch 1 – Ngoài ra, để kiểm tra những luồng của switch s1, ta còn tồn tại thể dùng lệnh sh ovs-ofctl dump-flows s1 và tương tự với switch 2 và switch 3. Nhóm 3 D16CQVT01-N Trang 9 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.9: Kiểm tra luồng Switch 1,2 và 3 – Ta tiến hành ping thử từ Host 1(h1) qua Host 4(h4): Hình 3.10: Ping không thành công – Chưa có link Một trong những host vì trong bảng luồng không còn luồng nào cho link này. Để tạo luồng từ host 1 sang host 4, ta dùng trình tiện ích ovs-ofctl. Cách xác định in_port và outport thì ta nhờ vào sơ đồ mạng đã vẽ được sau khi thực hiện những lệnh links, dump, net, nodes. Hình 3.11: Sơ đồ mạng và cổng link của mạng SDN • Dùng câu lệnh sh ovs-ofctl add-flow s1 in_port=1,actions=output:normal – Với s1 là tên gọi switch, In_port là cổng vào, Output là cổng ra. – Với câu lệnh trên luồng sẽ được tạo đi từ cổng 1 của switch 1 ra tất cả cổng còn sót lại. Nếu thay normal bằng số, thì luồng sẽ ra theo cổng số được chỉ định. Nhóm 3 D16CQVT01-N Trang 10 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.12: Tạo link Một trong những Host – Ping lại và thấy gói tin đã được gửi đi thành công: Hình 3.13: Ping thành công • Gõ lệnh pingall để kiểm tra lại luồng, mỗi port vào đã được phân luồng thành công với tất cả port ra trên switch. Hình 3.14: Kiểm tra lại luồng 3.2.2 Ý nghĩa nội dung flowtable • Bảng luồng hay bảng lưu lượng tương hỗ cho việc chuyển những gói tin từ nơi gửi đến nơi nhận một cách hiệu suất cao và thích hợp nhờ vào những thông số và thành phần trong FlowTable (thông tin độ ưu tiên).Flowtable đóng vai trò như một bảng định tuyến trong router trong mạng truyền thống. Flowtable quản lý được đường đi của gói tin nhờ vào thông số kỹ thuật những port in và out do người kỹ sư mạng thiết lập. • Trong mỗi bảng flow table này sẽ chứa một tập những flow entry. Các flow entry này được thêm, sửa đổi hoặc vô hiệu đi bởi SDN controller. Mỗi flow entry sẽ gồm có những thành phần sau: Nhóm 3 D16CQVT01-N Trang 11 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Match fields: Bao gồm những thông tin về packet header và ingress port dùng để so khớp những gói tin, khi một gói tin match với một flow entry thì gói tin đó sẽ được xử lý bằng những hành vi đã được định nghĩa trong flow entry đó. – Priority: Mức độ ưu tiên của flow entry đó. Mỗi gói tin hoàn toàn có thể match với nhiều flow entry khi đó gói tin sẽ được xử lý bởi flow entry có priority cao hơn. – Counters: Bộ đếm sẽ update mọi khi gói tin được xử lý bởi flow entry đó. – Instructions: Định nghĩa những hành vi để xử lý gói tin. – Timeouts: Thời gian tối đa để xử lý gói tin – Cookie: giá trị được chọn bởi Controller được sử dụng để lọc số liệu thống kê của flow entry, sửa đổi flow entry hoặc xóa flow entry. • Ngoài những flow entry mỗi flow table còn chứa một table miss flow entry được sử dụng để xử lý những gói tin lúc không còn flow entry nào trong flow table match với gói tin đó. Table miss flow entry hoàn toàn có thể sẽ chuyển tiếp gói tin đó đến controller, gửi gói tin tới flow table tiếp theo hoặc vô hiệu gói tin. 3.3 Phân tích những bản tin giao thức OpenFlow khi khởi động mạng, ping và tạo luồng 3.3.1 Yêu cầu • Ở phần này tất cả chúng ta sẽ sử dụng wireshark để bắt ;và phân tích gói tin trong những quá trình khởi tạo link giữa controller và switch, hay khi ta ping giữa host 1 và host 2 • Trong phần này tất cả chúng ta dùng Mininet để tạo mạng sdn gồm 4 host và 3 switch (hình 3.1) với giao thức southbound là openflow phiên bản 1.0 và controller là Floodlight được kết nói với mininet qua interface vmnet8. Nhóm 3 D16CQVT01-N Trang 12 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.15: Topology 3.3.2 Thiết lập Wireshark và bắt gói tin Sau khi đã mở wireshark trên windows tất cả chúng ta thực hiện tuấn tự tiến trình như sau: • B1: Chọn cổng để tiến hành capture: Nhóm 3 D16CQVT01-N Trang 13 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.16: Chọn cổng Ethernet trong WireShark • B2: Tại mục fillter nhập openflow_v1 để lọc gói tin openflow phiên bản 1.0 và nhấn Enter: Hình 3.17: Lọc gói tin openflow • B3: Khởi tạo mạng sdn trên mininet # sudo mn –custom chuyende.py –topo mytopo –switch ovsk –controller remote,ip=ĐỊA_CHỈ_IP –mac Chú ý: ĐỊA_CHỈ_IP là địa chỉ ip của floodlight controller Nhóm 3 D16CQVT01-N Trang 14 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 3.3.3 Các Message trong Openflow • Chúng ta chỉ sẽ tìm hiểu 1 số gói tin trong openflow liên quan đến quá trình khởi tạo link giữa controller và switch, quá trình học flow, ping. • Openflow có 3 loại message, mỗi message nó lại sở hữu nhiều chủng loại message con. Bao gồm: – Controller to Switch ∗ Được gửi bởi controller ∗ Features: Controller yêu cầu switch trả lời cho nó những capability. · OFPT_FEATURES_REQUEST · OFPT_FEATURES_REPLY ∗ Configuration: Controller hoàn toàn có thể set hoặc truy vấn những tham số thông số kỹ thuật cho switch . · OFPT_GET_CONFIG ∗ Modify-State: Thêm sửa đổi xóa những mục luồng hoặc group · OFPT_FLOW_MOD ∗ Barrier: Controller sau khi gửi cho switch 1 message và muốn switch trả lời cho controller biết rằng switch đã xử lý message đó ra làm sao (thành công hay gặp vấn đề). · OFPT_BARRIER_REQUEST · OFPT_BARRIER_REPLY ∗ Packet-out: Khi controller muốn gửi 1 packet cho switch thì nó dùng packetout. · OFPT_PACKET_OUT ∗ Ngoài ra còn tồn tại nhiều chủng loại message như Read-State, Role-Request, AsynchronousConfiguration. – Asynchronous ∗ Được gửi bởi switch ∗ Packet-in: Truyền tải những control packet cho controller · OFPT_PACKET_IN ∗ Error: Thông báo cho controller khi có lỗi · OFPT_ERROR Nhóm 3 D16CQVT01-N Trang 15 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Ngoài ra còn tồn tại một số trong những message khác ví như flow removed và port status – Symmetric ∗ Được gửi bởi cả controller lẫn switch: ∗ Hello: Được trao đổi giữa switch và controller trong quá trình khởi tạo kết nỗi. · OFPT_HELLO ∗ Echo: xác nhận xem liên kiết giữa controller và switch còn up hay đã down · OFPT_ECHO_REQUEST · OFPT_ECHO_REPLY ∗ Ngoài ra còn tồn tại Experimenter 3.3.4 Phân tích gói tin của quá trình khởi tạo link giữa controller và switch Hình 3.18: Các gói tin cho quá trình khởi tạo link • Quá trình khởi tạo link Nhóm 3 D16CQVT01-N Trang 16 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.19: Quá trình khởi tạo link • Phân tích – Trao đổi Hello Message: Hình 3.20: Hello message Hình 3.21: tin tức Hello message ∗ Switch gửi gói tin OFPT_HELLO gồm có version cho controller để khởi tạo link với controller, nếu controller có tương hỗ phiên bản của switch => link được thiết lập ∗ Chú ý: tùy theo controller có một số trong những controller sẽ trả lời lại cho switch gói tin hello – Feature Request – Reply Nhóm 3 D16CQVT01-N Trang 17 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.22: Fetures message ∗ Controller gửi cho switch gói ofpt_features_request để yêu cầu switch gửi những capability cho controller. Switch trả lời lại gói ofpt_features_reply. Hình 3.23: tin tức gói ofpt_features_reply ∗ Trong featuter_reply chứa: · Datapath ID dùng để định danh switch · N_table: số lượng table tối đa của sw · Capabilites: Khả năng thống kê luồng, table, port, group, vv · Actions: Các action mà sw hoàn toàn có thể thực hiện, set vlan id và priority, tàng trữ output trong hàng đợi, forward ra sw port vv · Các thông tin về Port của switch như port number, MAC, những flag, Tên port vv Nhóm 3 D16CQVT01-N Trang 18 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Set Configuration ∗ Controller gửi 2 gói tin ofpt_set_config và ofpt_barrier_request (tùy theo controller có thê không gửi gói ofpt_barrier_request), hai gói tin này được floodlight gói trong packet ofpt_get_config_request ∗ Ofpt_set_config được controller gửi để set những flag trên switch và cho switch biết số byte lớn số 1 của packet hoàn toàn có thể gửi cho controller. ∗ Ofpt_barrier_request yếu cầu switch nếu xử lý thành công thì trả lại gói ofpt_barrier_reply, nếu bị lỗi thì tả về ofpt_error Hình 3.24: Các gói tin trong bước set configuration – Ofpt_flow_mod (tùy controller hoàn toàn có thể gửi hoặc không) Hình 3.25: ofpt_flow_mod Nhóm 3 D16CQVT01-N Trang 19 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.26: tin tức trong ofpt_flow_mod ∗ Controller gửi gói tin ofpt_flow_mod cho switch ∗ Bên trong ofpt_flow_mod chứa những thông tin của một flow entry như inport, source mac , priority, và đặc biệt là command. ∗ Ở đây Controller gửi gói tin ofpt_flow_mod cho switch với command là xóa hết tất cả những flowing – Echo message: Hình 3.27: ofpt_echo_request/reply ∗ Dùng để xác nhận xem link giữa switch và controller liệu có vấn đề không, ở đây ta thấy cứ khoảng chừng mỗi 5 s controller gửi cho switch 1 echo request và switch trả lời echo reply đã cho tất cả chúng ta biết link vẫn thông thường. 3.3.5 Phân tích gói tin trong quá trình ping Một trong những host Sơ lược: ở phần này tất cả chúng ta sẽ ping từ h1 sang h2, ta sẽ phân tích gói tin ở 3 quá trình là từ Arp request và Arp reply và Icmp (gói tin để ping). Nhóm 3 D16CQVT01-N Trang 20 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN • ARP Request: Hình 3.28: Quá trình ARP request – Bước 1 và 2 ∗ H1 ping cho H2 nhưng nó ko biết địa chỉ MAC của H2 nên nó gửi gói ARP. ∗ Gói ARP đến switch 1, switch không còn bất kì flow entry nào để match nên nó đóng gói arp này vào trong gói PACKET_IN để gửi cho controller. ∗ Controller học đươc rằng muốn tới H1 thì đi ra port1 của Sw1 Nhóm 3 D16CQVT01-N Trang 21 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Như trên hình, gói tin Packet_IN có source ip là 10.10.10.129 (switch) và des ip là 10.10.10.128 (controller), source port là 57050 nên đây là SW1. Gói tin được gửi từ SW1 tới controller. ∗ Gói tin chứa những thông tin như: In port (là cổng mà gói tin đi vào switch 1) là một trong, Reason (nguyên nhân nó gửi gói tin tời controller) là vì nó gói tin này sẽ không match bất kì flow entries nào (thực ra là sw không còn bất kì flow entries) ∗ Bên trong gói Packet_IN này còn chứa gói ARP mà H1 gửi ra – Bước 3: Nhóm 3 D16CQVT01-N Trang 22 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Controller gửi lại cho switch 1 gói Packet_Out với action type là bảo switch 1 forward gói tin arp này ra tất cả những port. – Bước 4-5-6-7: ∗ Switch 1 nhận được Packet_Out ở bước 3 và gửi nó ra tât cả những port. (bước 4) ∗ Switch 3 (source port là 57046) nhận được gói tin và không biết làm gì với gói tin này, nó gửi cho controller gói packet_in tương tự như ở b2 với in port là 3 (port mà gói tin đi vào switch 3), reason là gói tin không match bất kì flow entry nào (bước 5) ∗ Controller học được răng muốn tới h1 thì đi ra port 3 của sw3. Nhóm 3 D16CQVT01-N Trang 23 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Sau đó Switch 3 cũng nhận được gói packet_out từ controller (bước 6) và gửi gói tin ra tất cả những port (trong đó sw2 cũng nhận và nó cũng gửi gói tin packet_in lên controller nhưng ở đây tất cả chúng ta không nói đến nó) ∗ H2 cũng nhận được gói tin ARP từ switch 3 (bước 7) • ARP Reply: Hình 3.29: Quá trình ARP reply Nhóm 3 D16CQVT01-N Trang 24 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Bước 8 – 9 ∗ H2 nhận được gói arp và trả lời gói arp reply có chứa MAC của nó (bước 8) ∗ Switch 3 nhận được gói tin và nó cũng không biết làm gì, nó gửi gói Packet_In cho Controller. (bước 9) ∗ Switch 3 (source port 57046) gửi Packet_In với inport là một trong, reason là không còn flow nào match. Trong gói ARP reply chứa địa chỉ Mac của h2. ∗ Controller khi nhận đươc gói tin thì học được rằng muốn tới h2 thì đi ra port 1 của switch 3. – Bước 10 ∗ Controller sau khi nhận được gói Packet_In, thấy rằng sw3 cần flow entry. ∗ Controller nhìn vào phần ethernet của gói arp trong packet_in ở bước 9 và thấy rằng đích là h1 như hình dưới: Nhóm 3 D16CQVT01-N Trang 25 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Controller tra vào trong và thấy muốn tới h1 thì ra cổng 3 của sw3 và cổng 1 của sw1 như hình dưới: ∗ Controller gửi 2 gói ofpt_flow_mod để thêm flow entry cho sw1 và sw3: · Ofpt_flow_mod gửi cho sw1 Nhóm 3 D16CQVT01-N Trang 26 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Flow entry gửi cho sw1 với inport là 2 (gói tin đi vào), source mac là từ h2, dest mac là tới h1, đi ra port 1 của sw1, loại data type là arp (2054) · Ofpt_flow_mod cho sw3: Nhóm 3 D16CQVT01-N Trang 27 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Bước 11-12 ∗ Switch 3 nhận được flow entry từ gói ofpt_flow_mod, nó dùng flow này forward packet arp reply ra port 3 của switch 3. (bước 11) ∗ Switch 1 nhận packet arp reply từ switch 3, switch 1 nhờ vào flow entry từ bước 10 và forward ra port 1 của sw1 (bước 12). • ICMP: Nhóm 3 D16CQVT01-N Trang 28 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Bước 1: ∗ Sau khi đã nhận arp reply từ h2 và có địa chỉ mac của h2 và h1 khởi đầu gửi gói icmp , với đích là h2 – Bước 2: ∗ Switch 1 không còn flow entry từ h1 tới h2 nên nó gửi gói packet_in cho controller, trong gói packet_in chứa gói icmp, với reason là không còn flow nào match. – Bước 3: ∗ Controller gửi lại ofpt_flow_mod cho tất cả switch 1 và switch 3 chứa những thông tin về flow để đi đến h2 · Ofpt_flow_mod gửi cho sw1: ∗ Inport (packet icmp đi vào) là port 1 ∗ Source mac là h1, dest mac là h2 ∗ Out port (là port để fowarding) là port 2 ∗ Loại data là 2048 (icmp) ∗ Command là new flow · Ofpt_flow_mod gửi cho sw3: ∗ Inport (packet icmp đi vào) là port 3 ∗ Source mac là h1, dest mac là h2 ∗ Out port (là port để fowarding) là port 1 ại data là 2048 (icmp) Nhóm 3 D16CQVT01-N Trang 29 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN ∗ Command là new flow Nhóm 3 D16CQVT01-N Trang 30 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Bước 4: ∗ Sw1 nhận đc flow entry và forward gói tin ra port 2 ∗ Sw3 nhận đc packet này trên port 3 – Bước 5: ∗ Sw3 forward packet ra port 1 • Quá trình ICMP reply tương tự. 3.4 Tìm hiểu và triển khai 1 bộ điều khiển Sử dụng Controller Open Daylight phiên bản 0.4.1, chạy trên hệ điều hành Ubuntu 18.4 3.4.1 Cài đặt JAVA trên Ubuntu Cài đặt JAVA trên Ubuntu (sử dụng phiên bản Java 8), ta thực hiện những câu lệnh: • Sudo apt-get update • Sudo apt-get –y install unzip vim wget Nhóm 3 D16CQVT01-N Trang 31 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN • Sudo apt-get –y install openjdk-8-jre • Echo ‘export • JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre’» /.bashrc • /.bashrc 3.4.2 Tải opendaylight Tải opendaylight về, link tải: • https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribu karaf/ • Opendaylight mang tên Distribution-karaf-0.4.0-Beryllium.zip • Ta tiến hành giải nén bằng câu lệnh: – Unzip Distribution-karaf-0.4.0-Beryllium.zip. 3.4.3 Cài npm Sau đó ta mở thêm 1 terminal ubuntu, cài npm (npm là một trong chương trình để quản lý thư viện trong môi trường tự nhiên thiên nhiên JAVA Node.js): • Sudo apt install npm 3.4.4 Cài Opendaylight-openflow-app • Sudo apt install git • git clone https://github.com/CiscoDevNet/OpenDaylight-Openflow-App • cd OpenDaylight-Openflow-App/ • sudo npm install –g grunt-cli 3.4.5 Chỉnh sửa nội dung env.module.js Sau đó ta vào sửa đổi nội dung env.module.js, mục tiêu là sửa địa chỉ ip của controller mặc định thành ip khớp với ip controller ta đang sử dụng bằng câu lệnh: Nhóm 3 D16CQVT01-N Trang 32 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN • vim /OpenDaylight-Openflow-App/ofm/src/common/config/env.module.js • ta sửa localhost thành ip của Opendaylight Hình 3.30: Chỉnh nội dung env.module.js 3.4.6 Chạy opendaylight trên ubuntu Sau đó ta chạy opendaylight trên ubuntu bằng câu lệnh: • ./karaf/bin/karaf • Sau khi đã mở được Opendaylight, ta sẽ cài những tính năng cho open daylight: – feature:install odl-restconf-all odl-openflowplugin-all odl-l2switch-all odl-mdsalall odl-yangtools-common odl-dlux-core odl-dlux-all Hình 3.31: Chạy opendaylight trên ubuntu • Sau đó, chạy opendaylight-openflow-app: – cd OpenDaylight-Openflow-App/ – sudo grunt Nhóm 3 D16CQVT01-N Trang 33 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN • Xong phần thông số kỹ thuật ODL trên ubuntu, giờ đây, ta vào mininet tạo 1 topo gồm 4host 3sw, với controller được trỏ tới địp chỉ ip của ODL. Mô hình như sau: Hình 3.32: Sơ đồ mạng • Lệnh khởi tạo: (với file mytopo.py được viết bằng python và được lưu từ trước vào mininet): – sudo mn –custom mytopo.py –switch=ovsk –controller=remote,ip=10.10.10.135,port=6633 –topo mytopo –mac Hình 3.33: Khởi tạo mạng Nhóm 3 D16CQVT01-N Trang 34 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN 3.4.7 Giao diện GUI của Controller ODL • Sau đó, ta vào giao diện GUI của Controller ODL bằng phương pháp vào trình duyệt web, gõ ://10.10.10.35:900 • Ta sẽ thấy giao diện GUI của ODL Controller như sau: Hình 3.34: Giao diện GUI của ODL Controller • Tại giao diện này, ta hoàn toàn có thể thực hiện những thao tác như xem thông tin của quy mô mạng. Tạo, sửa, xóa, thêm luồng,. . . Ví dụ như: – Hình 3.34 đã cho ta thấy được quy mô tổng quát của mạng. – Tại Flow Managerment (Hình 3.35) ta hoàn toàn có thể xem những thông tin trạng thái những Switch, những flow emtry và sửa đổi chúng: Hình 3.35: Mục Flow Mangerment Nhóm 3 D16CQVT01-N Trang 35 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN – Tại mục Flow (Hình 3.36) được cho phép tất cả chúng ta xem, sửa, xóa và tạo luồng mới cho hoạt động và sinh hoạt giải trí của topo mạng. Hình 3.36: Mục Flow – Tại mục Statistics (Hình 3.37), được cho phép tất cả chúng ta xem thông tin của table, port, group, metter,. . . . Hình 3.37: Mục Statistics – Ở mục Hosts (hình 3.38), ta hoàn toàn có thể xem những thông tin của host như host ID, địa chỉ IP, MAC,. . . Nhóm 3 D16CQVT01-N Trang 36 CHƯƠNG 3. TÌM HIỂU MỘT MẠNG SDN ĐƠN GIẢN Hình 3.38: Mục Host • Tóm lại, với 1 quy mô mạng sử dụng controller, ta sẽ hoàn toàn có thể quản lý những thiết bị với 1 cái nhìn toàn cảnh, trực quan, dễ sử dụng và tiết kiệm tài nguyên bởi việc Phân luồng tài liệu thành 2 luồng control plane và data plane riêng biệt. Nhóm 3 D16CQVT01-N Trang 37 CHƯƠNG 4 KẾT LUẬN Trong báo cáo này đã ra mắt về Mininet và hoạt động và sinh hoạt giải trí của giao thức OpenFlow. Đồng thời cũng hướng dẫn những thao tác cơ bản với Mininet để xây dựng và quản lý những thực thể một topo mạng đơn giản. SDN ra đời để giúp con người đơn giản hóa việc quản lý những thực thể trong mạng SDN và Mininet đó đó là công cụ để thực hiện việc đơn giản hóa ấy. Tuy nhiên báo cáo chỉ tạm dừng ở mức cơ bản, nếu muốn tìm hiểu sâu thì vấn đề bảo mật thông tin hoàn toàn có thể được xem xét đến.

38

[embed]https://www.youtube.com/watch?v=FH2K3teqclc[/embed]

Review Mininet là gì ?

Bạn vừa Read nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Video Mininet là gì tiên tiến nhất

Chia Sẻ Link Download Mininet là gì miễn phí

Pro đang tìm một số trong những Chia SẻLink Download Mininet là gì Free.

Hỏi đáp thắc mắc về Mininet là gì

Nếu sau khi đọc nội dung bài viết Mininet là gì vẫn chưa hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Tác giả lý giải và hướng dẫn lại nha #Mininet #là #gì - 2022-04-06 12:49:07
Post a Comment (0)
Previous Post Next Post