继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

大话闲聊之虚拟化

程序猿天璇
关注TA
已关注
手记 35
粉丝 58
获赞 404

虚拟机管理器(Hypervisor)

Xen

Xen 是非常著名的 Hypervisor,它提出了 para-virtualization 的想法。之前实现虚拟机,都是通过 full-virtualization 的方式,但是那个时候的 X86 其实并不能很好地支持 full-virtualization。举个例子,有些指令原本是应该在 VMM 中被执行的,但是有时会因为指令在不同 ring 有不同的表现,因此并不能成功地 trap 到 VMM 中。为了更加优雅地解决这样的问题,Xen 引入了 hypercall,修改了 Guest 的 OS。通过另外的方式来解决这个问题。

虚拟化最主要的资源是 CPU,Memory 和 IO,Xen 对于三者都有一些比较有趣的地方。其中我觉得最有趣的是对于设备的支持,引入了 Domain 0,前后端驱动的设计让人觉得很自然,而且也避免了把驱动放在 VMM 里,会因为驱动 bug 把 VMM 弄崩的可能。

kvm

// TODO Add the notes

虚拟机安全(Virtulization, Security)

CloudVisor

// TODO Add the notes

Taint Tracing

TaintDroid

Taint 分析,就是指把一些敏感数据标注出来,在程序执行的过程中确保这些被标注的敏感数据不会被泄露出去的技术。TaintDroid 是一个在 Andriod 做 Taint 分析的工具,之前的 Taint 分析工具,overhead 非常大,而 TaintDroid 通过分层的思想,在不同层做不同粒度的 Taint 跟踪,大大降低了运行时的 overhead。

论文有一个配套的 demo,是可以运行的,感兴趣的话可以自己试试看,这里也有一个 Demo 视频。很有趣的是这篇论文是 Intel Labs 有参与的,不是很懂他们怎么会想到做这样的事情。

ROP

Hacking Blind

这篇论文看上去就很酷,实现很让人亮眼。最简单的 ROP,就是寻找一个个的 gadget,然后把 gadget 连接起来。然后让控制流走到这些 gadget 里,就 OK 了。但是这篇论文是如何在远程来劫持控制流,来实现 ROP 攻击。攻击者不了解远程的系统,因此首先系统要有一个已知的 stack overflow 的漏洞,然后要求攻击的进程在死了后会重启,而且 ASLR 后的地址不变。

其实条件是很苛刻的,而且也不懂为什么一个攻击者可以在不了解远程系统的同时知道系统的 stack overflow 漏洞。整体攻击的过程,是先 Dump 服务器的内存,然后再进行常规的 ROP,其中 Dump 内存的操作非常精巧,感觉只有 ROP 高级玩家才能想出这样的做法,具体可以看看上面链接的论文。

Network Function Virtualization(NFV)

Click

Why must Click provide both push’ andpull’ methods? Can we eliminate one of the two operations? How/Why?

Push 和 Pull 是两种连接方式。 Push 是从源 Element 到下游的元素。在 Push 连接方式里,上游的元素会提交一个包到下游的元素。Pull 是从目的地元素到上游元素。在 Pull 的连接方式里,是下游的元素发送包请求到上游的元素。Push 和 Pull的共同使用可以使包转发连接的适当终止,可以很好地解决路由器控制流问题。例如包调度的决定——选择哪个队列去请求一个包对于组合的 Pull 元素来说是非常容易实现的。另外,系统不应该向繁忙的转发接口发送包,否则,这个接口就必须存储包,并且路由器会失去处理这些包的能力(丢弃,修改优先级等)。这个约束可以由简单的给转发接口一个 Pull 输入实现。然后这个接口就可以控制包转发,并且可以在它准备好的时候请求包。

One limitation of Click is the difficulty of scheduling CPU time among pull and push paths. Why is it difficult? What would you do to improve it?

Click 的调度器就是一个 Pull Element,它有多个输出,而只有一个输入。至于 CPU 时间调度的问题, 是说 Click 没办法处理多个设备同时接收或者发送数据的情况。目前的处理方法是 linux 处理大部分这样的调度,剩下的交由 Click 来做。最终所有这些都应该由一个单一的机制来控制。关于 improve 可以把 linux 里相关的逻辑作为一个 Element 引入,不知是否可行。

How can batch processing be applied to Click? Be specific and consider the impact on latency and throughput.

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP