交换机芯片驱动开发

您所在的位置:网站首页 交换机标签贴法 交换机芯片驱动开发

交换机芯片驱动开发

2024-07-10 12:04| 来源: 网络整理| 查看: 265

交换机芯片驱动开发 Ethernet for Switch 名词解释BCM88680博通公司(Broadcom)生产的一款高性能网络处理器芯片,属于Broadcom’s Jericho2系列。它用于构建高端路由器、交换机和其他网络设备,支持多种网络协议,包括IPv4、IPv6、MPLS等。RFC2544由 IETF (Internet Engineering Task Force) 定义的一套用于测试和评估网络设备性能的标准。它提供了一系列测试方法,主要用于评估以太网设备的性能。这些测试包括吞吐量、延迟、帧丢失率、背靠背帧测试和系统恢复测试。 Ethernet基本格式

标准以太网数据帧示例:

+-------------------------+-------------------------+-------------------------+ | Destination MAC Address | Source MAC Address | Ethernet Type | +-------------------------+-------------------------+-------------------------+ | 6 bytes | 6 bytes | 2 bytes | +-------------------------+-------------------------+-------------------------+ | Payload/Data | +-------------------------------------------------------------------------+ | 46-1500 bytes | +-------------------------------------------------------------------------+ | CRC (4 bytes) | +-------------------------------------------------------------------------+

标准以太网帧的数据字段最小为46字节,最大为1500字节。加上其他字段,整个帧的长度为:

最小帧长度:46 + 18 = 64字节最大帧长度:1500 + 18 = 1518字节

=>以太网的MTU是1500

802.3与EthII的区别:

IEEE 802.3是以太网的标准化规范,而Ethernet II则是早期在以太网发展中使用的一种帧格式。

=>两者的区别主要在于 对 Ethernet Type的解释有差异。在IEEE 802.3中,如果长度字段的值小于等于1500(0x05DC),则被解释为帧长度;如果大于这个值,则被解释为帧类型。Ethernet II只解释为帧类型,比如IPv4(0x0800)、ARP(0x0806)等。

随着技术的进步,现代以太网通常更多地遵循IEEE 802.3标准,但Ethernet II仍然在某些特定的应用场景中得到使用和支持。

VLAN

VLAN:

VLAN(Virtual Local Area Network)是一种逻辑上的网络划分技术。实现通过在以太网帧的头部添加额外的VLAN标签(即802.1Q标签),这个标签的存在使得交换机能够识别和处理不同的VLAN,并且在不同的VLAN之间进行隔离和通信。

引入VLAN概念后,数据帧只在相应的VLAN进行交换。用通俗一点的话来讲,一个交换机被虚拟出了多个逻辑交换机,每一个VLAN内的端口都是一个逻辑上的交换机。

带VLAN标记的以太网数据帧结构(IEEE 802.1Q):

+-------------------------+-------------------------+-------------------------+ | Destination MAC Address (6 bytes) | Source MAC Address (6 bytes) | TPID (2 bytes, 0x8100) | +-------------------------+-------------------------+-------------------------+ | TCI (2 bytes) | Ethernet Type (2 bytes) | +-------------------------+-------------------------+ | Payload/Data (46-1500 bytes) | +-------------------------------------------------------------------------+ | CRC (4 bytes) | +-------------------------------------------------------------------------+

TPID (0x8100):表示这是一个带有VLAN标签的以太网帧。

TCI:包含VLAN ID和优先级信息。

Ethernet Type:指示上层协议类型,例如IPv4(0x0800)或IPv6(0x86DD)。

=>VLAN标签就是在Ethernet Type之前插入由TPID (0x8100)+TCI组成的四字节长的标签,增加VLAN标签后,以太帧最大长度会增加4字节到1522字节。

MPLS

MPLS位于TCP/IP协议栈中的链路层和网络层之间,MPLS以标签交换替代IP转发。标签是一个短而定长的、只具有本地意义的连接标识符,标签封装在链路层和网络层间。

L2VPN

MPLS L2VPN数据帧:

