Báo Cáo Tìm Hiểu Về Nox Pox Controller Ryu Controller.pdf

23 0 0
Tài liệu đã được kiểm tra trùng lặp
Báo Cáo Tìm Hiểu Về Nox Pox Controller Ryu Controller.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

Lâm Thiên Phong - 20021567

Trang 2

3.5.2: Mô hình chương trình ứng dựng Ryu 16

3.6: Tham chi u API giao th c OpenFlowếứ 17

3.6.1: Lớp cơ sở cho b n tin OpenFlow 17

3.6.2: Functions 18

3.7: K t qu ếả chạy mô ph ng các module c a ryuỏủ 19

Tài li u tham khệảo:, 21

Trang 3

2

1: SDN Controller

SDN controller là một ứng d ng hoụ ạt động như bộ não của mạng điều khiển mềm, nó hoạt động như một điểm ki m soát toàn b ể ộ hoạt động c a m ng ủ ạ

SDN controller là lo i hạ ệ điều hành cho mạng mà m i giao ti p gi a các ng d ng ọ ế ữ ứ ụ và thi t b phế ị ải đi qua Bộ điều khi n nể ằm giữa các thi t bị m ng một bên và lớp ng ế ạ ứ d ng ụ ở phía bên kia, d ch các yêu c u t lị ầ ừ ớp ứng d ng và quụ ản lý điều khiển lu ng sang ồ các thi t b mế ị ạng (thông qua API hướng nam) và cung c p cho ng d ng SDN ch ấ ứ ụ ế độ xem trừu tượng về logic m ng và nghiạ ệp v (thụ ông qua API hướng b c) Bắ ộ điều khiển SDN xác định các luồng dữ liệu xảy ra trong m t ph ng d ặ ẳ ữ liệu SDN M i lu ng ỗ ồ qua mạng trước tiên phải được s cho phép ự

c a b ủ ộ điều khi n theo chính sách m ng Hình 1: ể ạ Kiến trúc c a SDN controllerủ N u b ế ộ điều khi n cho phép m t lu ng, nó s tính toán m t tuyể ộ ồ ẽ ộ ến đường cho luồng đi và thêm một mục nh p cho lu ng ậ ồ đó trong mỗi switch d c theo ọ đường d n V i t t c các chẫ ớ ấ ả ức năng phứ ạp c t đượ ổc t ng h p b i b ợ ở ộ điều khi n, các thi t b chuy n m ch ch ể ế ị ể ạ ỉ đơn giản là qu n lý các b ng lu ng ả ả ồ mà các m c nh p ch có th ụ ậ ỉ ể được điền b i b ở ộ điều khi n ể

Giao ti p gi a bế ữ ộ điều khi n và thi t b chuy n m ch s d ng giao thể ế ị ể ạ ử ụ ức và API được tiêu chu n ẩ hóa Bộ điều khi n SDN ph c vể ụ ụ như một lo i hạ ệ điều hành cho m ng T t c các giao ti p giạ ấ ả ế ữa các ng d ng và thi t b phứ ụ ế ị ải đi qua bộ điều khi n Giao th c OpenFlow k t n i ph n mể ứ ế ố ầ ềm điều khi n v i các thi t b mể ớ ế ị ạng để ph n m m máy ch có th cho các thi t b chuy n m ch biầ ề ủ ể ế ị ể ạ ết nơi g i các gói Bử ộ điều khi n s d ng giao thể ử ụ ức OpenFlow để ấ c u hình các thi t b m ng và chế ị ạ ọn đường d n t t nhẫ ố ất cho lưu lượng ứng d ng B i vì kụ ở ế hoạch điều khi n mể ạng được th c hi n trong ự ệ ph n mầ ềm, lưu lượng m ng có th ạ ể được quản lý năng động hơn và ở ứ m c chi tiết hơn nhiều 2: Nox/Pox Controller

2.1: Nox Controller

NOX là bộ điều khi n ể OpenFlow đầu tiên, được phát tri n b i Nicira và tr thành m t ngu n m ể ở ở ộ ồ ở vào 2008 Sau đó được mở rộng và hỗ trợ bởi ON, hoạt động phòng thí nghiệm tại Đại học Stanford, UC Berkeley và ICSI

