1 数据中心
数据中心里面是服务器。服务器被放在一个个叫作机架(Rack)的架子上面。
数据中心的入口和出口是路由器,称为边界路由器(Border Router),且为了高可用,边界路由器会有多个,为了当一个运营商出问题的时候,还可以通过另外一个运营商来提供服务,边界路由器会连接多个运营商网络。
数据中心往往就是路由协议中的自治区域(AS),通过BGP协议,获取内外互通的路由信息。
数据中心里面往往有非常多的机器,当塞满一机架的时候,需要有交换机将这些服务器连接起来,可以互相通信。
这些交换机往往是放在机架顶端的,所以经常称为TOR(Top Of Rack)交换机。这一层的交换机常常称为接入层(Access Layer)。
当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。
这些交换机对性能的要求更高,带宽也更大。这些交换机称为汇聚层交换机(Aggregation
Layer)。
架构:
数据中心里面的每一个连接都是需要考虑高可用的,所以需要至少两个网卡,都插到TOR交换机上,但是两个网卡要工作得像一张网卡一样,这就是网卡绑定(bond);
需要服务器和交换机都支持LACP(Link Aggregation Control Protocol):它们互相通信,将多个网卡聚合称为一个网卡,多个网线聚合成一个网线,在网线之间可以进行负载均衡,也可以为了高可用作准备:
使用STP协议,保证交换机、接入层和汇聚层的连接的高可用,但是只能一主一备
也可以使用堆叠技术保证交换机、接入层和汇聚层的连接的高可用,且能形成双活:
汇聚层将大量的计算节点相互连接在一起,形成一个集群;
在这个集群里面,服务器之间通过二层互通,这个区域常称为一个POD(Point Of Delivery),有时候也称为一个可用区AZ(Available Zone)。
当节点数目再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机:
核心交换机吞吐量更大,高可用要求更高,肯定需要堆叠,但是往往仅仅堆叠,不足以满足吞吐量,因而还是需要部署多组核心交换机;
核心和汇聚交换机之间为了高可用,也是全互连模式的;
使用OSPF来解决:
随着数据中心里面的机器越来越多,集群规模非常大,而且都要求在一个二层网络里面。这就需要二层互连从汇聚层上升为核心层,也即在核心以下,全部是二层互连,全部在一个广播域里面,这就是大二层:
如果大二层横向流量很大,仅仅堆叠满足不了,就需要部署多组核心交换机,而且要和汇聚层进行全互连。由于堆叠只解决一个核心交换机组内的无环问题,而组之间全互连,还需要TRILL(Transparent Interconnection of Lots of Link),即多链接透明互联协议来解决;
它的基本思想是,二层环有问题,三层环没有问题,那就把三层的路由能力模拟在二层实现;
运行TRILL协议的交换机称为RBridge,是具有路由转发特性的网桥设备,这个路由是根据MAC地址来的,不是根据IP来的,Rbridage之间通过链路状态协议运作:
在核心交换上面,往往会挂一些安全设备,例如入侵检测、DDoS防护等等。这是整个数据中心的屏障,防止来自外来的攻击;
核心交换机上往往还有负载均衡器;
于是整个数据中心的网络为典型的三层网络结构:接入层、汇聚层、核心层,这种模式非常有利于外部流量请求到内部应用
这个类型的流量,是从外到内或者从内到外,对应到上图,就是从上到下,从下到上,上北下南,所以称为南北流量。
随着云计算和大数据的发展,节点之间的交互越来越多,这样需要经过交换机,使得数据从左到右,从右到左,左西右东,所以称为东西流量;
为了解决东西流量的问题,演进出了叶脊网络(Spine/Leaf):
叶子交换机(leaf):直接连接物理服务器。L2/L3网络的分界点在叶子交换机上,叶子交换机之上是三层网络。
脊交换机(spine switch):相当于核心交换机。叶脊之间通过ECMP动态选择多条路径。
脊交换机只是为叶子交换机提供一个弹性的L3路由网络。南北流量可以不用直接从脊交换机发出,而是通过与leaf交换机并行的交换机,再接到边界路由器出去。
传统的三层网络架构是垂直的结构,而叶脊网络架构是扁平的结构,更易于水平扩展。
2 VPN
使用VPN将多个数据中心连接起来,或将办公室电脑和数据中心连接起来,安全又不贵;
走公网不安全,租用专线太贵:
2.1 工作原理:以IPsec协议(基于IP协议的安全隧道协议)为例
VPN通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用一种协议来传输另外一种协议的技术,这里面涉及三种协议:乘客协议、隧道协议和承载协议。
保证安全性的机制:
机制一:私密性,防止信息泄漏给未经授权的个人,通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性。
使用对称加密,使用因特网密钥交换(IKE,Internet Key Exchange)协议解决加密秘钥传输的问题机制二:完整性,数据没有被非法篡改,通过对数据进行hash运算,产生类似于指纹的数据摘要,以保证数据的完整性。
机制三:真实性,数据确实是由特定的对端发出,通过身份认证可以保证数据的真实性。
IPsec协议簇:
在这个协议簇里面,有两种协议,这两种协议的区别在于封装网络包的格式不一样:
AH(Authentication Header):只能进行数据摘要 ,不能实现数据加密。
ESP(Encapsulating Security Payload):能够进行数据加密和数据摘要。
IPsec VPN的建立过程分为两个阶段:
第一个阶段,建立IKE自己的SA。
这个SA用来维护一个通过身份认证和安全保护的通道,为第二个阶段提供服务。在这个阶段,通DH(Diffie-Hellman)算法计算出一个对称密钥K。第二个阶段,建立IPsec SA。
在这个SA里面,双方会生成一个随机的对称密钥M,由K加密传给对方,然后使用M进行双方接下来通信的数据。对称密钥M是有过期时间的,会过一段时间,重新生成一次,从而防止被破解。
多协议标签交换(MPLS,Multi-Protocol Label Switching):结合了IP和ATM技术
还需要能够转发标签的路由器称为标签交换路由器(LSR,Label Switching Router);
这种路由器会有两个表格,一个就是传统的FIB,也即路由表,另一个就是LFIB,标签转发表。有了这两个表,既可以进行普通的路由转发,也可以进行基于标签的转发:
使用LDP来动态生成标签
3 移动网络
- 2G:
手机通过无线信号连接基站;基站子系统分两部分,一部分对外提供无线通信,叫作基站收发信台(BTS,Base Transceiver Station),另一部分对内连接有线网络,叫作基站控制器(BSC,Base StationController)。基站收发信台通过无线收到数据后,转发给基站控制器。
基站一面朝前接无线,一面朝后接核心网;
核心网一面朝前接到基站请求,一是判断你是否合法,二是判断你是不是本地号,还有没有钱,一面通过网关连接电话网络。
鉴权中心(AUC,Authentication Center)和设备识别寄存器(EIR,Equipment Identity Register)主要是负责安全性的。
访问位置寄存器(VLR,Visit Location Register)是看号码目前在的地方,归属位置寄存器(HLR,Home Location Register)是看号码归属地。
- 2.5G:在原来电路交换的基础上,加入了分组交换业务,支持Packet的转发,从而支持IP网络。
多了一个分组控制单元(PCU,Packet Control Unit),用以提供分组交换通道。
- 3G:无线通信技术有了改进,大大增加了无线的带宽。
- 4G:,基站为eNodeB,包含了原来Node B和RNC的功能,下行速度向百兆级别迈进。另外,核心网实现了控制面和数据面的分离
eNodeB和MME之间的连接就是很正常的IP网络,在IP层之上则使用了SCTP。
当MME通过认证鉴权,同意这个手机上网的时候,需要建立一个数据面的数据通路。建立通路的过程还是控制面的事情,因而使用的是控制面的协议GTP-C,GTP-C协议是基于UDP封装的协议
上网流程:
- 手机开机以后,在附近寻找基站eNodeB,找到后给eNodeB发送Attach Request,说“我要上网”。
- eNodeB将请求发给MME,说“有个手机要上网”。
- MME去请求手机,一是认证,二是鉴权,还会请求HSS看看有没有钱,看看是在哪里上网。
- 当MME通过了手机的认证之后,开始分配隧道,先告诉SGW,说要创建一个会话(Create Session)。在这里面,会给SGW分配一个隧道ID t1,并且请求SGW给自己也分配一个隧道ID。
- SGW转头向PGW请求建立一个会话,为PGW的控制面分配一个隧道ID t2,也给PGW的数据面分配一个隧道ID t3,并且请求PGW给自己的控制面和数据面分配隧道ID。
- PGW回复SGW说“创建会话成功”,使用自己的控制面隧道ID t2,回复里面携带着给SGW控制面分配的隧道ID t4和控制面的隧道ID t5,至此SGW和PGW直接的隧道建设完成。双方请求对方,都要带着对方给自己分配的隧道ID,从而标志是这个手机的请求。
- 接下来SGW回复MME说“创建会话成功”,使用自己的隧道ID t1访问MME,回复里面有给MME分配隧道ID t6,也有SGW给eNodeB分配的隧道ID t7。
- 当MME发现后面的隧道都建设成功之后,就告诉eNodeB,“后面的隧道已经建设完毕,SGW给你分配的隧道ID是t7,你可以开始连上来了,但是你也要给SGW分配一个隧道ID”。
- eNodeB告诉MME自己给SGW分配一个隧道,ID为t8。
- MME将eNodeB给SGW分配的隧道ID t8告知SGW,从而前面的隧道也建设完毕。
- 分SGW和PGW的原因是为了异地上网,在国外搜到国外的eNodeB后,会和国外的SGW建立一个隧道,然后国外的SGW和国内运营商的PGW建立一个隧道,然后通过国内运营商的PGW上网;
- 这样即便在国外的运营商下上网,也是要通过国内运营商控制的