深入了解Linux网络栈技术 (linux network stack)

Linux是一款开源及免费的操作系统,其网络栈技术是世界领先的。在网络通信中,网络栈是一个非常重要的组件,它是完成网络通信的基础。是网络工程师以及系统运维人员必须要掌握的知识。

1. 操作系统中的网络栈

操作系统中的网络栈指的是网络协议栈,它负责在计算机网络中的数据通信。Linux中的网络栈实现了全部的网络协议,并提供了套接字编程接口,使得应用程序可以使用网络通信。Linux默认的网络栈实现了以下协议:IP、TCP、UDP以及ICMP等。通过这些协议,Linux的网络栈可以实现数据的传输、路由以及网络管理等功能。

2. 网络栈的组成

网络栈通常由以下组成部分构成:

2.1 网络接口

物理网络接口是一个计算机连接到网络的接入点,即网卡。在Linux中,每一个接口都有相应的虚拟设备,这个设备叫做网卡设备。通常来说,网络栈会处理多个网络设备的数据。网卡设备是通过驱动程序和网络栈交流的。

2.2 协议栈

协议栈是网络栈最核心的部分。它通过不同的协议对数据进行处理和传输。在Linux中,协议栈通常包括传输层、网络层和数据链路层。

2.3 套接字接口

套接字是操作系统提供的应用程序网络接口,允许应用程序通过网络进行通信。套接字接口是操作系统与网络进行通信的接口,也是应用程序与操作系统进行通信的接口。在Linux中,套接字接口是通讯链路的更高层。

3. Linux网络栈的特点

3.1 支持多种传输层协议

Linux网络栈支持多种传输层协议,包括TCP和UDP。这些协议可以被用于不同的网络应用场景,在Linux下以套接字的形式暴露给应用程序编程接口使用。

3.2 路由功能强大

Linux网络栈在路由功能上非常强大,可以处理复杂的路由表和路由规则。路由功能可以使得Linux的网络通信更加的高效。

3.3 支持多种网络协议

Linux网络栈支持多种网络协议,包括IP、TCP、UDP和ICMP等协议。这些协议可以使得Linux更好地支持不同的应用场景,在网络通信中具有更高的灵活性。

4. Linux网络栈的调优

网络栈的性能对于网络应用程序的运行非常重要。在Linux中,可以通过调整网络栈的参数来优化性能。

4.1 设置TCP窗口大小

TCP窗口大小是指接收方可以接收的数据大小。通过设置TCP窗口大小来增加网络带宽的利用率。

4.2 设置更大连接数和超时

在Linux中,可以通过设置更大连接数和超时时间来调整其网络栈的性能。通常来说,更高的更大连接数和更短的超时时间可以提高网络栈的性能。

5.

网络栈是Linux操作系统中非常重要的一个组成部分,它负责实现网络协议,提供套接字接口以及完成数据传输等任务。Linux网络栈的特点包括:支持多种传输层协议、路由功能强大以及支持多种网络协议等。如果要在网络通信上取得更高的性能,可以通过调整TCP窗口大小、设置更大连接数和超时时间等方式来进行网络栈的优化。,有助于理解Linux操作系统中的网络通信,更好地进行网络应用程序开发和优化。

相关问题拓展阅读:

玩转 OpenStack(八.1)Linux Bridge 实现 Neutron 网络之Local、Flat、VLAN、DHCP

Neutron 默认使用 ML2 作为 core plugin,配置文件 /etc/neutron/neutron.conf 中 core_plugin

计算节点和控制节点都需要在各自的 neutron.conf 中配置 core_plugin

然后配置 ML2 的配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中 mechani_drivers

mechani_drivers 可以同时指定多个。这里只指定了一个。

查看 linuxbridge 进程

控制节点:

计算节点:

在 Linux Bridge 环境中,一个数据包从 Instance 发送到物理网卡会经过下面几个类型的设备:

对于每个 local network,ML2 linux-bridge 会创建一个 bridge,Instance 的 tap 设备会连接到 bridge。位于同一个 local network 的 Instance 会连接到相同的 bridge,这样 Instance 之间就可以通讯了。

因为 local network 没有与物理网卡相连,所以 Instance 无法与宿主机之外的网络通信。

同时因为每个 local network 有自己的 bridge,bridge 之间是没有连通的,所以两个 local network 之间是不通的。

ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini

type_drivers ML2 加载网络类型。

tenant_network_types 普通用户在自己的 Tenant(Project)中创建网络时,默认创建哪种 type 的网络。

tenant_network_types = vlan, local 意思是当没有 vlan 可创建时,使用 local。

检测 Neutron Agent 是否正常 管理员 –> 系统 –> 系统信息 –> 网络代理

从用户管理创建网络

创建网络 项目 –> 网络 –> 网络

填写网络名称

填写子网信息。 网关 IP 可以不用填写。默认为子网地址的之一个 IP。即:172.16.10.1

添加子网 IP 范围。

点击网络名称,进去相信信息,可以看到子网和端口信扰旦息等。

可以看到在端口中已经创建了一个 port,名为 “(c45b69e6-04ba)”,IP 为 172.16.10.2。迟晌连接设备为 “network:dhcp”。

打开控制节点终端,使用 brctl show 查看 linux bridge 的状态。

可以看到 bridge 设备 brqd2fd4378-9e 和 tap 设备 tapc45b69e6-04

创建 Instance 并选择刚刚创建的网络。

创建 Instance 成功后可以发现已经分配 IP 地码李锋址。

在底层中 Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 test。如下图

点进去可以看到详情

在宿主机上执行 brctl show 可以查看 bridge 的配置。

可以看到 bridge brqd2fd4378-9e 上连接了一个新的 tap 设备。

查看 Instance 信息。使用 virsh list 查看 Instance 运行中的列表。

使用 virsh edit 1 查看配置信息。

配置信息省略很多。重要的放在上面。

是 Instance 网卡的 MAC 地址

是 Instance 虚拟网卡信息

ping test1 的 IP 地址发现是可以 ping 通。

查看 brctl show

发现 brqd2fd4378-9e 中又计入进来一个 VIF,因为两个 VIF 挂载在同一个 Linux Bridge 上,所以可以通讯。

结构如下:

如果新分的 Instance 在计算节点中。不在控制节点。他们之间将不在互通。

因为 DHCP agent 在控制节点上运行,test2 在计算节点的 local 网络上,两者位于不同物理节点。由于 local 网络的流量只能局限在本节点之内,发送的请求无法到达计算节点。

上图 物理网卡 eth1 桥接到 brqXXXX,为 Instance 提供 flat 网络。

下图 创建多个 flat Network,就要准备多个物理机网卡。

在 /etc/neutron/plugins/ml2/ml2.conf.ini 配置文件中,修改 tenant_network_types 参数为 flat

:这里是指定普通用户使用 flat。因为 flat 网络与物理网卡一一对应。一般情况下租户网络不采用 flat。

flat_networks 定义一个 flat 网络,label 为 “default”

通过 physical_interface_mappings 指名 default 对应的物理网卡为 ens35

例如:对于 label 为 “default” 的 flat network,节点 A 可能使用 ens35,配置为:

而 B 节点则可以使用 ens33,配置为:

创建 flat 网络

绑定子网

查看 控制节点网络状态

Neutron 自动新建了 flat_net 对应的网桥 brq9e3013c8-93,以及 dhcp 的 tap 设备 tapa。

此时 tapa 和物理网卡 ens35 都已经连接到网桥 brq9e3013c8-93 上。

可以看到 Instance 的 tap 设备 tapc1241c3f-cb 已经连接到网桥

配置文件 /etc/neutron/dhcp_agent.ini 中的 dhcp_driver 和 interface_driver

dnasq 是一个提供 DHCP 和 DNS 服务的开源软件。

在实现环境中使用 ps 命令可以查看到 dnasq 进程。

DHCP agent 会为每个 network 创建一个目录 /opt/stack/data/neutron/dhcp/x 用于存放该 network 的 dnasq 配置文件。

在二层网络上,VLAN 可以将一个交换机分割成几个独立的虚拟交换机。

类似,在三层网络上,Linux Network Namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。

每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device等

Neutron 通过 dnasq 为每个 Network 提供单独的 DHCP 和路由服务。

