作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识。
废话不多说!下面就逐一展开对这两个网络架构知识的说明:
一、OSI七层网络协议
OSI是Open System Interconnect的缩写,意为开放式系统互联。
OSI
参考模型各个层次的划分遵循下列原则:
1.根据不同层次的抽象分层
2.每层应当有一个定义明确的功能
3.每层功能的选择应该有助于制定网络协议的国际标准。
4.各层边界的选择应尽量节省跨过接口的通信量。
5.层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大
6.同一层中的各网络节点都有相同的层次结构,具有同样的功能。
7.同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。
8.七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。
9.不同节点的同等层按照协议实现对等层之间的通信。
根据以上标准,OSI参考模型分为(从上到下):
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。
各层功能见下表:
七层模型的每一层都具有清晰的特征。基本来说:
1)第七至第四层(应用层->表示层->会话层->传输层)处理数据源和数据目的地之间的端到端通信,
2)第三至第一层(网络层->数据链路层->物理层)处理网络设备间的通信。
另外:
OSI模型的七层也可以划分为两组:
1)上层(层7、层6和层5,即应用层->表示层->会话层)。上层处理应用程序问题,并且通常只应用在软件上。最高层,即应用层是与终端用户最接近的。
2)下层(层4、层3、层2和层1,即传输层->网络层->数据链路层->物理层)。下层是处理数据传输的。物理层和数据链路层应用在硬件和软件上。最底层,即物理层是与物理网络媒介(比如说,电线)最接近的,并且负责在媒介上发送
第7层-应用层
定义了用于在网络中进行通信和数据传输的接口 - 用户程式;
提供标准服务,比如虚拟终端、文件以及任务的传输和处 理;
应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet
、FTP
、HTTP
、SNMP
等。
第6层-表示层
掩盖不同系统间的数据格式的不同性;
指定独立结构的数据传输格式;
数据的编码和解码;加密和解密; 压缩和解压缩
这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。
第5层-会话层
管理用户会话和对话;
控制用户间逻辑连接的建立和挂断;
报告上一层发生的错误
这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
第4层-处理信息的传输层
管理网络中端到端的信息传送;
通过错误纠正和流控制机制提供可靠且有序的数据包传送;
提供面向无连 接的数据包的传送;
第4层的数据单元也称作数据包(packets
)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments
)而UDP协议的数据单元称为“数据报(datagrams
)。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP
、UDP
、SPX
等。
第3层-网络层
定义网络设备间如何传输数据;
根据唯一的网络设备地址路由数据包;
提供流和拥塞控制以防止网络资源 的损耗
在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP
)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP
、IPX
、RIP
、OSPF
等。
第2层-数据链路层(DataLinkLayer):
定义操作通信连接的程序;
封装数据包为数据帧;
监测和纠正数据包传输错误
在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame
)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame
)。数据链路层协议的代表包括:SDLC
、HDLC
、PPP
、STP
、帧中继
等。
第1层-物理层(PhysicalLayer)
定义通过网络设备发送数据的物理方式;
作为网络媒介和设备间的接口;
定义光学、电气以及机械特性。
规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE
和DCE
之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE
和DCE
双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232
、EIA/TIA RS-449
、V.35
、RJ-45
等。
二、TCP/IP
TCP/IP
(传输控制协议/网间网协议)是目前世界上应用最为广泛的协议,它的流行与Internet的迅猛发展密切相关。
TCP/IP
最初是为互联网的原型ARPANET
所设计的,目的是提供一整套方便实用、能应用于多种网络上的协议,事实证明TCP/IP
做到了这一点,它使网络互联变得容易起来,并且使越来越多的网络加入其中,成为Internet
的事实标准。
TCP/IP协议族包含了很多功能各异的子协议。为此我们也利用上文所述的分层的方式来剖析它的结构。
TCP/IP层次模型共分为四层:应用层->传输层->网络层->数据链路层。
各层功能见下表
TCP
(Transmission Control Protocol:传输控制协议)和UDP
(User Datagram Protocol:用户数据报协议)协议属于传输层协议。其中:
1)TCP
提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
2)UDP
则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。
应用层
应用层是所有用户所面向的应用程序的统称。TCP/IP协议族在这一层面有着很多协议来支持不同的应用,许多大家所熟悉的基于Internet的应用的实现就离不开这些协议。如我们进行万维网(WWW)访问用到了HTTP
协议、文件传输用FTP
协议、电子邮件发送用SMTP
、域名的解析用DNS
协议、远程登录用Telnet
协议等等,都是属于TCP/IP应用层的;就用户而言,看到的是由一个个软件所构筑的大多为图形化的操作界面,而实际后台运行的便是上述协议。
传输层
这一层的的功能主要是提供应用程序间的通信,TCP/IP协议族
在这一层的协议有TCP和UDP。
网络层
TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。
网络接口层
这是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
TCP支持的应用协议主要有:Telnet、FTP、SMTP等;
UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点。
TCP连接建立-断开的过程说明(可以参考:高效运维-三次握手和四次挥手)
TCP连接的端点叫做套接字
(socket
)或插口,即(IP地址:端口号),每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP的运输连接有三个阶段,即连接建立、数据传送、连接释放。
TCP连接建立的过程要使每一方能够确定对方的存在:主动发起连接建立的应用进行叫做客户(client),被动等待连接建立的应用进程叫做服务器
(server
),连接建立的过程叫做三次握手
。
假设A为客户,B为服务器,A发送一个报文给B,B发回确认,然后A再加以确认,来回共三次,成为“三次握手”。三次握手建立连接~
所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:
1)第一次握手:
Client
将标志位SYN
置为1,随机产生一个值seq=J
,并将该数据包发送给Server
,Client
进入SYN_SENT
状态,等待Server
确认。2)第二次握手:
Server
收到数据包后由标志位SYN=1
知道Client
请求建立连接,Server
将标志位SYN
和ACK
都置为1,ack=J+1
,随机产生一个值seq=K
,并将该数据包发送给Client
以确认连接请求,Server
进入SYN_RCVD
状态。3)第三次握手:
Client
收到确认后,检查ack
是否为J+1,ACK
是否为1,如果正确则将标志位ACK
置为1,ack=K+1
,并将该数据包发送给Server
,Server
检查ack
是否为K+1,ACK
是否为1,如果正确则连接建立成功,Client
和Server
进入ESTABLISHED
状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
SYN攻击解释:
三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:#netstat -nap | grep SYN_RECV
连接的释放需要发送四个包,因此称为“四次挥手
”,四次挥手断开连接。客户端或服务器都可以主动发起挥手动作。
所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
1)第一次挥手:
Client
发送一个FIN
,用来关闭Client
到Server
的数据传送,Client
进入FIN_WAIT_1
状态。2)第二次挥手:
Server
收到FIN
后,发送一个ACK
给Client
,确认序号为收到序号+1(与SYN
相同,一个FIN
占用一个序号),Server
进入CLOSE_WAIT
状态。3)第三次挥手:
Server
发送一个FIN
,用来关闭Server
到Client
的数据传送,Server
进入LAST_ACK
状态。4)第四次挥手:
Client
收到FIN
后,Client
进入TIME_WAIT
状态,接着发送一个ACK
给Server
,确认序号为收到序号+1,Server
进入CLOSED
状态,完成四次挥手。
上面是一方主动关闭,另一方被动关闭的情况(由一方发起挥手),实际中还会出现同时发起主动关闭的情况,具体流程如下图(同时挥手):
为什么连接的时候是三次握手,关闭的时候却是四次握手?
这是因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
但是关闭连接时,当Client端发送FIN报文仅仅表示它不再发送数据了但是还能接收数据,Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
三、OSI七层网络与TCP/IP五层网络的区别与联系
除了层的数量之外,开放式系统互联(OSI)模型与TCP/IP协议有什么区别?
开放式系统互联模型是一个参考标准,解释协议相互之间应该如何相互作用。TCP/IP协议是美国国防部发明的,是让互联网成为了目前这个样子的标准之一。
开放式系统互联模型中没有清楚地描绘TCP/IP协议,但是在解释TCP/IP协议时很容易想到开放式系统互联模型。
两者的主要区别如下:
1.TCP/IP协议中的应用层处理OSI模型中的第五层、第六层和第七层的功能。
2.TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而OSI模型可以做到。
3.TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。
先简单对比下二层网络和三层网络的区别:
1)不同网段的ip通信,需要经过三层网络。相同网段的ip通信,经过二层网络;
2)二层网络仅仅通过MAC寻址即可实现通讯,但仅仅是同一个冲突域内;三层网络需要通过IP路由实现跨网段的通讯,可以跨多个冲突域;
3)二层网络的组网能力非常有限,一般只是小局域网;三层网络则可以组大型的网络。
4)二层网络基本上是一个安全域,也就是说在同一个二层网络内,终端的安全性从网络上讲基本上是一样的,除非有其它特殊的安全措施;
三层网络则可以划分出相对独立的多个安全域。
5)很多技术相对是在二层局域网中用得多,比如DHCP、Windows提供的共享连接等,如需在三层网络上使用,则需要考虑其它设备的支持
(比如通过DHCP中继代理等)或通过其它的方式来实现。
二层网络与三层网络的详细对比
网络结构的变化过程:
a)按照物理拓扑结构分类,网络结构经历了总线型、环型、星型、树型、混合型等结构。
b)按照逻辑拓扑结构分类,网络结构经历了二层网络架构、三层网络架构以及最近兴起的大二层网络架构。
传统的数据交换都是在OSI 参考模型的数据链路层发生的,也就是按照MAC 地址进行寻址并进行数据转发,并建立和维护一个MAC 地址表,
用来记录接收到的数据包中的MAC 地址及其所对应的端口。此种类型的网络均为小范围的二层网络。
一、二层网络的工作流程:
1)数据包接收:首先交换机接收某端口中传输过来的数据包,并对该数据包的源文件进行解析,获取其源MAC 地址,确定发放源数据包主机
2)传输数据包到目的MAC 地址:首先判断目的MAC 地址是否存在,如果交换机所存储的MAC 地址表中有此MAC 地址所对应的端口,那么直接将数据包发送给这个端口;如果在交换机存储列表中找不到对应的目的MAC 地址,交换机则会对数据包进行全端口广播,直至收到目的设备的回应,交换机通过此次广播学习、记忆并建立目的MAC 地址和目的端口的对应关系,以备以后快速建立与该目的设备的联系;
3)如果交换机所存储的MAC 地址表中没有此地址,就会将数据包广播发送到所有端口上,当目的终端给出回应时,交换机又学习到了一个新的MAC 地址与端口的对应关系,并存储在自身的MAC 地址表中。当下次发送数据的时候就可以直接发送到这个端口而非广播发送了。
以上就是交换机将一个MAC 地址添加到列表的流程,该过程循环往复,交换机就能够对整个网络中存在的MAC 地址进行记忆并添加到地址列表,这就是二层(OSI 二层)交换机对MAC 地址进行建立、维护的全过程。
从上述过程不难看出,传统的二层网络结构模式虽然运行简便但在很大程度上限制了网络规模的扩大,由于传统网络结构中采用的是广播的方式来实现数据的传输,极易形成广播风暴,进而造成网络的瘫痪。这就是各个计算机研究机构所面临的“二层网络存在的天然瓶颈”,由于该瓶颈的存在,使得大规模的数据传输和资源共享难以实现,基于传统的二层网络结构也很难实现局域网络规模化。
为了适应大规模网络的产生于发展,基于分层、简化的思想,三层网络模式被成功设计推出。三层网络架构的基本思想就是将大规模、较复杂的
网络进行分层次分模块处理,为每个模块指定对应的功能,各司其职,互不干扰,大大提高了数据传输的速率。
二、三层网络结构的设计
顾名思义,具有三个层次:核心层、汇聚层、接入层。下面将对三个层次的作用分别进行说明。
1)核心层:在互联网中承载着网络服务器与各应用端口间的传输功能,是整个网络的支撑脊梁和数据传输通道,重要性不言而喻。因此,网络对于核心层要求极高,核心层必须具备数据存储的高安全性,数据传输的高效性和可靠性,对数据错误的高容错性,以及数据管理方面的便捷性和高适应性等性能。在核心层搭建中,设备的采购必须严格按需采购,满足上述功能需求,这就对交换机的带宽以及数据承载能力提出了更高的要求,因为核心层一旦堵塞将造成大面积网络瘫痪,因此必须配备高性能的数据冗余转接设备和防止负载过剩的均衡过剩负载的设备,以降低各核心层交换机所需承载的数据量,以保障网络高速、安全的运转。
2)汇聚层:连接网络的核心层和各个接入的应用层,在两层之间承担“媒介传输”的作用。每个应用接入都经过汇聚层进行数据处理,再与核心层进行有效的连接,通过汇聚层的有效整合对核心层的荷载量进行降低。根据汇聚层的作用要求,汇聚层应该具备以下功能:实施安全功能、工作组整体接入功能、虚拟网络过滤功能等。因此,汇聚层中设备的采购必须具备三层网络的接入交换功能,同时支持虚拟网络的创建功能,从而实现不同网络间的数据隔离安全,能够将大型网络进行分段划分,化繁为简。
3)接入层:接入层的面向对象主要是终端客户,为终端客户提供接入功能,区别于核心层和汇聚层提供各种策略的功能。接入层的主要功能是规划同一网段中的工作站个数,提高各接入终端的带宽。在搭建网络架构时,既要考虑网络的综合实用性,也要考虑经济效益,因此在接入层设备采购时可以选择数据链路层中较低端的交换机,而不是越高端越昂贵越好。
随着近年来互联网的应用规模急剧扩张,对数据传输的要求也越来越高,基于数据整合的云计算技术逐渐受到人们的关注。计算机网络作为当今社会各种信息的传输媒介,其组成架构也即将发生重大变革。鉴于传统三层网络VLan 隔离以及STP 收敛上的缺陷,传统网络结构急需打破。现有研究机构开始致力于新型高效网络架构的研发与探索,结合早期的扁平化架构的原有二层网络与现有三层网络的优缺点提出了大二层网络架构。
大二层网络
1)为什么需要大二层网络
传统的三层数据中心架构结构的设计是为了应付服务客户端-服务器应用程序的纵贯式大流量,同时使网络管理员能够对流量流进行管理。工程师在这些架构中采用生成树协议(STP)来优化客户端到服务器的路径和支持连接冗余,通常将二层网络的范围限制在网络接入层以下,避免出现大范围的二层广播域;
虚拟化从根本上改变了数据中心网络架构的需求,既虚拟化引入了虚拟机动态迁移技术。从而要求网络支持大范围的二层域。从根本上改变了传统三层网络统治数据中心网络的局面。具体的来说,虚拟化技术的一项伴生技术—虚拟机动态迁移(如VMware的VMotion)在数据中心得到了广泛的应用,虚拟机迁移要求虚拟机迁移前后的IP和MAC地址不变,这就需要虚拟机迁移前后的网络处于同一个二层域内部。由于客户要求虚拟机迁移的范围越来越大,甚至是跨越不同地域、不同机房之间的迁移,所以使得数据中心二层网络的范围越来越大,甚至出现了专业的大二层网络这一新领域专题。
思考两个问题:
a)IP及MAC不变的理由?
对业务透明、业务不中断
b)IP及MAC不变,那么为什么必须是二层域内?
IP不变,那么就不能够实现基于IP的寻址(三层),那么只能实现基于MAC的寻址,既二层寻址,大二层,顾名思义,此是二层网络,根据MAC地址进行寻址
2)传统的二层网络大不起来的原因
在数据中心网络中,“区域”对应VLAN的划分。相同VLAN内的终端属于同一广播域,具有一致的VLAN-ID,二层连通;不同VLAN内的终端需要通过网关互相访问,二层隔离,三层连通。传统的数据中心设计,区域和VLAN的划分粒度是比较细的,这主要取决于“需求”和“网络规模”。
传统的数据中心主要是依据功能进行区域划分,例如WEB、APP、DB,办公区、业务区、内联区、外联区等等。不同区域之间通过网关和安全设备互访,保证不同区域的可靠性、安全性。同时,不同区域由于具有不同的功能,因此需要相互访问数据时,只要终端之间能够通信即可,并不一定要求通信双方处于同一VLAN或二层网络。
传统的数据中心网络技术, STP是二层网络中非常重要的一种协议。用户构建网络时,为了保证可靠性,通常会采用冗余设备和冗余链路,这样就不可避免的形成环路。而二层网络处于同一个广播域下,广播报文在环路中会反复持续传送,形成广播风暴,瞬间即可导致端口阻塞和设备瘫痪。因此,为了防止广播风暴,就必须防止形成环路。这样,既要防止形成环路,又要保证可靠性,就只能将冗余设备和冗余链路变成备份设备和备份链路。即冗余的设备端口和链路在正常情况下被阻塞掉,不参与数据报文的转发。只有当前转发的设备、端口、链路出现故障,导致网络不通的时候,冗余的设备端口和链路才会被打开,使得网络能够恢复正常。实现这些自动控制功能的就是STP(Spanning Tree Protocol,生成树协议)。 由于STP的收敛性能等原因,一般情况下STP的网络规模不会超过100台交换机。同时由于STP需要阻塞掉冗余设备和链路,也降低了网络资源的带宽利用率。因此在实际网络规划时,从转发性能、利用率、可靠性等方面考虑,会尽可能控制STP网络范围。
随着数据大集中的发展和虚拟化技术的应用,数据中心的规模与日俱增,不仅对二层网络的区域范围要求也越来越大,在需求和管理水平上也提出了新的挑战。
数据中心区域规模和业务处理需求的增加,对于集群处理的应用越来越多,集群内的服务器需要在一个二层VLAN下。同时,虚拟化技术的应用,在带来业务部署的便利性和灵活性基础上,虚拟机的迁移问题也成为必须要考虑的问题。为了保证虚拟机承载业务的连续性,虚拟机迁移前后的IP地址不变,因此虚拟机的迁移范围需要在同一个二层VLAN下。反过来即,二层网络规模有多大,虚拟机才能迁移有多远。
传统的基于STP备份设备和链路方案已经不能满足数据中心规模、带宽的需求,并且STP协议几秒至几分钟的故障收敛时间,也不能满足数据中心的可靠性要求。因此,需要能够有新的技术,在满足二层网络规模的同时,也能够充分利用冗余设备和链路,提升链路利用率,而且数据中心的故障收敛时间能够降低到亚秒甚至毫秒级。
3)实现大二层网络的技术
大二层网络是针对当前最火热的虚拟化数据中心的虚拟机动态迁移这一特定需求而提出的概念,对于其他类型的网络并无特殊的价值和意义。
在虚拟化数据中心里,一台物理服务器被虚拟化为多台逻辑服务器,被称为虚拟机VM,每个VM都可以独立运行,有自己的OS、APP,在网络层面有自己独立的MAC地址和IP地址。而VM动态迁移是指将VM从一个物理服务器迁移到另一个物理服务器,并且要保证在迁移过程中,VM的业务不能中断。
为了实现VM动态迁移时,在网络层面要求迁移时不仅VM的IP地址不变、而且运行状态也必须保持(例如TCP会话状态),这就要求迁移的起始和目标位置必须在同一个二层网络域之中。
所以,为了实现VM的大范围甚至跨地域的动态迁移,就要求把VM迁移可能涉及的所有服务器都纳入同一个二层网络域,这样才能实现VM的大范围无障碍迁移。这就是大二层网络的需求由来,一个真正意义的大二层网络至少要能容纳1万以上的主机,才能称之为大二层网络。而传统的基于VLAN+xSTP的二层网络,由于环路和广播风暴、以及xSTP协议的性能限制等原因,通常能容纳的主机数量不会超过1K,无法实现大二层网络。当前,实现大二层网络的主要技术有以下几种:
a)网络设备虚拟化技术
网络设备虚拟化是将相互冗余的两台或多台物理网络设备组合在一起,虚拟化成一台逻辑网络设备,在整个网络中只呈现为一个节点。例如华为的CSS框式堆叠、iStack盒式堆叠、SVF框盒堆叠技术等。
网络设备虚拟化再配合链路聚合技术,就可以把原来网络的多节点、多链路的结构变成逻辑上单节点、单链路的结构,解决了二层网络中的环路问题。没有了环路问题,就不需要xSTP,二层网络就可以范围无限(只要虚拟网络设备的接入能力允许),从而实现大二层网络。
b)大二层转发技术
大二层转发技术是通过定义新的转发协议,改变传统二层网络的转发模式,将三层网络的路由转发模式引入到二层网络中。例如TRILL、SPB等。
以TRILL为例,TRILL协议在原始以太帧外封装一个TRILL帧头,再封装一个新的以太帧来实现对原始以太帧的透明传输,支持TRILL的交换机可通过TRILL帧头里的Nickname标识来进行转发,而Nickname就像路由一样,可通过IS-IS路由协议进行收集、同步和更新。
c)Overlay技术
Overlay技术是通过用隧道封装的方式,将源主机发出的原始二层报文封装后在现有网络中进行透明传输,从而实现主机之间的二层通信。通过封装和解封装,相当于一个大二层网络叠加在现有的基础网络之上,所以称为Overlay技术。
Overlay技术通过隧道封装的方式,忽略承载网络的结构和细节,可以把整个承载网络当作一台“巨大无比的二层交换机”, 每一台主机都是直连在“交换机”的一个端口上。而承载网络之内如何转发都是 “交换机”内部的事情,主机完全不可见。Overlay技术主要有VXLAN、NVGRE、STT等。
4)大二层网络需要有多大、及技术选型
1. 数据中心内
大二层首先需要解决的是数据中心内部的网络扩展问题,通过大规模二层网络和VLAN延伸,实现虚拟机在数据中心内部的大范围迁移。由于数据中心内的大二层网络都要覆盖多个接入交换机和核心交换机,主要有以下两类技术。
a) 虚拟交换机技术
虚拟交换机技术的出发点很简单,属于工程派。既然二层网络的核心是环路问题,而环路问题是随着冗余设备和链路产生的,那么如果将相互冗余的两台或多台设备、两条或多条链路合并成一台设备和一条链路,就可以回到之前的单设备、单链路情况,环路自然也就不存在了。尤其是交换机技术的发展,虚拟交换机从低端盒式设备到高端框式设备都已经广泛应用,具备了相当的成熟度和稳定度。因此,虚拟交换机技术成为目前应用最广的大二层解决方案。 虚拟交换机技术的代表是H3C公司的IRF、Cisco公司的VSS,其特点是只需要交换机软件升级即可支持,应用成本低,部署简单。目前这些技术都是各厂商独立实现和完成的,只能同一厂商的相同系列产品之间才能实施虚拟化。同时,由于高端框式交换机的性能、密度越来越高,对虚拟交换机的技术要求也越来越高,目前框式交换机的虚拟化密度最高为4:1。虚拟交换机的密度限制了二层网络的规模大约在1万~2万台服务器左右。
b) 隧道技术
隧道技术属于技术派,出发点是借船出海。二层网络不能有环路,冗余链路必须要阻塞掉,但三层网络显然不存在这个问题,而且还可以做ECMP(等价链路),能否借用过来呢?通过在二层报文前插入额外的帧头,并且采用路由计算的方式控制整网数据的转发,不仅可以在冗余链路下防止广播风暴,而且可以做ECMP。这样可以将二层网络的规模扩展到整张网络,而不会受核心交换机数量的限制。
隧道技术的代表是TRILL、SPB,都是通过借用IS-IS路由协议的计算和转发模式,实现二层网络的大规模扩展。这些技术的特点是可以构建比虚拟交换机技术更大的超大规模二层网络(应用于大规模集群计算),但尚未完全成熟,目前正在标准化过程中。同时传统交换机不仅需要软件升级,还需要硬件支持。
2. 跨数据中心
随着数据中心多中心的部署,虚拟机的跨数据中心迁移、灾备,跨数据中心业务负载分担等需求,使得二层网络的扩展不仅是在数据中心的边界为止,还需要考虑跨越数据中心机房的区域,延伸到同城备份中心、远程灾备中心。
一般情况下,多数据中心之间的连接是通过路由连通的,天然是一个三层网络。而要实现通过三层网络连接的两个二层网络互通,就必须实现“L2 over L3”。
L2oL3技术也有许多种,例如传统的VPLS(MPLS L2VPN)技术,以及新兴的Cisco OTV、H3C EVI技术,都是借助隧道的方式,将二层数据报文封装在三层报文中,跨越中间的三层网络,实现两地二层数据的互通。这种隧道就像一个虚拟的桥,将多个数据中心的二层网络贯穿在一起。
也有部分虚拟化和软件厂商提出了软件的L2 over L3技术解决方案。例如VMware的VXLAN、微软的NVGRE,在虚拟化层的vSwitch中将二层数据封装在UDP、GRE报文中,在物理网络拓扑上构建一层虚拟化网络层,从而摆脱对网络设备层的二层、三层限制。这些技术由于性能、扩展性等问题,也没有得到广泛的使用。
常见数据中心架构
full layer3网络属于传统的数据中心网络。服务器网关部署在接入交换机上,整网通过路由协议控制拓扑和转发路径。这样的网络架构的主要优势在于技术成熟、有大量的运维经验。网络系统稳定且便于维护。但是Full layer3网络的不足之处在于不能支持虚拟化数据中心虚拟机的自由迁移,所以在进入云计算时代后,Full layer3网络逐渐被淘汰。Full layer2网络是下一代数据中心的网络模型。服务器网关在核心层,整网通过TRILL或是SPB协议控制拓扑和转发路径。这样的网络架构主要优势在于能够支持大规模的二层网络,能够支持足够规模的虚拟机资源池。但是,这个网络模型的缺点也是非常明显的。TRILL协议虽然已经标准化(SPB协议正在标准化),但是大规模的二层网络缺乏运维经验。没有运维经验,也就意味着运维成本的大幅度提升,同时也会给业务系统带来巨大的风险。
在汇聚层上部署EVI特性,通过核心与汇聚之间的IP网络建立Vlink实现二层互通。通过EVI特性将指定的多个二层域连接起来,形成一个完整的大规模二层网络。这样就可以实现虚拟机大规模池化功能。同时,可以避免使用TRILL或是SPB协议带来的运维风险。
注意:常规IP包转发过程中,源IP及目的IP保持不变,源MAC与目的MAC不断发生变化,既源MAC是自己的mac,目的mac是下一跳(主机或者路由器)的mac;路由器将数据转发出去的阶段,需要知道下一跳的mac地址,通过arp协议获取,并存储在路由器的arp表内,供下次查询使用。
本文转载自博客园:网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络