自定义博客皮肤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内核网络、虚拟化

  • 博客(20)
  • 资源 (5)
  • 收藏
  • 关注

原创 Linux BOND接口配置

如下使用ip命令创建一个bond接口不指定参数:/ # ip link add bond1 type bond指定bond接口的mode:/ # ip link add bond2 type bond mode balance-xor查看新创建的bond接口,bond1未指定mode,其默认为balance-rr模式:/ # ip -detail link show type b...

2018-07-31 22:04:31 10992

原创 内核中ARP请求的回复控制

ARP收到request请求之后,首先通过路由查询确定目的IP为一个本地地址类型(RTN_LOCAL)后,是否回复arp请求,还取决于两个判断:arp_ignore与arp_filter。可通过sysctl或者proc文件系统查看二者的值,如下所有配置值都为0:$ sudo sysctl -a | grep -w arp_ignorenet.ipv4.conf.all.arp_ignore ...

2018-07-26 14:42:47 5852

原创 中断IRQ的处理器Affinity设置

首先说一下自动IRQ亲和性,在内核配置中可以打开自动IRQ亲和性开关(CONFIG_AUTO_IRQ_AFFINITY)使能此功能。用户层程序irqbalance(ubuntu等发行版集成此程序)可自动平衡中断irq在各个处理器上,提升系统的性能。irqbalance用到的一个重要的参数hintpolicy用来控制中断平衡的策略,内核会为每一个中断提供一个affinity_hint值,告诉用户...

2018-07-25 14:00:17 12255

原创 网络设备的MAC地址

内核中为网络设备定义了5中MAC地址类型,如下所示,其中NETDEV_HW_ADDR_T_SLAVE类型目前没有使用。局域网LAN类型与存储SAN类型的MAC地址保存在net_device结构体的dev_addrs链表中;UNICAST与MULTICAST类型的MAC地址分别保存在uc和mc链表中。#define NETDEV_HW_ADDR_T_LAN        1    // Loca...

2018-07-24 18:15:19 4507 1

原创 IKEv1报文交互简析

IKEv1协议分为两个阶段。阶段1(Phase 1)用来建立IKE SA安全关联;阶段2(Phase 2)用来建立IPSec SA安全关联,前者有两种模式:主模式与野蛮模式。后者有快速模式(Quick mode)完成。阶段1(Phase 1)其中主模式下共由3组报文组成,Phase1建立的IKE SA主要用来保护阶段2的协商过程,以及保护状态信息等的报文传输。主模式(Main Mode)的第一...

2018-07-18 10:25:11 4441

原创 网桥VLAN GROUP组

网桥新加入的VLAN group功能,替换了之前用bitmap来保存接口vlan信息的设计,bitmap主要用来做vlan filtering功能。加入VLAN group之后,不仅可以做vlan filtering,还可以实现global per-vlan features, but not for filtering。另外增加了vlan隧道功能,根据tunnel id为没有vlan的数据包添加...

2018-07-16 12:36:29 4992 1

原创 网桥工作在集线器(hub)模式

集线器hub不同于Linux网桥实现的交换机,集线器不学习数据包的MAC地址,没有二层转发表FDB,对于接收到的数据包总是泛洪到所有的子接口上。相当于没有学习到任何MAC地址(FDB为空)的网桥交换机。两个思路修改网桥为HUB工作模式,一是保持FDB表为空,不添加任何表项,将FDB添加表项函数去除;另外也可以单独写一个网桥接收处理函数,直接调用flood功能函数。以下代码采用第一种方式,实现也比较...

2018-07-13 23:55:06 2092

原创 网桥泛洪时减少1次skb克隆