Những người xây dựng khung SDN đã tập hợp vào năm 2011 và thành lập Trung tâm nghiên cứu mạng mở (ONRC) và ON Lab (Open Network Lab) để ậ t p trung, phát tri n, tri n khai và hể ể ỗ trợ các công c và n n t ng SDN ngu n m Phiên b n NOX có thụ ề ả ồ ở ả ể được định nghĩa là: 1) NOX Classic: Đây là phiên bản đã có sẵn theo GPL từ năm 2009 2) NOX: "NOX mới." Trước đây là

Trang 4

3

một n n tề ảng điều khi n m ng d a trên C ++ và hể ạ ự ỗ trợ ngôn ng l p trình Python NOX m i chữ ậ ớ ỉ hỗ trợ C ++ v i ít ng d ng mớ ứ ụ ạng hơn, nhưng nó nhanh hơn nhiều và cung cấp cơ sở mã tốt hơn so v i NOX-Classic ớ

NOX v a là bừ ộ điều khi n nguyên th y v a là khung d a trên thành phể ủ ừ ự ần để phát tri n các ng ể ứ d ng SDN Nó cung c p các mô-ụ ấ đun hỗ trợ ụ thể cho OpenFlow nhưng đã đượ c c m r ng Lõi ở ộ NOX cung cấp các phương thức trợ giúp và API để tương tác với các thi t b chuy n m ch ế ị ể ạ OpenFlow, bao g m trình x lý k t n i và x lý s ki n Các thành ph n b sung t n dồ ử ế ố ử ự ệ ầ ổ ậ ụng API đó có s n, bao g m theo dõi máy chẵ ồ ủ, định tuyến, c u trúc liên k t (LLDP) và giao diấ ế ện Python được tri n khai làm trình bao b c cho thành ph n API ể ọ ầ

Hình 2: Kiến trúc c a NOX Controllerủ

NOX thường được s d ng trong nghiên c u mử ụ ứ ạng h c thuọ ật để phát tri n các ể ứng dụng SDN như nghiên c u giao th c m ng M t tác d ng phứ ứ ạ ộ ụ ụ thực s thú v c a vi c s d ng h c thu t r ng rãi ự ị ủ ệ ử ụ ọ ậ ộ c a nó mã có sủ ẵn để mô ph ng m t switch h c t p và m t switch toàn m ng, có th ỏ ộ ọ ậ ộ ạ ể được s d ng ử ụ làm mã khởi động cho các d án l p trình và th nghi m khác nhau ự ậ ử ệ

Trang 5

4

Một số ứng d ng NOX ph bi n là SANE và Ethane SANE là m t cách ti p cụ ổ ế ộ ế ận đ đạể i di n cho ệ mạng dưới dạng một hệ thống t p Ethane là mệ ột ứng d ng nghiên c u cụ ứ ủa Đạ ọi h c Stanford v ề b o m t t p trung, toàn m ng cả ậ ậ ạ ở ấp độ ủ c a danh sách ki m soát truy c p truy n th ng C ể ậ ề ố ả hai đều chứng minh hi u qu của SDN b ng cách giệ ả ằ ảm đáng kể các dòng mã c n thiầ ết để thực hi n các ệ chức năng này cần nhiều mã hơn đáng kể để thực hi n các chệ ức năng tương tự trong quá kh Dứ ựa trên thành công này, các nhà nghiên cứu đã chứng minh các ng d ng giứ ụ ống như MPLS trên lõi NOX

NOX b m t s h n chị ộ ố ạ ế, Để giải quy t nh ng vế ữ ấn đề này, m t n n t ng m i dộ ề ả ớ ựa trên NOX đã ra đời POX, t g i mình là anh chị em c a NOX Bộ ự ọ ủ điều khi n POX là phiên b n Python thu n túy ể ả ầ của NOX Nó được biết đến như một bộ điều khi n dòng ch y m , mã ngu n m , chung, ể ả ở ồ ở được vi t bế ằng python Đó là đổi mới để ả c i thi n hi u su t c a Python NOX g c ệ ệ ấ ủ ố

