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. 添加到SQLAgentReaderRole角色后报拒绝SELECT权限

    最近有点大意,同事需要查看作业的权限,"理所当然"就将对应登录名添加到SQLAgentReaderRole角色. msdb的SQLAgentReaderRole数据库角色的成员继承 ...

  2. nginx 客户端不缓存header

    location ~* \.(html|htm)$ { add_header Cache-Control no-store; }

  3. TIJ——Chapter Eight:Polymorphism

    The twist |_Method-call binding Connecting a method call to a method body is called binding. When bi ...

  4. Linux selinux iptables

    关闭SELINUX – 使用getenforce命令检查SELINUX状态,若结果不是”Disabled”,可使用setenforce 0命令临时关闭SELINUX.要永久关闭SELINUX,需修改/ ...

  5. C++实现黄金分割数列(斐波纳奇数列)(非递归)

    斐波纳奇数列: 定义为F0=0,F1=1,......Fn=F(n-1)+F(n-2) 1,1,2,3,5,8,13,21,34,55....... void FibonacciOdd(int n) ...

  6. 【皇甫】☀IOC和AOP的拓展实例

    <!--构造器注入 --> <bean id="user1" class="cn.happy.entity.User"> <con ...

  7. mysql 查询行号

    SELECT @rowno:=@rowno+1 as rowno,r.* from t_zg_loanee_apply r,(select @rowno:=0) t;

  8. Cassandra 配制 cassandra.yaml

    一.设置用户名和密码 修改cassandra.yaml配置文件 把默认的 authenticator: AllowAllAuthenticator 改成 authenticator: Password ...

  9. node 实现视频播放后端,前端使用video标签,视频文件视频mp4

    var fs = require("fs"), http = require("http"), url = require("url"), ...

  10. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...