使用 ip 查看所有 namespcae

使用 neutron 查看 net-list

查看某个 namespace 的详细配置

3 个 Instance 通过 tap 设备连接到名为 “vrqXXXX” 的 Linux Bridge。

在物理网卡 eth1 上创建 eth1.100 的 valn interface,eth1.100 连接到 brqXXXX。

这样,Instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。

如果在创建个 network vlan101,eth1 上就会相应的创建多个 vlan interface eht1.101 并连接新的 Linux Bridge “brqYYYY”。

配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 tenant_network_types 的值为 vlan

配置 vlan 的范围

意思是:配置定义了 lable 为 “default” 的 valn network,valn id 的范围是 3001~4000。这里配置的是普通用户使用的范围。

admin 可以使用 1~4096 的 valn network

再次指定 vlan network 与物理网卡的对应关系

配置子网

查看系统网桥

这里可以看到:

vlan100 对应的网桥为 brq2b85ebb9-a。

vlan interface 是 ens35.100 (我是用的是 Ubuntu 16.04 默认网卡名 ens 开始的。)

DHCP 的 tap 设备是 tapf85d61d8-c3。

在 计算节点查看 网桥信息

可以发现创建的 Instance 已经连接到 vlan100 对应的网桥 brq2b85ebb9-a 上。因为计算节点没有 DHCP 服务所以没有相应的 tap 设备。

另外 网桥的名字与控制节点是一样的,都是 brq2b85ebb9-a6,表示是在同一个 network 上。

下图是我创建 VLAN 后 两台 Instance 分别在控制节点和计算机点的网络图

此时两台 Instance 在同一 valn100 下。相互之间是可以 ping 通的。

如果在创建一个 vlan101。如果两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

如下图两个 vlan

两台 Instance1 和 Instance2 分别连在 vlan100 和 vlan101。此时两台 Instance 是不能 ping 通的。

因为 vlan 在二层是隔离的。如果想要互通,只能在三层通过路由转发。

什么是OpenStack?

本文详细介绍了Openstack的网络原理和实现,主要内容包括:Neutron的网络架构及网络模型还有neutron虚拟化的实现和对二三层网桥的理解。

一、Neutron概述

Neutron是一个用Python写的分布式软件项目,用来实现OpenStack中的虚拟网络服务,实现软件定义网络。

Neutron北向有自己的REST API,中间有自己的业务逻辑层,有自己的DB和进程之间通讯的消息机制。同时Neutron常见的进程包括Neutron-server和Neutron-agent,分布式部署在不同的操作系统。

OpenStack发展至今,已经经历了20个版本。虽然版本一直在更替,发展的项目也越来越多,但是Neutron作为OpenStack三大核心之一,它的地位是不会动摇的。只不过当初的Neutron也只是Nova项目的一个模块而已,到F版本正式从中剥离,成为一个正式的项目。

从Nova-Network起步,经过Quantum,多年的积累Neutron在网络各个方面都取得了长足的发展。其主要的功能为:

(1)支持多租户隔离

(2)支持多种网络类型同时使用

(3)支持隧道技术(VXLAN、GRE)

(4)支持路由转发、SNAT、DNAT技术

(5)支持Floating IP和安全组

多平面租户私有网络

图中同时有VXLAN和VLAN两种网络,两种网络之间互相隔离。租户A和B各自独占一个网络,并且通过自己的路由器连接到了外部网络。路由器为租户的每个虚拟机提供了Float IP,完成vm和外网之间的互相访问。

二、Neutron架构及网络模型

1、Neutron架构

Neutron-sever可以理解为类似于nova-api那样的一个专门用来接收API调用的组件,负责将不同的api发送到不同Neutron plugin。

Neutron-plugin可以理解为不同网络功能实现的入口,接收server发来的API,向database完成一些注册信息。然后将具体要执行的业务操作和参数通知给对应的agent来执行。

Agent就是plugin在设备上的代理,接受相应的plugin通知的业务操作和参数,并转换为具体的命令行操作。

总得来说,server负责交互接收请求,plugin操作数据库,agent负责具体的网络创建。

2、Neutron架构之Neutron-Server

