目錄
1. 前言
网络基础
2. 网络基础理论
2.1 TCP/IP网络模型
2.2 ARP
2.3 ICMP
2.4 路由
2.5 UDP、DHCP、DNS
2.6 TCP
2.7 VLAN
2.8 Overlay
2.9 交换机
3. Linux网络
3.1 常用工具
网络抓包tcpdump
scapy
3.2 Linux网络配置
虚拟网络设备
3.3 负载均衡
3.4 SR-IOV
3.5 内核VRF
3.6 内核网络参数
3.7 eBPF
bcc
故障排查
3.8 XDP
XDP架构
使用场景
1.1
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.1.8
2.1.9
2.2
2.2.1
2.2.1.1
2.2.1.2
2.2.2
2.2.2.1
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7
2.2.7.1
2.2.7.2
2.2.8
2.2.8.1
2.2.8.2
1
4. Open vSwitch
4.1 OVS介绍
4.2 OVS编译
4.3 OVN
OVN编译
OVN实践
OVN高可用
OVN Kubernetes插件
OVN Docker插件
OVN Libvirt
OVN OpenStack
5. DPDK
5.1 DPDK简介
5.2 DPDK安装
5.3 报文转发模型
5.4 NUMA
5.5 Ring和共享内存
5.6 PCIe
5.7 网卡性能优化
5.8 多队列
5.9 硬件offload
5.10 虚拟化
5.11 OVS DPDK
5.12 SPDK
5.13 OpenFastPath
SDN&NFV
6. SDN
6.1 SDN控制器
6.2 南向接口
6.3 数据平面
7. NFV
8. SDWAN
2.3
2.3.1
2.3.2
2.3.3
2.3.3.1
2.3.3.2
2.3.3.3
2.3.3.4
2.3.3.5
2.3.3.6
2.3.3.7
2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.4.7
2.4.8
2.4.9
2.4.10
2.4.11
2.4.12
2.4.13
3.1
3.1.1
3.1.2
3.1.3
3.2
3.3
2
容器网络
9. 容器网络
9.1 Host Network
9.2 CNI
CNI介绍
Flannel
Weave
Contiv
Calico
SR-IOV
Romana
OpenContrail
CNI Plugin Chains
9.3 CNM
CNM介绍
Calico
Contiv
Romana
SR-IOV
9.4 Kubernetes网络
SDN实践
10. Neutron
11. SDN实践案例
Goolge网络
参考文档
11. 参考文档
4.1
4.1.1
4.1.2
4.1.2.1
4.1.2.2
4.1.2.3
4.1.2.4
4.1.2.5
4.1.2.6
4.1.2.7
4.1.2.8
4.1.2.9
4.1.3
4.1.3.1
4.1.3.2
4.1.3.3
4.1.3.4
4.1.3.5
4.1.4
5.1
5.2
5.2.1
6.1
3
1. 前言
SDN网络指南
SDN (Software Defined Networking)作为当前最重要的热门技术之一,目前已经普遍得到
大家的共识。有关SDN的资料和书籍非常丰富,但入门和学习SDN依然是非常困难。本书整
理了SDN实践中的一些基本理论和实践案例心得,希望能给大家带来启发,也欢迎大家关注
和贡献。
本书内容包括
网络基础
SDN网络
容器网络
Linux网络
OVS以及DPDK
SD-WAN
NFV
实践案例
在线阅读
可以通过GitBook或者Github来在线阅读。
也可以下载ePub或者PDF版本。
项目源码
项目源码存放于Github上,见https://github.com/feiskyer/sdn-handbook。
4
2. 网络基础理论
网络基础理论
本章介绍计算机网络基础理论。
5
2.1 TCP/IP网络模型
TCP/IP网络模型
TCP/IP网络模型
TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别
为链路层、网络层、传输层和应用层。
链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。
网络层:负责路由以及把分组报文发送给目标网络或主机。
传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。
在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据
传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路
层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。
OSI七层模型
当然在理论上,还有一个OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表
示层和应用层。这是一个理想模型,由于其复杂性并没有被大家广泛采用。
6
2.1 TCP/IP网络模型
链路层
7
2.1 TCP/IP网络模型
1 以太网和802封装
以太网封装是以RFC894定义的 而802封装则是RFC1042定义的 主机需求RFC要求: (1)
必须支持以太网封装 (2)应该支持与RFC894混合的RFC1042封装 (3)或许可以发送
RFC1042封装的分组
2 SLIP
适用于RS-232和高速调制解调器接入网络 (1)以0xC0结束 (2)对报文中的0xC0和ESC字
符进行转义 缺点:没有办法通知本端IP到对端;没有类型字段;没有校验和
3 CSLIP
将SLIP报文中的20字节IP首部和20字节TCP首部压缩为3或5字节
4 PPP协议
修正了SLIP协议的缺陷,支持多种协议类型;带数据校验和;报文首部压缩;双方可以进行
IP地址动态协商(使用IP协议);链路控制协议可以对多个链路选项进行设置。
5 环回接口
用于同一台主机上的程序通过TCP/IP通信。 传给环回的数据均作为输入; 传给该主机IP地
址的数据也是送到环回接口; 广播和多播数据先复制一份到环回接口,再送到以太网上。
6 MTU
对数据帧长度的最大限制,如果数据分组长度大于这个数值,需要在IP层对其分片。 注意:
发往以太网的数据要考虑路径MTU
IP网际协议
IP是TCP/IP中最为核心的协议,所有的TCP、UDP、ICMP等协议均以IP数据报的格式传输。
IP协议提供不可靠、无连接的服务,它不保证数据报一定可以送达目的,也不保证数据报的
先后次序。
IP首部格式为
8