自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redwingz的博客

Linux内核网络、虚拟化

  • 博客(26)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 IPVS调度算法Round-Robin

函数register_ip_vs_scheduler将RR调度器链接到全局链表ip_vs_schedulers上。具体内容请参见:https://blog.csdn.net/sinat_20184565/article/details/100126417。static struct ip_vs_scheduler ip_vs_rr_scheduler = { .name = ...

2019-08-29 21:09:51 82

原创 IPVS调度层

IPVS子系统的调度器统一注册在全局链表ip_vs_schedulers上。IPVS调度器注册函数register_ip_vs_scheduler负责向IPVS系统内注册调度器。内核中不同的调度器以名称作区分,所有注册的调度器链接在全局链表ip_vs_schedulers上。注册函数首先检查全局链表上是否已有相同名称的调度器,如果有的话,说明调度器已注册。否则,将调度器链接到全局链表ip_vs...

2019-08-28 20:40:56 183

原创 IPVS的PE引擎SIP

如下配置命令指定使用Persistence功能,并且PE(Persistence Engine)指定为sip。$ sudo ipvsadm -A -t 207.175.44.110:80 -s rr -p --pe sip$ SIP PE初始化初始化函数ip_vs_sip_init,执行sip PE的注册工作,将ip_vs_sip_pe结构注册到全局的pe链表ip_vs_pe上。sta...

2019-08-25 23:27:43 149

原创 IPVS中的PE引擎结构

如下配置命令指定使用Persistence功能,并且PE引擎(Persistence Engine)指定为sip。$ sudo ipvsadm -A -t 207.175.44.110:80 -s rr -p --pe sip$ $ sudo ipvsadm -L -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress...

2019-08-21 20:46:10 272

原创 IPVS系统的FTP应用模块

FTP应用模块没有全局初始化操作,仅是注册了网络命名空间操作ip_vs_ftp_ops,初始化init函数为__ip_vs_ftp_init。static struct pernet_operations ip_vs_ftp_ops = { .init = __ip_vs_ftp_init, .exit = __ip_vs_ftp_exit,}; sta...

2019-08-20 19:12:00 124

原创 IPVS的NAT转发模式下对TCP序号的修正

由于在NAT转发模式下,ipvs的app模块对报文的修改,有可能改变数据包的长度,对于TCP来说,就需要动态的调整TCP头部的序号和确认序号的数值。输入处理ipvs的应用app模块中函数app_tcp_pkt_in用于处理输入方向的数据流。这里使用两个标志IP_VS_CONN_F_IN_SEQ和IP_VS_CONN_F_OUT_SEQ分别表示是否要修正报文的序号和确认序号。注意这两个标志的判...

2019-08-20 19:10:02 184

原创 IPVS子系统的app应用结构