(1)Neutron-server的本质是一个Python Web Server Gateway Interface(WSGI),是一个Web框架。

(2)Neutron-server接收两种请求:

REST API请求:接收REST API请求,并将REST API分发到对应的Plugin(L3RouterPlugin)。

RPC请求:接收Plugin agent请求,分发到对应的Plugin(NeutronL3agent)。

3、Neutron架构之Neutron-Plugin

Neutron-plugin分为Core-plugin和Service-plugin。

Core-plugin:ML2负责管理二层网络,ML2主要包括Network、Subnet、Port三类核心资源,对三类资源进行操作的REST API是原生支持的。

Service-plugin:实现L3-L7网络,包括Router、Firewall、VPN。

4、

Neutron架构之Neutron-Agent

(1)Neutron-agent配置的业务对象是部署在每一个网络节点或者计算节点的网元。

(2)网元区分为PNF和VNF:

PNF:物理网络功能,指传统的路由器、交换机等硬件设备

VNF:虚拟网络功能,通过软件实现的网络功能(二层交换、三层路由等)

(3)Neutron-agent三层架构如下图:

Neutron-agent架构分为三层,北向为Neutron-server提供RPC接口,供Neutron server调用,南向通过CLI协议栈对Neutron VNF进行配置。在中间会进行两种模型的转换,从RPC模型转换为CLI模型。

5、

Neutron架构之通信原理

(1)Neutron是OpenStack的核心组件,官网给出Neutron的定义是NaaS。

(2)Naas有两层含义:

对外接口:Neutron为Network等网络资源提供了RESTful API、CLI、GUI等模型。

内部实现:利用Linux原生或者开源的虚拟网络功能,加上硬件网络,构建网络。

Neutron接收到API请求后,交由模块WSGI进行初步的处理,然后这个模块通过Python API调用neutron的Plugin。Plugin做了相应的处理后,通过RPC调用Neutron的Agent组件,agent再通过某种协议对虚拟网络功能进行配置。其中承载RPC通信的是AMQP server,在部署中常用的开源软件就是RabbitMQ

6、

Neutron架构之控制节点网络模型

控制节点没有实现具体的网络功能,它对各种虚拟设备做管理配合的工作。

(1)Neutron:Neutron-server核心组件。

(2)API/CLI:Neutron进程通过API/CLI接口接收请求。

(3)OVS Agent:Neutron通过RPC协议与agent通信。

控制节点部署着各种服务和Neutron-server,Neutron-server通过api/cli接口接收请求信息,通过RPC和Agent进行交互。Agent再调用ovs/linuxbridge等网络设备创建网络。

7、

Neutron架构之计算节点网络模型

(1)qbr:Linux Bridge网桥

(2)br-int:OVS网桥

(3)br-tun:OVS隧道网桥

(4)VXLAN封装:网络类型的转变

8、

Neutron架构之网络节点网络模型

网络节点部署了Router、DHCP Server服务,网桥连接物理网卡。

(1)Router:路由转发

(2)DHCP: 提供DNS、DHCP等服务。

(3)br-ex: 连接物理网口,连接外网

三、Neutron虚拟化实现功能及设备介绍

1、Neutron虚拟化实现功能

Neutron提供的网络虚拟化能力包括:

(1)二层到七层网络的虚拟化:L2(virtual Switch)、L3(virtual Router 和 LB)、L47(virtual Firewall )等

(2)网络连通性:二层网络和三层网络

(3)租户隔离性

(4)网络安全性

(5)网络拓展性

(6)REST API

(7)更高级的服务,包括 LBaaS,FWaaS,VPNaaS 等

2、Neutron虚拟化功能之二层网络

(1)按照用户权限创建网络:

Provider network:管理员创建,映射租户网络到物理网络

Tenant network:租户创建的普通网络

External network:物理网络

(2)按照网络类型:

Flat network:所有租户网络在一个网络中

Local network:只允许在服务器内通信,不通外网

VLAN network:基于物理VLAN实现的虚拟网络

VXLAN network:基于VXLAN实现的虚拟网络

3、Neutron虚拟化实现功能之租户隔离

Neutron是一个支持多租户的系统,所以租户隔离是Neutron必须要支持的特性。

