LỜI CẢM ƠN. i
LỜI CAM ĐOAN. ii
DANH MỤC HÌNH VẼ . iii
DANH MỤC BẢNG . iv
CHƯƠNG 1. GIỚI THIỆU .1
1.1 Cloud Computing (Điện toán đám mây) .1
1.1.1 Lịch sử Cloud Computing.2
1.1.2 Các mô hình Cloud Computing .3
1.2 Các mô hình triển khai Cloud Computing.5
Public Cloud.5
Private Cloud.6
Hybrid Cloud.7
CHƯƠNG 2. GIỚI THIỆU OPENSTACK VÀ OPENVSWITCH .8
2.1 Giới thiệu OpenStack.8
2.1.1 Kiến trúc OpenStack .10
2.1.2 Các dịch vụ bổ sung .16
2.1.3 Các bản tin tích hợp và trao đổi .17
2.1.4 KVM .18
2.1.5 OpenStack Network: Neutron.19
2.1.6 Network và multi-tenancy.28
2.2 OpenvSwitch.29
2.2.1 Motivation cho Open vSwitch .30
2.2.2 OpenvSwitch.31
2.2.3 Các đặc điểm của OpenvSwitch.33
2.2.4 Software Defined Network (SDN).34
2.2.5 SDN trong OpenStack.42
CHƯƠNG 3. PHƯƠNG PHÁP TIẾP CẬN VÀ TRIỂN KHAI OPENSTACK .44
3.1 Công cụ triển khai nhanh.44
3.2 Các mô hình triển khai OpenStack .44
3.2.1 Cấu hình cơ sở hạ tầng cài đặt .45
3.2.2 Máy ảo.45
3.2.3 Môi trường Single-Node .46
3.3 DevStack.46
3.3.1 Cấu hình Network .47
3.3.2 Network node.48
3.4 Cấu hình Neutron.52
                
              
                                            
                                
            
 
            
                 84 trang
84 trang | 
Chia sẻ: honganh20 | Lượt xem: 767 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu triển khai và đánh giá hiệu năng của các giải pháp networking nâng cao cho hệ thống ảo hoá sử dụng openstack, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
n (Tunneling bridge): Đảm nhận việc dịch lưu lượng truy cập được dán 
nhãn. Nó diễn giải Vlan ID thành phân đoạn và sử dụng nó sau đó để tạo đường 
hầm. Ví dụ, để sử dụng các đường hầm GRE, ID phân đoạn được sử dụng để 
chỉ định ID đường hầm. L2 agent có thể trả lời thêm để áp dụng các quy tắc 
cụm bảo mật (firewall rule) được thi hành qua Neutron bằng cách sử dụng các 
bộ IPTABLES và IP. 
Open vSwitch Agent 
 Như đã đề cập trước đó, Neutron cần các agent bổ trợ (ví dụ: neutron-
openvswitch-agent) để cho phép hypervisor và các node mạng cung cấp cấu hình 
OpenvSwitch cục bộ. OVS agent cung cấp kết nối lớp 2 giữa các máy ảo và do đó cơ 
sở hạ tầng mạng vật lý sử dụng gắn thẻ VLAN (802.1q). Nó hỗ trợ một mạng không 
được gắn thẻ (flat) và lên tới 4095 mạng được gắn thẻ (VLAN). Số lượng cụ thể của 
các mạng VLAN phụ thuộc vào cơ sở hạ tầng mạng vật lý. Sau khi nhận được một yêu 
cầu từ OVS agent, neutron-server sẽ tìm ra OVS tương ứng. Điều này chủ yếu liên 
quan đến việc đưa vào Integration bridge (br-int), để tất cả các dịch vụ mạng nội bộ và 
tenant VM được kết nối. Neutron-openvswitch agent phụ thuộc đáng kể vào API dành 
riêng cho OVS (ovs lib) để cấu hình OVS và xử lý các mục nhập riêng thông qua 2 
tiện ích ovs-vsctl và ovs-ofctl, tương ứng. Mặc dù là switch tương thích OpenFlow, 
24 
OVS hoạt động bên trong mạng neutron như một switch L2 thông thường với mỗi 
riêng và truyền thống [16]. 
Linux operative agent 
 Linux bridge agent chỉ ra các bridge Linux để cho phép sử dụng các mạng L2 
cho các tài nguyên OpenStack. Cấu hình cho Linux bridge agent thường được thực 
hiện trong tệp cấu hình linuxbridge_agent.ini. Đảm bảo rằng khi agent bắt đầu chạy ta 
cần chuyển tệp cấu hình này làm đối số [14]. 
SRIOV Nic Switch agent 
 SRIOV nic switch agent cấu hình các chức năng PCI ảo để cho phép OpenStack 
hiểu được L2 network. Mạng đính kèm cho các tài nguyên khác như bộ định tuyến, 
DHCP, sau đó sẽ không được hỗ trợ. Cấu hình cho SRIOV nic switch agent thường 
được xử lý trong file sriov_agent.ini, đảm bảo rằng khi agent bắt đầu chạy. ta cần 
chuyển tệp cấu hình này làm đối số [14]. 
MacVTap agent 
 MacVTap agent sử dụng các thiết bị MacVTap kernel để thực hiện các mạng 
L2 cho các OpenStack instance. Mạng đính kèm cho các tài nguyên thay thế như bộ 
định tuyến, DHCP, sau đó sẽ không được hỗ trợ. Tệp cấu hình cho MacVTap agent 
thường được thực hiện trong tệp macvtap_agent.ini. Chắc chắn rằng khi agent trên bắt 
đầu chạy hay truyền tệp cấu hình này như là một đối số [14]. 
2.1.5.2.5 L3 agent 
 Mặc dù L3 agent chia sẻ khá nhiều khía cạnh kiến trúc tương đương như L2 
agent, nhưng nó vẫn có một số điểm hoàn toàn khác. Với sự trợ giúp của L2 agent, ta 
có thể kết nối với các mạng với nhau. Ngược lại, L3 agent có các bộ định tuyến cho 
phép kết nối với các thành phần khác nhau. Nó chuyển dữ liệu từ một mạng sang một 
mạng khác và từ mạng của bạn ra mạng ngoài. Hình 2.6 cho phép tóm tắt các dịch vụ 
L3 cùng với các yếu tố ảo được cấu hình bởi L2 agent. L3 agent tạo các cổng nội bộ 
hoàn toàn khác nhau với các tiền tố tap cho dịch vụ DNS, qr- cho bộ định tuyến ảo 
hoặc tiền tố qg- cho một External network (công khai) [17]. Đúng như tên gọi của nó, 
neutron L3 agent (neutron-l3-agent) cấu hình cho phép một node hoạt động với các 
dịch vụ mạng lớp 3 hoàn toàn khác nhau như định tuyến, NAT và Floating IP. Theo 
mạng truyền thống, các dịch vụ L3 như vậy chạy trên node mạng và dựa vào L2 agent 
để cung cấp kết nối lớp 2 cho các VM instance chạy trên các node điện toán. Các 
Neutron L3 agent sử dụng ngăn xếp Linux IP và iptables [18] để thực hiện chuyển tiếp 
25 
L3 và NAT. Để hỗ trợ nhiều bộ định tuyến có địa chỉ IP có thể chồng lấp (overlapping 
IP address), các neutron-l3-agent mặc định sử dụng các Linux network namespace để 
cung cấp các trường hợp chuyển tiếp bị cô lập (isolated forwarding). 
Routing 
 Một network namespace giống như container hoặc VM cho thiết bị mạng, nói 
cách khác, ảo hóa ngăn xếp mạng (network stack virtualization). Tương tự như kết nối 
mạng thông thường, việc định tuyến là bắt buộc nếu các gói được gửi từ mạng con này 
sang mạng con khác, bao gồm lưu lượng giữa các máy ảo thuộc mạng con di động 
hoặc 
Hình 2.6: OpenStack Neutron L3 Agents 
giữa máy ảo và máy chủ có thể truy cập qua External network. L3 phụ thuộc vào L2 
agent, theo cách tương tự Nova phụ thuộc vào L2 agent để kết khởi tạo cổng và kết 
nối. Khi các cổng đó tồn tại, cho dù đó là cổng ovs hay cặp VETH (virtual ethernet), 
chúng có thể được chuyển vào một namespace, giống như lấy một sợi dây và cắm nó 
vào thiết bị của bạn. Sau đó, nhiệm vụ của L3 agent là cấu hình địa chỉ IP trên các giao 
diện. Nó cấu hình định tuyến, cho dù đó là bảng định tuyến cơ bản hay các tuyến bổ 
sung đã được cấu hình trên bộ định tuyến. Nó sử dụng iptables để thực hiện chức năng 
Floating IP và cung cấp một Floating IP cho bản máy ảo tương ứng. Neutron phải tìm 
26 
ra bộ định tuyến chuyên dụng cho mọi phiên bản cụ thể cần phải đi qua để đến mạng 
bên ngoài và nó sử dụng NAT để thực hiện Floating IP đó. Giả sử rằng có nhiều mạng 
người dùng và cùng chia sẻ một External network và mỗi mạng trước được kết nối với 
mạng sau thông qua bộ định tuyến ảo dựa trên Neutron. Một bộ định tuyến như vậy sẽ 
hoạt động như sau: 
• Kết nối tới mạng nội bộ (tenant) thông qua giao diện \ qg- \ (gateway) trên br-
ex 
• Kết nối tới External network thông qua cổng giao diện \ pr- \ (router) trên br-int 
(integration bridge) 
• Có một namespace (tiền tố \ qrouter- \) liên kết với tên bộ định tuyến để tránh 
các kết nối IP giữa các mạng. 
Trên bộ định tuyến, có quyền truy cập siêu dữ liệu, quyền truy cập được chia sẻ cho 
các instance không có Floating IP và tích hợp một số dịch vụ nâng cao (VPNaas và 
FWaas). 
NAT 
 Neutron-l3-agent sẽ thực thi NAT (Network Address Translation) cho bộ định 
