Bên cạnh SIP và Diameter, IMS còn sử dụng nhiều giao thức khác nhƣ:
-Giao thức dịch vụ chính sách mở thông thƣờng COPS (Common Open Policy Service): dùng để truyền tải chính sách giữa các điểm quyết định dịch vụ PDPs (Policy Decision Points) và các điểm thực hiện chính sách PEP (Policy Enforcement Points).
42
-H.248 (ITU- khuyến nghị H248): đƣợc sử dụng ởi các n t áo hiệu điều khiển các n t trong m t phẳng media.
- Giao thức truyền tải thời gian thực (RTP- Realtime Transport Protocol, RFC 3550) và RCTP (giao thức điều khiển RTP, RFC 3550) dùng để truyền tải media nhƣ video, audio…
43
CHƢƠNG 3. CÔNG NGHỆ OPENFLOW
Có thể nói, ngày nay mạng internet là một phần không thể thiếu trong đời sống hàng ngày của chúng ta. Hầu hết các máy tính cá nh n ngày nay đều đƣợc kết nối tới mạng Internet – đ y là mạng lớn nhất trên thế giới. Sự kết nối này ngày càng quan trọng hơn, nó giúp các công ty hay các trƣờng đại học thu đƣợc hiệu quả cao trong công việc và th c đẩy năng suất lao động. Việc đƣợc kết nối tới hàng triệu ngƣời dùng khác đã mở ra các cơ hội to lớn cho những ngƣời dùng cá nhân.
Sự phát triển này dẫn tới có nhiều nhà mạng và công ty sản xuất thiết bị mạng cũng nhƣ các phần mềm và các giao thức đƣợc đồng bộ với nhau. Trải qua nhiều năm, các thiết bị mạng và phần mềm đã đƣợc chuẩn hóa. Chính điều này đã làm dẫn đến tình trạng khó khăn cho các nhà nghiên cứu có thể có một tác động đáng kể lên sự phát triển của các công nghệ mạng.
Để việc trải nghiệm có kết quả, các nhà nghiên cứu cần truy nhập tới phần cứng mạng, ví dụ nhƣ các thiết bị chuyển mạch. Phần cứng có khả năng làm việc ở tốc độ đƣờng truyền nói chung là rất hạn chế cho các thử nghiệm của các nhà nghiên cứu bởi sự cạnh tranh trên thị trƣờng là rất khó khăn và các nhà cung cấp không muốn để mở ra các giải pháp chuyên sâu của họ, đối thủ cạnh tranh có thể phân tích sao chép hệ thống của họ theo cách này. Bởi vậy, các hệ thống mở là hết sức cần thiết cho các nhà nghiên cứu để thực hiện các thử nghiệm trong các điều kiện thực tế.
OpenFlow là một phƣơng thức để giải quyết vấn đề này. Đ y là một phƣơng thức mà các nhà sản xuất thiết bị cho phép các nhà nghiên cứu truy nhập các thiết bị theo một cách thống nhất mà không cần mở sản phẩm của họ ra. Các nhà nghiên cứu có thể tiến hành thử nghiệm với các giao thức mới trong một mạng thực tế mà không gây ảnh hƣởng tới lƣu lƣợng chạy trong mạng.
3.1 T ng quan về sự phát triển OpenFlow
Chuẩn OpenFLow đƣợc phát triển đầu tiên tại trƣờng đại học Stanford, hiện đang đƣợc duy trì bởi tổ chức phi lợi nhuận là hiệp hội mạng mở (ONF). ONF đƣợc
44
thành lập tháng 3 năm 2011 ởi : Deutsche Telekom, Facebook, Google, Microsoft, Verizon, và Yahoo. Đ y là 6 công ty vận hành các mạng lớn nhất thế giới. Ngoài ra còn có các công ty phần cứng lớn trên thế giới cũng là thành viên của tổ chức này nhƣ: Cisco, Brocade, Broadcom và Juniper. Mục tiêu là để tổ chức và phát triển các phƣơng thức mới trong mạng điều khiển bằng phần mềm SDN. SDN là cách để điều khiển mạng bằng cách sử dụng phần mềm tập trung để giám sát các thiết bị chuyển mạch thực tế. Hình sau mô tả sơ đồ của một thiết bị chuyển mạch OpenFLow: Kênh bảo mật (Secure channel) Bảng luồng(Flow table) SW HW OpenFlow Protocol/ SSL Bộ chuyển mạch OpenFlow Internet
Hình 3.1 Kiến trúc mẫu OpenFlow switch
Một phần mềm điều khiển truy nhập bộ chuyển mạch sử dụng giao thức OpenFLow trên kênh kết nối bảo mật. Kênh này đƣợc mã hóa dùng công nghệ SSL. Bộ chuyển mạch thực hiện các quyết định chuyển tiếp bằng cách tìm kiếm trong bảng flow. Giao thức OpenFlow cho bộ điều khiển tập trung truy nhập bảng này.
3.2 Kiến tr c chung
Xét một mô hình mạng OpenFlow đơn giản nhƣ hình trên Hình 3.1.
Nó gồm một bộ điều khiển tập trung và một ho c nhiều thiết bị chuyển mạch kết nối với các máy tính. Bộ điều khiển giao tiếp với các thiết bị chuyển mạch dùng controlpath. Các máy tính giao tiếp với nhau dùng Datapath. Các gói tin đến thiết bị chuyển mạch qua datapath đƣợc gửi tới bộ điều khiển dùng controlpath. Bộ điều
45
khiển quyết định đích nơi các gói tin đến qua Datapath và chỉ dẫn cho các bộ chuyển mạch dùng controlpath. Các bộ chuyển mạch đƣợc phân biệt bởi các chỉ số nhận dạng datapath ID. Datapath ID là các giá trị Hexa gồm 48 bits, và là duy nhất giữa các bộ chuyển mạch trong mạng OpenFlow. Khi nào phần mềm của bộ chuyển mạch khởi động, nó phải đƣợc gắn với một datapath ID. Các kết nối giữa các bộ chuyển mạch và khối điều khiển có thể làm việc với nhau theo 2 cách:
Out-of-band: sự giao tiếp dùng một mạng tách riêng khỏi datapath. Điều này
làm cho giao diện mạng riêng cho mạng này cần thiết và không đƣợc sử dụng trong datapath.
In-band: khối điều khiển đƣợc kết nối thông qua một giao diện là một phần
của datapath. Controlpath và datapath sử dụng chung giao diện.
Hình 3.2 Mô hình mạng OpenFlow đơn giản
Trong hình trên là một mạng có một khối điều khiển out-of- and, lƣu lƣợng controlpath và datapath là hoàn toàn tách biệt nhau. Sơ đồ mô tả tuần tự các hoạt động diễn ra khi một gói tin tới một bộ chuyển mạch OpenFlow nhƣ sau:
46
Hình 3.3 Thứ tự các hoạt động của một gói tin tới bộ chuyển mạch.
Một luồng (flow) trong mạng là một chuỗi các gói tin từ một máy nguồn tới một máy đích có cùng sự truyền dẫn giống nhau. Ví dụ dòng dữ liệu đa phƣơng tiện tạo ra một luồng các gói tin vận chuyển dữ liệu đa phƣơng tiện trên mạng. Trong các gói tin OpenFlow đƣợc phân loại thuộc về cùng một luồng xác định và tất cả các quyết định đƣợc áp dụng cho luồng đó thay vì áp dụng cho một gói tin. Điều này
47
làm giảm tải cho các khối điều khiển và các bộ chuyển mạch. Mô tả của các luồng gồm địa chỉ MAC, IP, số port của lớp giao vận và các thông số khác của hai host khi truyền tin. Các mô tả này đƣợc lƣu trữ trong bảng luồng của bộ chuyển mạch. Khi một gói tin tới một bộ chuyển mạch, nó tìm trong bảng luồng để tìm ra luồng phù hợp cho gói tin. Nếu tìm thấy luồng phù hợp, các hành động phù hợp đƣợc tiến hành, gói tín có thể đƣợc chuyển mạch tới một cổng xác định.
Nếu không tìm thấy luồng nào, gói tin đƣợc gửi tới khối điều khiển và xử lý. Khối điều khiển quyết định các hoạt động sẽ đƣợc thực hiện cho gói tin và gửi các thông tin xử lý tới bộ chuyển mạch cùng với gói tin để bộ chuyển mạch thực hiện. Khối điều khiển có thể cài thêm một luồng, đó là một chỉ mục trong bảng luồng của bộ chuyển mạch, cùng với các hoạt động mà bộ chuyển mạch có thể thực hiện với các gói tin trong luồng đó.
Chuẩn OpenFlow định nghĩa một giao thức đƣợc sử dụng trên controlpath để truyền thông giữa các bộ chuyển mạch và khối điều khiển. Với giao thức này, khối điều khiển có thể truy nhập đƣợc bảng luồng của các bộ chuyển mạch. Các luồng có thể đƣợc thêm, sửa chữa, xóa bỏ khỏi bảng luồng nhờ giao thức OpenFlow.
Các phần quan trọng của hệ thống OpenFlow là bảng luồng, giao thức, khối điều
khiển, và các bộ chuyển mạch. 3.2.1 ảng luồng (Flow ta le)
Bảng luồng là thực thể trung tâm của các bộ chuyển mạch trong hệ thống OpenFlow. Mỗi chỉ mục mô tả một luồng mạng xác định và các hành động cần làm với luồng đó. Bảng luồng gồm 3 cột: Trƣờng mào đầu (Header), các bộ đếm (Counters), và các hành động (Actions).
Hình 3.4 Bảng luồng gồm 3 thành phần
Sự mô tả thông tin luồng nằm trong trƣờng mào đầu. Các thông tin trong mào đầu của gói tin đƣợc so sánh với các thông tin đã iết nằm trong cột trƣờng mào đầu và
48
đƣợc đối chiếu với một chỉ mục trong bảng luồng. Bộ đếm là các giá trị đếm số gói tin đối chiếu trùng khớp. Cột Actions gồm các hành động đƣợc định nghĩa trƣớc mà các các gói tin thuộc luồng đó sẽ phải tuân theo luồng.
Sau đ y là các mô tả chi tiết về các trƣờng này.
3.2.2 Đối chiếu các luồng (Matching flows)
Header Fields trong bảng luồng gồm các trƣờng mà gói tin đến đƣợc so sánh với:
- Cổng đến bộ chuyển mạch
- Địa chỉ nguồn và đích IEEE 802.3 Ethernet (MAC)
- Loại Ethernet IEEE 802.3
- VLAN ID và mức ƣu tiên IEEE 802.1Q
- Địa chỉ IP nguồn và đích
- Trƣờng IP proto
- IP Type Of Service (TOS) bits
- Các cổng TCP/UDP nguồn và đích.
Các gói tin có thể đƣợc đối chiếu với các trƣờng khác nhau qua mỗi lớp của mỗi gói tin từ lớp liên kết dữ liệu tới lơp giao vận cũng nhƣ trên cổng incoming bộ chuyển mạch. Giá trị đ c biệt ANY có thể đƣợc sử dụng để đối chiếu bất kỳ nội dung nào trong các trƣờng của 1 gói tin.
Cổng ảo (Virtual port) Mô tả
Yêu cầu chuẩn hóa
ALL Gửi gói tin ra ngoài mỗi giao diện trừ giao diện đã
nhận gói tin.
CONTROLLER Đóng gói gói tin và gửi nó tới khối điều khiển
dùng giao thức OpenFlow.
LOCAL Chuyển tiếp gói tin tới ngăn xếp mạng cục bộ nới
nó đƣợc xử lý thêm.
TABLE Thực hiện các hành động nhƣ mô tả trong bảng
luồng, chỉ với các bản tin Packet-out.
IN_PORT Gửi gói tin ra ngoài cổng nó đi vào.
49 NORMAL
Gửi gói tin tới đƣờng ống xử lý thông thƣờng của bộ chuyển mạch. Chủ yếu dành cho phần cứng của các bộ chuyển mạch hỗ trợ OpenFlow.
FLOOD
Gửi gói tin ra ngoài theo cây spanning tree nhỏ nhất. Các cổng OpenFlow cho phép các bộ chuyển mạch 1 bít NO_FLOOD, chỉ ra port không thuộc về cây spanning tree nhỏ nhất. Các gói so sánh với các chỉ mục có hoạt động này đƣợc gửi sau đó ra ngoài port của bộ chuyển mạch mà không thiết lập bit NO_FLOOD, không gồm port mà gói tin nhận đƣợc trên đó.
Bảng 3.1 Danh sách các cổng ảo cho các hoạt động chuyển tiếp được mô tả trong chuẩn OpenFlow
3.2.3 Các hoạt động thực hiện tr n luồng
Nếu một gói tin so khớp với một chỉ mục trong bảng luồng, không có ho c có nhiều hành động đƣợc thực hiện với gói tin. Chuẩn OpenFlow phân biệt giữa các hành động cần thiết mà một bộ chuyển mạch phải hỗ trợ và các hành động lựa chọn có ích nhƣng không nhất thiết phải hỗ trợ trong bộ chuyển mạch OpenFlow.
Một bộ chuyển mạch phải hỗ trợ việc chuyển tiếp các gói tin tới mỗi cổng vật lý. Ngoài ra còn có các cổng ảo đ c biệt nhƣ đã mô tả là các đích đến đ c biệt mà gói tin sẽ đƣợc chuyển tới nhƣ đề cập trong bảng trên.
Bên cạnh đó hành động DROP sẽ đƣợc thực hiện cho danh sách không có hành động nào. Các gói tin so khớp với môt chỉ mục trong bảng luồng mà có các hành động để trống sẽ bị hủy.
Hành động Enqueue đƣợc sử dụng cho đ t các gói tin trong hàng đợi mà gắn với một cổng và cung cấp cơ chế hỗ trợ QoS.
Hành động Modify-Field có thể đƣợc dùng để thay thế các thuộc tính của gói tin. Các thay đổi sau đối với một gói tin có thể thực hiện bởi hoạt động này:
- Thiết lập VLAN ID và mức ƣu tiên
- Bóc mào đầu VLAN
- Thay đổi địa chỉ MAC nguồn
- Thay đổi địa chỉ MAC đích
50
- Thay đổi địa chỉ IPv4 đích
- Thay đổi các bít IPv4 ToS
- Thay đổi cổng nguồn lớp giao vận
- Thay đổi cổng đích lớp giao vận
3.2.4 Thống k luồng
Chuẩn OpenFlow chuẩn hóa một số giá trị thông kê mà một bộ chuyển mạch phải cho biết. Các bộ đếm Counters đƣợc duy trì trên một số biến trên mỗi bảng, mỗi cổng, mỗi luồng và mỗi hàng đợi nhƣ trong ảng sau. Nếu giá trị bộ đếm không có trong bộ chuyển mạch, giá trị -1 sẽ đƣợc trả về.
51
3.3 Giao thức OpenFlow
Chuẩn OpenFlow mô tả đ y là giao thức đƣợc sử dụng cho giao tiếp trên controlpath.
Các bộ chuyển mạch dùng giao thức này để báo hiệu sự tồn tại của chúng với khối điều khiển, và để chuyển tiếp các gói tin mà không tìm thấy sự so khớp trong bảng luồng tới bộ điều khiển để bộ điều khiển quyết định hành động nào sẽ đƣợc thực hiện. Khối điều khiển dùng giao thức này để tạo, biên tập, xóa các luồng trong bảng luồng chuyển mạch và tập hợp các thông tin thống kê từ bộ chuyển mạch.
Có 3 loại bản tin khác nhau:
Bản tin bộ điều khiển – bộ chuyển mạch (Controller-To-Switch)
Bản tin không đồng bộ (Asynchronous)
Bản tin đối xứng (Symmetric)
3.3.1 Các ản tin Controller-To-Switch
Các bản tin này đƣợc khởi tạo bởi khối điều khiển và đƣợc gửi tới bộ chuyển mạch. Chúng có thể không nhất thiết phải yêu cầu một bản tin trả lời từ bộ chuyển mạch. Có các loại bản tin sau:
Features: Khi một bộ chuyển mạch kết nối tới khối điều khiển, khối điều
khiển truy vấn các đ c tính của nó. Bộ chuyển mạch trả lời với bản tin Features Reply và liệt kê các khả năng của nó, ví dụ nhƣ các cổng nó đề xuất.
Configuration: thiết lập và truy vấn các tham số cấu hình của một bộ chuyển
mạch. Bộ chuyển mạch chỉ trả lời khi đƣợc hỏi.
Modify-State: Thêm ho c xóa các luồng trong bảng luồng của bộ chuyển
mạch ho c thiết lập các thuộc tính của cổng.
Read-State: Khối điều khiển hỏi các giá trị thống kê từ bảng luồng các bộ
chuyển mạch. Bộ chuyển mạch trả lời với các giá trị tƣơng ứng.
Send-Packet: Một gói tin đƣợc đóng gói trong ản tin này đƣợc gửi ra ngoài
52
Barrier: Khối điều khiển có thể gửi một bản tin Barrier Request để bảo đảm
các bản tin đƣợc gửi trƣớc khi yêu cầu này đƣợc thực thi bởi bộ chuyển mạch trƣớc khi các bản tin mới đến sau khi bản tin Barrier Request đến. Bộ chuyển mạch gửi bản tin Barrier Relay khi thực thi thành công các bản tin.
3.3.2 Các ản tin không đồng ộ
Các bản tin này đƣợc gửi từ bộ chuyển mạch tới khối điều khiển để thông báo các sự cố. Có các loại bản tin sau:
Packet-In: Nếu một gói tin nhận đƣợc trên một cổng bộ chuyển mạch và
không có chỉ mục trong bảng luồng, bộ chuyển mạch sẽ đóng gói gói tin và gửi nó tới khối điều khiển để kiểm tra thêm. Nếu bộ chuyển mạch có khả năng lƣu trữ tạm, chỉ một phần của gói tin (m c định 128 bytes) sẽ đƣợc gửi tới khối điều khiển. Hành động chuyển tiếp gói tin tới Controller cũng sẽ tạo ra một bản tin Packet-In.
Flow-Remove: Các chỉ mục trong bảng luồng đƣợc thêm với các giá trị
thời gian timeout và idle sau khi ch ng đƣợc tự động xóa bỏ. Các sự kiện này đƣợc thông báo tới khối điều khiển bởi các bản tin Flow-Remove.
Port-Status: Khi các cổng của một bộ chuyển mạch thay đổi trạng thái,
các bản tin Port-Status đƣợc gửi từ bộ chuyển mạch tới khối điều khiển để thông báo.
Error: Tạo ra khi có lỗi xuất hiện trên bộ chuyển mạch, và khối điều
khiển đƣợc thông báo nhờ bản tin này.
3.3.3 Các ản tin đối xứng
Các bản tin đối xứng đƣợc trao đổi giữa khối điều khiển và bộ chuyển mạch theo cả hai chiều. Có các loại bản tin sau:
Hello: Khi có một kết nối đƣợc thiết lập giữa bộ chuyển mạch và khối
điều khiển, các bản tin Hello đƣợc trao đổi.
Echo: Để đo lƣờng sức sống, độ trễ, ăng thông các yêu cầu phản hồi và