[20211-129294]-Nhóm 7-BT số 3-Ngô Tiến Dũng

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

----------

BÁO CÁO CÁ NHÂN

MẠNG THÔNG TIN

Đề tài: Mạng định nghĩa bằng phần mềm - SDN

Giảng viên hướng dẫn: Thầy Nguyễn Tiến Dũng

Nhóm sinh viên thực hiện: Nhóm 7

Ngô Tiến Dũng 20172499


Hà Nội, 12-2021

MỤC LỤC

DANH MỤC HÌNH VẼ............................................................................................................1

CHƯƠNG 1. CÀI ĐẶT MÔI TRƯỜNG VÀ CẤU HÌNH MẠNG SDN..............................2

1.1 Mô hình mạng................................................................................................................2

1.2 Thiết lập mạng...............................................................................................................2

1.3 Cấu hình cấu trúc mạng SDN sử dụng giao thức Spanning Tree Protocol...............4

1.4 Tìm hiểu mã nguồn........................................................................................................5


1.4.1 simple_switch_13.py................................................................................................5
1.4.2 simple_switch_stp_13.py.........................................................................................7

KẾT LUẬN................................................................................................................................8

TÀI LIỆU THAM KHẢO........................................................................................................9


DANH MỤC HÌNH VẼ

Hình 1. Mô hình mạng SDN...........................................................................................2


Hình 2. Tạo một mạng Mininet topology sử dụng Python.............................................3
Hình 3. Thiết lập mạng SDN trên terminal.....................................................................3
Hình 4. Kết quả của lệnh pingall trước khi thêm Flow..................................................4
Hình 5. Minh họa một vòng lặp trong mạng SDN.........................................................4
Hình 6. Kết quả lệnh pingall sau khi thêm Flow............................................................5
Hình 7. Lệnh khởi tạo RyuApp......................................................................................6
Hình 8. Hàm add_flow...................................................................................................6
Hình 9. Hàm switch_features_handler...........................................................................6
Hình 10. Hàm _packet_in_handler.................................................................................7
Hình 11. Hàm delete_flow..............................................................................................7
Hình 12. Hàm _topology_change_handler.....................................................................7
Hình 13. Hàm _port_state_change_handler...................................................................8

1
CHƯƠNG 1. CÀI ĐẶT MÔI TRƯỜNG VÀ CẤU HÌNH MẠNG

SDN

1.1 Mô hình mạng


Mạng SDN bao gồm 1 bộ điều khiển ,3 switch và 2 host.

Hình 1. Mô hình mạng SDN

- Để các Host có thể kết nối được với nhau chúng ta cần AddFlow vào các Flow
Table. Khi đó giao thức OpenFlow sẽ cho phép truy cập trực tiếp và điều
khiển các thiết bị mạng trong hệ thống, các quyết định về các luồng traffic sẽ
được quyết định tập trung tại OpenFlow Controller.
- Sử dụng Ryu Controller để cấu hình cho hệ thống.
- Sử dụng thuật toán Spanning Tree (STP) để tránh sự xuất hiện của vòng lặp
xảy ra trong hệ thống, các luồng traffic sẽ được đi đến nơi mong muốn như đã
được cấu hình từ trước.

2
1.2 Thiết lập mạng
Sử dụng VM Virtual Box để làm máy ảo chạy nền tảng Hệ điều hành Ubuntu

- Cài đặt OpenvSwitch: $ sudo apt install openvswitch-switch


- Cài đặt mininet: $ sudo apt install mininet
- Cài đặt Ryu Controller: $ pip3 install ryu
Tạo ra một mạng Topo mininet bao gồm 3 switch (S1,S2,S3) và 2 host
(h1,h2). Trong đó các switch S1,S2,S3 được liên kết với nhau tạo thành vòng lặp. Các
host h1 liên kết với với S1; h2 liên kết với S2. Sử dụng ngôn ngữ lập trình python

Hình 2. Tạo một mạng Mininet topology sử dụng Python

- $ sudo mn --custom topo-3s-2h.py --topo mytopo --controller remote để


tạo mạng SDN.

3
Hình 3. Thiết lập mạng SDN trên terminal

- Sử dụng lệnh pingall để kiểm tra trạng thái của các liên kết

Hình 4. Kết quả của lệnh pingall trước khi thêm Flow

Do ban đầu mạng có FlowTable trống, nên kết quả 100% dropped, chưa có kết
nối giữa các host với nhau.