tuyến, chức năng này sử dụng bảng định tuyến iptables của nhân Linux, cho phép các 
gói từ mạng nội bộ (tenant) được gửi ra External network thành công, trước khi đi ra 
khỏi web. Giống như định tuyến, các quy tắc NAT của bộ định tuyến phải được thực 
thi trong một namespace của bộ định tuyến cụ thể để tách chúng ra khỏi mạng máy 
chủ và mạng của các khách hàng khác sử dụng dịch vụ. 
Floating IP 
 Theo mặc định, các phiên bản máy chủ có IP mặc định được gán cho chúng. 
Nhưng nó chỉ hoạt động trong nội bộ. Một floating IP cần được gán cho instance cho 
để có thể truy cập ra bên ngoài. Compute API sẽ cung cấp một số chức năng để truy 
cập và sử dụng floating IP. IP được tạo trong mạng nơi khởi chạy máy chủ. API chọn 
floating IP có sẵn đầu tiên từ nhóm IP và liên kết nó với instance. Nếu một instance bị 
tắt hoặc xoá bỏ, floating IP của nó sẽ được sử dụng lại. Bộ định tuyến ảo cung cấp 
floating IP thông qua NAT và iptables. Dịch vụ L3 này phân bổ và liên kết các địa chỉ 
IP từ một mạng bên ngoài đến các VM thuê bên trong để cho phép chúng có thể truy 
cập trực tiếp từ một mạng bên ngoài. Như đã giải thích ở trên, neutron-l3-agent thực 
hiện floating IP cũng bằng cách sử dụng iptables để thực hiện NAT. 
2.1.5.2.6 DHCP agent 
 Neutron phụ thuộc vào DHCP agent của nó, neutron-dhcp-agent, nằm trong 
node mạng để cung cấp dịch vụ Dynamic Host Configuration Protocol (DHCP) cho 
27 
các mạng được thuê, sau đó phân bổ địa chỉ IP cho VM. đặc biệt, dnsmasq [20] được 
sử dụng làm dịch vụ back-end cho mục đích này. Đối với mỗi mạng con được tạo, có 
một trình nền dnsmasq sẽ chạy và được gắn vào int-br qua cổng với tiền tố tap- trong 
một DHCP namespace. 
2.1.5.3 Kiến trúc network 
 Có 4 loại mạng trong một cấu hình OpenStack tiêu chuẩn: Management, Guest, 
API và External networks [21] 
Management network 
 Được sử dụng để liên lạc nội bộ giữa các thành phần trong OpenStack. được sử 
dụng cho quản trị và các hoạt động nội bộ của OpenStack như xác thực, truy cập vào 
cơ sở dữ liệu nội bộ (trên Controller node), cấu hình, v.v. Khi cụm đang được thiết lập, 
tất cả các cấu hình yêu cầu kết nối nhiều node đều sử dụng Management network. Các 
địa chỉ IP trên mạng này chỉ có thể được truy cập trong trung tâm dữ liệu và được đưa 
vào trong Management Security Domain. 
Guest network (mạng khách) 
 Được sử dụng để liên lạc dữ liệu giữa các VM bên trong đám mây. Các nhu cầu 
