卷2 第5章 接口:SLIP和环回
5.1 引言
本章讨论SLIP和环回接口的实现。
5.2 代码介绍
net/if_slvar.h:SLIP定义net/if_sl.c:SLIP驱动net/if_loop.c:环回驱动
5.3 SLIP接口
SLIP帧格式
- 帧分隔符:0xc0(END)
- 转义字符:0xdb
- 0xc0 → 0xdb 0xdc
- 0xdb → 0xdb 0xdd
线路规程(SLIPDISC)
- SLIP作为TTY子系统的一个线路规程
- 过滤输入/输出数据
slopen/slinit
- 打开TTY设备
- 关联sl_softc结构
slinput
- 处理输入字符
- 解压缩TCP首部
- 组装帧→IP输入队列
sloutput
- 选择队列(普通/交互)
- 支持TOS排队
slstart
- 从队列取分组
- 压缩TCP首部(CSLIP)
- 传输到TTY
性能优化
- MTU=296(低时延)
- 交互队列(sc_fastq)
- CSLIP首部压缩
5.4 环回接口
- 输出直接变为输入
- 支持BPF
loutput函数
- 检查路由标志
- 按地址族分用
- 放入相应输入队列
5.5 小结
SLIP处理串行链路IP封装,支持CSLIP。环回接口用于本地通信。