1.3 Cấu hình cấu trúc mạng SDN sử dụng giao thức Spanning Tree
Protocol
Trong phần này, chúng ta sẽ cấu hình cấu trúc mạng bằng Ryu Controller.

Spanning Tree Protocol (STP) là một giao thức mạng được thiết kế để ngăn
chặn các vòng lặp tại layer 2, cho phép các bridge truyền thông với nhau để phát hiện
vòng lặp vật lý trong mạng. Vòng lặp xảy ra trong mạng với nhiều nguyên nhân. Hầu
hết các nguyên nhân thông thường là kết quả của việc cố gắng tính toán để cung cấp
khả năng dự phòng, ví dụ một link hoặc switch bị hỏng, các link hoặc switch khác vẫn
tiếp tục hoạt động.

4
Hình 5. Minh họa một vòng lặp trong mạng SDN

STP chặn một số cổng trên các thiết bị chuyển mạch có liên kết dự phòng để
ngăn chặn các cơn bão Broadcast và đảm bảo cấu trúc liên kết không có vòng lặp.

Source file:
https://github.com/faucetsdn/ryu/blob/master/ryu/app/simple_switch_13.py
https://github.com/Ehsan70/RyuApps/blob/master/simple_switch_stp_13.py

- Thêm Flow vào các FlowTable, ta sử dụng lệnh:


$ ryu-manager ryu.app.simple_switch_13
- Do mô hình mạng SDN đã tạo có cấu trúc vòng lặp, vì vậy ta cần sử dụng
thuật toán Spanning Tree (STP) trong Ryu để cấu hình mạng này.
$ ryu-manager ryu.app.simple_switch_stp_13
- Sử dụng lệnh pingall để kiểm tra trạng thái của các liên kết

Hình 6. Kết quả lệnh pingall sau khi thêm Flow

Kết quả: 0% dropped

5
Theo kết quả đầu ra trên, ta có thể xác nhận cấu hình mạng SDN đã thiết lập
không bị lặp, các cấu trúc liên kết đã được thực thi tốt.

1.4 Tìm hiểu mã nguồn

1.4.1 simple_switch_13.py

- Khởi tạo Ryu app manager, đồng thời định nghĩa cho đối tượng một tập các
thuộc tính

Hình 7. Lệnh khởi tạo RyuApp

- Hàm Add_flow: dùng để thêm các Flow vào Flow Table

Hình 8. Hàm add_flow

- switch_features_handler: Xử lý các thuộc tính của các Switch

Hình 9. Hàm switch_features_handler

6
- _packet_in_handler: Xử lý các gói tin đến

Hình 10. Hàm _packet_in_handler

1.4.2 simple_switch_stp_13.py

- delete_flow: xóa các flow ra khỏi Flow table

Hình 11. Hàm delete_flow

- _topology_change_handler: Xử lý các thay đổi của mạng topo

7
Hình 12. Hàm _topology_change_handler

- _port_state_change_handler: Xử lý thay đổi trạng thái của các cổng

Hình 13. Hàm _port_state_change_handler

8
KẾT LUẬN

1. Những kết quả đã đạt được:


- Có những kiến thức tổng quan về mạng SDN, Open vSwitch và Mininet.
- Đã biết cách thiết lập và triển khai một mô hình mạng SDN Mininet trên
Ubuntu.
- Có những kiến thức cơ bản về giao thức STP thông qua việc sử dụng Ryu
Controller.

2. Những kết quả chưa đạt được:


- Do máy ảo VM hoạt động không ổn định nên vẫn còn những câu lệnh chưa
thực hiện được.
- Một vài đoạn mã nguồn Python vẫn chưa hiểu rõ chi tiết cách hoạt động.
- Mới chỉ tạo mô hình theo mẫu có sẵn, chưa tự tạo mô hình riêng.

Với những kết quả chưa thực hiện được, em sẽ cố gắng hoàn thiện trong tuần
học tiếp theo.

9
TÀI LIỆU THAM KHẢO

[1] https://www.codeproject.com/tips/1063072/build-your-own-sdn-network
[2] https://osrg.github.io/ryu-book/en/html/spanning_tree.html
[3] https://trogiupnhanh.com/stp-la-gi-cong-dung-cua-spanning-tree-protocol/
[4] https://anninhmang.net/tu-hoc-quan-tri-mang/tu-hoc-ccna-security-bai-1-giao-
thuc-spanning-tree-protocol/
[5] https://github.com/Ehsan70/RyuApps/blob/master/simple_switch_stp_13.py

10
11

You might also like