COTS里面涉及到虚拟机的概念,所以网络稍微复杂一点点。

基本概念

目前虚拟机里面常见的网卡控制器有三类:

  1. 半虚拟化网卡设备,由Hypervisor统一管理,虚拟机里面采用特定的接口进行调用。

    1. 透传网卡设备,将一个PCIe设备(网卡、USB、光驱…)直接分配给指定的虚拟机独占,一般需要开启IntelVT-D技术
    2. SR-IOV网卡设备,结合上述的两种优势,他先在Hypervisor里面注册成多个网卡,再把这些网卡透传分配给虚拟机。(需要NIC硬件支持)

    :fa-location-arrow: 如果是C7K架构,一般一个Blade上面只创建一个VM,所以跨板(Between-Appls)的交换能够使用C7K自带的L2Switch(6120XG),同时H248消息也是从这个交换板来转发到SCM上。至于数据包是直接从PIM板连出去的吗? 存疑?

    :fa-location-arrow: 针对我们的数据包,能够使用的物理卡是各个Blade上的GE口和6120XG,一般来说最好的打算就是每个虚拟机PF自己所在Blade的那个GE口(如果只有一个虚拟机Per-Blade)

    :fa-location-arrow:如果是DL380一个Blade上做BGW,那么最好的打算是半虚拟化方式,同时,一个Blade的话就没有L2Switch(6120XG)了,所以必须要有vSwitch来扮演这个角色,那么问题就在于vSwitch会不会成为瓶颈?(因为数据包+控制包都在上面交换的= =!)

    :fa-location-arrow:如果在DL380上插Intel-Niantic-NIC,那么最好的打算是SR-IOV方式来分配vNIC,同时也会需要vSwitch的帮助,DPDK的作用目前来说只用于DATA-PATH的交换过程。

虚拟机

机箱里面的虚拟机相关背景知识:

KVM和QEMU的关系

当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。

准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用 它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM 下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工 具。这就是KVM和QEMU 的关系。

QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。 而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMD SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,不妨称之为:KVM+QEMU.

关于Virtio:fa-link:的具体介绍。

实际上虚拟化和半虚拟化都是概念性的东西,针对每个资源都可以有相当的自行配置空间,譬如NIC设备,

如果全虚拟化方式,那么这块卡的所有包都要经过全虚拟化层的模拟器来转发给各个虚拟机,

如果不用模拟器,而是能够透过特殊的Hypervisor层API调用网卡,那么这就称为半虚拟化,

如果我想把这块卡让某个虚拟机独占使用,那么可以使用PF方式,

如果网卡硬件支持SR-IOV,那么就可以注册出好几个卡,然后PF给多个虚拟机。

遗留问题:
  1. COTS中包交换的网络拓扑: ?
  2. DL380中包交换的网络拓扑: ?

第三讲. COTS包交换介绍的更多相关文章

  1. 第三讲:WCF介绍(3)

    代码 https://yunpan.cn/cPns5DkGnRGNs   密码:3913   前面我们通过一个小的例子,大概了解的WCF. 这里我们补充下  EndPoint 配置  A,B,C  中 ...

  2. Spark系列视频

    大数据生态圈很大,很多开发者都仅仅接触到某个单一产品. Spark 是近年来比较流行的大数据计算框架,系统.平台要想用好Spark 这个产品,需要用到很多的产品. 本视频系列主要是为准备入坑大数据的童 ...

  3. 【学习中】Unity Schedule

    章节 内容 签到 第一课:界面介绍 第一讲 编辑器工作区 4月27日 第二课:资源管理 第二讲 资源及资源类型 4月27日 第三讲 资源管理:模型和角色动画的输出设置(上) 4月27日 第四讲 资源管 ...

  4. Spring注解驱动第三讲--@Filter介绍

    上一讲主要针对@ComponentScan注解做了一些说明,本文主要对@Filter的扫描条件,再做一些详细的介绍 1,FilterType.ANNOTATION 按照注解的方式进行扫描.后面clas ...

  5. Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍

    转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...

  6. TCP 介绍

    TCP介绍 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络O ...

  7. FreeSWITCH第三方库(音频)的简单介绍(一)

    FreeSWITCH使用了大量的第三方库,本文档主要介绍音频相关库的信息: 视频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5488890.html 其他相关 ...

  8. 转载 VPN介绍

    转载原地址:  http://aajs800.blog.51cto.com/519255/239724  原作者 aajs800 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...

  9. 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式

    32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...

随机推荐

  1. 在CentOS系统中使用yum安装指定版本软件的方法

    yum默认都是安装最新版的软件,这样可能会出一些问题,或者我们希望yum安装指定(特定)版本(旧版本)软件包.所以,就顺带分享yum安装指定(特定)版本(旧版本)软件包的方法. 过程如下: 假设这里是 ...

  2. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  3. TPS04-J. 使用线程池时确保ThreadLocal变量每次都初始化

    线程池可以提供这种保障,一旦你的代码开始执行了,被分配来执行这个task的线程在执行完你的task之前不会做别的事情. 所以不用担心执行到一半被别的task改了 thread local 的变量. 由 ...

  4. Linux服务器ftp命令找不到

    ftp commond not find 先用命令rpm -q vsftpd检查是否安装了ftp服务器 若显示vsftpd-2.2.2-11.el6_4.1.x86_64这样的信息,说明FTP服务器已 ...

  5. tar压缩

    tar 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询:tar -jtv -f filename.tar.bz2 解压缩:tar -jxv -f f ...

  6. Access restriction: The type QName is not accessible due to restriction on required library

    There's another solution that also works. I found it on this forum: Go to the Build Path settings in ...

  7. Linux启用和配置Java

    Firefox 在安装 Java 平台时,Java 插件文件将作为该安装的一部分包含在内.要在 Firefox 中使用 Java,您需要从该发行版中的插件文件手动创建符号链接指向 Firefox 预期 ...

  8. iframe

    var ifr = document.getElementById('ifr'); var win = ifr.window || ifr.contentWindow; win.a(); // 调用i ...

  9. 【unity3d游戏开发脚本笔记之一:坐标系选择对物体运动的影响】

    时间:2016年9月24日17:38:21   作者:yexiaopeng 博客园     在unity3d的世界中,其坐标系可分为四种,世界坐标系-WorldSpace   本地坐标系-LocalS ...

  10. js计算相隔天数日期

    计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...