交换机芯片驱动开发

交换机芯片驱动开发

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)                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1. Ethernet Type:以太网类型字段,2字节,表示数据帧中的上层协议类型。对于ARP消息,以太网类型为0x0806,表示后续数据是ARP协议的数据部分。
  2. 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 文件,可以通过 insmodmodprobe 命令动态加载到内核中。

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

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

总结

  • 内核模式驱动可以作为内核模块独立编译和动态加载,不需要与内核一起编译;但某些情况下(如启动时需要加载)也可以选择与内核一起编译。
  • 用户模式驱动完全在用户空间运行,不需要与内核一起编译,通过普通的编译和部署方式进行操作。
 RTL8370N-VB: Single-chip 8-port gigabit non-blocking switch architecture  Embedded 8-port 10/100/1000Base-T PHY  Each port supports full duplex 10/100/1000M connectivity (half duplex only supported in 10/100M mode)  Full-duplex and half-duplex operation with IEEE 802.3x flow control and backpressure  Supports 9216-byte jumbo packet length forwarding at wire speed  Supports Realtek Cable Test (RTCT) function  Supports 96-entry ACL Rules  Search keys support physical port, Layer2, Layer3, and Layer4 information  Actions support mirror, redirect, dropping, priority adjustment, traffic policing, CVLAN decision, and SVLAN assignment  Supports 5 types of user defined ACL rule format for 64 ACL rules  Optional per-port enable/disable of ACL function  Optional setting of per-port action to take when ACL mismatch  Supports IEEE 802.1Q VLAN  Supports 4K VLANs and 32 Extra Enhanced VLANs  Supports Un-tag definition in each VLAN  Supports VLAN policing and VLAN forwarding decision  Supports Port-based, Tag-based, and Protocol-based VLAN  Up to 4 Protocol-based VLAN entries  Supports per-port and per-VLAN egress VLAN tagging and un-tagging  Supports IVL, SVL, and IVL/SVL  Supports 4096-entry MAC address table with 4-way hash algorithm  Up to 4096 L2/L3 Filtering Database  Supports Spanning Tree port behavior configuration  IEEE 802.1w Rapid Spanning Tree  IEEE 802.1s Multiple Spanning Tree with up to 16 Spanning Tree instances  Supports IEEE 802.1x Access Control Protocol  Port-Based Access Control  MAC-Based Access Control  Guest VLAN  Supports Quality of Service (QoS)  Supports per port Input Bandwidth Control  Traffic classification based on IEEE 802.1p/Q priority definition, physical Port, IP DSCP field, ACL definition, VLAN based priority, MAC based priority, and SVLAN based priority  Eight Priority Queues per port  Per queue flow control  Min-Max Scheduling  Strict Priority and Weighted Fair Queue (WFQ) to provide minimum bandwidth  One leaky bucket to constrain the average packet rate of each queue  Supports rate limiting (64 shared meters, with 8kpbs granulation)  Supports RFC MIB Counter  MIB-II (RFC 1213)  Ethernet-Like MIB (RFC 3635)  Interface Group MIB (RFC 2863)  RMON (RFC 2819)  Bridge MIB (RFC 1493)  Bridge MIB Extension (RFC 2674)  Supports Stacking VLAN and Port Isolation with 8 Enhanced Filtering Databases  Supports IEEE 802.1ad Stacking VLAN  Supports 64 SVLANs  Supports 32 L2/IPv4 Multicast mappings to SVLAN  Supports 4 IEEE 802.3ad Link aggregation port groups  Supports OAM and EEE LLDP (Energy Efficient Ethernet Link Layer Discovery Protocol  Supports Loop Detection  Security Filtering  Disable learning for each port  Disable learning-table aging for each port  Drop unknown DA for each port  Broadcast/Multicast/Unknown DA storm control protects system from attack by hackers  Supports Realtek Green Ethernet features  Link-On Cable Length Power Saving  Link-Down Power Saving  Each port supports 3 parallel LED or scan LED or serial shift LED outputs  Supports I 2 C-like Slave interface or Slave MII Management interface to access configuration register  Supports 16K-byte EEPROM space for configuration  Integrated 8051 microprocessor  Supports SPI Flash Interface  25MHz crystal input  RTL8370N-VB: LQFP 128-pin E-PAD package
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值