一般情况下,网桥在泛洪时将数据包发送每一个子接口,每次发送前需要clone一份skb数据包。在遍历到最后一个子接口的时候,由于skb不再需要进行其它的处理了,可以不clone,直接使用原skb,处理完成后安全释放。在br_flood函数中,通过prev变量保存前一个遍历的子接口,实现以上的功能。static void br_flood(struct net_bridge *br, struct s...

2018-07-12 15:24:09 581

原创 VLAN数据包接收流程

先来看一下vlan数据包的帧格式,整个vlan信息大小为4个字节,分别为2个字节的标签协议标识(Tag Protocol Identifier),和2个字节标签控制信息(Tag Control Infomation)。其中后者TCI又有三个子字段组成:3个bit的优先级(PRI)、一个bit的标准格式指示器(Canonical Format Indicator)和12个bit的vlan id:以下...

2018-07-11 23:18:18 9899 1

原创 禁用systemd网卡命名规则

当前网卡的命名方式可以通过proc文件查看,比如网卡ens160,命名方式为4,即对应内核中的NET_NAME_RENAMED,表示网卡名是被用户空间程序修改的:# cat /sys/class/net/ens160/name_assign_type4#define NET_NAME_ENUM       1   /* enumerated by kernel */#define NET_NAME...

2018-07-11 14:22:54 1906

原创 自动为USB设备创建符号链接

利用udev自动为插入的usb设备创建符号链接,在/dev/udev/rules.d/目录下添加一个新文件10-insert_usb.rules,在usb设备插入时udev会自动执行此规则文件,内容如下:ACTION!="add", GOTO="usb_end"SUBSYSTEM!="block", GOTO="usb_end"ATTR{partition}=="", GOTO="usb_end&a

2018-07-11 13:38:53 741

原创 定制rsyslogd的log格式

官网的log格式配置文档如下:https://www.rsyslog.com/doc/v8-stable/configuration/templates.html定制一个仅包含log本身的syslog消息格式,首先修改/etc/rsyslog.conf文件,添加一个myFormat模板,template(name="myFormat" type="string"         string="&...

2018-07-11 11:55:36 552

原创 重新编译centos内核代码

首先从centos官网下载kernel代码,我选择的是7.3.1611,其它版本也是一样的操作。http://vault.centos.org/7.3.1611/os/Source/SPackages/kernel-3.10.0-514.el7.src.rpm操作系统版本# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)# 执...

2018-07-10 17:59:13 2426

原创 内核网络系统功能变化(2.6-4.12)

最近在升级系统的内核,从2.6版本到4.12,梳理了一下网络部分的主要变化,做一下记录。2.6.6Network packet timestamping optimization;Binary Increase Control (BIC) TCP developed by NCSU. It is yet another TCP congestion control algorithm for ha...

2018-07-10 16:31:37 647

原创 接口网络命名空间的更改

内核中使用函数dev_change_net_namespace来变更接口的网络命名空间。目前从代码来看,变更的时候是一个mini版本的接口设备注销(unregister_netdevice)与注册(register_netdevice)的过程。改变命名空间使用dev_net_set完成。注销与重新注册操作比较简单直接,省去了netdevice的清理工作,相对来说比较安全。int dev_chang...

2018-07-09 18:33:14 1150

原创 实现socket监听所有网络命名空间

当前Linux内核的实现,一个socket监听在一个特定的网络命名空间中,不同的命名空间可有具有相同的socket,即可监听相同的地址端口,这样很好的实现网络隔离虚拟化的功能。但是对于网路设备来说,并不需要如此完全的隔离。比如VPN设备/路由器等,一个ike进程或者quagga进程能监听在所有的命名空间,更利于实现和管理。这样就要求应用层socket能够接收到所有命名空间的数据包,并且能够感知当前...

2018-07-09 17:46:47 1530

原创 利用cache缓存初始化内存

系统内存的初始化涉及到内存控制器的配置,需要读取DRAM条上EEPROM存储的各种配置参数,动态配置内存控制器。用汇编语言实现稍显复杂,当前的启动引导程序(如uboot)采用C语言实现这部分功能。然而,问题是在内存未初始化之前,系统是在FLASH设备中运行的汇编,C程序不能运行(原因是C语言函数的栈操作不能在FLASH中进行,FLASH的写操作需要首先擦除再写入)。要想运行C程序就需要找到一块在内...

2018-07-08 00:58:17 2629

原创 利用busybox制作文件系统

主要是为UML Linux制作文件系统,以便调试使用。使用的是busybox-1.24.0版本。编译安装完成之后,默认安装在源码下的_install目录:root@localhost:rootfs$ ls busybox-1.24.0/_install/bin  linuxrc  sbin  usrroot@localhost:rootfs$busybox命令集安装在bin、sbin、usr/bi...

2018-07-07 00:43:34 1020 1

原创 网桥VLAN与tunnel隧道映射

VLAN tunnel隧道映射根据tunnel id为数据包添加vlan信息。 以下bridge配置命令采用iproute2的版本4.17.0,低版本bridge命令可能不完全支持vlan_tunnel功能。使能接口eth0的vlan与tunnel映射功能:bridge link set dev eth0 vlan_tunnel on或者:ip link set dev eth0 type bri...

2018-07-06 18:06:43 3673 3

原创 网桥接口非混杂模式下数据包转发

网桥接口处在非混杂模式下,只能接收目的MAC地址为自身的数据包,也就是说如果数据包的目的MAC为其它地址,将会被丢弃掉。对于单网口的设备这样没有问题,但是对于存在多个网卡的交换设备,如果从一个网口接收到的数据包为需要转发的数据包,其去往另外一个接口,由于目的mac不等于接收网卡的MAC地址就会被丢弃导调导致网络不通。Linux内核为了处理这一问题,采取了为一个非混杂模式的接口,添加多个硬件单播MA...

2018-07-02 17:37:43 2391

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

WEB Portal 认证完整的交互报文

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

2018-04-24

空空如也

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

TA关注的人

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