2.2: Pox Controller 2.2.1: Gi i thi u chung ớệ

POX là phiên b n mả ới hơn, dựa trên Python c a NOX (hoủ ặc NOX trong Python) Ý tưởng đằng sau s phát tri n cự ể ủa nó là đưa NOX trở lại ngu n gồ ốc C ++ c a nó và phát tri n m t n n t ng dủ ể ộ ề ả ựa trên Python riêng bi t (Python 2.7) Nó có API SDN c p cao bao gệ ấ ồm biểu đồ cấu trúc liên k t có ế thể truy v n và h ợ ảo hóa ấ ỗtr

Những ưu điểm của POX:

POX có giao di n Pythonic OpenFlow ệ

POX có các thành ph n m u có th tái s dầ ẫ ể ử ụng để lựa chọn đường dẫn, khám phá cấu trúc liên k t ế

POX chạy ở ấ ứ đâu và có thể đi kèm với th i gian ch y PyPy không c b t c ờ ạ ần cài đặt để triển khai d dàng ễ

POX đặc biệt nhắm mục tiêu Linux, Mac OS và Windows POX h ỗ trợ các công c GUI và tr c quan hóa giụ ự ống như NOX POX hoạt động t t so v i các ng dố ớ ứ ụng NOX được vi t b ng Python ế ằ

Cả NOX và POX hiện đang giao tiếp với các thi t b chuy n m ch OpenFlow v1.0 và bao g m h ế ị ể ạ ồ ỗ trợ c bi t cho Open vSwitch đặ ệ

Không có GUI chính th c cho POX, m c dù các d án c a bên th ba, ch ng hứ ặ ự ủ ứ ẳ ạn như POXDesk1, tồn tại Đặc bi t, POXDesk cung c p chệ ấ ức năng cơ bản, ch ng hẳ ạn như trực quan hóa các b ng ả luồng, các s kiự ện được ghi l i và c u trúc liên k t m ng Giao ti p gi a POXDesk và lõi c a POX ạ ấ ế ạ ế ữ ủ sử d ng API REpresentational State Transfer (REST) có s n vụ ẵ ới b ộ điều khi n ể

2.2.2: Kh i ch y pox ởạ

“pox.py” khởi động POX Nó lấy một danh sách các tên thành phần trên dòng lệnh, định vị các thành ph n, gầ ọi hàm “launch()” của chúng (n u nó t n tế ồ ại), và sau đó chuyển sang ng thái "up" trạ N u chế ạy “./pox.py”, nó sẽ cố gắng tìm một trình thông d ch Python 3 thích hị ợp Đặc bi t, n u có ệ ế một bản sao của PyPy trong thư mục POX chính, nó s s d ng bẽ ử ụ ản sao đó (để tăng hiệu su t tiấ ềm năng lớn) N u không, nó s tìm ki m nhế ẽ ế ững th g i là python3 và quay tr l i python T t nhiên, ứ ọ ở ạ ấ

Trang 6

5

cũng có thể gọi trình thông dịch Python mong muốn theo cách thủ công (ví dụ: python3 pox.py) Dòng l nh POX tùy ch n bệ ọ ắt đầu v i các tùy ch n riêng c a POX Ti p theo là tên c a m t thành ớ ọ ủ ế ủ ộ ph n POX, có thầ ể được theo sau b i các tùy ch n cho thành phở ọ ần đó Điều này có thể được theo sau b i các thành ph n khác và các tùy ch n c a chúng ở ầ ọ ủ

2.2.3: Các thành ph n c a pox ầủ

Các thành ph n POX vầ ề cơ bản là các mô-đun Python với một vài quy ước dành riêng cho POX Chúng được tìm kiếm ở mọi nơi mà Python thường nhìn, c ng vộ ới các thư mục pox và ext Do đó, có th ể làm như sau:

./pox.py forwarding.l2_learning