(1)租户隔离三种含义:管理面隔离、数据面的隔离、故障面的隔离。

(2)不同层次租户网络的隔离性

租户与租户之间三层隔离

同一租户不同网络之间二层隔离

同一租户同一网络不同子网二层隔离

(3)计算节点的 br-int 上,Neutron 为每个虚机连接 OVS 的 access port 分配了内部的 VLAN Tag。这种 Tag 限制了网络流量只能在 Tenant Network 之内。

(4)计算节点的 br-tun 上,Neutron 将内部的 VLAN Tag 转化为 VXLAN Tunnel ID,然后转发到网络节点。

(5)网络节点的 br-tun 上,Neutron 将 VXLAN Tunnel ID 转发了一一对应的 内部 VLAN Tag,使得 网络流被不同的服务处理。

(6)网络节点的 br-int 上连接的 DHCP 和 L3 agent 使用 Linux Network Namespace 进行隔离。

4、Neutron虚拟化实现功能之租户网络安全

除了租户隔离以外 Neutron还提供数据网络与外部网络的隔离性。

(1)默认情况下,所有虚拟机通过外网的流量全部走网络节点的L3 agent。在这里,内部的固定IP被转化为外部的浮动IP地址

(1)Neutron还利用Linux iptables特性,实现其Security Group特性,从而保证访问虚机的安全性

(3)Neutron利用网络控制节点上的Network Namespace中的iptables,实现了进出租户网络的网络防火墙,从而保证了进出租户网络的安全性。

5、Neutron虚拟化设备

(1)端口:Port代表虚拟网络交换机上的一个虚拟交换机端口

虚拟机的网卡连接到Port上就会拥有MAC地址和IP地址

(2)虚拟交换机:Neutron默认采用开源的Openvswitch,

同时还支持Linux Bridge

(3)虚拟路由器VR:

路由功能

一个VR只属于一个租户,租户可以有多个VR

一个VR可以有若干个子网

VR之间采用Namespace隔离

四、Neutron网桥及二三层网络理解

1、Neutron-Local-Bridge

仅用于测试;网桥没有与物理网卡相连VM不通外网。

图中创建了两个local network,分别有其对应的qbr网桥。Vm123的虚拟网卡通过tap连接到qbr网桥上。其中2和3属于同一个network可以通信,1属于另一个网络不能和23进行通信。并且qbr网桥不连物理网卡,所以说local网络虚拟机只能同网络通信,不能连通外网。

2、Neutron-Flat-Bridge

Linux Bridge直接与物联网卡相连

每个Flat独占一个物理网卡

配置文件添加响应mapping

Flat网络是在local网络的基础上实现不同宿主机之间的二层互联,但是每个flat network都会占用一个宿主机的物理接口。其中qbr1对应的flatnetwork 连接 eth1 qbr2,两个网络的虚机在物理二层可以互联。其它跟local network类似。

3、Neutron-VLAN-Bridge

在基于linux bridge的vlan网络中,eht1物理网卡上创建了两个vlan接口,1.1连接到qbr1网桥,1.2连接到了qbr2网桥。在这种情况下vm通过eth1.1或者eth1.2发送到eth1的包会被打上各自的vlan id。此时vm2和vm3属于同一个network所以是互通的,vm与vm2和vm3不通。

4、Neutron-VXLAN-Bridge

这个是以Linux bridge作agent的Vxlan网络:

Vxlan网络比Vxlan网络多了个VXLAN隧道,在Openstack中创建好内部网络和实例后,agent就会在计算节点和网络节点创建一对vxlan vtep.组成隧道的两个端点。

Vxlan连接在eth0网口。在网络节点多了两个组件dhcp 和router,他们分别通过一对veth与qbr网桥连接在一起,多个dhcp和路由之间使用namesapce隔离,当vm产生ping包时,发往linux 网桥qbr1,通过网桥在vxlan12上封装数据包,数据通过eth0网卡出计算节点到网络节点的eth0,在vxlan12解包。到达路由器之后经过nat地址转换,从eth1出去访问外网,由租户网络到运营商网络再到外部网络。

5、Neutron-VLAN-OVS

