第三讲. COTS包交换介绍
COTS里面涉及到虚拟机的概念,所以网络稍微复杂一点点。
基本概念
目前虚拟机里面常见的网卡控制器有三类:
- 半虚拟化网卡设备,由Hypervisor统一管理,虚拟机里面采用特定的接口进行调用。
- 透传网卡设备,将一个PCIe设备(网卡、USB、光驱…)直接分配给指定的虚拟机独占,一般需要开启IntelVT-D技术
- 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给多个虚拟机。
遗留问题:
- COTS中包交换的网络拓扑: ?
- DL380中包交换的网络拓扑: ?
第三讲. COTS包交换介绍的更多相关文章
- 第三讲:WCF介绍(3)
代码 https://yunpan.cn/cPns5DkGnRGNs 密码:3913 前面我们通过一个小的例子,大概了解的WCF. 这里我们补充下 EndPoint 配置 A,B,C 中 ...
- Spark系列视频
大数据生态圈很大,很多开发者都仅仅接触到某个单一产品. Spark 是近年来比较流行的大数据计算框架,系统.平台要想用好Spark 这个产品,需要用到很多的产品. 本视频系列主要是为准备入坑大数据的童 ...
- 【学习中】Unity Schedule
章节 内容 签到 第一课:界面介绍 第一讲 编辑器工作区 4月27日 第二课:资源管理 第二讲 资源及资源类型 4月27日 第三讲 资源管理:模型和角色动画的输出设置(上) 4月27日 第四讲 资源管 ...
- Spring注解驱动第三讲--@Filter介绍
上一讲主要针对@ComponentScan注解做了一些说明,本文主要对@Filter的扫描条件,再做一些详细的介绍 1,FilterType.ANNOTATION 按照注解的方式进行扫描.后面clas ...
- Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍
转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...
- TCP 介绍
TCP介绍 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络O ...
- FreeSWITCH第三方库(音频)的简单介绍(一)
FreeSWITCH使用了大量的第三方库,本文档主要介绍音频相关库的信息: 视频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5488890.html 其他相关 ...
- 转载 VPN介绍
转载原地址: http://aajs800.blog.51cto.com/519255/239724 原作者 aajs800 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...
- 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式
32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...
随机推荐
- 28个Unix/Linux的命令行神器_转
28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...
- LoadRunner连接Genymotion
- LDAP的Schema
Schema是LDAP的一个重要组成部分,类似于数据库的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等, ...
- JavaScript基本操作
一.如何编写? 1.JavaScript代码存在形式 <!-- 方式一 --> <script type="text/javascript" src=" ...
- 浅谈大型web系统架构
动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...
- Java被忽略的基本知识(一)
工作一段时间发现Java的基本知识不是一般的重要,基本知识好项目理解快.特此看java的基本知识书本<Java项目实战开发>李兴华版,看完此书准备再看一下java更深一点的书--<J ...
- 1.<%@Page%>中的Codebehind、AutoEventWireup、Inherits有何作用?
AutoEventWireup --- 指示是否自动启用页事件. Codebehind --- 指示后台代码文件. Inherits --- 继承类. AutoEventWireup:指示该页的事件是 ...
- paper 114:Mahalanobis Distance(马氏距离)
(from:http://en.wikipedia.org/wiki/Mahalanobis_distance) Mahalanobis distance In statistics, Mahalan ...
- python学习笔记系列----(七)类
7.1 python类和相关术语的简介 Python 通过最小的新语法和语义在语言中实现了类. 它是 C++ 或者 Modula-3 语言中类机制的混合.类的大多数重要特性都被完整的保留下来:类继承机 ...
- link和@import的区别、及各自的应用
面试的过程中遇到的问题,当时自己回答的感觉自己心里还是很满意的,但是回来百度查看后才知道自己回答的有多么的糟糕: 下面我这这个知识点做一些总结的书面说明,为了少走点弯路,多涨点见识吧. 首先我们要了解 ...