0. 背景介绍,把人吸引过来
环境适配层EAL
DPDK的加载和启动
支持多线程和多进程执行方式
CPU亲和性设置
系统内存分配和释放
原子操作
定时器引用
PCI总线访问
跟踪和调试功能
CPU特性编号
中断处理
警告操作
内存管理
概念
Region:区域或者大区,Region之间相互隔离,实现最大程度的容错能力和稳定性。
Availability Zones:每个区域都有多个相互隔离的位置,称为可用区。当启动实例时,用户可以自己选择一个可用区。如果实例分布在多个可用区且其中的某个实例发生故障,则可对应用程序进行相应设计,以使另一可用区中的实例可代为处理相关请求。简称:AZ
云主机(服务器):是一种可扩展的计算服务,支持用户自定义一切资源,例如CPU、内存、硬盘、网络、安全等,并可以在需求发生变化时轻松地调整它们。
宿主机:云上的物理服务器,云主机运行的物理载体。
虚拟交换机:宿主机上运行的云网络的虚拟交换机,主要对云网络进行虚拟化,例如实现私有网络VPC、安全组、负载均衡等功能。
云服务网关:主要是实现私有网络VPC和云上的服务互通,例如对象存储、文件系统、数据库等。
公网网关:实现私有网络的VPC的云主机访问公网的能力。
混合云网关:实现云上的私有网络VPC和用户的机房互通。
CCNGW:云联网网关
vSwitch:虚拟交换机
DR:园区交换机
DCI:骨干网
STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计 [1] 。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。
IGP(内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。IGP协议包括RIP、OSPF、IS-IS、IGRP、EIGRP。
外部网关协议(Exterior Gateway Protocol)是AS之间使用的路由协议,最初于1982年由BBN技术公司的EricC.Rosen及DavidL.Mills提出。其最早在RFC827中描述,并于1984年在RFC904中被正式规范。EGP是一种简单的(网络)可达性协议,其与现代的距离-矢量协议和路径-矢量协议不同,它仅限适用于树状拓扑的网络。
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
软件定义网络 (SDN) :腾讯云的虚拟化云网络是一种软件定义网络(Software-defined networking,SDN)。软件定义网络 (SDN) 旨在赋予网络灵活性和敏捷性。利用 SDN 设计、构建和管理网络,可以实现控制平面和数据平面的分离,通过直接对控制平面进行编程,并对用于应用和网络服务的底层基础设施进行抽象化。

OpenFlow:一种网络通信协议,能够控制网络设备的转发平面,借此改变数据包所走的网络路径。
腾讯云网络VPC的解决方案

网络虚拟化
拓扑虚拟化
拓扑虚拟化本质上是实现虚拟节点和虚拟链路到物理节点和链路的映射。其中包括“一对一”和“一对多”的映射。“一对一”的映射中,一个虚拟节点将会映射成一个物理节点,同理虚拟链路也是。而在“一对多”的映射中,一个虚拟节点可以映射成由多个连接在一起的物理节点;一条逻辑链路也可能映射成由链接在一起的多条链路。而对于物理节点而言,一个物理节点可以被多个逻辑节点映射。
节点资源虚拟化
节点资源的虚拟化包括对节点Flow tables(流表)、CPU等资源的抽象虚拟化,分配给不同的租户,那么就可以实现不同租户对节点资源使用的分配和限制。
链路资源虚拟化
和节点资源一样,链路资源也是网络中重要的资源,而拓扑抽象并没有规定某些用户可使用的链路资源的多少。所以在进行更细粒度的虚拟化时,有必要对链路资源进行虚拟化,从而实现链路资源的合理分配,可被抽象虚拟化的链路资源包括租户可使用的带宽以及端口的队列资源等等。
网络隔离
网络资源虚拟化仅仅完成了物理资源到虚拟资源的抽象过程,为实现完全的网络虚拟化,还需要对不同的租户提供隔离的网络资源。网络隔离需要对SDN的控制平面和数据平面进行隔离,从而保证不同租户控制器之间互补干扰,不同虚网之间彼此隔离。此外,为了满足用户对地址空间自定义的需求,虚拟化平台还需要对网络地址进行虚拟化。
https://mp.weixin.qq.com/s/iilywPzB-GmUvceN1QpvOw
云联网(Cloud Connect Network,CCN)用于提供腾讯云VPC间、VPC与本地数据中心间(IDC)内网互联的服务,具备全网多点互联、路由自学习、链路选优及故障快速收敛等能力。云联网覆盖全球20+地域,支持100+Gbps带宽以及最高可达99.99%的可用性,为您轻松构建极速、稳定、安全、灵活的全球互联网络。
解决LAN的广播域过大问题
https://www.cnblogs.com/cxuanBlog/p/15587465.html
;CPL是当前执行的程序或任务的特权级。它被存储在cs和ss的第0位和
;第1位上。在通常情况下,CPL等于代码所在的段的特权级。当程序转移
;到不同特权级的代码段时,处理器将改变CPL。
》〉》〉》这段数据,只有操作系统才能访问?
》〉》〉》〉CPL = DPL, RPL < DPL,
调用门:DPL规定了当前执行的程序或任务可以访问此调用门的最
低特权级(这与数据段的规则是一致的)。
》〉》〉》〉
一致代码段和通过调用门访问的非一致代码段:DPL规定了访问此
段的最高特权级。比如,一个一致代码段的DPL是2,那么CPL为0
和1的程序将无法访问此段。
》〉》〉操作系统无法访问的段?
TSS:DPL规定了可以访问此TSS的最低特权级(这与数据段的规
则是一致的)。
g[
3.RPL (Requested Privilege Level)
RPL是通过段选择子的第0位和第1位表现出来的。处理器通过检查RPL
和CPL来确认一个访问请求是否合法。即便提出访问请求的段有足够的
特权级,如果RPL不够也是不行的。也就是说,如果RPL的数字比CPL
大(数字越大特权级越低),那么RPL将会起决定性作用,反之亦然。
操作系统过程往往用RPL来避免低特权级应用程序访问高特权级段内的
数据。当操作系统过程(被调用过程)从一个应用程序(调用过程)接收
到一个选择子时,将会把选择子的RPL设成调用者的特权级。于是,当操
作系统用这个选择子去访问相应的段时,处理器将会用调用过程的特权级
(已经被存到RPL中),而不是更高的操作系统过程的特权级(CPL)进行
特权检验。这样,RPL就保证了操作系统不会越俎代庖地代表一个程序去
访问一个段,除非这个程序本身是有权限的。
A、accept 惊群
以多进程为例,在主进程创建监听描述符listenfd后,fork()多个子进程,多个进程共享listenfd,accept是在每个子进程中,当一个新连接来的时候,会发生惊群。
在内核2.6之前,所有进程accept都会惊醒,但只有一个可以accept成功,其他返回EGAIN。
在内核2.6及之后,解决了惊群问题,办法是在内核中增加了一个互斥等待变量。一个互斥等待的行为与睡眠基本类似,主要的不同点在于:
a)当一个等待队列入口有 WQ_FLAG_EXCLUSEVE 标志置位, 它被添加到等待队列的尾部。若没有这个标志的入口项,则添加到队首。
b)当wake up被在一个等待队列上调用时,它在唤醒第一个有 WQ_FLAG_EXCLUSIVE 标志的进程后停止。
执行步骤:
对于互斥等待的行为,比如对一个 listen 后的socket描述符,多线程阻塞 accept 时,系统内核只会唤醒所有正在等待此时间的队列的第一个,队列中的其他人则继续等待下一次事件的发生。这样就避免的多个线程同时监听同一个socket描述符时的惊群问题。
B、epoll惊群
epoll惊群分两种:
a)是在fork之前创建 epollfd,所有进程共用一个epoll。
b)是在fork之后创建 epollfd,每个进程独用一个epoll。
a)fork之前创建epollfd(新版内核已解决)
主进程创建 listenfd,创建epollfd;
主进程 fork多个子进程;
每个子进程把listenfd,加到epollfd 中。
当一个连接进来时,会触发epoll惊群,多个子进程的epoll同时会触发。
这里的epoll惊群跟 accept 惊群是类似的,共享一个 epollfd,加锁或标记解决,在新版本的epoll中已解决,但在内核2.6及之前是存在的。
b)fork之后创建epollfd(内核未解决)
主进程创建 listendfd;
主进程创建多个子进程;
每个子进程创建自已的epollfd;
每个子进程把listenfd加入到epollfd中;
当一个连接进来时,会触发epoll 惊群,多个子进程epoll同时会触发。
因为每个子进程的epoll是不同的epoll, 虽然listenfd是同一个,但新连接过来时,accept会触发惊群。因为内核不知道该发给哪个监听进程,因为不是同一个epoll。所以这种惊群内核并没有处理,惊群还是会出现。
————————————————
版权声明:本文为CSDN博主「84岁带头冲锋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/L2111533547/article/details/125982204
本文我们探讨如何成为一个出色的工程师?
按照SKA模型,我的答案会分为三大块: