GIỚI THIỆU TỔNG QUAN VỀ CÁC CÔNG CỤ ĐƯƠC SỬ DỤNG TRONG DEMO
VMware Workstation Pro 15
Hình 1 Logo VMware Workstation Pro 15
VMware Workstation là phần mềm ảo hóa hàng đầu của VMware Inc., cung cấp giải pháp ảo hóa máy tính để bàn cho người dùng Windows Sau 15 năm phát triển, Workstation Pro đã nhận được nhiều giải thưởng, hỗ trợ người dùng khi hệ điều hành không tương thích và mang lại trải nghiệm sử dụng phong phú với hiệu suất mượt mà Phiên bản VMware Workstation Pro đặc biệt nổi bật với những tính năng ưu việt.
15 mới nhất đã được ra mắt kỷ niệm 20 năm ra đời sau sự thành công của phiên bản VMware Workstation Pro 14
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
Hình 1 Giao diện VM ware workstation 15.5 pro
VMware Workstation Pro là phần mềm ảo hóa mạnh mẽ, hỗ trợ các hệ điều hành Windows và Linux phiên bản x64, cho phép người dùng tạo và quản lý nhiều máy ảo (VM) trên cùng một máy vật lý Với khả năng chạy đồng thời các máy ảo và hệ điều hành thực tế, mỗi máy ảo có thể cài đặt và vận hành hệ điều hành riêng, bao gồm cả các phiên bản của Microsoft.
Windows , Linux , BSD và MS-DOS
Các tính năng chính của phần mềm VMware Workstation:
Chạy cùng lúc nhiều hệ điều hành khác nhau trên cùng một máy tính.
Tạo máy ảo với bất kì hệ điều hành nào như Windows, Linux,…
Chạy, di chuyển, chia sẻ, kết nối các máy ảo với nhau một cách đơn giản, dễ sử dụng.
Hỗ trợ cài đặt hàng trăm hệ điều hành với các công nghệ điện toán đám mây với vùng chứa như là Kubernetes, Docker
Ensure secure connections with VMware vSphere, ESXi, or other server and workstation systems to effectively manage and control virtual machines (VMs) and physical servers.
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
Tối đa hóa phần cứng, năng suất cho phép dễ dàng thêm và xóa các máy tính ảo từ máy tính bạn.
VMware Workstation 15 có gì mới:
Tương thích hoàn toàn với hệ điều hành mới nhất của Windows là Windows 10
Hỗ trợ OpenGL 3.3 và DirectX 10
Hỗ trợ và tương thích tốt với các màn hình có độ phân giải 4K (Ultra HD)
Hỗ trợ tính năng One-Click-SSH cho các máy ảo Linux nếu bạn đang sử dụng Windows 10 phiên bản 1803 hoặc lớn hơn.
Bổ sung API Rest mới, được giới thiệu là rất giống với Fusion 10 API
Rest cho phép người dùng tự động hóa các tác vụ của máy ảo (VM) trong quy trình làm việc, giúp nhanh chóng triển khai, cấu hình và tắt nóng các máy tính ảo một cách hiệu quả.
MININET
Mininet là một ứng dụng mã nguồn mở được phát triển trên GitHub, cho phép mô phỏng các thiết bị như máy tính đầu cuối và thiết bị chuyển mạch, cùng với các quá trình trao đổi thông tin giữa chúng Đây là công cụ quan trọng trong cộng đồng mã nguồn mở SDN, thường được sử dụng để mô phỏng, kiểm tra và xác minh các ứng dụng mới trong lĩnh vực SDN.
Mininet cho phép thiết lập một mạng lưới đơn giản một cách nhanh chóng, giúp người dùng dễ dàng chạy, chỉnh sửa và gỡ lỗi.
Bạn có thể tùy chỉnh để tạo ra nhiều kiểu topo mạng khác nhau, từ một mạng đơn giản chỉ với một switch và một vài thiết bị đầu cuối cho đến các mạng lớn hơn.
Gói tin chuyển tiếp trong Mininet có thể được tùy chỉnh dễ dàng nhờ vào việc thiết lập các quy tắc thông qua giao thức OpenFlow Điều này cho phép các thiết kế SDN được triển khai trên Mininet có khả năng chuyển đổi linh hoạt sang các thiết bị chuyển mạch hỗ trợ OpenFlow.
Có thể sử dụng Mininet ở trên laptop, trên sever, máy ảo hoặc trên công nghệ điện toán đám mây vì thế nên tính linh động rất cao.
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
Putty
PuTTY là một trình giả lập thiết bị đầu cuối mạnh mẽ, cho phép người dùng kết nối qua nhiều giao thức mạng như SSH, Telnet, và Rlogin Nó hỗ trợ kết nối qua các cổng khác nhau, mang lại sự linh hoạt cho người sử dụng trong việc quản lý và truy cập hệ thống từ xa.
PuTTY ban đầu được phát triển cho hệ điều hành Microsoft Windows, nhưng sau đó đã được mở rộng để hoạt động trên nhiều hệ điều hành khác như Unix, Linux, Symbian, Windows Mobiles và Windows Phone.
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
PuTTY là một công cụ mạnh mẽ hỗ trợ nhiều biến thể trên các thiết bị đầu cuối từ xa một cách an toàn Nó cung cấp cho người dùng khả năng điều khiển SSH với các khóa mã hóa và nhiều giao thức, bao gồm các thuật toán mã hóa thay thế như 3DES, Arcfour, Blowfish, và DES, cùng với xác thực khóa công khai Ngoài ra, PuTTY cũng hỗ trợ các lớp giao tiếp mạng IPv6 và cho phép sử dụng các chương trình nén OpenSSH bị trì hoãn Công cụ này còn có khả năng kết nối qua cổng nối tiếp trong mạng LAN, mang lại sự linh hoạt cho người dùng.
Xming
Chương trình Xming là một máy chủ hiển thị miễn phí, hoạt động trên hệ điều hành Windows mà không cần trình mô phỏng Được phát hành từ năm 2007, Xming là phần mềm mã nguồn mở và dễ sử dụng.
Xming là một công cụ hữu ích cho việc chạy SSH (Secure Shell) với tính năng bảo mật, cho phép chuyển tiếp các phiên X11 từ các máy tính khác Nó được biên dịch chéo trên nền tảng Linux và đi kèm với bộ biên dịch MinGW, cùng với thư viện đa luồng Pthreads-Win32.
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
Ubuntu
Ubuntu là phần mềm mã nguồn mở miễn phí, cho phép người dùng tự do sử dụng, sao chép, phân phối, nghiên cứu, thay đổi và cải tiến theo giấy phép GNU GPL Được tài trợ bởi Canonical Ltd, do Mark Shuttleworth sở hữu, Ubuntu không được bán mà Canonical kiếm doanh thu từ việc cung cấp hỗ trợ kỹ thuật Việc phát triển Ubuntu dưới dạng mã nguồn mở giúp Canonical tận dụng tài năng của các nhà phát triển bên ngoài mà không cần phải tự phát triển mọi thành phần.
Ubuntu là một hệ điều hành mạnh mẽ dựa trên Linux, nổi bật với tính bảo mật cao trước virus và malware, khả năng tùy biến linh hoạt, cùng với tốc độ và hiệu suất làm việc ấn tượng Giao diện đẹp mắt và dễ sử dụng, cùng với quy trình cài đặt ứng dụng đơn giản, giúp người dùng dễ dàng sao lưu dữ liệu Hơn nữa, Ubuntu được hỗ trợ bởi một cộng đồng người dùng lớn, mang lại sự trợ giúp và chia sẻ kinh nghiệm phong phú.
Ubuntu mặc định đi kèm với nhiều phần mềm mã nguồn mở, cho phép người dùng sử dụng ngay lập tức Các ứng dụng bao gồm bộ văn phòng LibreOffice (từ phiên bản 10.04), trình duyệt Firefox, quản lý thư điện tử Evolution, ứng dụng nhắn tin Empathy, trình tải torrent Transmission và phần mềm đồ họa GIMP Đối với truyền thông đa phương tiện, Ubuntu tích hợp các công cụ như Sound Juicer để phát và rip CD, Banshee để quản lý thư viện nhạc, Totem Movie Player để xem phim và Sound Recorder để ghi âm.
Recorder Một số ứng dụng nhỏ như chụp màn hình, máy tính toán, các trò chơi bài và trò chơi giải đố cũng có sẵn.
Việc cài đặt ứng dụng trong Ubuntu có nhiều phương tiện, phổ biến nhất là dùng Ubuntu Sofware Center Ngoài ra, người sử dụng có thể dùng Synaptic
Package Manager công cụ nâng cao, giúp cài đặt từng gói con của ứng dụng; hoặc sử dụng các công cụ dòng lệnh như apt-get, aptitude
MobaXterm
MobaXterm là một công cụ đầu cuối mạnh mẽ cho Windows, giúp người dùng kết nối và điều khiển máy tính từ xa qua máy chủ ảo X11 Đây là giải pháp lý tưởng cho quản trị viên hệ thống và những người cần quản lý máy tính từ xa.
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
Những tính năng chính của MobaXterm:
Kết nối và điều khiển máy tính từ xa thông qua máy chủ ảo X11 hiệu quả.
Hữu ích dành cho những người quản lý, quản trị hệ thống hay đối với cá nhân.
Thiết kế với bộ hoàn chỉnh các câu lệnh của Unix cho phép người dùng điều khiển máy tính ở bất kỳ đâu.
Thiết kế di động không cần cài đặt khi sử dụng.
Tăng tốc độ kết nối.
Chuyển đổi giữa hai màn hình máy tính dễ dàng.
XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Mô hình mạng SDN triển khai
Mô hình mạng gồm có: 1 CO (bộ điều khiển), 3 Switch và 4 Host
Triển khai mạng SDN đơn giản
Khởi động phần mềm Mininet chạy trên Oracle VM VirtualBox
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2 Phần mềm Mininet chạy trên VM Ware
Đăng nhập vào Mininet với:
Password: mininet (lưu ý: ký tự trong phần password không được hiển thị)
Sau đó nhấn enter để thực hiện tiến trình đăng nhập vào
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2 Đăng nhập vào Mininet
Lấy IP để sử dụng bên MobaXterm bằng lệnh ip add
Sau khi đăng nhập thành công
Chọn >Session >Chọn tiếp vào SSH
Remote Host ta điền IP vừa lấy được ở Vmware mininet
Specify Usename thì là mininet
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2.4:Đăng nhập Moba Xterm Professional Khởi động và tiếp tục nhập Password : mininet
Khởi tạo một file topo3sw-4h.py với lệnh: touch topo3s-4h.py
Sửa file mới tạo 3s4h với lệnh: vi topo3sw-4h.py
Nhấn i để hiện inset(để có thể chỉnh sửa) sau đó nhấn Esc để xóa
Ta thực hiện chình sửa nội dung theo yêu cầu như sau:
Câu lệnh =self.addHost(‘’) để thêm 1 Host.
Câu lệnh =self.addSwitch(‘’) để thêm 1 Switch.
Câu lệnh self.addLink(‘’) để thêm đường kết nối giữa các node.
Ta lưu lại bằng các ấn phím Esc và tiêos tục ấn :x để lưu và thoát
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2.5 Nội dung file topo3sw-4h.py
Khởi chạy mạng vừa tạo bằng lệnh sudo mn custom topo3sw-4h.py topo tp mac switch ovsk controller remote
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2.6 Khời động file topo3sw-4h.py
Kiểm tra xem các thành phần đã hoạt động, kết nối vật lý và mạng đã được thiết lập bằng các lệnh:
net : hiển thị interface trong các node.
dump : hiển thị thông tin chi tiết tất cả các node.
nodes : hiển thị các node hiện tại.
links : hiển thị các đường nối.
CHƯƠNG 2 XÂY DỰNG MỘT MẠNG SDN ĐƠN GIẢN
Hình 2.7 Các lệnh kiểm tra các kết nối vật lý
Như vậy, ta đã khởi tạo xong 1 mạng với mô hình topo hoạt động bình thường theo như đề bài đưa ra
CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Cơ chế tạo luồng giữa các host
Để khởi chạy mạng đã tạo, bạn chỉ cần gõ lệnh: sudo mn custom topo3sw-4h.py topo tp mac switch ovsk controller remote (không cần gõ lại nếu đã khởi tạo) Mạng này bao gồm một bộ controller, ba switch và bốn host.
Hình 3.: Khởi tạo mạng đơn giản
Gõ lệnh: pingall để thử các kết nối ta nhận được kết quả 100% dropped (0/12 received), vậy các host hiện tại chưa thể kết nối với nhau ở trong mạng này.
Hình 3.: Kết quả kiểm tra các kết nối
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Sử dụng các lệnh: nodes, net, dump, link để kiểm tra các thông tin thành phần trong mạng.
Ta có thể kiểm tra xem các thành phần trong mạng đã hoạt động, kết nối vật lý và mạng được thiết lập chưa:
Node: Hiển thị các node trong mạng.
Net: Hiển thị interface trong các node.
Links : Hiển thị các đường nối giữa các host và switch trong mạng.
Dump: Hiển thị các thông tin IP, các kết nối ethernet
Hình 3.: nodes, net, dump, link
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Kiểm tra lại kết nối từ host 1 trước khi tạo luồng
Hình 3.: Ping từ host1 tới các host còn lại
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Kiểm tra bảng luồng và tính năng của switch 1 bằng trình tiện ích ovs-ofctl Dùng lệnh: mininet> sh ovs-ofctl show s1
Hình 3.: Kiểm tra bảng luồng của switch 1
Thực hiện kiểm tra entry bằng câu lệnh: sh ovs-ofctl dump-flows s1 sh ovs-ofctl dump-flows s2 sh ovs-ofctl dump-flows s3
Ta thấy bảng luồng chưa có một entry nào vì ta chưa khởi động một bộ điều khiển nào,
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
To create flow entries for the switches s1, s2, and s3, execute the following commands: for switch s1, use `sh sudo ovs-ofctl add-flow s1 in_port=1,actions=output:normal` and `sh sudo ovs-ofctl add-flow s1 in_port=2,actions=output:normal` For switch s2, run `sh sudo ovs-ofctl add-flow s2 in_port=1,actions=output:normal`, `sh sudo ovs-ofctl add-flow s2 in_port=2,actions=output:normal`, and `sh sudo ovs-ofctl add-flow s2 in_port=3,actions=output:normal` Finally, for switch s3, input `sh sudo ovs-ofctl add-flow s3 in_port=1,actions=output:normal`, `sh sudo ovs-ofctl add-flow s3 in_port=2,actions=output:normal`, and `sh sudo ovs-ofctl add-flow s3 in_port=3,actions=output:normal`.
Hình 3.7: Tạo luồng cho 3 con switch s1, s2, s3
Sau đó kiểm tra lại các entry lần lượt bằng câu lệnh:
sh ovs-ofctl dump-flows s1
sh ovs-ofctl dump-flows s2
sh ovs-ofctl dump-flows s3
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Kết quả hiển thị khi kiểm tra các entry
Hình 3.8 Kết quả hiển thị khi kiểm tra các entry
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Sử dụng lệnh Pingall để kiểm tra kết nối trong mạng cho thấy kết quả 0% dropped (12/12 received), điều này chứng tỏ rằng sau khi tạo luồng, các host đã kết nối thành công với nhau.
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Hình 3.10 ping từ host1 tới các host còn lại
Sau khi tạo các luồng tại các Switch ta có thể kết nối và truyền dữ liệu giữa các thiết bị trong mạng.
Ý nghĩa nội dung Flowtable
Flowtable hoạt động như một bảng định tuyến giữa các thiết bị mạng thông qua các cổng, dựa trên các thông số như địa chỉ MAC, IP và Vlan tag Nó giúp tối ưu hóa việc chuyển tiếp gói tin trong mạng, nâng cao hiệu suất và giảm thiểu tắc nghẽn Flowtable sẽ tạo ra các luồng cần thiết tại các cổng khi có gói tin đi qua, và tự động ngắt các luồng OpenFlow khi không còn sử dụng, nhằm tiết kiệm tài nguyên mạng.
Trước khi chưa tạo luồng ta kiểm tra switch 1 thì không có bất cứ thông tin nào của các luồng cũng như các thành phần các Flow Table
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Hình 3 Kiểm tra thuộc tính dump flows của switch 1
Sau khi thiết lập kết nối giữa các thiết bị, thông tin như Cookie, duration, table và packet sẽ xuất hiện, phản ánh từng luồng kết nối riêng biệt của các switch trong mạng.
Hình 3.2 Kiểm tra thuộc tính Dump Flow của các switch sau khi tạo luồng
Thực hiện tạo luồng đối với host 1 và host 4 sau đó kiểm tra kết nối bằng lệnh:pingall
CHƯƠNG 3 CƠ CHẾ TẠO LUỒNG GIỮA CÁC HOST VÀ Ý NGHĨA FLOWTABLE
Để đảm bảo kết nối giữa hai host thành công, các host còn lại không thể gửi tin nhắn cho nhau Sau đó, chúng ta thiết lập một luồng mới giữa host 2 và host 3, và tiến hành kiểm tra kết nối bằng lệnh: pingall.
Hình 3.14Tạo luồng cho host 2 và host 3
Kết quả cho thấy host 2 và host 3 có khả năng kết nối và gửi tin nhắn cho nhau Tuy nhiên, luồng kết nối trước đó giữa host 1 và host 4 đã bị mất, khiến họ không thể trao đổi tin nhắn nữa.
Trong bảng FlowTable, mỗi switch chỉ cho phép chứa tối đa 3 luồng, điều này có nghĩa là chỉ có thể ping được 3 luồng gần nhất được tạo Các luồng trước đó sẽ tự động bị ngắt kết nối.
Để tạo luồng ping giữa tất cả các host, cần sử dụng tham số output:normal Khi thiết lập, chỉ cần khai báo các in_port cho switch, và controller sẽ tự động định tuyến để tìm luồng ra output tới các host trong mạng.
PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
BẢN TIN HELLO
Trong quá trình khởi tạo kết nối, bộ chuyển mạch và bộ điều khiển trao đổi các bản tin Hello để thỏa thuận phiên bản giao thức OpenFlow Trong các bản tin này, vùng version thể hiện phiên bản cao nhất mà bên gửi hỗ trợ, trong khi bên nhận sẽ so sánh và chọn phiên bản thấp hơn giữa hai bên Kết quả là cả bộ điều khiển và bộ chuyển mạch đều sử dụng phiên bản 1, với vùng xid nhận diện giao dịch có giá trị 19550283326.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHIKHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
BẢN TIN OFPT_FEATURE_REQUEST
Hình 4.9 Bản tin OFPT_FEATURE_REQUEST
Sau khi thực hiện thủ tục bắt tay kết nối bằng bản tin HELLO, bộ điều khiển sẽ gửi bản tin OFPT_FEATURES_REQUEST để nhận diện chuyển mạch và đọc các khả năng cơ bản của nó Trong quá trình thiết lập phiên, bộ điều khiển gửi bản tin này đến chuyển mạch, và chuyển mạch phải phản hồi bằng bản tin OFPT_FEATURES_REPLY, trong đó có vùng datapath_id = 1 cùng với thông tin về khả năng của chuyển mạch Cụ thể, số lượng gói tối đa mà chuyển mạch có thể đệm khi gửi đến bộ điều khiển thông qua các bản tin packet_in là 256 (n-buffer), số lượng bảng chuyển mạch hỗ trợ là 254 (n_tables), thông tin các cổng của chuyển mạch (of_port_desc list) và các hoạt động chuyển mạch có thể hỗ trợ (actions).
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHIKHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
Bản tin OFPT_FEATURE_REPLY
Hình 4.10 Bản tin OFPT_FEATURE_REPLY
Bản tin OFPT_SET_CONFIG
Hình 4.11 Bản tin OFPT_SET_CONFIG
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
Bản tin OFPT_SET_CONFIG gởi từ bộ điều khiển đến bộ chuyển mạch để thiết lập độ hoạt động của chuyển mạch.
Type = 9 : số đặc trưng cho bản tin OFPT_SET_CONFIG.
Xid = 3848134575 : số nhận diện giao dịch.
Length = 12 : chiều dài tính theo byte của bản tin OFPT_SET_CONFIG.
Flags = 0 (0x00000000) OFPC_FRAG_NORMAL: cho biết các phân đoạn
IP được xử lý bình thường Xử lý ‘bình thường’ có nghĩa là sẽ có một nỗ lực để chuyển các phân đoạn qua các bảng OpenFlow.
Miss_send_len là 128 byte, đại diện cho số lượng byte trong mỗi gói dữ liệu mà đường ống OpenFlow gửi đến bộ điều khiển khi không sử dụng hoạt động xuất đến cổng luận lý của bộ điều khiển.
Bản tin OF_PORT_STATUS
Hình 4.12 Bản tin OF_PORT_STATUS
Khi port được thêm vào, thay đổi, hoặc xóa, datapath dùng bản tin OF_PORT_STATUS để thông báo trạng thái port cho bộ điều khiển.
Type = 12 : số đặc trưng cho bản tin OF_PORT_STATUS
Length = 64 : chiều dài tính theo byte của bản tin tin OF_PORT_STATUS.
Xid = 0 : số nhận diện giao dịch.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
4.6 BẢN TIN: OF_PACKET_IN, OF_PACKET_OUT, OF_FLOW_ADD.
Ta thực hiện lệnh ping 3 gói từ host 1 sang host 2 với câu lệnh h1 ping –c3 h2
Hình 4.13 Bản tin Packet in & Packet out
Trên wireshark ta sẽ bắt được một số bản tin: OF_PACKET_IN,
OF_PACKET_OUT, OF_FLOW_ADD.
Hình 4.14 Các bản tin nhận được khi gửi gói tin từ host 1 sang host 2
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
4.7 Bản tin OFPT_PACKET_IN
Hình 4.15 Bản tin OFPT_PACKET_IN
Gói tin Packet_in được gửi từ cổng TCP 59966 của bộ chuyển mạch đến cổng TCP 6633 của bộ điều khiển Việc chuyển bản tin này đến bộ điều khiển là cần thiết vì nó không trùng khớp với bất kỳ mục nào trong bảng luồng Cổng vào là port 1, với tổng chiều dài là 42, và vùng dữ liệu chứa frame ethernet, đóng gói bản tin của giao thức ICMP - lệnh ping.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
4.8 Bản tin OFPT_PACKET_OUT
Hình 4.16 Bản tin OFPT_PACKET_OUT
Packet_out : gởi từ bộ điều khiển Src Port (6653) đến chuyển mạch Dst Port
(59966), có buffer_id giống buffer_id của gói packet_in (262), danh sách action chỉ gồm một hoạt động xuất ra port 65531.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHI KHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
4.9 Bản tin OFPT_FLOW_MOD
Hình 4.17 Bản tin OFPT_FLOW_MOD
Bản tin OFPT_FLOW_MOD với vùng command = 0 cho phép thêm một luồng mới, điều khiển lưu lượng từ port 3 đến port 1 Luồng này có idle_timeout là 60 giây và hard_timeout là 0, nghĩa là nó sẽ hết hạn sau 60 phút không có lưu lượng Với flags = 0, chuyển mạch sẽ gửi thông báo loại bỏ luồng về bộ điều khiển khi hết thời gian idle_timeout hoặc khi luồng bị xóa Đối với buffer_id = 257, chuyển mạch cần lấy gói tương ứng từ packet_in (có buffer_id = 257) ra khỏi bộ đệm và xử lý qua toàn bộ đường ống OpenFlow sau khi luồng được thêm vào.
Bản tin OFPT_PACKET_IN
Hình 4.15 Bản tin OFPT_PACKET_IN
Gói tin Packet_in được gửi từ cổng TCP 59966 của bộ chuyển mạch đến cổng TCP 6633 của bộ điều khiển Việc chuyển bản tin này đến bộ điều khiển diễn ra vì nó không trùng khớp với bất kỳ mục nào trong bảng luồng Cổng vào là port 1, tổng chiều dài của gói tin là 42, và vùng dữ liệu chứa frame ethernet, cụ thể là bản tin của giao thức ICMP - lệnh ping.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHIKHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
Bản tin OFPT_PACKET_OUT
Hình 4.16 Bản tin OFPT_PACKET_OUT
Packet_out : gởi từ bộ điều khiển Src Port (6653) đến chuyển mạch Dst Port
(59966), có buffer_id giống buffer_id của gói packet_in (262), danh sách action chỉ gồm một hoạt động xuất ra port 65531.
CHƯƠNG 4 PHÂN TÍCH CÁC BẢN TIN GIAO THỨC OPENFLOW KHIKHỞI ĐỘNG MẠNG, PING VÀ TẠO LUỒNG
Bản tin OFPT_FLOW_MOD
Hình 4.17 Bản tin OFPT_FLOW_MOD
Bản tin OFPT_FLOW_MOD với vùng command = 0 cho phép thêm một luồng mới vào chuyển mạch, điều khiển lưu lượng từ port 3 đến port 1 Luồng này có idle_timeout = 60 giây và hard_timeout = 0, nghĩa là sẽ hết hạn sau 60 giây nếu không có lưu lượng Với flags = 0, chuyển mạch phải gửi thông báo loại bỏ luồng về bộ điều khiển khi hết thời gian idle_timeout hoặc khi luồng bị xóa Ngoài ra, với buffer_id = 257, chuyển mạch cần xử lý gói tin tương ứng trong bản tin packet_in (có buffer_id = 257) và đưa nó qua toàn bộ đường ống OpenFlow sau khi luồng được thêm vào.
TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN SDN: OPENDAYLIGHT
Giới thiệu
OpenDaylight là phần mềm mã nguồn mở dành cho mạng định nghĩa bằng phần mềm (SDN), cung cấp khả năng kiểm soát tập trung và lập trình linh hoạt cho các thiết bị mạng thông qua giao thức mở Nó hỗ trợ OpenFlow và các giải pháp mạng khác, giúp tối ưu hóa hiệu suất mạng bằng cách kết nối thông minh các thiết bị OpenDaylight Controller cung cấp các API northbound cho phép các ứng dụng thu thập thông tin mạng, thực hiện các thuật toán kiểm soát và phân tích, từ đó tạo ra các quy tắc mới cho mạng Được viết bằng ngôn ngữ Java, OpenDaylight Controller có thể hoạt động trên bất kỳ môi trường nào hỗ trợ Java, nhưng để đạt hiệu suất tối ưu, nên chạy trên môi trường Linux với JVM tối thiểu 1.7.
Kiến trúc Opendaylight
Kiến trúc Opendaylight gồm 5 lớp logic
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Các ứng dụng mạng và dịch vụ bao gồm các hệ thống kiểm soát và giám sát hành vi mạng, cùng với các ứng dụng thương mại Những ứng dụng này sử dụng bộ điều khiển để thu thập thông tin mạng, thực hiện phân tích thông qua các thuật toán, và sau đó áp dụng bộ điều khiển để thiết lập các quy tắc mới nếu cần thiết.
Ví dụ: Dlux(Opendaylight user Experience) ,DdoS(Distributed Denial of Service) Protection,OpenStack Neutron,SDNI Wrapper,VTN(Virtual Tenant Network) Coordinator
API là một tập hợp các giao diện chung cho các chức năng điều khiển OpenDaylight, hỗ trợ khung Open Service Gateway Initiative (OSGi) và API REST hai chiều cho API hướng Bắc OSGi được sử dụng cho các ứng dụng hoạt động trong không gian địa chỉ giống như bộ điều khiển, trong khi API REST (dựa trên web) phục vụ cho các ứng dụng không chạy trong cùng một không gian địa chỉ hoặc trên cùng một máy với bộ điều khiển.
- Các chức năng và dịch vụ: Các chức năng và dịch vụ điều khiển SDN
Hình 5.2 Các Dịch Vụ Chú thích:
DOCSIS Abstraction:Data over Cable Service Interface Specification
LISP service: Locator/Identifier Separation Protocol service
ALTO Protocol Manager: Application Layer Traffic Optimization Protocol Manager
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Lớp trừu tượng dịch vụ (SAL) cung cấp cái nhìn đồng nhất về các tài nguyên mặt bằng dữ liệu, cho phép các chức năng điều khiển thực hiện độc lập với giao diện và giao thức hướng nam.
- Giao diện và giao thức Southbound: Hỗ trợ OpenFlow, các giao thức khác theo tiêu chuẩn Nam, và giao diện nhà cung cấp cụ thể.
Hình 5.4 Giao diện Southbound Chú thích:
OVSDB:Open vSwitch Database Protocol
PCEP:Path Computation Element Protocol
CAPWAP: Control and Provisioning of Wireless Access Points
SXP:Source-Group Tag eXchange Protocol
SNMP:Simple Network Management Protocol
SNBI:Secure Network Bootstrapping infrastructure
LACP:Link Aggregation Controll Protocol
COPS:Common Open Policy Service
Kiến trúc OpenDaylight nổi bật với việc tích hợp cả mặt bằng điều khiển và chức năng mặt phẳng ứng dụng, không chỉ đơn thuần là một bộ điều khiển SDN Điều này tạo điều kiện cho các nhà quản lý mạng doanh nghiệp và viễn thông triển khai phần mềm nguồn mở trên các máy chủ riêng, mang lại sự linh hoạt và hiệu quả trong quản lý mạng.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT của họ để xây dựng cấu hình SDN Các nhà cung cấp có thể sử dụng phần mềm này để tạo ra các sản phẩm có thêm các chức năng và dịch vụ mặt phẳng ứng dụng bổ sung. Một khía cạnh quan trọng thứ hai của thiết kế OpenDaylight là nó không gắn với OpenFlow hoặc bất kỳ giao diện hướng nam cụ thể nào khác Điều này cung cấp tính linh hoạt cao hơn trong việc xây dựng cấu hình mạng SDN Yếu tố then chốt trong thiết kế này là SAL cho phép bộ điều khiển hỗ trợ nhiều giao thức trên giao diện hướng Nam và cung cấp các dịch vụ thống nhất cho các chức năng bộ điều khiển và cho các ứng dụng SDN Hình 3.8 minh họa hoạt động của SAL Khung OSGi cung cấp liên kết động các plug-in cho các giao thức hướng nam có sẵn Khả năng của các giao thức này được trừu tượng hóa thành một tập hợp các tính năng có thể được viện dẫn bằng các dịch vụ máy điều khiển thông qua một trình quản lý dịch vụ trong SAL Người quản lý dịch vụ duy trì một đăng ký để lập bản đồ các yêu cầu dịch vụ để yêu cầu tính năng Dựa trên yêu cầu dịch vụ, SAL bản đồ cho các plug-in thích hợp và do đó sử dụng các giao thức hướng Nam thích hợp nhất để tương tác với một thiết bị mạng nhất định
OpenDaylight nổi bật với khả năng mô-đun hóa và tính linh hoạt cao, cho phép người dùng tùy chỉnh và mở rộng dễ dàng Tất cả mã nguồn của hệ thống được phát triển bằng ngôn ngữ Java và chạy trên Java Virtual Machine, đảm bảo hiệu suất và khả năng tương thích tốt.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Machine (JVM) của riêng nó Như vậy, nó có thể được triển khai trên bất kỳ phần cứng và nền tảng hệ điều hành nào hỗ trợ Java.
REST
Representational State Transfer (REST) là kiến trúc tiêu chuẩn để xác định các API, đặc biệt là trong việc xây dựng API hướng Bắc cho bộ điều khiển SDN API RESTful, tuân thủ các ràng buộc của REST, không phải là một giao thức hay tiêu chuẩn cố định.
Một API cần tuân thủ sáu yêu cầu cơ bản để trở thành RESTful, nhằm tối đa hóa khả năng mở rộng và đảm bảo tính độc lập cũng như khả năng tương tác giữa các phần mềm Những ràng buộc này cung cấp một phương thức đơn giản để xây dựng các API hiệu quả.
REST dựa trên khái niệm truy cập web để tương tác giữa ứng dụng và dịch vụ trong API Mặc dù REST không quy định chi tiết cụ thể của API, nó đặt ra các ràng buộc về cách thức tương tác giữa ứng dụng và dịch vụ Sáu yêu cầu cơ bản của REST bao gồm việc đảm bảo tính nhất quán và hiệu quả trong quá trình giao tiếp.
Hệ thống được phân lớp
Mã hóa theo yêu cầu
Bộ điều khiển tập trung và phân tán
Một yếu tố quan trọng trong thiết kế kiến trúc là quyết định sử dụng bộ điều khiển tập trung hay bộ điều khiển phân tán để quản lý các công tắc trong mặt bằng dữ liệu.
Bộ điều khiển tập trung là máy chủ quản lý tất cả các switches trong mạng, nhưng trong các doanh nghiệp lớn, việc sử dụng một bộ điều khiển duy nhất có thể gây khó khăn Thay vào đó, một giải pháp hiệu quả hơn là chia mạng thành các miền SDN không trùng lặp, hay còn gọi là “SDN islands”, được quản lý bởi các bộ điều khiển phân tán.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Hình 5.6 Cấu trúc miền SDN
Lý do sử dụng miền SDN bao gồm những điều sau:
Khả năng mở rộng của bộ điều khiển SDN có giới hạn về số lượng thiết bị mà nó có thể quản lý Do đó, để đáp ứng nhu cầu của một mạng lớn, có thể cần triển khai nhiều bộ điều khiển SDN.
- Độ tin cậy: Việc sử dụng nhiều bộ điều khiển tránh rủi ro khi một bộ điều khiển duy nhất xảy ra lỗi.
Trong các miền SDN, nhà cung cấp dịch vụ có thể áp dụng các chính sách bảo mật khác nhau, cho phép một miền cụ thể phục vụ cho một nhóm khách hàng với các yêu cầu bảo mật tùy chỉnh cao Điều này có thể bao gồm việc không tiết lộ một số thông tin mạng, như topo mạng, cho các bên ngoài, nhằm đảm bảo tính riêng tư và bảo mật cho khách hàng.
Triển khai gia tăng trong mạng truyền thông công cộng có thể bao gồm cả hạ tầng kế thừa và không kế thừa, cho phép chia mạng thành các miền SDN quản lý riêng biệt, mang lại tính linh hoạt cao Bộ điều khiển có thể được sắp xếp trong khu vực nhỏ hoặc phân tán rộng rãi, với các bộ điều khiển đặt chặt chẽ phù hợp cho trung tâm dữ liệu, trong khi bộ điều khiển phân tán thích hợp cho mạng lưới nhiều điểm Thông thường, bộ điều khiển được phân bố theo chiều ngang, điều khiển các switches không chồng chéo trong mặt bằng dữ liệu Cần có một giao thức để truyền thông giữa các bộ điều khiển trong kiến trúc phân tán, với một giao thức mở hoặc chuẩn sẽ là lựa chọn phù hợp hơn so với giao thức độc quyền.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT phân tán bao gồm việc duy trì cơ sở dữ liệu được phân chia và nhân rộng về topo và các tham số mạng, và các chức năng giám sát/thông báo Chức năng thứ hai bao gồm việc kiểm tra xem bộ điều khiển có còn hoạt động hay không và điều phối các thay đổi trong việc chuyển đổi các bộ điều khiển sang bộ điều khiển.
Opendaylight SDNi
IETF đã phát triển bản đặc tả kỹ thuật SDNi, định nghĩa các yêu cầu chung cho việc thiết lập luồng lưu lượng ngang hàng và trao đổi thông tin về khả năng tiếp cận qua nhiều tên miền SDNi không định nghĩa giao thức SDN theo hướng Đông/Tây, mà cung cấp các nguyên tắc cơ bản để phát triển giao thức Chức năng của SDNi được xác định trong đặc tả bao gồm nhiều yếu tố quan trọng.
Thiết lập luồng lưu lượng ngang hàng từ các ứng dụng bao gồm thông tin quan trọng như yêu cầu truy cập, chất lượng dịch vụ (QoS) và các mức dịch vụ phù hợp trên nhiều tên miền trong mạng SDN.
Trao đổi thông tin về khả năng tiếp cận giữa các miền SDN là rất quan trọng để định tuyến hiệu quả Điều này cho phép một luồng dữ liệu duy nhất di chuyển qua nhiều miền SDN, với mỗi bộ điều khiển có khả năng lựa chọn con đường tối ưu nhất từ các đường dẫn khả dụng.
SDNi phụ thuộc vào loại tài nguyên và khả năng quản lý của các bộ điều khiển trong từng miền Để tận dụng tối đa các khả năng mới từ các bộ điều khiển khác nhau, việc triển khai SDNi theo phương thức mở là rất quan trọng SDN cho phép thay đổi linh hoạt, do đó, dữ liệu trao đổi giữa các bộ điều khiển cần có tính linh động cao Để đạt được điều này, cần thiết phải có một số trao đổi siêu dữ liệu, cho phép SDNi chia sẻ thông tin về các khả năng chưa xác định Các loại thông điệp cho SDNi được dự kiến sẽ bao gồm nhiều dạng khác nhau.
Cập nhật khả năng tiếp cận.
Thiết lập/cập nhật yêu cầu (bao gồm cả yêu cầu về khả năng ứng dụng như
QoS, tốc độ dữ liệu, độ trễ ).
Cập nhật khả năng bao gồm các tính năng mạng như tốc độ dữ liệu và QoS, cũng như khả năng của hệ thống và phần mềm có sẵn trong miền.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Kiến trúc OpenDaylight tích hợp khả năng SDNi, cho phép kết nối nhiều bộ điều khiển OpenDaylight trong mạng và chia sẻ thông tin về topology Khả năng này tương thích với đặc tả IETF cho chức năng SDNi Ứng dụng SDNi có thể được triển khai trên bộ điều khiển OpenDaylight với ba thành phần chính.
Trình kết hợp SDNi: Plug-in SDNi hướng Bắc hoạt động như một trình tổng
hợp để thu thập thông tin mạng như topo, thống kê và định danh máy chủ lưu trữ.
Plug-in này có thể phát triển để đáp ứng nhu cầu về dữ liệu mạng được yêu cầu chia sẻ qua các bộ điều khiển SDN liên kết.
SDNi REST API: API SDNi REST thu thập thông tin tổng hợp từ plug-in
hướng Bắc (trình kết hợp SDNi).
SDNi Wrapper: Wrapper SDNi BGP có trách nhiệm chia sẻ và thu thập thông
tin gửi/nhận từ các bộ điều khiển liên kết.
Triển khai OpenDaylight
Cài đặt máy ảo Ubuntu
Cài đặt môi trường Java cho Ubuntu:
Dùng lệnh: sudo apt-get -y install openjdk-8-jre sudo update-alternatives config java để nâng cấp cấu hình
Lệnh nano ~/.bashrc để mở rồi thêm export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre (thêm JAVA_HOME vào môi trường làm việc Ubuntu)
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Hình 5.8 Kích Hoạt Java trong môi trường Ubuntu
Lệnh echo $JAVA_HOME để kiểm tra lại $JAVA_HOME
Dùng lệnh wget để tải file cài đặt OpenDaylight: wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integr ation/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.tar.gz
Lệnh tar –xvf distribution-karaf-0.6.4-Carbon.tar.gz để giải nén file vừa tải
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT
Khởi động OpenDaylight bằng lệnh: cd distribution-karaf-0.6.4-Carbon/ (đi đến file opendaylight)
/bin/karaf (khởi động OpenDaylight)
Hình 5.9:Khi cài đặt hoàn tất Opendaylight trên ubuntu
Sau khi Opendaylight được khởi động,ta dùng lệnh feature:list –installed để hiển thị danh sách các tính năng hiện có của Opendaylight
Tiếp theo là lệnh feature:install odl-restconf odl-l2switch-switch
Dùng lệnh feature:list | grep odl-dlux để hiển thị các tính năng cần cài đặt
Finally, we use the command `feature:install odl-dluxapps-applications odl-dluxapps-nodes odl-dluxapps-topology odl-dluxapps-yangui odl-dluxapps-yangvisualizer odl-dluxapps-yangutils odl-dlux-core` to install essential features, including applications, nodes, topology, YANG UI, YANG visualizer, YANG utilities, and the core functionalities of the DLUX applications.
CHƯƠNG 5: TÌM HIỂU VÀ TRIỂN KHAI BỘ ĐIỀU KHIỂN OPENDAYLIGHT Để kiểm tra lại các tính năng đã được cài đặt hay chưa,ta dùng lệnh feature:list – installed
Sau khi cài đặt và khởi động OpenDaylight,ta tiến hành kết nối topo mạng 3 switch
4 host với bộ điều khiển OpenDaylight
Tại giao diện của Mininet,ta dùng lệnh cd mininet/custom để đi đến file topo mạng
3 switch 4 host đã được tạo
To connect the controller to the network topology, use the command `sudo mn controller=remote,ip=192.168.43.244,port=6633 custom 3s4h.py topo mytopo` Here, `192.168.43.244` is the IP address of the Ubuntu virtual machine running the OpenDaylight controller, and `3s4h.py` represents the network topology file containing three switches and four hosts.
Vậy là ta đã xây dựng xong topo mạng 3 switch 4 host dùng bộ điều khiểnOpenDaylight