LXC(Linux Containers),即Linux容器,是一种操作系统层级的虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间(Namespace)和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
virtio是一种I/O半虚拟化解决方案,是一套通用I/O设备虚拟化的程序,是对半虚拟化Hypervisior中的一组通用I/O设备的抽象。virtio分为前端和后端,一个backend组件和一个frontend组件。backend组件是virtio接口的host端,frontend组件是virtio的guest端。
数据平面开发套件(DPDK [1] ,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
ODL项目成立于2013年4月,是由Linux基金会管理管理的开源SDN项目。项目的目的是提供一个开放的,全功能的,厂商中立的SDN解决方案。目前ODL有超过40个公司作为成员,例如Cisco,IBM,Huawei等。乐观人士认为:ODL对networking的意义就像Linux对computing的意义一样。
转发和控制分离是SDN网络的本质特点之一 。在SDN网络架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中独立出来,由此,网络获得前所未有的可编程、可控制和自动化能力。这使用户可以很容易根据业务需求,建立高度可扩展的弹性网络。要实现SDN网络的转控分离架构,就需要在SDN控制器与数据转发层之间建立一个通信接口标准。
OpenStack自己官方的网络项目是Neutron,Neutron有着自己的一套网络实现方案:基于linux namespace,构建一个个相对独立的虚拟网络功能单元。通过这些网络功能单元提供OpenStack所需要的网络服务。Neutron在自己的实现之外,也考虑了第三方功能的兼容,例如2层的功能被抽象到了ML2的mechanism driver,各个网络功能被抽象到了对应的service plugin。第三方SDN只需要实现相应的mechanism driver和service plugins,就能接入到OpenStack Neutron。进而在整个OpenStack环境下使用。Neutron的架构如下图所示:
网络offload主要是指将原本在内核网络协议栈中进行的IP分片、TCP分段、重组、checksum校验等操作,转移到网卡硬件中进行,CPU的发包路径更短,消耗更低,提高处理性能。
相对传统的基于内核的网络数据处理,dpdk 对从内核层到用户层的网络数据流程进行了重大突破,我们先看看传统的数据流程和 dpdk 中的网络流程有什么不同。
在过去十几年中,虚拟化已经改变了应用、数据、服务的实现部署方式。服务器的虚拟化给数据中心网络带来了根本性的变化。在传统的数据中心网络架构基础上,出现了一个新的、位于物理服务器内的接入层。这个新的接入层包含的设备是运行在x86服务器中的vSwitch,而这些vSwitch连接着一个服务器内的多个workload(包括容器和虚机)。
VXLAN 本质上是一种重叠封装技术,它创建了一个覆盖在现有物理网络基础架构之上的虚拟网络。使用underlay IP网络,并在其上构建灵活的二层overlay逻辑网络。通过覆盖,任何第 2 层连接都可以跨越第 3 层网络。
Virtio作为一种半虚拟化的解决方案,其性能一直不如设备的pass-through,即将物理设备(通常是网卡的VF)直接分配给虚拟机,其优点在于数据平面是在虚拟机与硬件之间直通的,几乎不需要主机的干预。而virtio的发展,虽然带来了性能的提升,可终究无法达到pass-through的I/O性能,始终需要主机(主要是软件交换机)的干预。vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。这种方式,控制面比较复杂,硬件难以实现。
大部分服务器都需要配置多个网络适配器端口以满足网络连通性。现在有越来越多的卸载技术,帮助CPU分担网络管理工作。
服务拓扑(Service Topology)可以让一个服务基于集群的 Node 拓扑进行流量路由。 例如,一个服务可以指定流量是被优先路由到一个和客户端在同一个 Node 或者在同一可用区域的端点。
Linux Namespace是Linux提供的一种内核级别环境隔离的方法。很早以前的Unix有一个叫chroot的系统调用(通过修改根目录把用户jail到一个特定目录下),chroot提供了一种简单的隔离模式:chroot内部的文件系统无法访问外部的内容。Linux Namespace在此基础上,提供了对UTS、IPC、mount、PID、network、User等系统资源的隔离机制。在此机制下,这些系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Namespace,只需要在调用clone时指定相应的flag。Linux Namespaces机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linux containers)就是利用这一特性实现了资源的隔离。不同container内的进程属于不同的Namespace,彼此透明,互不干扰。
IT行业的从业人员,似乎有一个永远难迈的坎——35岁。35岁之前你可以在职场傲娇任性、肆意折腾,35岁之后,突然就得如履薄冰、夹着尾巴做人,生怕哪天被公司扫地出门、被更年轻、“性价比更高”的后浪拍死在沙滩上。
第四章 数据库开发入门_V0.2-001.png 第四章 数据库开发入门_V0.2-002.png 第四章 数据库开发入门_V0.2-003.png 第四章 数据库开发入门_V0.2-004.png 第四章 数据库开发入门_V0.2-005.png 第四章 数据库开发入门_V0.2-006.png 第四章 数据库开发入门_V0.2-007.png 第四章 数据库开发入门_V0.2-008.png 第四章 数据库开发入门_V0.2-009.png 第四章 数据库开发入门_V0.2-010.png 第四章 数据
在进行渗透测试过程中,与目标主机同一网络环境时,可以利用ARP协议进行主机存活探测。该种扫描方式速度较快、识别精准,在视频中作者分别从arp协议原理、arp常见的安全问题、python代码编写arp主机存活探测脚本、windows及linux系统环境下其它主机存活探测工具,并进行实操演示和练习,具体使用方式详见如下视频教程:
网卡(Network Interface Card,简称NIC)是将电脑接入局域网的设备,网卡插在计算机主板的总 线插槽中,负责将用户要传递的数据转换为网络设备能够识别的格式,通过网络介质传输。
在第二章的计算章节,我们在KVM一节有介绍过QEMU,因相隔较远,这里再将其基本架构做一下简要回顾
先看下OVS整体架构,用户空间主要组件有数据库服务ovsdb-server和守护进程ovs-vswitchd。kernel中是datapath内核模块。最上面的Controller表示OpenFlow控制器,控制器与OVS是通过OpenFlow协议进行连接,控制器不一定位于OVS主机上,下面分别介绍图中各组件。
以 FPGA 来实现 Smart NIC 举例,了解到底有什么网络功能任务是可以 Offload 到 Smart NIC 上进行处理的。并且,使用 FPGA 可以根据需要轻松添加、或删除这些功能。
SmartNIC 就是通过从 Host CPU 上 Offload(卸载)工作负载到网卡硬件,以此提高 Host CPU 的处理性能。其中的 “工作负载” 不仅仅是 Networking,还可以是 Storage、Security 等。
Underlay和Overlay的概念实际上很早就出现在互联网络之中。在计算机发展早期,便诞生了ATM技术,这种技术的实现原理就是在数据网络的广域网部分大量部署ATM交换机,进行基于ATM信元的数据交换,ATM交换机之间通过各种物理链路互通。那么对于最终承载于ATM网络上的应用比如ATM局域网络仿真系统(LANE)来讲,整个ATM网络是透明的,ATM信元的组成/传递,服务并不关心。那么ATM网络对于LANE来讲就是Underlay,而LANE就是一种Overlay。
通过简单的代码我们就可以达到下面的效果,成功的将拍摄的签名转化为电子版本的手写签名。
OpenFlow协议是基于网络中“流”的概念设计的南向接口协议。在OpenFlow引入了“流”的概念之后,控制器可以根据某次通信中“流”的第一个数据分组的特征,使用OpenFlow协议提供的接口对数据平面设备部署策略——流表,而这次通信的后续流量则按照相应流表在硬件层次上进行匹配、转发,从而实现了灵活的网络转发策略。
VXLAN (Virtual eXtensible LAN,可扩展虚拟局域网络) 是一种Internet 标准重叠网络虚拟化技术,它提供了一种在 IP(第 3 层)网络上封装以太网(第 2 层)帧的方法,这一概念通常被称为“隧道”。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
BGP协议被设计运行在AS之间传递路由,AS之间是广域网链路,数据包在广域网上传递是可能出现不可预测的链路拥塞或丢失等情况,因此BGP使用TCP作为其承载协议来保证可靠性。
从上图中可以发现,VXLAN网络中出现了以下传统数据中心网络中没有的新元素:
AS(Autonomous System,自治系统/路由选择域),是指由同一技术机构管理,使用同一选路策略的一些路由器的集合。一般来说,一个公司、一个企业、一所大学就可以说是一个自治系统。
传统的BGP-4只能管理IPV4的路由信息,对于使用其他网络层协议(如ipv6)的应用,在跨自治系统传播时就受到一定限制。为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP,MP-BGP标准是RFC4760(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)。
要了解OpenFlow信道的建立过程,首先需要了解OpenFlow协议目前支持的三种报文类型:
策略路由,是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。路由器将通过路由图决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的下一跳转发路由器。
在VXLAN NVO3网络模型中,部署在VXLAN网络边缘的设备称为VXLAN NVE(Network Virtualization Edge,网络虚拟边缘),主要负责VLAN网络与VXLAN网络间的封装和解封装。经过NVE封装转换后,NVE间就可基于L3基础网络建立Overlay二层虚拟化网络。
Kubernetes 假设 Pod 可与其它 Pod 通信,不管它们在哪个主机上。 Kubernetes 给每一个 Pod 分配一个集群私有 IP 地址,所以没必要在 Pod 与 Pod 之间创建连接或将容器的端口映射到主机端口。 这意味着同一个 Pod 内的所有容器能通过 localhost 上的端口互相连通,集群中的所有 Pod 也不需要通过 NAT 转换就能够互相看到。 本文档的剩余部分详述如何在上述网络模型之上运行可靠的服务。
SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。
上接IM 5.1,本章为IM系列第五章 使用In-Memory表达式优化查询第二部分IM表达式的目的。
A4第四章第2节null和成员变量、局部变量的不同初始化第4节 1、null表示变量没有指向任何对象 如:Person p=null; p.sayHello();//结果会抛出异常 2、对于一个为【null的变量】调用【成员方法】都会报异常NullReferenceException。
近几年,软件定义网络(Software Define Network,SDN)技术的发展与成熟,使得网络虚拟化可以不再基于物理网络设备实现,大大扩展了网络虚拟化的“边界”。需要强调的是,SDN 不等于网络虚拟化,只是SDN 这种技术非常适合实现网络虚拟化。
VXLAN 在 VTEP 间建立隧道,通过 Layer 3 网络传输封装后的 Layer 2 数据。 下面的例子演示了数据如何在 VXLAN 上传输:
上接IM 5.3。本章为IM系列第五章 使用In-Memory表达式优化查询第四部分数据库如何填充IM表达式。
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
上接IM 5.5。本章为IM系列第五章 使用In-Memory表达式优化查询第五部分IMEU如何与IMCU相关联。
第一章 Oracle Database In-Memory 相关概念(IM-1.1)
=========================================================
BGP状态描述的是BGP邻居的建立过程,BGP状态共有六种,分别是Idle(空闲)、Connect(连接)、Active(活动)、OpenSent(打开发送)、OpenConfirm(打开确认)和Established(建立成功)。
不同于RIP,OSPF协议运行后,并不立即向网络广播路由信息,而是先寻找网络中可与自己交换链路状态信息的周边路由器。可以交互链路状态信息的路由器互为邻居。
在 vhost_net 的方案中,由于 vhost_net 实现在内核中,guest 与 vhost_net 的通信,相较于原生的 virtio 方式性能上有了一定程度的提升,从 guest 到 kvm.ko 的交互只有一次用户态的切换以及数据拷贝。这个方案对于不同 host 之间的通信,或者 guest 到 host nic 之间的通信是比较好的,但是对于某些用户态进程间的通信,比如数据面的通信方案,openvswitch 和与之类似的 SDN 的解决方案,guest 需要和 host 用户态的 vswitch 进行数据交换,如果采用 vhost_net 的方案,guest 和 host 之间又存在多次的上下文切换和数据拷贝,为了避免这种情况,业界就想出将 vhost_net从内核态移到用户态。这就是 vhost-user 的实现。
领取专属 10元无门槛券
手把手带您无忧上云