+-----------------------------------------------------------------------------------------------+ | Ethernet Header (14 bytes) + MPLS Header (4 bytes) | +-------------------------+-------------------------+-------------------------+-----------------+ | Destination MAC Address | Source MAC Address | Ethernet Type (0x8847) | MPLS Label Stack | +-------------------------+-------------------------+-------------------------+-----------------+ | 00:11:22:33:44:55 | 66:77:88:99:AA:BB | 0x8847 | Label 1 | | | | | Label 2 | | | | | | +-------------------------+-------------------------+-------------------------+-----------------+ | | | Ethernet Frame (Payload) (IPv4 + TCP + Application) | | | +-------------------------+-------------------------+-------------------------+-----------------+ | Destination MAC Address | Source MAC Address | Ethernet Type (0x0800) | IPv4 Header | +-------------------------+-------------------------+-------------------------+-----------------+ | Destination MAC Address | Source MAC Address | Ethernet Type (0x0800) | IPv4 Header | | | | | TCP Header | | | | | Application Data | +-------------------------+-------------------------+-------------------------+-----------------+ | | | CRC (4 bytes) | | | +-----------------------------------------------------------------------------------------------+

目的MAC地址为 00:11:22:33:44:55,源MAC地址为 66:77:88:99:AA:BB。

Ethernet类型字段为 0x8847,表示这是一个MPLS帧。

MPLS标签栈包含了两个标签(Label 1和Label 2),用于指示数据包的转发路径。

MPLS Payload部分是一个完整的以太网帧,包含目的MAC地址、源MAC地址、Ethernet类型字段(0x0800表示IPv4)和IPv4数据包的头部、TCP头部以及应用数据。

CRC字段包含帧的循环冗余校验值,用于帧的错误检测

=>L2VPN包括VPWS与VPLS

其中VPLS有以下功能:

MAC地址学习,MAC地址迁移: 以太网交换原理可以概括为 ‘源MAC学习,目的MAC转发’

FRR保护: (Fast Reroute,快速重路由) 旨在当网络中链路或者节点失效后,为这些重要的节点或链路提供备份保护,实现快速重路由,减少链路或节点失效时对流量的影响,使流量实现快速恢复。

ECMP/LAG

L3VPN

MPLS L3VPN数据帧:

+---------------------------------------------------------------------------------------------------+ | Ethernet Header (14 bytes) + MPLS Header (4 bytes) | +-------------------------+-------------------------+-------------------------+---------------------+ | Destination MAC Address | Source MAC Address | Ethernet Type (0x8847) | MPLS Label Stack | +-------------------------+-------------------------+-------------------------+---------------------+ | 6 bytes | 6 bytes | 2 bytes | 4 bytes | +-------------------------+-------------------------+-------------------------+---------------------+ | IPv4 Header (20 bytes) +-------------------------+-------------------------+-------------------------+---------------------+ | TCP/UDP Header | Application Data | Padding/Options | CRC (4 bytes) | +-------------------------+-------------------------+-------------------------+---------------------+ | Variable length | Variable length | Variable length | 4 bytes | +-------------------------+-------------------------+-------------------------+---------------------+

=>可以看到L3VPN相对于L2VPN来说,不用包两层以太头了。即便加入了MPLS,以太网帧长度仍不会超过1518字节。

各式报文 ARP报文