在ipvs网络命名空间初始化时,调用函数ip_vs_app_net_init初始化app模块。其中初始化了ipvs网络命名空间结构中的成员app_list链表。另外其还在proc文件系统中创建了名称为"ip_vs_app"的文件,用于显示当前的app应用信息。int __net_init ip_vs_app_net_init(struct netns_ipvs *ipvs){ ...

2019-08-15 20:30:48 136

原创 IPVS支持的协议

IPVS协议初始化函数ip_vs_protocol_init,通过函数register_ip_vs_protocol完成。目前注册的协议结构体有:ip_vs_protocol_tcp/ip_vs_protocol_udp/ip_vs_protocol_sctp/ip_vs_protocol_ah/ip_vs_protocol_esp等五个,根据内核的具体配置进行注册。int __init ip_...

2019-08-15 20:28:07 205

原创 IPVS中的TCP连接状态转换

TCP状态初始化在函数__ip_vs_tcp_init中完成,此函数在ipvs网络命名空间初始化时执行,其将全局TCP状态数组tcp_states的地址赋值给TCP协议数据结构的成员tcp_state_table指针。static int __ip_vs_tcp_init(struct netns_ipvs *ipvs, struct ip_vs_proto_data *pd){ ip...

2019-08-15 20:25:01 229

原创 IPVS支持协议的超时时间

以下ipvsadm命令用于显示和设置ipvs连接的超时时间,单位为秒(seconds)。$ sudo ipvsadm -l --timeoutTimeout (tcp tcpfin udp): 900 120 300$ $ sudo ipvsadm --set 3600 120 300$ $ sudo ipvsadm -l --timeout Timeout (tcp tc...

2019-08-15 20:23:09 538

原创 STP与LLC协议接收路径

网桥初始化函数br_init使用stp_proto_register注册stp协议,此处注册的stp_proto结构体仅包含一个rcv回调函数:br_stp_rcv。static int __init br_init(void){ err = stp_proto_register(&br_stp_proto); if (err < 0) { pr_...

2019-08-14 20:23:49 692

原创 内核Master/Slave类型设备的接收流程

此类的设备诸如网桥bridge、聚合接口bond,以及OVS虚拟网桥等。首先以网桥bridge为例,其配置命令如下:$ sudo ip link add name br1 type bridge$ sudo ip link set ens38 master br1第一条命令创建虚拟网桥设备br1;第二条命令添加物理接口ens38到网桥br1上。对于第二条命令,内核中有函数br_add_if...

2019-08-13 21:11:20 476

原创 路由表项中的proto字段

如下的ip命令显示的两条路由,proto的值分别为21和kernel。/ # ip -d routeunicast default via 192.168.1.1 dev ens33 proto 21 scope global unicast 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.118 / # p...

2019-08-13 21:10:27 3624

原创 IPVS收发数据相关的速率计算

本文介绍IPVS中的收发数据相关的速率计算。使能估算器ip_vs_start_estimator函数将第二个参数stats包含的estimator挂载到ipvs网络命名空间中的估算器列表中。void ip_vs_start_estimator(struct netns_ipvs *ipvs, struct ip_vs_stats *stats){ struct ip_vs_e...

2019-08-12 20:37:47 172

原创 IPVS真实服务器

先看一下与真实服务器相关的两个部分的初始化,一是在全局初始化函数ip_vs_init中调用的ip_vs_control_init函数;另外一个是在网络命名空间中的初始化函数ip_vs_control_net_init。static int __init ip_vs_init(void){ ret = ip_vs_control_init(); ret = register_pe...

2019-08-09 23:33:19 96

原创 IPVS虚拟服务

以下两者方式创建ipvs虚拟服务。前者指定为目的地址和端口为:207.175.44.110:80,协议为TCP(-t选项)的流量提供虚拟服务,采用的调度方式为轮询Round-Robin(-rr)。后者指定为防火墙标记(Firewall-Mark)为1的流量提供虚拟服务,调度方式采用与前者相同的轮询方式。ipvsadm -A -t 207.175.44.110:80 -s rripvsadm -...

2019-08-08 20:41:27 175

原创 i40e网卡驱动中的PCI-E带宽警告

使用的处理器为Xeon5122,4个核心,每个核心2个超线程。如下:/ # cat /proc/cpuinfo processor : 0vendor_id : GenuineIntelcpu family : 6model : 85model name : Intel(R) Xeon(R) Gold 5122 CPU @...

2019-08-08 20:36:49 869

原创 IPVS内核控制接口

如下初始化函数ip_vs_register_nl_ioctl,其中内核不仅注册了对应于套接口选项的setsockopt/getsockopt处理结构ip_vs_sockopts,而且同时注册了一个通用netlink控制接口。int __init ip_vs_register_nl_ioctl(void){ ret = nf_register_sockopt(&ip_vs_soc...

2019-08-08 09:42:17 339

原创 使用strace定位死循环

首先通过top命令发现pworker进程的CPU占用率接近100%,如下: # topRun Time: 0 days, 0 hours and 59 minutes24U, 25S, 49I; mem: T:64040 F:61472 A:61159 C:120 SC:0 ST:0 SF:0 pworker 399 R 99.9 0.0...

2019-08-07 20:45:16 194

原创 netfilter子系统的套接口选项

内核定义了全局链表nf_sockopts将其所有的套接口选项链接起来,每个表项由nf_sockopt_ops类型的结构表示。此结构主要有两个部分组成:配置下发(set)和获取(get)。其中set/get为回调函数,set_optmin - set_optmax和get_optmin - get_optmax分别定义set/get回调函数可处理的套接口选项的范围值。static LIST_HEA...

2019-08-06 19:32:16 148

原创 ipvsadm配置命令解析

以下为ipvsadm命令,第一行配置Linux虚拟服务:地址为207.175.44.110,端口号为80(-A选项),-t表明此服务为TCP,-s选项指定调度算法为Round-Robin。随后的几行为添加实际的服务器,如192.168.10.1:80(-r选项),-a选项表明为添加实际服务器,-t选项表明是TCP协议,-m选项表明转发方式采用NAT masquerading。ipvsadm -A...

2019-08-05 20:03:51 191

原创 HTTP的Transfer-Encoding模式chunked

最近调试HTTP相关代码,遇到以下的问题:由于在HTTP头部指定了Transfer-Encoding为chunked,而HTTP的body中的数据不是完整的chunked数据导致此问题。以上表明,HTTP的body数据在结束时没有包含0字节长度的chunk块。添加此结束chunk问题解决。报文数据如下:END...

2019-08-05 20:02:05 512

原创 Control Group v2版本

本文是关于cgroup v2版本的设计、接口和协定方面的官方文档。描述了cgroup的核心和特定控制器行为在用户层面可见的方方面面。并且cgroup所有之后的改动都将在此文档中体现,v1版本的文档位于内核的Documentation/cgroup-v1/目录。This is the authoritative documentation on the design, interface and ...

2019-08-04 23:01:10 444

原创 内核IRQ中断向量

首先看一下vector_irq的定义,此每处理器数组变量,保存每个处理器上中断向量所对应的中断号,其以中断向量值为索引。系统中定义了256个中断向量。相关代码如下:typedef int vector_irq_t[NR_VECTORS];DEFINE_PER_CPU(vector_irq_t, vector_irq) = { [0 ... NR_VECTORS - 1] = VECT...

2019-08-01 19:45:11 612

原创 Neutron 授权策略实施

类似大多数的OpenStack projects,Neutron也使用oslo_policy。但是,由于Neutron喜欢与众不同,并使每个开发者的生活复杂化,它还通过以下方式“增强”了oslo_policy的能力:一个有自身API的封装模块:neutron.policy;对请求消息体中资源的属性添加细粒度检查的能力;使用策略引擎过滤响应中属性的能力;在oslo_policy中定义的规则...

2019-08-01 19:43:42 374

原创 Neutron Quota管理与执行

Neutron API开放的大部分资源都受到配额限制。Neutron API开放了管理此类配额的扩展。配额限制在API层执行,在请求分派到插件之前。配额限制的默认值定义在文件neutron.conf。管理员可以project为单位改写这些默认值。限制值保存在Neutron数据库中;如果没有找到给定资源与project的限制值,使用此资源的默认值。基于设置的配额管理,即每个project在配置文件...

2019-08-01 19:41:47 212

WEB Portal 认证完整的交互报文

web认证交互报文,包括WLAN controller与portal server的认证与注销,AC与radius 服务器的认证报文。

2018-04-24

botan-ed25519.pcap

IKEv2协议交互报文,认证方式选用Ed25519算法的证书方式。

2019-10-28

IKEv2-rw-cert2.pcap

strongswan使用linux内核的af_alg加密接口配置,IKEv2协议交互报文。

2019-10-28

IKEv2-camellia.pcap

IKEv2协议使用camellia加密算法的协商报文,交互流程。

2019-10-28

libssh2-1.8.0 and ssh2_batch example

ssh2_batch可执行程序,用于非交互式的ssh命令执行。源代码和libssh2

2018-06-13

redwingz的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除