Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

0. 背景介绍,把人吸引过来

环境适配层EAL

DPDK的加载和启动
支持多线程和多进程执行方式
CPU亲和性设置
系统内存分配和释放
原子操作
定时器引用
PCI总线访问
跟踪和调试功能
CPU特性编号
中断处理
警告操作
内存管理
Read more »

概念

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 设计、构建和管理网络,可以实现控制平面和数据平面的分离,通过直接对控制平面进行编程,并对用于应用和网络服务的底层基础设施进行抽象化。

image

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


腾讯云网络VPC的解决方案

image


网络虚拟化

拓扑虚拟化

拓扑虚拟化本质上是实现虚拟节点和虚拟链路到物理节点和链路的映射。其中包括“一对一”和“一对多”的映射。“一对一”的映射中,一个虚拟节点将会映射成一个物理节点,同理虚拟链路也是。而在“一对多”的映射中,一个虚拟节点可以映射成由多个连接在一起的物理节点;一条逻辑链路也可能映射成由链接在一起的多条链路。而对于物理节点而言,一个物理节点可以被多个逻辑节点映射。

节点资源虚拟化

节点资源的虚拟化包括对节点Flow tables(流表)、CPU等资源的抽象虚拟化,分配给不同的租户,那么就可以实现不同租户对节点资源使用的分配和限制。

链路资源虚拟化

和节点资源一样,链路资源也是网络中重要的资源,而拓扑抽象并没有规定某些用户可使用的链路资源的多少。所以在进行更细粒度的虚拟化时,有必要对链路资源进行虚拟化,从而实现链路资源的合理分配,可被抽象虚拟化的链路资源包括租户可使用的带宽以及端口的队列资源等等。

网络隔离

网络资源虚拟化仅仅完成了物理资源到虚拟资源的抽象过程,为实现完全的网络虚拟化,还需要对不同的租户提供隔离的网络资源。网络隔离需要对SDN的控制平面和数据平面进行隔离,从而保证不同租户控制器之间互补干扰,不同虚网之间彼此隔离。此外,为了满足用户对地址空间自定义的需求,虚拟化平台还需要对网络地址进行虚拟化。

https://mp.weixin.qq.com/s/iilywPzB-GmUvceN1QpvOw


云联网(Cloud Connect Network,CCN)用于提供腾讯云VPC间、VPC与本地数据中心间(IDC)内网互联的服务,具备全网多点互联、路由自学习、链路选优及故障快速收敛等能力。云联网覆盖全球20+地域,支持100+Gbps带宽以及最高可达99.99%的可用性,为您轻松构建极速、稳定、安全、灵活的全球互联网络。

0. 为什么需要VLAN

解决LAN的广播域过大问题

Read more »

https://www.cnblogs.com/cxuanBlog/p/15587465.html

;CPL是当前执行的程序或任务的特权级。它被存储在cs和ss的第0位和
;第1位上。在通常情况下,CPL等于代码所在的段的特权级。当程序转移
;到不同特权级的代码段时,处理器将改变CPL。

  • 数据段DPL规定了可以访问此段的最低特权级。比如,一个数据
    段的DPL是1,那么只有运行在CPL为0或者1的程序才有权访问
    它。

》〉》〉》这段数据,只有操作系统才能访问?

  • 非一致代码段(不使用调用门的情况下):DPL规定访问此段的特权
    级。比如,一个非一致代码段的特权级为0,那么只有CPL为0的程
    序才可以访问它。

》〉》〉》〉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就保证了操作系统不会越俎代庖地代表一个程序去
访问一个段,除非这个程序本身是有权限的。

0. brew是什么

/usr/local/Cellar/bochs/2.7/share/bochs/BIOS-bochs-latest
/usr/local/Cellar/bochs/2.7/share/bochs/VGABIOS-lgpl-latest
/usr/local/Cellar/bochs/2.7/share/bochs/keymaps/x11-pc-us.map

nasm bootloader.asm -o boot.bin
dd if=boot.bin of=hd64.img bs=512 count=1 conv=notrunc

Read more »

0. brew是什么

brew是一款mac系统下的一款应用程序管理软件,个人建议一定要确保自己的brew可以正常工作,通过brew来安装其他程序,而尽量不要通过源码自行编译安装,成本高的离谱!

Read more »

0. 协程优缺点

协程是使用同步的编程思想,达到异步的效率

核心点:

1.使用异步IO未就绪,就切换到已经准备就绪的IO去操作
解决了异步代码逻辑复杂,同步效率低的问题,效率接近异步

2.协程的栈可以设置比线程更小,使得更加容易

解决了线程占用栈空间更大的问题,硬件的使用率更高,同异步的效率,硬件成本会更低

3.线程的创建代价和调度代价相对比较高

缺点 :

  1. 缺点是无法利用多核资源,本质是单核的,它不能同时将单个CPU的多个核用上,协程需要和进程配合才能运行在多CPU上。
  2. 跨平台性挑战较大
Read more »

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模型,我的答案会分为三大块:

  • 第一,正确的态度(Attitude)或者思维方式。
    当遇到问题时,你会用什么样的态度去应对处理它?当你尝试去解决一个问题时,你又是如何思考的?
  • 第二,尽可能娴熟的必要技能(Skill)。
    当你知晓了如何去思考问题之后,我们需要借助很多技能去把问题解决。例如,沟通协作技能、编程能力、问题排查能力等。
  • 第三,尽可能完备的知识(Knowledge)体系。
    很多时候有些人知道问题的答案或者解决方案,仅仅是由于他知道一块我们不知道的知识。
Read more »

0. NAT简介

NAT(Network Address Translation ,网络地址转换) 是一种广泛应用的解决IP 短缺的有效方法, NAT 将内网地址转和端口号换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。

Read more »

0. 主存储

dpdk高性能

轮询机制

在包处理时,采用轮询机制,而避免中断,有利于减少上下文切换的开销,规避不必要的内存拷贝和系统调用。

亲和性与独占

特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中

设置CPU亲和性,让程序近运行在指定的核上,仅读取指定网卡的指定队列,从而避免数据竞争

无锁循环队列

并行指令,从而加速访问

Read more »