Có th chuyể ển các tùy ch n cho các thành ph n b ng cách chỉ nh các tùy ch n sau tên thành ọ ầ ằ đị ọ phần Chúng được chuy n n hàm launch() c a mô-ể đế ủ đun tương ứng Ví d : n u mu n ch y POX ụ ế ố ạ dưới d ng b ạ ộ điều khiển OpenFlow và địa ch ỉ điều khi n ho c cể ặ ổng mà nó s d ng, có th chuyử ụ ể ển chúng dưới dạng tùy chọn cho thành phần openflow.01:

./pox.py openflow.of_01 address=10.1.1.1 port=6634

Làm vi c v i POX: The POX Core objệ ớ ect

POX có một đối tượng gọi là "core", đóng vai trò là điểm trung tâm cho phần lớn API của POX M t sộ ố chức năng mà nó cung cấp ch là các trình bao b c thu n ti n xung quanh ỉ ọ ậ ệ các chức năng khác và một số chức năng là duy nhất Tuy nhiên, m t trong nhộ ững mục đích chính khác của đối tượng cốt lõi là cung cấp điểm hẹn giữa các thành phần Thông thường, thay vì s d ng các câu lử ụ ệnh import để ộ m t thành ph n nh p m t thành ph n khác ầ ậ ộ ầ để chúng có th tương tác, các thành phần thay vào đó sẽể tự "đăng ký" trên đối tượng c t ố lõi và các thành ph n khác s truy vầ ẽ ấn đối tượng cốt lõi M t l i th lộ ợ ế ớn cho phương pháp này là s ph thu c gi a các thành phự ụ ộ ữ ần không được mã hóa c ng và các thành ph n khác ứ ầ nhau hi n th cùng m t giao di n có th d dàng thay th cho nhau ể ị ộ ệ ể ễ ế Nghĩ theo một cách khác, điều này cung cấp một giải pháp thay thế cho không gian tên mô-đun thông thường c a Python, có ph n d s p x p lủ ầ ễ ắ ế ại hơn Nhiều mô-đun trong POX sẽ muốn truy c p vào ậ đối tượng cốt lõi Theo quy ước, điều này đang thực hi n b ng cách nhệ ằ ập đối tượng c t lõi ố như sau:

“from pox.core import core”

Trang 7

6

Làm vi c v i Addresses: pox.lib.addresses ệ ớ

Địa chỉ IPv4, IPv6 và Ethernet trong POX được đại di n bởi các lớp IPAddr, IPAddr6 và ệ EthAddr c a pox.lib.addresses Trong m t sủ ộ ố trường hợp, các định dạng địa ch khác có ỉ thể hoạt động (ví dụ: địa chỉ IP ch m-ấ quad), nhưng việc sử ụ d ng các lớp địa chỉ ph i luôn ả hoạt động Ví d : khi làm vi c vụ ệ ới địa chỉ IP:

“from pox.lib.addresses import IPAddr, IPAddr6, EthAddr ip = IPAddr("192.168.1.1")

print str(ip) # Prints "192.168.1.1"

print ip.toUnsignedN() # Convert to network-order unsigned integer 16885952 print ip.raw # Returns a length-four bytes object (a four byte string, more or less) ip = IPAddr(16885952,networkOrder=True)

print str(ip) # Also prints "192.168.1.1" !” Làm vi c v i packets: pox.lib.packet ệ ớ

Rất nhi u ng dề ứ ụng trong POX tương tác với các gói (ví d có thụ: ể muốn xây d ng các ự gói và g i chúng ra kh switch hoử ỏi ặc có th nh n chúng t m t switch thông qua b n tin ể ậ ừ ộ ả OpenFlow: mono: 'ofp_packet_in') Để ạo điề t u kiện thuận lợi cho việc này, POX có một thư viện để phân tích cú pháp và xây dựng các gói Thư viện có h ỗ trợ cho m t s ộ ố loại gói khác nhau H u h t các gói tin có m t s ầ ế ộ ố loại tiêu đề và m t s ộ ố loại t i tr ng M t payload ả ọ ộ thường là m t lo i gói tin khác Ví dụ: trong POX, người ta thường hoộ ạ ạt động v i các gói ớ :mono:'ethernet' thường chứa các gói :mono:'ipv4' (thường chứa các gói :mono:'tcp' ) T t c các lấ ả ớp gói trong POX được tìm thấy trong pox / lib / packet Theo quy ước, nhập thư viện gói POX dưới dạng:

import pox.lib.packet as pkt Làm vi c v i sockets: ioworker ệ ớ

pox.lib.ioworker ch a API cứ ấp cao để làm vi c v i các ệ ớ ổ cắm không đồng bộ trong POX G i là fire-and-forget, dử ữ liệu nhận được được đệm và callback được kích ho t khi có s n m t s ạ ẵ ộ ố

Làm vi c v i pcap/libpcap: pxpcap ệ ớ

Thư viện pcap cho Python cung cấp tất cả những điều sau: được duy trì hỗ trợ Windows, Linux và MacOS h ỗ trợ c ả chụp và tiêm có th ể chụp ở m c h p lý, cùng ứ ợ v i viớ ệc đáp ứng các m c tiêu này, pxpcap hi n th các chụ ể ị ức năng liên quan đến pcap và pcap khác, ch ng hẳ ạn như liệt kê giao di n mệ ạng và đọc / ghi các t p dệ ấu vết tcpdump / pcap Thư mục pxpcap cũng chứa m t vài thành ph n POX ti n ích ộ ầ ệ nh có thỏ ể dùng làm ví dụ n u ế muốn vi t mã c a riêng mình b ng pxpcap Rõ ràng ế ủ ằ nh t trong s này có thấ ố ể được g i là "pxshark" - nó n m bọ ắ ắt lưu lượng truy c p t ậ ừ một giao di n, m x nó bệ ổ ẻ ằng thư viện gói POX và k t xu t k t qu Có thế ấ ế ả ể chạy điều này như sau: /pox.py pox.lib.pxpcap interface=eth0

Để tìm hi u thêm về các API c a POX có th truy c p: https://noxrepo.github.io/pox-ể ủ ể ậ doc/html/#pox-apis

Trang 8

7

2.2.5: Openflow in POX

Một trong nh ng mữ ục đích chính của vi c s dệ ử ụng POX là để phát tri n các ng dể ứ ụng điều khiển OpenFlow - nghĩa là nơi POX hoạt động như một bộ điều khi n cho bể ộ ch ểuy n m ch OpenFlow ạ (ho c, theo thu t ng thích hặ ậ ữ ợp hơn, đường d n d u OpenFlow) ẫ ữ liệ

Vì POX thường được sử dụng với OpenFlow, nên có một cơ chế tải nhu cầu đặc biệt, thường sẽ phát hi n khi ệ đang cố gắng s d ng OpenFlow và t i lên các thành ph n liên ử ụ ả ầ quan đến OpenFlow v i các giá tr mớ ị ặc định N u demand loading không phát hi n ra rế ệ ằng đang cố ắ g ng s d ng nó, ử ụ có th tinh ch nh thành ph n cể ỉ ầ ủa mình để làm rõ r ng (ch c n truy c p core.openflow trong hàm ằ ỉ ầ ậ kh i ch y cở ạ ủa ẽ làm điều đó) hoặ s c ch c n ch nh thành ph n "openflow" u dòng l nh ỉ ầ ỉ đị ầ ở đầ ệ Một ph n chính cầ ủa API POX OpenFlow là đối tượng "nexus" OpenFlow Thông thường, có một đối tượng duy nhất như vậy được đăng ký là core.openflow như một phần của quá trình tải nhu cầu được đề ậ ở c p trên

Thành ph n POX th c s giao ti p v i các thi t b chuy n m ch OpenFlow là openflow.of_01 (01 ầ ự ự ế ớ ế ị ể ạ đề cập đến thự ếc t là thành ph n này nói giao thức dây OpenFlow 0x01) M t l n nầ ộ ầ ữa, tính năng demand-loading thường s khi n thành phẽ ế ần này được khởi t o v i các giá tr mạ ớ ị ặc định (nghe trên c ng 6633) Tuy nhiên, có th g i nó t ổ ể ọ ự động thay vào đó để thay đổi các tùy ch n ho c n u muọ ặ ế ốn chạy nó nhi u l n (ví dề ầ ụ: để nghe trên TCP và SSL đơn giản hoặc trên nhiều cổng)

