云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提升网络性能。

结束语

关于虚拟化的技术点有很多,本文只是一个简单的设计思路,以后还需要继续深入学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值