
内核虚拟设备
redwingz
这个作者很懒,什么都没留下…
-
原创 bond接口参数配置
Bond接口最简化的创建命令如下,任何参数都使用默认:ip link add bond1 type bond 或者:ip link add type bond 由内核决定接口名称,格式为:bond%d。以上命令,创建的bond1设备,默认参数可使用如下命令查看。$ ip -d link show dev bond15: bond1: <BROADCAST,MULTICAST,M...2020-02-26 09:20:57945
0
-
原创 基于路由和VTI隧道接口的net2net的IPSec实现
以下根据strongswan代码中的testing/tests/route-based/net2net-vti/中的测试环境,来看一下基于路由和VTI接口实现的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。sun网关配置sun的配置文件:/etc/swanctl/swanctl.conf,内容如下。连接home中的字段vips设置为0...2019-12-02 19:41:16453
0
-
原创 内核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:20474
0
-
原创 配置基于IP的静态L2TPv3隧道
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24: Host-A Host-B |-------------------| |-------------------| | | ...2019-05-23 20:45:261160
0
-
原创 基于UDP的静态L2TPv3隧道
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24: Host-A Host-B |-------------------| |-------------------| | | ...2019-05-23 20:37:42728
10
-
原创 内核IP隧道接收处理框架
内核使用inet_add_protocol注册了三种类型的隧道接收处理函数,三种类型分别为IPv4-in-IPv4隧道类型IPPROTO_IPIP(4)、IPv6-in-IPv4隧道IPPROTO_IPV6(41)和MIPS-in-IP隧道IPPROTO_MPLS(137)。接收处理函数分别为:tunnel4_rcv、tunnel64_rcv和tunnelmpls4_rcv。具体参见tunnel4...2018-12-18 15:52:19468
0
-
原创 SIT隧道以及FOU/GUE封装
单纯的SIT隧道配置如下:Host-A:ip link add sit01 type sit local 10.10.10.103 remote 10.10.10.145 ttl 255ip link set sit01 upip addr add 3ffe:6::1/96 dev sit01Host-B:ip link add sit01 type sit local 1...2018-12-23 15:16:50750
0
-
原创 Linux内核轻量级隧道
目前内核支持的封装类型由枚举类型lwtunnel_encap_types定义,如下所示支持MPLS、IP、ILA、IP6、SEG6、BPF和SEG6_LOCAL等7种类型。函数lwtunnel_valid_encap_type负责检验用户配置(通过netlink接口)的封装类型是否合法,合法的封装类型必须大于LWTUNNEL_ENCAP_NONE,并且小于__LWTUNNEL_ENCAP_MAX;...2018-12-11 11:57:471210
1
-
原创 IPIP隧道以及传输层FOU/GUE封装配置
在配置IPIP隧道之前,需要首先加载IPIP模块:sudo modprobe ipip以下为两个主机A和B的IPIP隧道配置,主机A的IP地址为192.168.1.113,主机B的IP地址为192.168.1.129:Host A:ip link add ipip01 type ipip local 192.168.1.113 remote 192.168.1.129ip li...2018-12-21 23:39:142274
1
-
原创 内核IP隧道的FallBack设备与隧道
基于内核IP TUNNEL体系的隧道,在初始化时默认创建一个FallBack设备及相应的FallBack隧道。例如GRE类隧道、IPIP和VTI隧道。GRE IPv4模块加载之后,默认创建三个设备,分别为gre0、gretap0和erspan0,IPIP隧道默认创建tunl0名字的设备,VTI隧道创建的默认设备名为ip_vti0。这些设备为隧道的FallBack设备。每种类型的FB设备每个网络命...2018-12-16 21:39:251018
0
-
原创 PPPoE服务搭建与交互流程
环境使用Ubuntu 16.04.5 LTS系统主机,使用apt-get安装pppoe服务端:$ sudo apt-get install pppoe $ pppoe-server -hPPPoE-Server Version 3.11, Copyright (C) 2001-2009 Roaring Penguin Software Inc.PPPoE-Server com...2018-12-10 11:42:402564
2
-
原创 内核基于流的GRE隧道与lwtunnel隧道以及collect_md简析
GRE实现基于内核的IP tunnel隧道框架,ip隧道的框架又是在轻量级lwtunnel隧道基础上实现。本文不阐述轻量级隧道的实现详情,可参看以下链接:https://blog.csdn.net/sinat_20184565/article/details/84952713。GRE点到点隧道的配置如下:$ sudo ip tunnel add gre01 mode gre remote...2018-12-19 23:08:38904
0
-
原创 Linux内核TUN/TAP设备驱动
Linux内核的TUN/TAP虚拟设备,不同于内核的其它设备,其发送和接收数据包都在网络协议栈内部完成,发送的数据包并不会离开协议栈进入到物理网络中,同样,也不会接收到从物理网络中进入协议栈的数据包。用户空间的设备节点/dev/net/tun用于读写TUN/TAP设备,内核中TUN/TAP设备在发送数据包时,将数据包发送到与/dev/net/tun文件描述符相关联的套接口,用户空间就可从设备节...2018-10-26 15:20:399133
1
-
原创 GRE隧道封装协议及内核处理解析
Generic Routing Encapsulation (GRE)通用路由封装协议,基于IP网络层协议封装以太网报文,可用于在IPSec VPN网络间传输多播路由信息报文,或者在PPTP协议中,承载PPP数据报文。其在数据帧中的位置如下: |-------------------|----------------|----------------------|-----------...2018-10-22 22:52:2118346
3
-
原创 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:185131
0