Một s ví d v openflow trong pox: ố ụ ề DPIPS in POX

Đặ ảc t OpenFlow chỉ nh r ng mđị ằ ỗi đường dẫn d li u (switchesữ ệ ) có ID đường dẫn d li u hoặc ữ ệ DPID duy nh t, là giá trấ ị 64 bit và được truy n t switch n bề ừ đế ộ điều khi n trong b ng thông báo ể ằ ofp_switch_features Nó đưa ra rằng 48 trong số các bit đó được dự định là một địa chỉ Ethernet và 16 bit được "xác định bởi người tri n khai" (trong th c tể ự ế, chúng thường ch b ng không) Vì ỉ ằ b n thân b chuy n m ch OpenFlow (ch yả ộ ể ạ ủ ếu) là "minh b ch" với m ng, nên không hoàn toàn rõ ạ ạ ràng chính xác địa chỉ Ethernet nào được cho là nằm trong các bit đó, nhưng chúng ta có thể giả định đó là một cái gì đó dành riêng cho switch Vì các đối tượng Kết nối OpenFlow (được thảo luận bên dưới) được gắn với một switch cụ ểth, DPID có sẵn trên đối tượng Kết n i b ng thu c ố ằ ộ tính dpid Ngoài ra, địa chỉ Ethernet tương ứng có sẵn bằng cách sử dụng thuộc tính eth_addr POX định nghĩa một định dạng DPID cụ thể, được triển khai trong pox.lib.util.dpid_to_str() Khi được truyền DPID trong trường hợp ph biổ ến là 16 bit "do người triển khai xác định" là 0, k t qu ế ả là m t chu i trông r t giộ ỗ ấ ống địa ch Ethernet ngo i tr thay vì d u hai chỉ ạ ừ ấ ấm phân tách byte (như POX luôn làm cho địa chỉ Ethernet), dấu gạch ngang được sử dụng thay thế

Giao ti p v i Datapath (Switch) ế ớ

Khi b n tin n t switch, chúng hi n thả đế ừ ể ị trong POX dướ ại d ng s ki n có th vi t trình x lý s ự ệ ể ế ử ự ki n - nói chung có m t lo i s kiệ ộ ạ ự ện tương ứng v i t ng lo bớ ừ ại ản tin mà switch có th g i ể ử Về cơ bản, có hai cách có th giao ti p vể ế ới đường d n dẫ ữ liệu trong POX: thông qua Connection, K nết ối cho đường d n dẫ ữ liệu cụ thể đó hoặc thông qua OpenFlow Nexus đang quản lý đường

Trang 9

8

d n dẫ ữ liệu đó Có một đối tượng K t n i cho mế ố ỗi đường d n dẫ ữ liệu được k t n i v i POX và ế ố ớ thường có m t OpenFlow Nexus qu n lý t t c các k t n i Trong cộ ả ấ ả ế ố ấu hình bình thường, có một mối quan h OpenFlow duy nh t có sệ ấ ẵn dưới d ng core.openflow Có r t nhi u s ạ ấ ề ự chồng chéo giữa K t n i và Nexus M t trong hai có th ế ố ộ ể được s dử ụng để gửi b n tin ả đến một switch và h u h t các ầ ế sự kiện được nêu ra trên c ả hai Đôi khi nó thuậ tiện hơn để sử dụng cái này hay cái kia n

Openflow Event: Respond to switch

H u h t các s kiầ ế ự ện liên quan đến OpenFlow được nêu ra để ph n h i tr c ti p v i m b n tin ả ồ ự ế ớ ột ả nhận được t mừ ột switch Theo hướng d n chung, các s kiẫ ự ện liên quan đến OpenFlow có ba thuộc tính sau:

attribute Type description

connection Connection Connection to the relevant switch (e.g., which sent message this event corresponds to)

Dpid Long Datapath ID of relevant switch (use dpid_to_str() to form it for display)

