Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
455,7 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG - BÀI THÍ NGHIỆM MƠN HỌC CƠ SỞ TRUYỀN SỐ LIỆU Mã học phần : ET4070Q (3-0-1-6) Họ tên sinh viên : Nguyễn Thị Ngọc Hà Mã số SV : 20187125 Lớp : ET-LUH17 Nhóm thí nghiệm : 713432 – CS02 Ngày nộp báo cáo : 21/12/2021 Yêu cầu sinh viên điền đầy đủ thông tin HÀ NỘI, 2021 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội BÀI THÍ NGHIỆM TẠO TOPOLOGY BẰNG MININET I MỤC ĐÍCH THÍ NGHIỆM Bài thí nghiệm giúp sinh viên làm quen với phần mềm Mininet cách hoạt động Open vSwitch Qua thí nghiệm tiến hành tạo topology đơn giản mininet tạo flow-entry cho Open vSwitch để host ping với II THẢO LUẬN Mininet hệ thống cho phép thử nghiệm mạng lớn máy tính Mininet hỗ trợ việc nghiên cứu, phát triển, kiểm thử, gỡ lỗi nhiệm vụ khác việc giả lập mạng OpenFlow switch máy tính nhất, nghĩa ta triển khai thử nghiệm mạng với hàng trăm/ngàn node máy tính cá nhân Trên mạng ta triển khai giao thức thử nghiệm mạng hoàn toàn giống việc sử dụng switch OpenFlow thật Các OpenFlow switch mà mininet giả lập gọi Open vSwitch Một số chức Mininet gồm có: Cơng cụ xây dựng môi trường giả lập OpenFlow switch, đơn giản không tốn để phát triển ứng dụng mạng Do OpenFlow switch Mininet có tất tính chất mà OpenFlow switch thật có nên việc sử dụng mạng giả lập Mininet cho phép kiểm tra chức ứng dụng mà không cần thiết bị thật Cho phép nhà phát triển ứng dụng làm việc đồng thời, cách độc lập đồ hình mà khơng ảnh hưởng đến Cho phép kiểm thử đồ hình phức tạp mà không cần phải nối dây cho mạng vật lý Cho phép debug chạy phép kiểm thử mạng giả lập lớn, sử dụng CLI Hỗ trợ thiết lập đồ hình tùy biến bất kỳ, gồm tập thơng số đồ hình Có thể đem ứng dụng Mininet triển khai mạng thật với code hồn tồn khơng cần thay đổi Cung cấp Python API dễ dàng sử dụng có khả mở rộng Mininet cho ta phương pháp dễ dàng để thu xác đặc tính mạng thử nghiệm đồ hình tùy ý Một đặc điểm quan trọng mininet chương trình dùng cho điều khiển (controller) dùng cho giả lập mininet hồn tồn đem triển khai cho mạng thật mà không cần sửa đổi III YÊU CẦU VỀ THIẾT BỊ Để thực thí nghiệm cần máy tính chạy Ubuntu 12.04 cài sẵn phần mềm mininet IV TRÌNH TỰ THÍ NGHIỆM Trong thí nghiệm, sinh viên tiến hành tạo topology mininet, sau add flow-entry cho Open vSwitch Tạo topology đơn giản Mininet Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Mở Terminal Ubuntu, chế độ Shell dùng để gõ lệnh hệ điều hành (Shell Command) Chạy lệnh sau: sudo mn topo single,3 controller remote Mininet tạo topo gồm có Open vSwitch (s1) nối với host: h1, h2, h3 Trên hình Terminal thơng tin topo sau: user@machinename:~$ sudo mn topo single,3 controller remote * Creating network * Adding controller Unable to contact the remote controller at 127.0.0.1:6633 * Adding hosts: h1 h2 h3 * Adding switches: s1 * Adding links: (h1, s1) (h2, s1) (h3, s1) * Configuring hosts h1 h2 h3 * Starting controller c0 * Starting switches s1 * Starting CLI: mininet> Với lựa chọn controller remote Mininet tạo Open vSwitch với cài đặt địa controller mặc định tại: IP=127.0.0.1 (localhost), port=6633 Các controller có nhiệm vụ điều khiển hoạt đơng mạng Mininet tạo ra, đảm bảo mạng hoạt động ổn định, xác Tuy nhiên, chưa có Controller nằm địa IP= 127.0.0.1, port=6633, nên mạng chưa thể hoạt động Test thử hoạt động mạng cách gõ lệnh pingall hình CLI mininet, ta thấy host khơng thể ping với nhau, 100% gói bị mininet> pingall * Ping: testing ping reachability h1 -> X X h2 -> X X h3 -> X X * Results: 100% dropped (0/6 received) mininet> Sau tạo thành công mininet, giao diện cửa sổ terminal chuyển thành giao diện mininet, dấu nhắc lệnh có dạng “mininet>” Sau số lệnh sử dụng giao diện mininet: nodes : Liệt kê tất nút mạng net : Liệt kê kết nối mạng Bài thí nghiệm môn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội dump : Xem thông tin nút mạng (địa ip, giao diện…) exit : Hủy mininet, thoát giao diện ban đầu sh : Thực lệnh hệ điều hành (Shell Command) giao diện Mininet Sinh viên thử dùng lệnh “nodes”, “net” “dump” sau so sánh với Hình 1.1 Thêm flow-entry vào bảng flowtable Open vSwitch Hình 1.1 Topology switch kết nối host Sinh viên tiến hành thêm flow-entry cho switch s1 để host ping đến host Để hiểu rõ chế ARP mạng, sinh viên xem lại lý thuyết ARP Sinh viên tiến hành add flow-entry cho switch s1 theo thứ tự tin trao đổi trình ping sau (sinh viên mở cửa sổ terminal để chạy lệnh bên dưới) Đầu tiên, host gửi tin ARP request cho host (h3) để lấy địa MAC h3 Vì vậy, ta cần thêm flow-entry vào switch (s1) để forward gói tin port nối với host 3: sudo ovs-ofctl add-flow s1 dl_type=0x0806,nw_dst=10.0.0.3,action=output:3 Lệnh ovs-vsctl thêm trực tiếp flow-entry vào bảng flowtable switch (0x0806: ARP) Chú ý: o Lệnh lệnh thiết lập flow-entry sau mô tả với giả thiết h1 nối với Port h3 nối với Port Switch s1 Tuy nhiên tùy phiên Mininet Ubuntu mà Port Switch kết nối vậy, để xác định xem Port Switch kết nối ta làm theo hướng dẫn phần cuối mục o Trong giao diện Mininet ta dùng trực tiếp lệnh sudo phải mở cửa sổ Terminal để thực Tuy nhiên ta thực trực tiếp lệnh “sudo ovs-ofctl …” giao diện Mininet cách thay sudo sh sau “sh ovs-ofctl …” Tương tự, với gói tin ARP reply từ host gửi host 1, ta add flow-entry sau: sudo ovs-ofctl add-flow s1 dl_type=0x0806,nw_dst=10.0.0.1,action=output:1 Sau host nhận gói tin ARP reply, tạo gói tin ICMP request ICMP reply Tương tự gói tin ARP ta add lệnh sau: sudo ovs-ofctl add-flow s1 dl_type=0x0800,nw_dst=10.0.0.3,action=output:3 sudo ovs-ofctl add-flow s1 dl_type=0x0800,nw_dst=10.0.0.1,action=output:1 (0x0800: ICMP) Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Sau add xong tất flow-entry, ta tiến hành ping từ host đến host lệnh ”h1 ping h3” giao diện CLI mininet F Lưu ý: Lệnh ping thực ping liên tục mà không dừng lại, muốn dừng ta dùng tổ hợp phím “Ctrl+C” Hoặc ta dùng lệnh ping với tham số -c ví dụ ”h1 ping h3 –c 3” tức ping lần Nếu không muốn mở cửa sổ terminal mới, ta thực trực tiếp giao diện mininet (cửa sổ terminnal tạo mininet dấu nhắc lệnh “mininet>”) cách thay “sudo” lệnh “sh” Để xác định số port switch ta chạy lệnh sau: sudo ovs-ofctl show s1 Toàn thơng tin switch 1: dpid, kích thước table, kích thước buffer, trạng thái port, tên port hiển thị terminal OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000000000000001 n_tables:255, n_buffers:256 features: capabilities:0xc7, actions:0xfff 1(s1-eth1): addr:0e:cd:fc:f0:cb:1f config: state: current: 2(s1-eth2): addr:f6:95:c5:60:e5:79 config: state: current: 3(s1-eth3): addr:ca:7f:49:ba:fb:d0 config: state: current: LOCAL(s1): addr:6e:10:83:64:b5:47 config: PORT_DOWN state: LINK_DOWN OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0 Từ kết lệnh “show s1” trên, ta có thơng tin port Switch s1, cụ thể port tương ứng với giao diện s1-eth1, port tương ứng với giao diện s1-eth2, port tương ứng với s1-eth3 Từ ta xác định port host kết nối với port switch (Ta kiểm tra giao diện switch kết nối với host lệnh ”net” giao diện mininet) Câu hỏi : Để Host ping với (sử dụng lệnh pingall), ta cần thực câu lệnh nào? (Sinh viên điền tất câu lệnh với số port sau xác định đúng): Trả lời: sudo ovs-ofctl add-flow s1 dl_type=0x0800, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0800, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0800 nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.1, action=output : Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.2, action=output : I THỰC HÀNH Trong phần này, sinh viên tự thực tạo mạng Mininet sau thêm flow-entry cho Switch để host ping với Tạo topology Mininet Thực lệnh sau (tương tự lệnh tạo Mininet phần thay “single” “linear”) sudo mn topo linear,3 controller remote Mạng tạo bao gồm Host (H1, H2, H3) Switch (S1, S2, S3) Mô tả chi tiết sơ đồ mạng: Sử dụng lệnh net dump giao diện Mininet để liệt kê nút (cùng với địa IP), giao diện kết nối Ngoài cần xác định kết nối tương ứng với Port Switch Sau vẽ chi tiết mơ hình mạng (các host, switch, địa IP, giao diện, kết nối giống với hình 1.1) Nếu ta sử dụng lệnh ”pingall” phần trên, host không ping với Thêm flow-entry vào bảng flowtable Switch Phần ta thực dùng lệnh “ovs-ofctl add-flow” phần để thêm thông tin Host vào Switch Lưu ý thông tin Host phải thêm vào tất Switch có mạng khơng phải Switch nối trực tiếp với Hãy viết lại tất lệnh phần này: Trả lời: sudo ovs-ofctl add-flow s1 dl_type=0x0800, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0800, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0800 nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s1 dl_type=0x0806, nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0800, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0800, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0800 nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0806, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0806, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s2 dl_type=0x0806, nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0800, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0800, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0800 nw_dst = 10.0.0.2, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0806, nw_dst = 10.0.0.3, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0806, nw_dst = 10.0.0.1, action=output : sudo ovs-ofctl add-flow s3 dl_type=0x0806, nw_dst = 10.0.0.2, action=output : Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Sau ta thực lệnh ”pingall” để xem kết I KẾT LUẬN Qua thí nghiệm này, sinh viên làm quen với phần mềm Mininet, biết cách tạo topology đơn giản mininet, hiểu chế hoạt động Open vSwitch II CÂU HỎI KIỂM TRA Flow-entry flowtable gì? Flow-entry flow host Flow-entry chứa các trường thông tin liên quan đến gói tin Khi gói tin đến OpenVswitch, OpenVswitch tham chiếu đặc tính gói tin với flow-entry, để xem gói tin có match với flow-entry khơng Nếu gói tin match với flow-entry flowtable openVswitch thực tác vụ trường Instructions flowentry Ngược lại, gói tin khơng match với entry nào, OpenVswitch gửi tin PACKET IN lên controller, từ controller gửi PACKET OUT trở về, hướng dẫn cách xử lí gói tin cho OpenVswitch Flow table bảng lưu lại tập hợp flow entry từ cho phép gói tin chuyển tiếp từ nguồn tới đích dựa vào trường thông tin flow entry Thời gian time-out flow-entry flowtable gì? Giá trị mặc định bao nhiêu? Hai loại thời gian time-out là: Idle time- out Hard time-out Idle time-out: Đây gọi thời gian nhàn rỗi Đây khoảng thời gian để OpenVswitch tham chiếu gói tin đến với entry Nếu sau khoảng thời gian này, khơng có gói tin match với entry đấy, entry bị xóa Những chỗ cho entry thiết lập cho tin đến OpenVswitch Hard time-out: Khoảng thời gian định Sau khoảng thời gian này, dù có gói tin hay khơng có gói tin match với entry bị xóa khỏi flowtable Các flow-entry them vào flowtable, sau khoảng thời gian mà flow-entry khơng có gói tin phù hợp với chế chuyển tiếp flow-entry bị xóa khỏi flowtable, quãng thời gian time-out flow-entry Giá trị mặc định time-out flow-entry phút Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội BÀI THÍ NGHIỆM TAO CÂY BẮC CẦU TỐI THIỂU I MỤC ĐÍCH THÍ NGHIỆM Bài thí nghiệm giúp sinh viên hiểu chế tạo Minimum Spanning Tree (MST), tìm hiểu POX Controller cách tạo POX II THẢO LUẬN Các điều khiển mạng dùng mạng OpenFlow gồm có: điều khiển mạng mặc định, POX, POX, SNAC (giao diện Web để quản lý OpenFlow switch), Beacon (Java) Tuy nhiên điều khiển mạng đáng ý điều khiển mạng POX POX điều khiển mở, phát triển ngôn ngữ Python, cấu trúc đơn giản, gọn nhẹ, dễ dàng tạo thêm module Mục đích POX gồm: Cung cấp platform cho phép người lập trình, phát triển mạng triển khai ý tưởng lĩnh vực mạng, sử dụng phần cứng thật Các nhà phát triển điều khiển tất kết nối mạng gồm có: forwarding, routing… Ngồi POX cịn điều khiển flow-table switch Cung cấp phần mềm quản lý mạng hữu ích cho tổng đài (operator), gồm có việc quản lý tập trung cho tất switch mạng, điều khiển truy nhập người dùng Phương thức hoạt động POX: POX chạy riêng rẽ máy quản lý việc chuyển tiếp tin nhiều switch khác Trong q trình mơ phỏng, giả lập POX chạy máy với đồ hình mạng tạo Mininet POX cung cấp giao diện lập trình giúp cho nhà phát triển sử dụng dễ dàng lấy thông tin kiện mạng, can thiệp vào lưu lượng, điều khiển định chuyển mạch switch tạo lưu lượng Khi có flow xuất trọng mạng, gói gửi đến điều khiển mạng POX, thực được: định xem chuyển tiếp gói mạng, định tuyến cho gói tin, thu thập thơng tin thống kê, chỉnh sửa gói flow xem thêm gói khác flow để thu thập thêm nhiều thông tin POX đơn platform, việc điều khiển mạng thực phần tử chức POX gọi POX component, component thực thi chức riêng biệt định tuyến, chuyển mạch, xác thực Có thể chạy lúc nhiều POX component với chức điều khiển khác làm cho việc điều khiển quản lý mạng trở nên hoàn hảo Các ứng dụng điều khiển mạng POX kết hợp với nhận biết kiện mạng (network event), can thiệp vào lưu lượng mạng, điều khiển định tuyến switch tạo lưu lượng Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Các thành phần POX: Bài thí nghiệm môn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Các thành phần Stock: POX kèm với số thành phần stock Một số thành phần cung cấp chức cốt lõi, số cung cấp tính tiện lợi, số ví dụ Sau số thành phần stock POX forwarding.l2_learning: Thành phần làm cho OpenFlow switch hoạt động thiết bị switch layer Thành phần học địa lớp (địa MAC), flow cài đặt match với nhiều trường header tốt forwarding.l3_learning: Thành phần biến OpenFlow switch thành thiết bị không router khơng phải switch layer 2, switch layer Nó dùng làm ví dụ tốt việc sử dụng thư viện gói tin POX để kiểm tra xây dựng tin ARP request ARP reply openflow.spanning_tree: Được sử dụng để khám phá phần tử để xây dựng đồ hình mạng, xây dựng spanning tree sau disable port khơng nằm spanning tree Kết topo không bị loop Chú ý thành phần không liên quan tới Spanning Tree Protocol openflow.discovery: sử dụng để khám phá topo mạng việc gửi tin LLDP tới switch web.webcore: Thành phần webcore khởi động webserver tiến trình POX Các thành phần khác giao tiếp với để cung cấp nội dung tĩnh động riêng chúng proto.dhcpd: Nó đơn giản DHCP server Mặc lấy địa 192.168.0.254 cấp IP cho DHCP client dải địa 192.168.0.1 đến 192.168.0.253 với DNS server Default Gateway DHCP server Phát triển thành phần tự tạo: Là thành phần mà ta tự phát triển cho POX Trong số trường hợp, phải xây dựng thành phần làm muốn Module discovery Hình 2.1 Hoạt động POX Controller POX Controller sử dụng module discovery để phát đồ hình mạng dựa chế sau: a Các switch bật lên liên tục sử dụng chế bắt tay ba bước (TCP) để kết nối đến POX Nếu POX bật, kết nối khởi tạo, lúc POX nhận biết tất switch mạng trạng thái switch Mặc định Mininet cài đặt Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội địa Controller mặc định cho switch IP= localhost port=6633 Chúng ta hồn tồn thay đổi cách sử dụng lệnh sau Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội sudo ovs-vsctl set-controller [controller-address] a Khi POX nhận đầy đủ switch, module discovery tạo tin LLDP đóng vào Packet_out gửi xuống switch, switch nhận gửi LLDP port, switch nhận gói tin LLDP gửi lên hỏi POX, lúc POX nhận link Tồn q trình mơ tả hình 2.1 Module spanning_tree Module spanning_tree giúp tạo cho đồ hình mạng có loop Cơ chế hoạt động module sau: a Lưu tất switch vào danh sách theo thứ tự DPID b Lấy switch làm nút gốc, gọi switch current switch c Tất link từ current switch kiểm tra để xác định switch đích Những link thêm vào spanning_tree có switch đích chưa xử lý lượt thỏa mãn Chỉ có link dẫn đến switch đích Có nhiều link dẫn đến switch đích: chọn link nhanh nhất, có nhiều link nhanh chọn link có số bé I d Di chuyển tất switch đích vừa thêm vào lên đầu danh sách e Làm lại bước c khơng cịn switch danh sách YÊU CẦU VỀ THIẾT BỊ Để thực thí nghiêm cần PC chạy Ubuntu 12.04, cài đặt sẵn Mininet POX Controller II TRÌNH TỰ THÍ NGHIÊM Trong thí nghiệm, sinh viên tiến hành tạo topology đơn giản Mininet sau chạy POX Controller để điều khiển mạng Tạo topology đơn giản Mininet Tạo file “topo.py” Tạo file thư mục home với tên gọi topo.py: Mở terminal, tạo file “topo.py” cách gõ lệnh sau: cd gedit topo.py Trên cửa sổ tiến hành soạn thảo code tạo topology bên from mininet.topo import Topo “”” Tao mot mang ao co switch duoc noi voi mot vong Ring “”” class MyTopo(Topo): "Topo gồm Switch nối với thành vòng Ring" def init (self): # Khởi tạo topo Topo. init ( self ) # Tạo host ảo link ảo h1 = self.addHost(‘h1’) Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội 10 Bài thí nghiệm môn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội h2 = self.addHost(‘h2’) h3 = self.addHost(‘h3’) h4 = self.addHost(‘h4’) s1 = self.addSwitch(‘s1’) s2 = self.addSwitch(‘s2’) s3 = self.addSwitch(‘s3’) s4 = self.addSwitch(‘s4’) # Tạo kết nối switch host self.addLink(h1, s1) self.addLink(h2, s2) self.addLink(h3, s3) self.addLink(h4, s4) self.addLink(s1, s2) self.addLink(s2, s3) self.addLink(s3, s4) self.addLink(s4, s1) topos = { 'mytopo': ( lambda: MyTopo() ) } Một số phương thức sử dụng Class Topo packet mininet.topo cung cấp phương thức để tạo topo o mininet Phương thức addHost sử dụng để tạo host ảo mininet Trong o mininet host ảo giả lập từ PC mà ta chạy mininet Phương thức addSwitch dùng để tạo switch ảo Trong mininet o switch ảo OpenVSwitch o Phương thức addLink dùng để tạo link ảo switch switch với host Chạy Mininet với topo tự tạo sudo mn custom topo.py topo mytopo controller remote Kết thu * Creating network * Adding controller Unable to contact the remote controller at 127.0.0.1:6633 * Adding hosts: h1 h2 h3 h4 * Adding switches: s1 s2 s3 s4 * Adding links: (h1, s1) (h2, s2) (h3, s3) (h4, s4) (s1, s2) (s2, s3) (s3, s4) (s4, s1) * Configuring hosts h1 h2 h3 h4 * Starting controller c0 10 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) * Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Starting switches s1 s2 s3 s4 * Starting CLI: mininet> c0 s1 h1 h2 s3 s2 h3 Hình 2.2 Topology switch - host Sau tạo topology thành công, sinh viên tiến hành chạy module POX cửa sổ terminal khác Sử dụng lệnh cd để vào thư mục pox, sau thực thủ tục discovery để switch thu thập thông tin nút mạng (giao thức LLDP – Link Layer Discovery Protocol) Các lệnh thực lệnh sau: cd pox/ /pox.py openflow.discovery forwarding.l2_learning Lúc này, tiến hành pingall giao diện mininet, host liên lạc với Nguyên nhân đồ hình mạng có loop, để host ping ta cần chạy thêm module spanning_tree Dừng tiến trình (tổ hợp phím Ctrl+C) thực lại lệnh sau (lúc thư mục pox, mở lại cửa sổ Terminal khác phải vào lại thư mục pox lệnh “cd pox/”) ./pox.py openflow.discovery forwarding.l2_learning openflow.spanning_tree Sau chạy module spanning_tree, host ping tới lệnh “pingall” Như sau chạy module spanning_tree, topology mạng khơng cịn vịng lặp Cụ thể module spanning_tree chặn số cổng switch, để xem cổng bị chặn ta kiểm tra lại cổng switch Để kiểm tra cổng switch ta dùng lệnh “ovs-ofctl show …” hướng dẫn Tuy nhiên có switch, ta thực lệnh sau để kiểm tra cổng tất switch (thực giao diện mininet): 11 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội dpctl show Kết lệnh sau (lệnh hiển thị cổng switch, nhiên hiển thị kết s1 s4) * s1 -OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000000000000001 n_tables:255, n_buffers:256 features: capabilities:0xc7, actions:0xfff 1(s1-eth1): addr:ce:78:91:38:3e:47 config: state: current: 2(s1-eth3): addr:1e:a1:89:e4:b0:4c config: NO_FLOOD state: current: 10GB-FD COPPER 3(s1-eth2): addr:36:79:07:14:9c:96 config: state: current: LOCAL(s1): addr:aa:84:50:c2:dd:4c config: PORT_DOWN state: LINK_DOWN OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0 * s4 -OFPT_FEATURES_REPLY (xid=0x1): ver:0x1, dpid:0000000000000004 n_tables:255, n_buffers:256 features: capabilities:0xc7, actions:0xfff 1(s4-eth1): addr:8e:68:58:45:5c:8e config: state: current: 2(s4-eth3): addr:96:4a:8d:40:61:6c config: NO_FLOOD state: current: 10GB-FD COPPER 3(s4-eth2): addr:42:91:33:90:b5:08 config: state: current: LOCAL(s4): addr:0e:47:9a:e9:af:4d config: PORT_DOWN state: LINK_DOWN OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0 12 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Ta thấy cổng có phần “config: NO_FLOOD” tức bị khóa, có hai cổng bị khóa switch s1 (port (s1-eth3)) switch (port 2(s4-eth3)) Hai cổng bị khóa tương ứng với kết nối s1 s4 bị khóa Hình 2.3 h1 h2-eth0 h Hình 2.3 Topology sau chạy module spanning_tree Hình 2.3 sơ đồ mạng sau chạy module spanning_tree, ta thấy kết nối s1 s4 bị chặn (tương ứng với giao diện s1-eth3 s4-eth3), đồ hình mạng khơng cịn vịng kín III THỰC HÀNH Trong phần này, sinh viên tự thực lại thao tác phần IV với đồ hình mạng khác, bao gồm switch host Hình 2.4 Đầu tiên, sinh viện tạo mininet có topology hình 2.4 cách tạo file “topo2.py” có phần code tương tự file “topo.py” mục IV (file “topo.py” mơ tả cho mạng có topology Hình 2.2) Sinh viên điền đoạn code “cho đầy đủ: from mininet.topo import Topo class MyTopo2(Topo): 13 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội def init (self): Topo. init ( self ) h1 = self.addHost(‘h1’) h2 = self.addHost(‘h2’) h3 = self.addHost(‘h3’) h4 = self.addHost(‘h4’) h5 = self.addHost(‘h5’) s1 = self.addSwitch(‘s1’) s2 = self.addSwitch(‘s2’) s3 = self.addSwitch(‘s3’) s4 = self.addSwitch(‘s4’) s5 = self.addSwitch(‘s5’) 14 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) # Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Tạo kết nối switch host self.addLink(h1, s1) self.addLink(h2, s2) self.addLink(h3, s3) self.addLink(h4, s4) self.addLink(h5, s5) self.addLink(s1, s2) self.addLink(s1, s3) self.addLink(s1, s4) self.addLink(s2, s4) self.addLink(s2, s5) self.addLink(s3, s4) self.addLink(s4, s5) topos = { 'mytopo2': ( lambda: MyTopo2() ) } Hình 2.4 Topology switch, host Sau tạo file “topo2.py” ta thực lệnh sau để tạo mininet (sinh viên hồn thành nốt dịng lệnh): sudo mn custom topo2.py –-topo mytopo2-—controller remote 14 Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Tiếp theo, chạy module POX controller để tạo bắc cầu tối thiểu làm phần IV Sau kiểm tra lại đồ hình mạng xem kết nối switch bị chặn IV KẾT LUẬN Qua thí nghiệm này, sinh viên làm quen với POX, controller phổ biển SDN, đồng thời hiểu rõ chế tạo module Spanning_tree POX V CÂU HỎI KIỂM TRA Tại phải tạo MST? Do Switch đến nối theo vịng lặp (loop), gói tin ARP Request từ host đến Switch bị brondcast toàn mạng, gói tin đến switch khác, lại tiếp tục brondcast, gói tin bị nhân lên nhiều lần, gây tải cho Switch mạng Cây MST có module spanning tree giúp block cổng vòng lặp, tránh nguy Switch bị hạ, gây tải Cây MST sử dụng graph cho thuật toán định tuyến Đây sở định tuyến ứng dụng nhiều quy hoạch mạng ứng dụng thức tiễn khác Giao thức LLDP (Link Layer Discovery Protocol) giao thức gì? Được sử dụng nào? Mơ tả hoạt động cụ thể giao thức LLDP Giao thức LLDP dùng để Switch giao tiếp với controller( cụ thể POX) Khi đồ hình mạng( topology) thay đổi có thiết bị đệm vào topology, tin LLDP sử dụng cho q tình trao đổi thơng tin Switch với controller Trên Hình 2.3, điền cổng (port) switch tương ứng với kết nối switch với thành phần khác mạng Sinh viên ghi thơng tin sau vào Hình 2.4: Địa IP thành phần mạng Các giao diện Các cổng Switch Các giao diện bị chặn (gạch chéo lên hình) sau thực thủ tục spanning_tree 15 .. .Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội BÀI THÍ NGHIỆM TẠO TOPOLOGY BẰNG MININET I MỤC ĐÍCH THÍ NGHIỆM Bài thí nghiệm giúp... tuyến switch tạo lưu lượng Bài thí nghiệm môn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội Các thành phần POX: Bài thí nghiệm mơn Cơ sở Truyền số liệu (ET4070)... flow-entry phút Bài thí nghiệm môn Cơ sở Truyền số liệu (ET4070) Viện Điện tử - Viễn thông Đại học Bách khoa Hà Nội BÀI THÍ NGHIỆM TAO CÂY BẮC CẦU TỐI THIỂU I MỤC ĐÍCH THÍ NGHIỆM Bài thí nghiệm giúp