第三讲. 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中包交换的网络拓扑: ?
转载于:https://www.cnblogs.com/shafei/p/5259004.html
第三讲. COTS包交换介绍相关推荐
- 第三讲:WCF介绍(3)
代码 https://yunpan.cn/cPns5DkGnRGNs 密码:3913 前面我们通过一个小的例子,大概了解的WCF. 这里我们补充下 EndPoint 配置 A,B,C 中的 ...
- linux 创建线程函数吗,[笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include #define CreateThreadEx(tid,threadFun,args) ...
- 数据工程系列精讲(第三讲): Data-centric AI 之特征工程
前言 在Data-centric AI之特征工程第二讲中,我们介绍了特征预处理的三个子步骤即样本类别不均衡处理,连续特征离散化和数值型category特征编码.今天我们接着介绍特征预处理以及特征工程的 ...
- 物理哲学和生物哲学的对抗
来源:科学技术哲学 相对论革命 在上一讲中,我们提到第二次科学革命始于18世纪后期的化学革命,它的两大标志是:1. 近代西方科学的古典科学传统和培根科学传统融合,西方科学现代化:2. 科学和技术结合, ...
- matlab新建脚本java报错,Matlab(四)脚本的使用
Rate this post 1.在matlab中使用脚本 在前面三讲,我介绍了matlab的基本使用,我们可以在命令行窗口输入代码,但是,在我们实际的使用当中,我们通常会进行大量的代码打包起来进行运 ...
- 阿里云云服务器ECS
云服务器ECS 1.1什么是阿里云ECS 定位:阿里云产品体系中,最基础的计算服务. Elastic Compute Service 阿里云提供的一种随时创建.扩容.释放的基础云计算服务 相对于物理服 ...
- 零基础学习硬件安全技术
关注OSR的朋友们,是否留意到OSR从4月底开始,与工信部"芯动力"合作,在芯动力人才计划平台上线了一套课程.这几个月,和客户面对面交流的机会非常少,我们利用宝贵的时间,各部门协同 ...
- html语言汇总,第三讲HTML语言全面介绍汇总.ppt
第三讲HTML语言全面介绍汇总,c语言语句汇总,2016网络语言汇总,r语言对数据分类汇总,c语言面试题大汇总,r语言分类汇总,励志语言汇总,编程语言汇总,c语言简答题目汇总,r语言分组汇总 授课主要 ...
- 学徒浅析Android开发:第三讲——Dialog的常用方法介绍(二)
经过(一)的基础介绍,现在小编将在(二)中给大家介绍以下几种效果: 1.点击查看组图(模拟QQ空间图片浏览) 2.缩略图放大(自定义Dialog) 3.动态加载进度条 一.点击产看组图(模拟QQ空间图 ...
最新文章
- .c和.cpp的区别
- demod函数_MATLAB信号处理工具箱函数 | 学步园
- 使用openssl,实现输入和输出都是字符串的类型,注意:输入最好是16的倍数
- svn如何取消某个文件的版本管理_微服务架构如何统一管理工程配置文件
- (转) PowerDesigner中Table视图同时显示Code和Name
- 在win10在使用cmder代替Linux是怎样的体验
- python 重命名文件出现乱码_下载的文件名总是「乱码」?这里有各平台的解决方法...
- Spring常用注解用法总结
- Linux内核DMA机制
- Java程序员:java软件工程师中级证
- SDRAM控制器在连续读写数据时的优化
- Computer Vision: Algorithms and Applications阅读笔记
- 怎样删除计算机Windows7自带的游戏,win7自带游戏如何卸载?win7卸载自带游戏的步骤...
- Error querying database. Cause: java.sql.SQLException: ORA-01008: 并非所有变量都已绑定
- 大陆车牌识别算法的背景与技术
- vue富媒体编辑器组件:vue-wangeditor的使用
- CSS:字体样式(字体系列、大小、加粗、风格、变形等)
- 笔记一:画笔、笔刷认识
- python安装环境配置linux_[Python学习] Linux环境下的Python配置,必备库的安装配置...
- JavaScript、jQuery实现“社区便利店收银系统”(1+X Web前端开发初级 例题)