与Linux bridge不同,openvswitch 不是通过eth1.1 eth1.2这样的vlan接口来隔离不同的vlan,而是通过openvswitch的流表规则来指定如何对进出br-int的数据进行转发,实现不同vlan的隔离。

图中计算节点的所有虚拟机都连接在int网桥上,虚拟机分为两个网络。Int网桥会对到来的数据包根据network的不同打上vlan id号,然后转发到eth网桥,eth网桥直连物理网络。这时候流量就从计算节点到了网络节点。

网络节点的ehx int网桥的功能相似,多了一个ex网桥,这个网桥是管理提前创建好的,和物理网卡相连,ex网桥和int网桥之间通过一对patch-port相连,虚拟机的流量到达int网桥后经过路由到ex网桥。

6、Neutron-VXLAN-OVS

Vxlan的模型和vlan的模型十分相似,从表面上来看,他俩相比只有一个不同,vlan对应的是ethx网桥,而vxlan对应的是tun网桥。

在这里ethx和tun都是ovs网桥,所以说两者的差别不是实现组件的差别而是组件所执行功能的差别,ethx执行的是普通二层交换机的功能,tun执行的是vxlan中的vtep的功能,图中俩tun对应的接口ip就是vxlan的隧道终结点ip。所以说虚机的数据包在到达tun网桥之前是打的是vlan tag,而到达tun之后会发生网络类型的转换,从vlan封装为vxlan然后到达网络节点。而之前的vlan类型的网络,虚机数据包的类型一直都是vlan。

7、物理的二层与虚拟的二层(VLAN模式)

(1)物理的二层指的是:物理网络是二层网络,基于以太网协议的广播方式进行通信。

(2)虚拟的二层指的是:Neutron实现的虚拟网络也是二层网络(openstack的vm机所用的网络必须是大二层),也是基于以太网协议的广播方式进行通信,但毫无疑问的是该虚拟网络是依赖于物理的二层网络。

(3)物理二层+虚拟二层的典型代表:VLAN网络模式。

8、物理的三层与虚拟的二层(GRE模式与VXLAN模式)

(1)物理三层指的是:物理网络是三层网络,基于IP路由的方式进行通信。

(2)虚拟的二层指的是:Neutron实现的虚拟网络仍然是二层网络(openstack的vm机所用的网络必须是大二层),仍然是基于以太网的广播方式进行通信,但毫无疑问的是该虚拟机网络是依赖于物理的三层网络,这点有点类似于VPN的概念,根本原理就是将私网的包封装起来,最终打上隧道的ip地址传输。

(3)物理三层+虚拟二层的典型代表:GRE模式与VXLAN模式。

所谓OpenStack其实就是一个开源计算机管理平台,可控制整个数据中心的大型计算、储存以及网络资源,它支持所有类型的云环境,包括关键组件、可以覆盖网络。虚拟化等系统操作,OpenStack-powered分布技术来实现灵活地配置资源,方便用户在任何时间增加服务器的CPU和内存等资源,并且不需重启服务器。

所谓OpenStack,其实是一种云操作系统,可控制整个数据中心的大型计算、存储和网络资源池,所有这些都通过一个仪表盘进行管理,该仪表盘可让管理员进行控制,同时使用户能够通过Web界面调配资源。

OpenStack逻辑架构介绍了OpenStack原生架构的组件(全局组件、核心组件和外部组件),组件之间通过API(前提是将请求交于keystone进行身份验证,是否有权限进行通讯)进行点到点的通讯。单个项目内部有很多子功能模块,他们通过AMQP消息代理(RabbitMQ)进行交互,服务的状态存储在数据库中。

OpenStack包括若干个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。

OpenStack 是一个开源

云平台

,主要由

私有云

供应商和提供公共云服务的商业公司使用,这些公共云服务将 OpenStack 作为其基础架构的一部分进行部署。埃科锐的私有云搭建允许企业和应用程序所有者将基础设施作为服务使用,而无需考虑安装服务器、存储和网络的复杂性∞

OpenStack 起源于Rackspace Hosting 和 NASA 的联合项目,它是一个流行的云平台,有超过 740 个组织与开源平台相关联。 它广泛用于提供私有云服务的数据中心。 此外,OpenStack 安装支持基础架构即服务 (IaaS) 模型,例如我们在 Accrets.com 上的 OpenStack IaaS 解决方案提供了一种新的模型∞