về địa chỉ IP của mạng này phụ thuộc vào OpenStack Networking plug-in được sử 
dụng và cả các lựa chọn cấu hình mạng của các mạng ảo được tạo bởi người dùng. 
Mạng này được đưa vào Guest Security Domain. 
External network 
 Bất kỳ mạng nào được thiết lập đều có tối thiểu một External network. ngược 
lại với các mạng khác, External netowork không chỉ đơn giản là một mạng ảo được 
định nghĩa. Thay vào đó, nó thể hiện một cách nhìn vào một phần của vật lý, External 
network có thể truy cập từ bên ngoài OpenStack. Địa chỉ IP trên external network có 
thể được truy cập bởi bất kỳ ai trên mạng bên ngoài. 
 Ngoài ra, bất kỳ external network nào được thiết lập đều có một hoặc vài mạng 
nội bộ bổ sung. Các mạng định nghĩa bằng phần mềm này kết nối với các VM, chỉ các 
VM trên bất kỳ mạng nội bộ cụ thể nào hoặc các VM trên mạng con được kết nối qua 
giao diện với cùng một bộ định tuyến sẽ truy cập trực tiếp vào các máy ảo được kết 
nối với mạng. 
Nó thực chất là gateway cho phép lưu lượng truy cập từ các VM instance đến các 
mạng vật lý hay nói cách khác, nó được sử dụng để cho phép VM có quyền truy cập 
internet trong một số tình huống triển khai. Các địa chỉ IP trên mạng này cho phép tiếp 
28 
cận bởi bất kỳ ai trên internet. Như vậy, lưu lượng VM phải đi qua node hoặc các node 
có khả năng định tuyến. Mạng này được đưa vào trong Public Security Domain. 
API network 
 Đưa ra toàn bộ OpenStack API, cũng như OpenStack Networking API, tới 
người dùng. Các địa chỉ IP trên mạng này phải được tiếp cận bởi bất kỳ ai trên 
internet. Đây có thể là external network vì ta có thể tạo mạng con cho external network 
với phạm vi phân bổ IP chỉ sử dụng cho API. Mạng này được đưa vào Public Security 
Domain. 
2.1.6 Network và multi-tenancy 
 Ngoài các mạng vật lý kết nối các node khác nhau, trong OpenStack, còn có 2 
loại mạng: Mạng người dùng (tenant network) và Mạng nhà cung cấp (provider 
network) 
Mạng nhà cung cấp là một mạng nằm ngoài cụm và cho phép kết nối ra bên ngoài, 
bằng cách đi qua node mạng. Một instance ảo thậm chí có thể phân bổ (và sau đó giải 
phóng, khi không cần thiết) một floating IP trên mạng này cho phép hiển thị ra bên 
ngoài. Mạng của nhà cung cấp được tạo bởi người quản trị OpenStack. 
 Thay vào đó, mạng người dùng (còn gọi là mạng tự phục vụ) được hình thành 
bởi người dùng đám mây để kết nối bên trong các dự án. Tuy nhiên, nó thiếu kết nối 
với các mạng bên ngoài như internet, trừ khi nó sử dụng bộ định tuyến ảo kết hợp 
cổng trên mạng của nhà cung cấp. Theo mặc định, các mạng đối tượng thuê hoàn toàn 
bị cô lập và dường như không được chia sẻ với các dự án khác. Trong giai đoạn tạo ra 
một instance, một IP cố định được lấy từ mạng này (sẽ không thể sửa đổi được một khi 
tạo, do kết quả của sự trừu tượng hóa neutron đối với cổng). Hơn nữa, cần lưu ý rằng 
instance nhận IP từ máy chủ DHCP (thực sự có thể là quá trình dnsmasq [20] được tạo 
bởi DHCP agent) được cấu hình để cung cấp sao cho IP luôn luôn giống hệt nhau. 
Neutron OpenStack hỗ trợ các loại dưới đây cho tenant network. 
• Flat: Tất cả các instances nằm trong cùng một mạng, và có thể chia sẻ với máy 
chủ. Không hề sử dụng VLAN tagging hay hình thức tách biệt về network khác 
• VLAN: Cho phép các user tạo nhiều provider hoặc project network sử dụng 
VLAN IDs (chuẩn 802.1Q tagged) tương ứng với VLANs trong mạng vật lý. 
Điều này cho phép các instances giao tiếp với nhau trong môi trường đám mây. 
Chúng có thể giao tiếp với servers, firewalls, load balancers vật lý và các hạ 
tầng network khác trên cùng một VLAN layer 2 
• GRE và VXLAN: VXLAN và GRE là các giao thức đóng gói tạo nên overlay 
networks để kích hoạt và kiểm soát việc truyền thông giữa các máy ảo 
29 
(instances). Một router được yêu cầu để cho phép lưu lượng đi ra luồng bên 
ngoài tenant network GRE hoặc VXLAN. Router cũng có thể yêu cầu để kết 
nối một tenant network với mạng bên ngoài (ví dụ Internet). Router cung cấp 
khả năng kết nối tới instances trực tiếp từ mạng bên ngoài sử dụng các địa chỉ 
floating IP. 
• Local: trong loại mạng này, các instance nằm trong các máy Compute cục bộ 
và cách ly với bất kỳ mạng bên ngoài nào. 
 Bên trong một node, các luồng của tenant được phân tách bằng các VLAN ID 
