linux 内核 vlan,Linux内核vlan学习笔记

本文介绍了Linux内核中VLAN的工作原理,包括VLAN的定义、内核网络框架的分层模型,以及VLAN在L2核心接口和L3协议栈之间的实现方式。详细阐述了VLAN设备的配置、报文发送与接收流程,揭示了在物理层、链路层、网络层如何处理VLAN标签。
摘要由CSDN通过智能技术生成

一、前言

前几天做协议划分vlan的时候看了一些linux内核,了解不深,整理了下vlan相关部分的学习笔记,如果有理解上的错误,欢迎指正,以下代码来自于2.6.14-triny(PPC架构)。

VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。IEEE于1999年颁布了用以标准化VLAN实现方案的802.1Q协议标准草案。

二、概述

看代码的时候发现linux网络内核基本就是按照分层模型来设计的,于是把内核的网络框架按照分层模型来理解:

物理层L1

对应网卡驱动模块(driver/net),主要负责从物理介质接受和发送数据。当然,在内核外还有switch,因此switch上的配置是凌驾于一切的,如果switch上没有设置vlan tag属性,一切对vlan的修改都无从谈起。

链路层L2

对应网络核心接口模块(net/core/),与具体设备无关。core核心负责了大量接口之间的连接和调度,统一不同网卡的驱动程序与网络协议层的接口,而实际上很多L2层以太网头的打包剥离过程是在L1驱动层做的。

网络层L3,传输层L4

对应协议栈模块(net),负责对报文的层层解析,逐部剥离IP层,TCP/UDP层等等。其中ipv4的主要代码是net/ipv4/af_inet.c。

会话层L5

对应socket模块,与协议无关,是为用户提供网络服务的编程接口,提供了系列系统调用,主要文件是net/socket.c。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值