ARP(Address Resolution Protocol,地址解析协议)报文用于将IP地址解析为MAC地址。

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination MAC Address (6 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source MAC Address (6 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ethernet Type (2 bytes) = ARP (0x0806) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ARP Message | | (28 to 46 bytes) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ethernet Type:以太网类型字段,2字节,表示数据帧中的上层协议类型。对于ARP消息,以太网类型为0x0806,表示后续数据是ARP协议的数据部分。ARP Message:ARP消息的内容部分,包括以下字段: Hardware Type:硬件类型,2字节。Protocol Type:协议类型,2字节。Hardware Addr Len:硬件地址长度,1字节。Protocol Addr Len:协议地址长度,1字节。Opcode:操作码,2字节,指示ARP报文的类型。Sender MAC Address:发送ARP请求或应答的设备的MAC地址,6字节。Sender IP Address:发送ARP请求或应答的设备的IP地址,4字节。Target MAC Address:目标MAC地址,在ARP请求中通常为全0,在ARP应答中为目标设备的MAC地址,6字节。Target IP Address:目标IP地址,ARP请求或应答中的目标设备的IP地址,4字节。

ARP消息被封装在以太网帧中,以太网帧的头部包含了目的MAC地址、源MAC地址和以太网类型字段,而ARP消息本身作为以太网帧的数据部分。这种封装方式使得ARP消息能够在以太网中进行传输和处理,从而实现IP地址到MAC地址的解析和映射。

ICMP报文

ICMP(Internet Control Message Protocol,互联网控制报文协议)是一种网络层协议,用于在IP网络中传递控制消息。常见的ICMP报文类型包括“回显请求”和“回显应答”,也就是通常所说的ping操作。

IPv4数据报格式:

以太网类型:指示上层协议类型为IPv4(0x0800)

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version (4 bits)| IHL (4 bits) |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags (3 bits)| Fragment Offset (13 bits)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum (16 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source IP Address (32 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination IP Address (32 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ICMP Message (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

版本(Version):IPv4版本号。

IHL(Internet Header Length):IPv4头部长度。

Type of Service:服务类型。

Total Length:整个IPv4数据报的总长度。

Identification、Flags、Fragment Offset:用于分片的字段。

Time to Live:生存时间,用于限制数据报在网络中的生存时间。

Protocol:指示上层协议为ICMP(1)。

Header Checksum:IPv4头部校验和。

Source IP Address:发送ICMP消息的设备的IP地址。

Destination IP Address:目标设备的IP地址。

=>除了ARP报文之外,ICMP,OSPF等均在IPv4协议上传输.

最小长度:IPv4头部的最小长度是20字节,没有数据部分。

最大长度:IPv4报文的最大长度是65535字节(2^16 - 1),包括头部和数据部分。

当IPv4报文的长度超过链路层的MTU时,IP层会将报文分成多个片段,每个片段都包含原始IP头部的副本,并在适当的位置加入分片偏移量。

OSPF报文

OSPF(Open Shortest Path First)是一种用于内部网关协议(IGP)的链路状态路由协议,用于在路由器之间交换路由信息。

OSPF报文主要有5种:Hello报文、DD (Database Description,数据库描述)报文、LSR (LinkState Request,链路状态请求)报文、LSU(LinkState Update,链路状态更新)报文和LSAck(LinkState Acknowledgment,链路状态应答)报文。它们各自在OSPF路由更新中所担当的用途不一样,报文格式也存在比较大的差别。

RSVP报文

RSVP(Resource Reservation Protocol)是一种用于实时流量管理和服务质量(QoS)保证的网络协议。它允许网络设备(如路由器)在网络路径上设置资源预约,以确保能够满足特定流量的带宽、延迟、抖动等需求。RSVP通过控制消息来协商和建立这些资源预约。

IGMP报文

IGMP(Internet Group Management Protocol)是一种用于管理多播组成员的协议。它在IPv4网络中允许主机向路由器报告其多播组成员身份。

补充:驱动开发

内核模式驱动(Kernel Mode Driver)和用户模式驱动(User Mode Driver)是操作系统中的两种驱动程序,它们在运行环境、权限、性能、安全性等方面存在显著的区别。

=>内核模式驱动 高风险高性能开发复杂 如网络适配器、硬盘控制器驱动、GPU驱动等。用户模式驱动, 如打印机驱动、USB设备驱动、音频设备驱动等。

内核模式驱动通常用于需要直接访问硬件资源、需要高性能和低延迟的设备,如网络适配器、硬盘控制器和GPU。这些驱动程序运行在内核空间,具有高权限和直接硬件访问能力,但也因此带来更高的风险和开发复杂性。

用户模式驱动通常用于对性能要求不高、需要较高安全性和稳定性的设备,如打印机、USB设备和某些音频设备。这些驱动程序运行在用户空间,权限受限,开发和调试相对简单,更安全且不易导致系统崩溃。

内核模式驱动通常有以下两种编译: 内核模块通常作为独立的模块编译,不需要与内核一起编译。它们可以在需要时加载或卸载,而无需重启系统。内核模块编译生成 .ko 文件,可以通过 insmod 或 modprobe 命令动态加载到内核中。

某些驱动程序可能需要与内核一起编译,成为内核的一部分。这通常是出于需要在启动时立即可用或对性能有特殊要求的考虑。核内置驱动程序会与内核一起编译和链接,生成的内核映像包含这些驱动程序。这需要重新编译内核并重启系统以生效。

用户模式驱动则不需要与内核一起编译,它们作为普通的用户空间程序编译和运行:用户模式驱动通常使用常规的用户空间编译工具(如 gcc)进行编译。用户模式驱动以可执行文件或库的形式存在,通常与应用程序一起部署,可以通过普通的用户空间方式加载和运行。

总结 内核模式驱动可以作为内核模块独立编译和动态加载,不需要与内核一起编译;但某些情况下(如启动时需要加载)也可以选择与内核一起编译。用户模式驱动完全在用户空间运行,不需要与内核一起编译,通过普通的编译和部署方式进行操作。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3