IT技术交流论坛或是微信群有哪些?

您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。展开全部

Github – How people build software · GitHub

Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。

作为开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。

StackOverFlowStack – Stack Overflow

Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,我们不会弹出任何广告,销售信息,JavaScript 窗口等。

CSDN – CSDN.NET – 全球更大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台

CSDN (Chinese Software Developer Network) 创立于1999年,是中国更大的IT社区和服务平台,为中国的软件开发者和IT从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。拥有超过3000万注册会员(其中活跃会员800万)、50万注册企业及合作伙伴。

ITEye – ITeye Java编程 Spring框架 Ajax技术 agile敏捷软件开发 ruby on rails实践

ITeye即创办于2023年9月的javaEye,缘起是创始人范凯自己在学滚拆习和研究java的开源框架却发现没有一个讨论的地方,于是自己就办一个。2023年12月范凯开始采取比较严格的管理制度。新用户注册时需要强制做题。做13道有关论坛规则的选择题,做不对就不予审核通过。 2023年9月,javaEye被CSDN低调并购,成为其旗下程序员深度交流社区。后由于Oracle公司不准其网站使用JAVA字样,并提出了苛刻条件,JavaEye网站在交涉无效后,不得不做出更名的决定,于2023年4月1日起,正式更名为ItEye技术网站大明枣。现在已来被CSDN收购。

开源中国 – 开源中国 – 找到您想要的开源项目,分享和交流

开源中国社区成立于2023年8月,其目的是为中国的IT技术人员提供一个全面的、快捷更新的用来检索开源软件以及交流使用开源经验的平台,目前开源中国社区已收录超过两万多款开源软件。 经过不断的改进,目前开源中国社区已经形成了由开源软件库、代码分享、资讯、讨论区和博客等几大频道内容。

极乐 –

极乐网推崇快速、准确的为IT人员解决技术难题,是一个后起之秀的新兴网站,各方面设计的简洁易用,清新脱俗,是一个值得关注的网站。

V2EX – V2EX

V2EX 是创意工作者们的社区。这里目前汇聚了超过名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

Ruby China – Ruby China

RubyChina社区的客户端,具备基本的阅读、发帖、回帖、查看会员基本资料功能。

北风网 – 首页 – 北风社区

北风网是国内知名的IT教育培训网站,网站致力于中国IT教育。为在校大学生、应届毕业生、社会就业者提供各类IT培训!旗下拥有北风网论坛、北风网博客专栏、北风网IT圈子等产品。

博客园 – 博客园 – 开发者的网上家园

博客园创建于2023年1月,博客园诞生于江槐李苏扬州这样一个IT非常落后的小城市,城市虽小,但是这里却有很多求知创新的人,博客园诞生的理由是如此简单。

51CTO – 51CTO.COM – 技术成就梦想

51CTO即北京无忧创想信息技术有限公司,简称“51CTO”,是专注于IT技术创新与发展的互联网媒体机构,由一批资深互联网专业人士创立于2023年。自建立之日起,51CTO就以“专注IT技术领域,打造中国领先的IT技术网络平台”为宗旨,致力于面向中国广大IT专业人群,实现高效传播交流,持续提升技术及管理水准,促进中国信息化建设及应用健康快速发展。

MSDN – 使用 Microsoft Developer Network 学习开发

MSDN 是Microsoft Developer Network的缩写,他是微软的一个期刊产品,专门介绍各种编程技巧。同时它也是独立于Microsoft Visual Studio制作的唯一帮助。目前大部分文章存放在MSDN的网站上,任何人可以免费参阅。

ChinaUnix – Unix技术网 = 全球更大的Linux/Unix应用与开发者社区 = IT人的网上家园

是一个以讨论Linux/Unix类操作系统技术、软件开发技术、数据库技术和网络应用技术等为主的开源技术社区网站。CU给爱好Linux/Unix技术、开源技术者提供一个自由、开放、免费的交流空间,目标是建成中国更好的一个Linux/Unix技术开源共享社区,宣传和推动Linux/Unix技术和自由软件。

