雲ids的設計方案

概述

爲了搭建雲IDS平臺,需要選型合適的虛擬化方案,以及對相應部署做一定的優化。基本設計架構爲,在以Centos操作系統安裝的宿主機中再部署IDS虛擬機(基於Centos操作系統)。

本設計文檔所述的設計方案,基於以下環境:

  1. Intel x86架構的cpu,支持intel VT和VT-d
  2. BIOS中enable VT和VT-d
  3. BIOS中建議開啓Intel Hyper-Threading Tech
  4. 使用kvm虛擬化
  5. 宿主機和IDS虛擬機爲Centos7.2操作系統
  6. 宿主機操作系統內核使用Linux內核3.18.24

設計方案

本次選擇的技術和方案如下:

  1. 使用libvirt和virsh管理套件管理虛擬機
  2. 使用virtio半虛擬化方案提升性能
  3. 使用網卡透傳方式提升流量接入性能
  4. 通過把虛擬機中指定的vcpu綁定到指定的物理cpu核上,提升cpu性能

內核模塊配置

宿主機環境是Linux內核3.18.24,爲了支持後續部署的IDS虛擬機所需的一些功能,需要修改內核中的配置選項,並重新編譯內核。
主要內核的配置選項如下:

  1. 需要開啓的VIRTIO相關模塊

CONFIG_VIRTIO_BLK=m
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_VIRTIO=m
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_BALLOON=m

  1. 需要開啓Intel_IOMMU

CONFIG_INTEL_IOMMU=y

  1. 開啓vfio模塊

CONFIG_VFIO_IOMMU_TYPE1=m
CONFIG_VFIO=m
CONFIG_VFIO_PCI=m
CONFIG_VFIO_PCI_VGA=y
CONFIG_KVM_VFIO=y

  1. 壓縮內核

爲了減小內核的大小,開啓內核中對模塊進行壓縮的操作。
CONFIG_MODULE_COMPRESS=y
# CONFIG_MODULE_COMPRESS_GZIP is not set
CONFIG_MODULE_COMPRESS_XZ=y

以下就是對內核的編譯和安裝了。

虛擬化技術選型

透傳網卡

爲了讓部署在宿主機中的IDS虛擬機可以更好的接入數據流量,需要把宿主機中一定數量的網卡透傳給IDS虛擬機。

PCI網卡透傳的條件

  1. 確認在BIOS中打開了硬件輔助虛擬化功能支持

在BIOS中查看VT(VT-X)及VT-d,設置爲enable

  1. 確認內核集成vfio、DMAR、IOMMU模塊


IOMMU模塊會把設備的I/O地址重映射爲內存物理地址,運行在CPU上的操作系統以互斥的方式管理MMU與IOMMU。

設置指定網卡透傳給IDS

  1. IOMMU_group分組

IOMMU模塊會把所有網卡分成不同的IOMMU_group管理,每個IOMMU_group下會有一個或者多個網卡設備。查看網卡設備屬於哪個IOMMU_group,可以通過網卡的PCI地址,查看如下:

如上可以查看到網卡當前使用的驅動爲igb,iommu_group爲6。

  1. PCI網卡透傳

網卡透傳通過編輯創建IDS虛擬機的配置文件的方式,在使用virsh define創建虛擬機時實現。
在設置透傳的網卡時,同一個IOMMU_group中的網卡不能有些透傳,有些沒有透傳,透傳後的網卡驅動會綁定爲vfio-pci驅動如下:

  1. 網卡透傳後

根據iommu_group選擇需要透傳的網卡。比如:如果透傳iommu_group號爲1和7的網卡,在透傳完成後,會在系統的/dev/vfio中生成如下文件:

virtio半虛擬化

爲了增加IDS虛擬機的運行性能,使用virtio虛擬化方案,主要使用以下相關功能:

  1. 使用virtio_balloon驅動,實現內存的高效利用
  2. 使用virtio-net,提升網絡性能
  3. 使用vhost-net提升網絡性能。

結束語

關於虛擬化的技術點有很多,本文只是一個簡單的設計思路,以後還需要繼續深入學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章