được gán bên trong. Sau đó, để thực hiện liên lạc giữa các node vật lý, các luồng của 
tenant được phân tách, ví dụ, bằng VLAN ID, VXLAN ID hoặc GRE ID do người 
dùng định nghĩa, tùy thuộc vào kỹ thuật cách ly tenant được chọn. Cần lưu ý rằng dù 
bất cứ cơ chế cách ly tenant nào được sử dụng, bên trong một node OpenStack việc sử 
dụng các Vlan ID vẫn có thể tạo ra bằng cách gán tự động. Thật vậy, mặc dù một kỹ 
thuật đường hầm được sử dụng cho các tenant network, các Vlan ID vẫn quen với việc 
cô lập lưu lượng của tenant trong node. Tuy nhiên, dựa trên ý nghĩa của kỹ thuật này 
(VLAN, VXLAN, GRE, v.v.), multi-tenant đã đạt được, các cơ chế tiếp theo được yêu 
cầu để cho những người dùng khác nhau có các mạng chồng chéo. Để làm điều đó, các 
virtual router cho các tenant network sẽ vẫn được sử dụng vì các quy trình hoạt động 
như một máy chủ DHCP, được triển khai trong nhiều namespace network. Network 
namespace là khái niệm cho phép bạn cô lập môi trường mạng network trong một 
host. Namespace phân chia việc sử dụng các khác niệm liên quan tới network như 
devices, địa chỉ addresses, ports, định tuyến và các quy tắc tường lửa vào trong một 
hộp (box) riêng biệt, chủ yếu là ảo hóa mạng trong một máy chạy một kernel duy nhất. 
Mỗi network namespaces có bản định tuyến riêng, các thiết lập iptables riêng cung cấp 
cơ chế NAT và lọc đối với các máy ảo thuộc namespace đó. Linux network 
namespaces cũng cung cấp thêm khả năng để chạy các tiến trình riêng biệt trong nội 
bộ mỗi namespace. Namespace tên có thể đảm bảo sự cô lập L3, tạo ra khả năng cho 
nhiều người dùng khác nhau phải chồng chéo địa chỉ IP. Do đó, tính đa dụng đạt được 
bằng cách sử dụng các kỹ thuật như gắn thẻ Vlan và/hoặc tạo đường hầm (VXLAN, 
GRE), trong khi cách ly L3 được cấp bằng cách sử dụng nhiều Linux network 
namespace. Tuy nhiên, cần phải biết rằng Neutron cung cấp nhiều trừu tượng mạng để 
cho phép người dùng minh bạch với bất kỳ hoặc tất cả các chi tiết cấp thấp này được 
yêu cầu để cung cấp và tăng cường đa nhiệm trong hệ thống phân tán này. 
2.2 OpenvSwitch 
 Có một số công nghệ liên quan đến SDN bao gồm OpenFlow, Open vSwitch và 
OpenDaylight. Tuy nhiên, phần này chủ yếu tập trung vào Open vSwitch và SDN. 
30 
Điểm nổi bật giữa các mục quan trọng nhất của phần này là cách thức và nơi Open 
vSwitch phù hợp với OpenStack. 
2.2.1 Motivation cho Open vSwitch 
 Trình ảo hoá muốn linh hoạt kết nối lưu lượng giữa các VM và bên ngoài. Trên 
các trình ảo hóa dựa trên Linux, điều này có nghĩa là sử dụng bộ chuyển đổi L2 sẵn có 
(Linux bridge), nhanh và đáng tin cậy. Do đó, cần thiết khi hỏi tại sao Open vSwitch 
được sử dụng. 
 Câu trả lời là Open vSwitch được nhắm tới mục tiêu triển khai ảo hóa nhiều 
máy chủ, một cách thức mà các công nghệ trước đó không đáp ứng. Các môi trường 
này thường được xác định bởi các end-point cực kỳ năng động, việc duy trì logic trừu 
tượng và tích hợp (đôi khi) với đưa phần cứng chuyển đổi với mục đích đặc biệt. 
 Sau đây là các tính năng của Open vSwitch [39]: 
• Cho phép giao tiếp giữa các VM thông qua NetFlow, sFlow (R), IP Flow 
Information Export (IPFIX), Switched Port Analyzer (SPAN), Remote 
Switched Port Analyzer (RSPAN) và các cổng ánh xạ tunnel thông qua Generic 
Routing Encapsulation (GRE). 
• Link aggregation thông qua Link Aggregation Control Protocol LACP (IEEE 
802.1AX-2008) 
• Mô hình VLAN chuẩn 802.1Q với trunking 
• Multicast snooping 
• IETF Tự động đính kèm SPBM và hỗ trợ LLDP cần thiết 
• BFD and 802.1ag link monitoring 
• STP (IEEE 802.1D-1998) và RSTP (IEEE 802.1D-2004) 
• Fine-grained QoS control 
• Hỗ trợ HFSC qdisc 
• Kiểm soát lưu lượng trên mỗi VM interface 
• NIC-bonding với cân bằng tải theo MAC, active-backup và L4 hashing 
• Hỗ trợ giao thức OpenFlow (bao gồm nhiều phần mở rộng cho ảo hóa) 
• Hỗ trợ IPv6 
• Nhiều giao thức tunneling (GRE, VXLAN, STT và Geneve, với sự hỗ trợ của 
IPsec) 
• Giao thức cấu hình từ xa với thông qua C và Python 
• Tùy chọn công cụ chuyển tiếp kernel và user-space 
• Multi-table forwarding pipeline with flow-caching engine 
• Lớp chuyển tiếp trừu tượng để dễ dàng chuyển sang nền tảng phần mềm và 
phần cứng mới 
31 
2.2.2 OpenvSwitch 
 Open vSwitch là một dự án nguồn mở của một bộ chuyển mạch phân tán ảo đa 
lớp, cho phép thực hiện trình ảo hóa các lớp mạng. Điều này phục vụ cho nhiều máy 
ảo chạy trên một hoặc nhiều node vật lý bổ sung. Với sự trợ giúp của các bridge ảo, 
các máy ảo có thể giao tiếp với nhau trên cùng một node vật lý, cùng với khả năng kết 
nối của máy ảo với các cổng của bridge ảo cho phép hoạt động theo cách giống với kết 
nối của máy chủ vật lý với các cổng vật lý trên một chuyển mạch Lớp 2. Để giao tiếp 
bên ngoài hypervisor node, các bridge này kết nối các máy ảo với mạng vật lý. Trong 
OpenStack, mỗi node neutron và cả node Compute (Nova) đều đang chạy Open 
vSwitch để cung cấp các dịch vụ mạng ảo hóa [23]. 
 OVS phụ thuộc vào 2 yếu tố trong khi chuyển tiếp gói giữa các máy chủ gồm: 
