Diameter Translation Agent là thành phần thực hiện việc chuyển đổi dịch vụ giữa Diameter và một giao thức thực hiện chức năng AAA khác. Translation Agent sử dụng để tƣơng thích với các dịch vụ trên cơ sở hạ tầng mạng sẵn có phỗ iến nhƣ RADIUS, TACACS,….
2.2.3 ản tin Diameter
Bản tin Diameter chứa một header và một số c p giá trị thuộc tính AVP. Header gồm nhiều trƣờng với dữ liệu dạng nhị ph n giống header của giao thức IP.
Hình 2.7 Cấu trúc bản tin trong giao thức Diameter
Diameter Header chứa các trƣờng: vertion, Message Length, application ID, Hop- by-hop Identifier, end-to-end identifier. Trƣờng vertion cho iết phiên ản hiện tại của giao thức là 1. Message cho iết chiều dài ản tin. Appliction ID chứa loại ứng dụng đƣợc phục vụ. Hai trƣờng cuối dùng để xác định ngƣời dùng và địa chỉ ch ng kế tiếp trong đƣờng đi.
40
AVP chứa thông tin chứng thực, ủy quyền, và thông tin về tài khoản ngƣời dùng để định tuyến, ảo mật, thông tin cấu hình có liên quan đến yêu cầu và đáp ứng ản tin. Mỗi AVP chứa AVP header và AVP data.
AVP Header chứa AVP code để xác định thuộc tính của trƣờng Vendor-ID, AVP length: chiều dài của AVP data, AVP Flag qui định về mã hóa, có nhận hay chuyển ản tin,…
Trƣờng AVP data có thể là rỗng ho c nhiều octet chứa thông tin về thuộc tính cụ thể. Định dạng và chiều dài của trƣờng này đƣợc xác định ởi trƣờng AVP Code và AVP Length. Định dạng của trƣờng này là một trong những dạng dữ liệu chuẩn sau đ y: OctetString, Interger32, Interger64, Unsigned32, Unsigned64, Float32, Float64, Grouped…Để tìm hiểu kỹ về các dạng dữ liệu này, có thể tham khảo [RFC 3588 . Trong trƣờng hợp cần có một dạng dữ liệu cơ ản mới cho AVP Data thì một phiên ản RFC mới hơn phải đƣợc tạo ra.
2.2.4 Khả năng kiểm soát l i của giao thức Diameter
Lỗi trong giao thức Diameter chia thành 2 loại: lỗi giao thức và lỗi ứng dụng
Lỗi giao thức
Xảy ra ở cấp độ giao thức cơ ản nhƣ lỗi định tuyến. Khi xuất hiện lỗi, it E trong trƣờng Command Flag của Diameter Header trong ản tin đáp ứng sẽ đƣợc ật lên 1 và gởi trở lại theo đƣờng đến.
41
Lỗi ứng dụng
Xảy ra ở các ứng dụng của Diameter nhƣ chứng thực User, mất gói AVP. Khi xuất hiện lỗi, it R trong Command Flag trong ản tin đáp ứng đƣợc ật lên 1 và gởi lại cho User khởi tạo không thông qua Agent
Hình 2.9 Lỗi ứng dụng trong giao thức Diameter
Các ản tin đáp ứng lại trong trƣờng hợp có lỗi:
Bản tin Nhóm Ý nghĩa
1xxx Thông tin Cần thêm thông tin để hoàn tất yêu cầu
2xxx Thành công Yêu cầu đã đƣợc thành công
3xxx Lỗi giao thức Lỗi tại những n t mạng
4xxx Thất ại tạm thời Yêu cầu thất ại nhƣng có thể thành công ở
thời điểm khác
5xxx Thất ại Yêu cầu thất ại
Bảng 2 3: Bản tin đáp ứng trong trường hợp có lỗi xảy ra
2.3 Các giao thức khác
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)