Month: March 2024
-
云计算相关技术简介(三)-网络组件
上篇文章介绍的是OSI网络模型,主要是针对网卡(NIC)的功能进行的计算机信息通信建模,并提供了操作系统级程序(驱动)的实现,这篇文章介绍机器之间通信所需的机器内部的网卡设备及通信协议外,机器与机器以及局域网与局域网之间所需的网络组件。 1、switch ,交换机,交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。交换机是一个扩大网络的器材,能为子网络中提供更多的连接端口。两层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。三层交换机:具有部分路由器功能的交换机,工作在OSI网络标准模型的第三层,具体的工作原理可以参考引文。星型网络拓扑几乎是Ethernet(以太网)网络专用,它是因网络中的各工作站节点设备通过一个网络集中设备(如集线器或者交换机)连接在一起,各节点呈星状分布而得名。这种结构是目前在局域网中应用得最为普遍的一种,在企业网络中几乎都是采用这一方式。 2、Gateway,网关,顾名思义,即为网络关口,即可以理解为网络之间的关口(gate,门),不同局域网络之间通过网关进行通信,同时也可以负责不同网络之间不同的协议之间的通信所需要的协议转换,就好比语言翻译,不同的语言之间要通过一个翻译机才能相互理解。 3、routers,路由器,负责接收,分析和向前发送(forward)网络数据包,路由器通过分析网络包中的目的地(destination, or target ip)通过路由表和头从而选择最好的数据包传输路径。路由器设备带有固定的路由选择算法,比如最短路径算法或扩展等,具体的路由算法以后在计算机网络的课程中去进一步详细介绍。 简要总结一下,Hub,switches,routers,gateways,一般hub,switch在局域网组件中使用,gateway主要的功能在于不同网络协议之间的通信,router主要的作用在于不同局域网之间的信息数据包的转发。选择合适的网络组件去搭建和配置网络将会在后续的工程实践中去进一步介绍和总结。 References
-
云计算相关技术简介(二)-OSI网络模型
本篇文章主要介绍云计算环境中的相关的网络技术,主要面向openstack network(neutron)组件,其提供了网络服务API,实现了一个Software Defined Network(SDN)的解决方案。本篇介绍网络技术中的基础概念和知识。 1、Ethernet,以太网。以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。在OSI(Open System Interconnect)模型中,以太网协议为第二层,也就是数据链路层(data link layer),在数据链路层,主机之间通过交换frames(数据帧)进行通信,每个主机在局域网中由一个唯一的物理地址标记media access control(MAC) address。在openstack中,每一个虚拟机器的实例都由一个唯一的mac地址,这个mac地址和宿主机的mac地址不同。mac地址是一个48位的信息,通常用十六进制进行标识,比如08:00:27:b9:88:74。一般的mac地址是硬编码到网卡(Ethernet network interface card ( NIC ))中去的,不过现代的NIC允许通过程序去更改mac地址。在linux中可以通过ip命令查看网卡信息。在局域网内部,每一个主机都可以直接发送帧信息到其他的主机,局域网也可以支持广播,也就是一台主机可以发送帧信息给在网络上的每一台主机(通过特殊的目标地址ff:ff:ff:ff:ff:ff),ARP和DHCP就是利用了局域网广播技术的两个很有名的协议,局域网支持广播,有时候局域网也被称为broadcast domain. 当一个NIC接收到一帧数据时,一般NIC会check帧的目标地址是否位NIC的mac或是广播地址,但是在云计算环境中,frame的目标地址也可能是计算实例的,因此网卡也可以设置promiscuous mode,不过滤帧数据,直接将所有的帧数据传给上层的操作系统。现代的局域网用交换机去实现网络主机之间的互联,网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。 2、VLAN,虚拟局域网,VLAN是建立在物理网络基础上的一种逻辑子网,因此建立VLAN需要相应的支持VLAN技术的网络设备。当网络中的不同VLAN间进行相互通信时,可以采用路由的支持,这时就需要增加路由设备——要实现路由功能,既可采用路由器,也可采用三层交换机来完成。openstack可以利用vlan技术隔离不同项目的网络交通(traffic),通过一个物理的switch,可以实现三个隔离的网络(三个vlan)。一个虚拟局域网中的站点所发送的广播数据包将仅转发至属于同一VLAN的站点。 3、子网和ARP,IP协议中的IP地址一般分为两个部分,网络号(network number)和主机标识(host identifier),两个主机如果具有相同的网络号,则他们属于同一个子网。ARP假设所有在同一个子网的机器在同一个局域网内,网络管理员在分配IP地址和掩码的时候需要注意这一点,否则ARP可能不能正常工作。 子网掩码有两种表示方式,如IP地址192.168.1.5,前24位位网络号,再网络掩码为255.255.255.0,或可以一起写为192.168.1.5/24。当第一次host a尝试和host b进行通信时,不知道目标的mac地址位置,host A就需要发送一个ARP请求广播到局域网,然后host B接收到这个信息之后知道是要相互通信(ip地址为host b的地址),就将自己的mac地址发给了a。然后a和b就可以直接发送帧信息了。 4、DHCP,Dynamic Host Configuration Protocol (DHCP) 可以动态获取IP地址,一个DHCP服务器将IP地址分发给网络主机(也可称为DHCP clients),一般过程为:(1)客户端(DHCP Client)发送获取IP请求,广播一个udp请求,(2)DHCP server发送一个可用的ip地址信息给client,(3)client发送一个request给server,同意这个ip,(4)server发送一个信息给client,同意这个分配。 5、IP,IP协议定义了怎样去将数据报文通过路由达到不同的局域网的主机上。IP协议依赖于特定的网络主机,称为路由或网关。路由是一个主机连接至少两个局域网络,能够将数据报文从一个局域网前向发送到另一个局域网,一个路由器有多个ip地址,每个ip地址属于一个局域网。 6、TCP/UDP/ICMP,建立在IP层之上的传输层协议,TCP为面向连接的协议,路由只在连接建立的时候,后续为有序传输;UDP为非连接的协议,每个UDP报文相互独立路由,上层的应用可以依靠相关的报文字段在应用层上进行组装。 还有上层的诸多应用协议,如HTTP,FTP,HTTPS等,都是在IP层之上建立的应用层协议,如有必要,可以根据自己应用的特点自行设计网络应用协议。 OSI model是计算机网络技术的重点内容,也是计算机通信技术核心和关键,是计算机网络技术的基石,在有设计网络通信的软件开发中,我们一般会用到抽象的软件开发库进行开发,如基于套接字(socket)的开发,有系统提供原生的socket编程接口,以及一些优化了开发过程的网络开发库,如python的twisted,c++ boost的asio库等等。 互联网七层或五层协议设计精巧,好比剥洋葱一样,下一层会在上一层的基础上添加一定的关于特定层信息的报文头,通过每个层的不同的抽象功能,使得计算机通信从少量的文本,到大量的流媒体带宽需求都会显得游刃有余。而且基于端口的协议实际上也借鉴了现实世界中的港口的概念,数据传输好比货物运输,计算机的不同端口就实现了每个任务独立的通信。因此可以说计算机网络技术是单个计算机的精兵强将变成声势浩大的百万大军的有利武器,是计算机技术中的最伟大发明之一。更多的网络协议细节会后续在计算机网络课程中详细介绍。 References
-
云计算相关技术简介(一)-虚拟化及NUMA架构
云计算是数字化产业的硬软件基础设施,涵盖技术的方方面面,这篇文章主要从一些底层的硬件方面的技术来简要介绍一下,这些技术底层的原理可能比较复杂,我们主要了解其作用和用法,介绍也主要从我们的需求出发。 CPU虚拟化技术,CPU的虚拟化技术可以单CPU模拟多CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令。纯软件虚拟化解决方案存在很多限制。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。AMD方面也已经发布了支持AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产品。启用虚拟化只需要在物理cpu的bios中开启虚拟化,然后在vmware等系统中才可以使用虚拟化特性。 UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。为了解决这些问题,有人搞出了NUMA。NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller)。在 Node 内部,架构类似SMP,使用 IMC Bus 进行不同核心间的通信;不同的 Node 间通过QPI(Quick Path Interconnect)进行通信。Openstack 在 Juno 版本中新增 NUMA 特性,用户可以通过将 Guest 的 vCPU/Memory 绑定到 Host NUMA Node上,以此来提升 Guest 的性能。 hypervisor: 一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(virtual machine monitor)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,并且加载所有虚拟机的客户操作系统。 KVM是首个被集成到 Linux 内核的 hypervisor 解决方案,并且实现了完整的虚拟化。qemu-kvm也是常用到的具体实现技术。 References