virtual network bridges và các quy tắc của chúng. OVS có 3 thành phần chính gồm 
mô-đun máy chủ (ovsdb-server), chương trình deamon (ovs-vswitchd) và một kernel 
mô-đun. 
• ovs-vswitchd - Open vSwitch deamon (Slow Path): đây là mô-đun phần mềm 
thường chạy trong các máy người dùng cho phép giao tiếp với cụm điều khiển 
(control cluster), nó thường bao gồm các mô-đun quản lý mạng và một SDN 
controller, cho phép cấu hình mạng và chương trình đưa vào đường dẫn nhanh 
của kernel. 
• ovsdb-server - Open vSwitch database server, nơi mà các cấu hình và chính 
sách chuyển mạch của OVS được lưu trữ. 
• openvswitch_mod.ko - kernel module (Fast Path): đây thường là gói phần mềm 
thường chạy trên hệ điều hành hoặc hypervisor kernel để thực sự thực hiện xử 
lý gói. 
32 
Hình 2.7: Tổng quan kiến trúc Open vSwitch 
Open vSwitch là một phần mềm chuyển mạch hỗ trợ OpenFlow. 
• OpenFlow controller chịu trách nhiệm hướng dẫn cho kernel module (fast-
path) biết làm sao xử lý các loại gói khác nhau, hay còn gọi là flows. Một flow 
mô tả hành động mà kernel module thực hiện để xử lý các gói tin của cùng 
một loại như thế nào, hay còn được gọi là action. Các kiểu hành động bao gồm 
chuyển tiếp tới port khác, thay đổi vlan tag... Quá trình tìm kiếm flow khớp với 
gói tin nhận được gọi là flow matching. 
• Nhằm mục đích đạt hiệu năng tốt, một phần của flows được cache trong kernel 
module, và phần còn lại ở vswitchd. 
• Một gói tin đi vào Open vSwitch kernel module sau khi nó được nhận trên một 
card mạng. Nếu gói tin khớp với flow nào đó trong kernel module thì kernel 
module sẽ thực thi các actions tương ứng mô tả trong flow entry. Nếu không 
(flow missing), kernel module sẽ gửi gói tin lên kernel module và tiến trình 
flow-matching khác được xử lý tại đây. Sau khi ovs-vswitchd xác định làm sao 
để xử lý gói tin, nó gửi trả gói tin lại cho kernel module cùng với yêu cầu xử 
lý. Đồng thời, vswitchd cũng yêu cầu kernel module cache lại flow để xử lý 
các gói tin tương tự sau đó 
33 
Hình 2.8: Xử lý gói trong Open vSwitch 
2.2.3 Các đặc điểm của OpenvSwitch 
 Open vSwitch là một trong ba thiết bị chuyển mạch ảo phổ biến bên cạnh 
VMware và Cisco Nexus 1000V. Nicira, sau khi được VMware mua, đã tạo Open 
vSwitch để giải quyết các vấn đề của cộng đồng mã nguồn mở vì không có phần mềm 
chuyển mạch ảo đủ đáp ứng nào dành cho một trình ảo hóa dựa trên Linux, ví dụ, 
KVM và XEN. OVS đã nhanh chóng biến thành chuyển mạch ảo được chấp nhận cho 
môi trường XEN và hiện tại nó đang có tác động quan trọng đối với dự án OpenStack 
và cũng là một kiến trúc đáng chú ý trong môi trường SDN. Các đặc điểm sau đã giúp 
Open vSwitch đảm bảo các yêu cầu thiết yếu. 
• Tính cơ động của trạng thái: Tất cả các trạng thái mạng liên quan đến một 
thành phần mạng như máy ảo phải dễ dàng xác định và có thể dịch chuyển 
trong một môi trường không đồng nhất. Điều này có thể được thể hiện bằng 
"soft state" thông thường, trạng thái chuyển tiếp L3, ACL, QoS, v.v. Open 
vSwitch đã kết hợp cả cấu hình và dịch chuyển trạng thái mạng giữa các phiên 
bản. 
• Đáp ứng được các thay đổi của mạng: Các môi trường ảo thường được mô tả 
bằng tỷ lệ đa dạng hóa cao về mặt thêm/xóa VM, thực hiện các thay đổi về cấu 
hình của mạng, v.v. Open vSwitch đưa ra một nền tảng kiểm soát mạng dựa 
trên nhận biết và điều chỉnh khi môi trường thay đổi. 
• Bảo trì các thẻ logic: Các thiết bị chuyển mạch ảo phân tán, ví dụ, VMware 
vDS và Nexus 1000V của Cisco thường xuyên duy trì sự logic trong mạng 
thông qua việc gắn thêm hoặc thao tác các thẻ trong các gói mạng. Điều này có 
34 
thể được sử dụng để nhận ra VM hoặc để giữ một số cài đặt khác chỉ liên quan 
trong miền logic đó. Một phần quan trọng trong vấn đề xây dựng một chuyển 
mạch ảo phân tán là để xử lý hiệu quả và chính xác với các thẻ này. Open 
vSwitch kết hợp nhiều kỹ thuật để xác định và duy trì các quy tắc gắn thẻ, tất cả 
đều có sẵn cho một quy trình từ xa để phối hợp. 
• Tích hợp phần cứng: Đường dẫn chuyển tiếp của vSwitch mở có thể quản lý 
để "giảm tải" xử lý gói cho các thiết bị chipset, bất kể nó nằm trong khung 
chuyển đổi thiết bị cũ trong một máy chủ lưu trữ cuối. Điều này tính đến đường 
dẫn điều khiển Open vSwitch để có khả năng điều khiển cả việc thực thi phần 
mềm khi được cải tiến hoặc chuyển đổi thiết bị. Open vSwitch kiểm soát trìu 
tượng, cả môi trường lưu trữ ảo và bare-metal đều có thể được quản lý bằng 
cùng một cơ chế để điều khiển mạng tự động. 
2.2.4 Software Defined Network (SDN) 
 Nhiều công ty trực tuyến và đám mây lớn đang chuyển các trung tâm dữ liệu 