PHPChina – PHP China-最棒的PHP中文社区

PHPChina是一个以PHP为中心,面向软件开发者、程序爱好者的开源技术网站及交流社区。作为PHP语言开发公司Zend Technology在大中华区的唯一授权官方网站,PHPChina同时也是Zend中国技术支持中心的官方社区,更是中国每个PHPer自己的开源社区。

w3cschool – w3school 在线教程

全球更大的WEB技术资源,W3CSchool 是因特网上更大的 WEB 开发者资源,其中包括全面的教程、完善的参考手册以及庞大的代码库。

– CNode:Node.js专业中文社区

为国内最专业的Node.开源技术社区,致力于Node.的技术研究。

CNode社区由一批热爱Node技术的工程师发起,目前已经吸引了互联网各个公司的专业技术人员加入,我们非常欢迎更多对Node感兴趣的朋友加入我们()。

ITPUB – ITPUB技术论坛

ITPUB网站是目前国内更大的以技术交流为主的的论坛网站之一。

专门立足讨论数据库、ERP、技术开发、操作系统、网络等方面的技术问题。

CocoaChina – CocoaChina_让移动开发更简单

Cocoachina社区 – 苹果开发中文站,最热门的iPhone/iPad开发社区。 Cocoachina客户端 – 专为手机用户量身打造的浏览Cocoachina的第三方浏览工具,独创的网络媒体阅读引擎,专为手机用户设计,访问论坛更流畅、更舒适、更省流量。结合源社区定制设计,提供简洁的内容排版和离线下载,保留源社区的原汁原味。

PHPHub – PHPHub – PHP & Laravel的中文社区

PHPHub 是 PHP 和 Laravel 的中文社区,致力于推动 Laravel,php-fig 等 PHP 新技术,新理念在中国的发展,是国内最靠谱的 PHP 论坛。

w3ctech – 更受欢迎的文章

W3cplus 火舞游戏 ionichina 社区 Linux Story imweb 腾讯设计导航 设计自动标注工具 w3ctech创立于2023年10月,是中国更大的前端技术社区。

php100 – PHP100中文网

PHP100中文网是国内之一家以PHP资源分享为主的专业网站,也提供了PHP中文交流社区。面向PHP学习研究者提供:最新PHP资讯、原创内容、开源代码和PHP视频教程等相关内容。

code4app – Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

Code4App是一个移动平台的代码库,是iOS开发好帮手。Code4App为移动开发程序员提供大量的开源代码,iOS代码实例搜索,iOS特效示例,iOS代码例子下载。

InfoQ – InfoQ – 促进软件开发领域知识与创新的传播

InfoQ成立于2023年。我们为了促进软件开发领域知识与创新的传播而创建了InfoQ。为了实现这个目标,InfoQ致力于提供中立的、由技术实践者主导的会议、内容与在线社区。

CodeProject – CodeProject – For those who code

是一个免费公开源码的程序设计网站,成立于1999年,是目前世界上更大的开发社区之一,每月有超过340万开发者访问该网站,主要的使用者是Windows平台上的电脑程式设计人员,包括涉及的专业开发人员,开发经理和架构师。每一篇文章几乎都附有源码(src)和例子(demo)下载,用户注册后,可以下载文章附属的源代码。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

IT技术和腔交流群有很多,作为软件开发从业者,会经常去的一些国内社区网站及论坛,关于程序员的交流社区或者论坛,这里收集一些比较好的开发者社区:

1、快速开发平台社区 -天翎论坛,主要是以Java低代码开发平台为主的技术性论坛社区,目前低代码平台商用授权对外开放;

2、CSDN -专业开发者社区 IT技术交流平台;

3、IT圈,圈圈精彩 – 原软媒论坛、IT之家,国内最人气的科技社交圈层,继软媒论坛、IT之家社区演变而来;

4、51CTO技术论坛-中国领先的IT技术社册野区 国内主流IT技术社区,论坛拥有大批IT技术人/IT专家;

5、ITPUB技术论坛-中国专业的IT技术社区唤姿衫。

关于linux network stack的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入了解Linux网络栈技术 (linux network stack)