Professional Documents
Culture Documents
[20211-129294]-Nhóm 7-BT số 3
[20211-129294]-Nhóm 7-BT số 3
-----□□&□□-----
BÁO CÁO
Hà Nội, 12-2021
LỜI NÓI ĐẦU
Mạng Internet ra đời đã tạo nên một cuộc cách mạng trong công nghệ thông
tin. Nó giúp mọi sự giao tiếp và trao đổi kiến thức, thông tin của con người trở nên dễ
dàng hơn tạo nền tảng cho nền kinh tế tri thức hiện nay. Tuy nhiên, kiến trúc mạng
truyền thống đang ngày càng trở nên không phù hợp với nhu cầu kinh doanh của các
doanh nghiệp cũng như người dùng cuối. Hiện nay nhu cầu về nghiệp vụ ngày càng
phức tạp của các doanh nghiệp và mức độ đa dạng về ứng dụng của các end-user đang
ngày càng gia tăng, kéo theo đó là nhu cầu khác nhau của người dùng về mạng kết
nối. Mạng cần phải đáp ứng việc thay đổi nhanh chóng các thông số về độ trễ, băng
thông, định tuyến, bảo mật, … theo các yêu cầu của các ứng dụng.
Thêm vào đó sự phát triển của các công nghệ ảo hóa cũng làm cho các công
nghệ mạng truyền thống trở lên lỗi thời. Trong hệ thống các thiết bị mạng truyền
thống, phần mềm điều khiển và cấu hình được gắn liền với phần cứng và mỗi hãng
sản xuất lại cung cấp một giao diện kết nối riêng làm cho độ phức tạp của mạng và
khả năng tích hợp ngày càng trở lên khó kiểm soát. Việc ảo hóa do đó phụ thuộc vào
công nghệ và làm cho kết cấu hệ thống mạng càng trở lên phức tạp, thiếu đồng bộ.
Điều đó dẫn đến nhu cầu có một sự thay đổi cách mạng trong công nghệ mạng thông
qua tập trung hóa việc quản trị : Tách biệt phần điều khiển và phần xử lý dữ liệu,
khiến phần điều khiển trở nên mềm dẻo và cho phép lập trình được để tự động hóa và
đơn giản hóa việc quản trị. Từ đó cho ra đời khái niệm mạng định nghĩa được bằng
phần mềm (Software-defined network) hay SDN.
Trong đề tài lần này, nhóm chúng em sẽ mô phỏng cài đặt và cấu hình một
mạng SDN đơn giản gồm 1 bộ điều khiển, 3 switch và 2 host. Báo cáo gồm có 3 phần
chính:
3.3 Chỉ chặn truy cập TCP đến cổng 80 trên host 1.......................................................13
PHỤ LỤC.................................................................................................................................16
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
OVS OpenvSwitch
i
DANH MỤC HÌNH VẼ
ii
Hình 3- 8 Flow Table của switch s1.............................................................................14
MẠNG MININET
SDN tách định tuyến và chuyển các luồng dữ liệu riêng rẽ và chuyển kiểm soát
luồng sang thành phần mạng riêng có tên gọi là thiết bị kiểm soát luồng (Flow
Controller). Điều này cho phép luồng các gói dữ liệu đi qua mạng được kiểm soát theo
lập trình. Trong SDN, control plane được tách ra từ các thiết bị vật lý và chuyển đến
các bộ điều khiển. Bộ điều khiển này có thể nhìn thấy toàn bộ mạng lưới, và do đó cho
phép các kỹ sư mạng làm cho chính sách chuyển tiếp tối ưu dựa trên toàn bộ mạng.
Các bộ điều khiển tương tác với các thiết bị mạng vật lý thông qua một giao thức
chuẩn OpenFlow.
Kiến trúc của SDN gồm 3 lớp riêng biệt: lớp ứng dụng, lớp điều khiển, và lớp cơ
sở hạ tầng (lớp chuyển tiếp). Mô tả kiến trúc dưới hình sau:
1
Lớp ứng dụng: Là các ứng dụng kinh doanh được triển khai trên mạng, được
kết nối tới lớp điều khiển thông qua các API, cung cấp khả năng cho phép lớp
ứng dụng lập trình lại (cấu hình lại) mạng (điều chỉnh các tham số trễ, băng
thông, định tuyến, …) thông qua lớp điều khiển.
Lớp điều khiển: Là nơi tập trung các bộ điều khiển thực hiện việc điều khiển
cấu hình mạng theo các yêu cầu từ lớp ứng dụng và khả năng của mạng. Các bộ
điều khiển này có thể là các phần mềm được lập trình.
Lớp cơ sở hạ tầng: Là các thiết bị mạng thực tế (vật lý hay ảo hóa) thực hiện
việc chuyển tiếp gói tin theo sự điều khiển của lớp điểu khiển. Một thiết bị
mạng có thể hoạt động theo sự điều khiển của nhiều bộ điều khiển khác nhau,
điều này giúp tăng cường khả năng ảo hóa của mạng.
2
OpenvSwitch hỗ trợ các tính năng sau: - VLAN tagging & 802.1q trunking -
Standard Spanning Tree Protocol (802.1D) - LACP - Port Mirroring (SPAN/RSPAN) -
Tunneling Protocols – QoS
ovs-vsctl: tiện ích để truy vấn và cập nhật cấu hình ovs-vswitchd
Links: Một cặp Ethernet ảo (veth pair) hoạt động giống như một kết nối dây
giữa 2 giao tiếp ảo; các gói gửi qua một giao tiếp được đưa đến một giao tiếp
khác, và phẩn mềm ứng dụng và hệ thống nhìn thấy mỗi giao tiếp như là một
cổng Ethernet với đầy đủ chức năng. Các cặp veth có thể được gắn vào các
chuyển mạch ảo như là Linux bridge hoặc một chuyển mạch OpenFlow.
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 cung cấp cho các tiến trình (và nhóm
các tiến trình) quyền sở hữu riêng biệt các giao tiếp, các cổng và các bảng định
tuyến (như ARP và IP). 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 hệ thống
riêng biệt.
Switches: Các chuyển mạch OpenFow bằng phần mểm cung cấp cơ chế phân
phối gói vể ý nghĩa giống như những chuyển mạch phần cứng.
3
Controller: Các bộ điều khiển có thể đặt ở bất cứ 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 các chuyển mạch có kết nối 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 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.
Trong cấu trúc mạng này, để 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 giúp đơn giản quản trị cấu hình
trong toàn hệ thống. Ở cấu trúc mạng được đề xuất trong phần này, ta sử dụng Ryu
Controller để cấu hình cho hệ thống.
Ngoài ra, chúng ta có thể thấy trong mô hình các switch được liên kết với nhau
dẫn đến mạng có cấu trúc vòng lặp. Để tránh sự xuất hiện của vòng lặp xảy ra trong
4
cấu trúc này, ta sử dụng thuật toán Spanning Tree (STP) để các luồng traffic sẽ được
đi đến nơi mong muốn như đã được cấu hình từ trước.
- Cấu trúc mạng đã được tạo ra 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. Cụ thể như sau:
Hình 2-4 Sơ đồ mạng và các cổng kết nối của mạng SDN
5
- Ta sử dụng lệnh $ sudo mn --custom topo-3s-2h.py --topo mytopo --
controller remote để chạy file topo-3s-2h.py để tạo mạng SDN. Sau khi chạy
thành công sẽ xuất ra màn hình một mạng SDN theo yêu cầu đặt ra ban đầu:
6
- Thực hiện câu lệnh $ sudo ovs-vsctl show để kiểm tra luồng của các switch có
trong mô hình mạng. Kết quả như sau
- Tiến hành kết nối giữa các host trong mô hình mạng SDN đã tạo, ta sử dụng
lệnh pingall.
Do ban đầu mạng có FlowTable trống, nên kết quả thực thi lệnh pingall ta có thể
thấy là 100% dropped, chưa có kết nối giữa các host với nhau.
7
- Thêm Flow vào các FlowTable, ta sử dụng lệnh: $ ryu-manager
ryu.app.simple_switch_13
(https://github.com/faucetsdn/ryu/blob/master/ryu/app/simple_switch_13.py)
Hình 2-8 Sử dụng Ryu Controller để thêm Flow cho các Switch
- 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.
Ta khái quát cấu trúc của thuật toán STP trong mã nguồn như sau:
Khởi tạo các switch, truyền vào các tham số:
Hình 2-9 Khối code khởi tạo switch, truyền vào tham số cho mạng
8
Hình 2-11 Hàm packet_in_hander để xử lí gói tin đến
Các đường truyền đã được tạo thành công, luồng của các switch cụ thể được cấu
hình như sau:
Hình 2-13 Thông tin luồng của các switch trong mạng sau khi được thêm Flow
Tiến hành thực thi thuật toán STP trên mạng SDN:
9
Hình 2-14 Thông tin về mạng và các cổng kết nối sau khi được cấu hình
- Kết quả cuối cùng là mỗi cổng kết nối sẽ trở thành trạng thái FORWARD hoặc
BLOCK, được miêu tả trong mô hình như sau:
Hình 2-15 Sơ đồ mạng và các cổng kết nối SDN sau khi được cấu hình
- Tiếp theo, để xác nhận cấu trúc mạng không bị lặp, các cấu trúc liên kết đã
được thực thi, ta sẽ thực hiện lệnh pingall và h1 ping h2 trong mạng.
10
Hình 2-16 Kết quả thực thi các kết nối sau khi cấu hình
- Kết quả trên cho ta thấy h1 và h2 đã được kết nối, có 33 gói tin được truyền đi,
33 gói tin nhận được, 0% gói tin mất.
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.
11
CHƯƠNG 3. TƯỜNG LỬA
Nếu chạy thành công ta sẽ có được thông báo như hình sau:
12
Hình 3- 2 Thực thi lệnh block h1 tới h3
Để thử nghiệm file rule đã hoạt động chưa, ta sử dụng lệnh pingall trên mininet ta
thấy được như sau:
h1 không thể ping được h3 và ngược lại h3 cũng không thể ping được h1, nhưng h1
ping h2 và h2 cũng ping h3
Với câu lệnh trên chúng ta sẽ in toàn bộ flow table trong switch s1:
13
Hình 3- 4 Flow Table trong Switch s1
3.3 Chỉ chặn truy cập TCP đến cổng 80 trên host 1
Cũng tương tự với trường hợp trên ta cũng thực hiện câu lệnh tương tự
Trong đó: tcp_html_h1.py là file rule firewall chặn traffic TCP đến cổng 80 trên
host 1 do mình tự tạo
Đầu tiên chúng ta kiểm tra kết nối đến các host bằng lệnh pingall trên miniet, ta thu
được ảnh sau:
Hình 3- 5 Kiểm tra kết nối các host thông qua mininet
Chúng ta thấy được rằng các host đều ping được đến với nhau
Để kiểm tra firewall đã hoạt động đúng theo mong muốn của mình thì chúng ta cần
mở terminal trên host 1 và 1 host còn lại. Để mở terminal trên host của mininet ta sử
dụng câu lệnh xterm + tên_host.
14
Ở đây em sử dụng phần mềm netcat để tạo 1 server chờ kết nối đến 1 port và 1 client
kết nối tới server trên port đã mở
Ta thực hiện câu lệnh như trong ảnh, ta thu được như sau:
Dù phía host 2 đã gửi 4 bản tin nhưng phía host 1 không nhận được bất kì bản tin nào
Để kiểm tra thêm, chúng ta thử mở cổng khác(không phải 80) trên host 1 xem host 2
có kết nối được không?? Ví dụ chúng ta sử dụng port 75 trên host 1
Có thể thấy rằng host 2 gửi 5 bản tin thì host 1 đều nhận được, mạng SDN chỉ chặn
mọi traffic TCP đến host 1 thông qua port 80, chứ các port khác SDN không hề chặn.
Bây giờ chúng ta xem flow table, kiểm tra rule firewall do chúng ta đặt ra đã có trong
flow table của switch:
15
Hình 3- 8 Flow Table của switch s1
16
TÀI LIỆU THAM KHẢO
17