của họ sang ảo hóa để có được lợi ích từ QoS và khả năng dự đoán. Tương tự như vậy, 
mạng có độ an toàn cao và chi phí thấp là rất quan trọng. Do đó, các nhà cung cấp dịch 
vụ và các công ty mạng cần một giải pháp thay thế để sử dụng một cách thông minh và 
hiệu quả. SDN, còn được gọi là Software Defined Network được phát triển, nó là công 
nghệ mạnh mẽ có khả năng xử lý các ứng dụng thông minh cũng như nên tảng phát 
triển mạnh mẽ cho các mạng trong tương lai đồng thời giảm chi phí vận hành chỉ bằng 
cách thay đổi phần cứng và phần mềm, tăng cường và đơn giản hóa việc quản lý mạng 
bằng phần mềm [36]. Tổng quan về kiến trúc của SDN được hiển thị trong hình 2.9 
[40] 
 Thiết lập một mạng bao gồm cài đặt và cấu hình phức tạp của bộ định tuyến, bộ 
chuyển mạch và các thiết bị mạng khác và đòi hỏi một kỹ sư được đào tạo và có kỹ 
năng cao để giải quyết thực hiện. Cách tiếp cận này là cách tiếp cận dựa trên hệ thống 
và dựa trên nhà cung cấp và nó sẽ làm tăng chi phí cung cấp, chi phí nhân lực trong 
việc quản lý mạng đa cấp và đa nhà cung cấp và giảm doanh thu. Đây là lúc các nhà 
cung cấp dịch vụ đầu tư mạnh mẽ vào các giải pháp thay thế như SDN giúp tăng khả 
năng quản lý mạng và giảm chi phí cung cấp [1]. Software Defined Networking (SDN) 
là thuật ngữ xuất hiện và được đặt ra gần đây nhưng khái niệm về SDN xuất phát từ 
năm 1996. Nhiều công ty bắt đầu xây dựng và triển khai SDN để biến điều này thành 
hiện thực và các công ty đứng đằng sau SDN là Ipsilon, Internet Engineering Task 
Force (IETF), OpenDaylight, Open Networking Foundation (ONF), Ethane và 
OpenFlow... [36]. Đôi khi mọi người gọi SDN là OpenFlow nhưng thực tế, OpenFlow 
chỉ là một API cho SDN [36]. 
35 
 Software Defined Networking cho phép quản trị viên mạng thích ứng nhanh 
theo môi trường kinh doanh năng động và có thể điều khiển mạng từ một vị trí tập 
trung được gọi là bảng điều khiển mà không cần chạm vào bảng điều khiển riêng cho 
bộ định tuyến hoặc bộ chuyển mạch hoặc các thiết bị mạng khác, có thể cung cấp dịch 
vụ nhanh chóng và hỗ trợ xử lý mạng mà không cần biết máy chủ hoặc bộ định tuyến 
cụ thể được kết nối với các thiết bị khác như thế nào [37-38]. 
Hình 2.9: Tổng quan kiến trúc SDN 
2.2.4.1 Why SDN? 
 Động lực chính đứng sau SDN là nâng cao hiệu năng của mạng, cung cấp và 
triển khai mạng bằng cách tách control và data plane, cho phép lập trình các thiết bị 
mạng và cho phép các kỹ sư mạng thực hiện một hoạt động mạng từ một bảng điều 
khiển mà không cần biết kết nối phức tạp thực tế. Thông thường, việc cấu hình các 
thiết bị mạng đòi hỏi một kỹ sư mạng được đào tạo chuyên sâu và các thiết bị dựa trên 
nhà cung cấp yêu cầu đào tạo đặc biệt để thực hiện cùng một nhiệm vụ khác n
            Các file đính kèm theo tài liệu này:
 luan_van_nghien_cuu_trien_khai_va_danh_gia_hieu_nang_cua_cac.pdf luan_van_nghien_cuu_trien_khai_va_danh_gia_hieu_nang_cua_cac.pdf