O fp ofp_header subclass OpenFlow message object that caused this evSee OpenFlow Messages for info on these objects

B n tin openflow ả

B n tin OpenFlow là cách các thi t b chuy n m ch OpenFlow giao ti p v i bả ế ị ể ạ ế ớ ộ điều khi n Các ể b n tin ả được định nghĩa trong Đặc tả OpenFlow Có nhiều phiên bản của đặc điểm kỹ thu t; POX ậ hi n h trệ ỗ ợ OpenFlow phiên b n 1.0.0 (phiên b n giao th c dây 0x01) POX ch a các l p và h ng ả ả ứ ứ ớ ằ số tương ứng với các phần tử của giao thức OpenFlow và chúng được định nghĩa trong tệp pox / openflow / libopenflow_01.py (01 đề ập đế c n phiên bản giao thức dây) Đối với hầu h t các ph n, ế ầ các tên giống như trong đặc điểm k thu t Trong mỹ ậ ột vài trường h p, POX có nh ng cái tên mà ợ ữ chúng tôi nghĩ là tốt hơn Ngoài ra, POX định nghĩa một số lớp không tương ứng với các cấu trúc c ụ thể trong đặc t ả (đặc t không mô t các c u trúc ch là mả ả ấ ỉ ột tiêu đề OpenFlow đơn giản ch ỉ được phân bi t b i thu c tính lo i tin nh n - POX làm vi c) ệ ở ộ ạ ắ ệ

Match Structure

OpenFlow xác định cấu trúc đối sánh - ofp_match - cho phép xác định m t t p hộ ậ ợp các tiêu đề cho các gói để kh p v i nhau có th xây d ng k t qu phù h p t ớ ớ ể ự ế ả ợ ừ đầu ho c s dặ ử ụng phương thức xuất để ạ t o m t k t hợp d a trên gói hi n có C u trúc trộ ế ự ệ ấ ận đấu được xác định trong pox / openflow / libopenflow_01.py trong l p ofp_match Các thu c tính c a nó có ngu n g c t các thành viên ớ ộ ủ ồ ố ừ được liệt kê trong đặc tả OpenFlow:

Trang 10

9

Attribute Meaning

in_port Switch port number the packet arrived on dl_src Ethernet source address

dl_dst Ethernet destination address dl_vlan VLAN ID

dl_vlan_pcp VLAN priority

dl_type Ethertype / length (e.g 0x0800 = IPv4) nw_tos IP TOS/DS bits

nw_proto IP protocol (e.g., 6 = TCP) or lower 8 bits of ARP opco nw_src IP source address

nw_dst IP destination address tp_src TCP/UDP source port tp_dst TCP/UDP destination port

Openflow Action

Hành động OpenFlow được áp dụng cho các gói phù hợp với quy tắc được cài đặ ại đườt t ng dẫn d ữ liệu Các đoạn mã được tìm thấy ở đây có thể được tìm th y trong libopenflow_01.py trong pox ấ / openflow

Để có th có nhi u thông tin v POX ho c đầy đủể ề ề ặ các thành phần, tính năng và các câu lệnh của POX, truy c p: ậ https://noxrepo.github.io/pox-doc/html/#

2.2.6: M t s hình nh ch y POX th c t ộ ốảạự ế

Ta t o 1 topology gạ ồm 1 controller , 2 switches và 4 hosts (như hình bên dưới)

Đầu tiên, ping các host với nhau ( khi chưa kích hoạt controller) sử ụ d ng lệnh pingall Ta thấy t ỉ lệ các packets drop là 100%

Trang 11

10

Sau đó ta thử bắt các gói tin bằng Wireshark, ta thấy wireshark không bắt được gói tin nào Tiếp theo, Ta ping các host với nhau s d ng lử ụ ệnh pingall nhưng lần này đã kích hoạt Pox controller b ng lằ ệnh “python3 pox.py forwarding.l2_learning” và s dử ụng Wireshark để ắ b t các gói tin

Ngày đăng: 04/05/2024, 12:45

Tài liệu cùng người dùng

Tài liệu liên quan