400-035-6699
当前位置: 首页 » 技术支持 » 博文资讯 »

\"掌握TLP路由核心概念:基础知识和实践要点\"

计算机网络的世界中,数据包(Packet)的传输是信息流动的核心。当一个数据包到达交换机Switch)的输入端口(Ingress Port)时,一系列的操作就开始了。这个端口首先会检查数据包是否完整无缺,然后根据数据包中的路由信息,决定如何处理。
以下是三种可能的处理方式:
1. 接受数据包,并让交换机自己使用,这被称为内部使用(Internal Use)。 2. 将数据包通过指定的输出端口(Egress Port)转发到下一个终端(Endpoint)或另一个交换机。 3. 拒绝接受数据包,这通常发生在数据包出现错误或不符合规定的情况下。
在PCI Express(PCIe)总线上,数据包分为三种类型:Ordered Sets、DLLPs(数据链路层包)和TLPs(事务层包)。Ordered Sets仅在同一设备的物理层之间传递,而DLLPs则在数据链路层之间传递,都不会被转发到其他设备。相比之下,TLPs可以根据数据包中的路由信息被转发到任何设备。
值得注意的是,尽管TLPs和DLLPs都会经过物理层,但它们的来源和作用是由它们所处的层级决定的。例如,DLLP是由数据链路层产生的,与事务层没有直接关联。
在PCIe中,终端设备不仅可以向根设备(Root)发送TLPs,还可以通过交换机与其他终端设备进行点对点(Peer-to-Peer)通信。这种灵活的传输方式大大提高了网络的整体效率。
TLPs有三种路由方式:ID路由(ID routing,也称为BDF Routing)、地址路由(Address Routing)和模糊路由(Implicitly Routing)。每种路由方式都有其特定的用途,通常由TLP的类型决定。
例如,Address Routing用于内存和I/O操作,而ID路由则依赖于设备在总线上的唯一标识符。模糊路由则是一种特殊的路由方式,它可以广播Message到每一个设备,而不需要指定具体的目标设备。
那么,PCIe是如何区分TLP的类型,以及它们是请求(Request)还是完成(Completion)的呢?这实际上是通过检查TLP头部(Header)中的格式和类型字段来实现的。TLP头部的这些信息提供了关于数据包类型和用途的关键线索。
此外,PCIe规范中还有一个叫做AtomicOp的特殊操作,它是在PCIe Spec V2.1中新增的。对于感兴趣的用户,可以查阅相关文档以获取更深入的理解。
有时候,人们可能会疑惑,既然Message可以使用地址路由或ID路由,为什么还需要模糊路由呢?原因在于,模糊路由允许信息被广播到所有设备,而其他路由方式则需要明确指定目标设备,这在某些情况下可能不太方便。
总之,数据包在PCIe总线上的传输是一个复杂而精确的过程,涉及多个层面的判断和处理。通过理解这些基础知识,我们可以更好地把握网络通信的本质,为构建更高效、更可靠的网络系统打下坚实的基础。

首先来分析一个例子,如下图所示:

\

当包(Packet)到达Switch的输入端口(Ingress Port)时,端口首先会检查包是否有错误,然后根据包的路由(Routing)信息,来做出以下三种处理方式之一:

1、 接受这个包,并自己(Switch)使用它(Internal Use);

2、 将其通过响应的输出端口(Egress Port)转发到下一级Endpoint(或者下一级Switch);

3、 拒绝接受这个包。

在前面的文章中多次介绍过,PCIe总线中一共有三种类型的包:Ordered Sets(命令集包,只在相邻的设备的物理层之间进行传递,不会被转发到其他的设备中)、DLLPs(数据链路层包,只在相邻的设备的数据链路层之间进行传递,不会被转发到其他设备中)和TLPs(事务层包,可以根据包中的路由信息被转发到其他的设备中)。

注:实际上不论是TLPs还是DLLPs都会经过物理层,这里说的TLP和DLLP指的是包的最初来源分别是事务层和数据链路层,即DLLP和上一层的事务层没有什么关系,其内容和作用完全是由数据链路层自己决定的。

注:Endpoint不仅可以发送TLP给其上层的设备(如Root),也可以发送TLP给其他的Endpoint,当然这需要借助Switch来实现。这种传输方式叫做Peer-to-Peer。

TLP一共有三种路由方式,分别是ID路由(ID Routing,即BDF Routing)、地址路由(Address Routing,包括Memory和IO)以及模糊路由(Implicitly Routing)。本文将简单介绍一些关于TLP路由的基础知识,具体的路由方式将会在接下来的三篇文章中依次进行介绍。

具体采用哪一种路由方式是由TLP的类型所决定的,如下表所示:

注:AtomicOp是PCIe Spec V2.1新增的内容,有兴趣的可以自行阅读V2.1的相关内容。

注:一般情况下,Message都是使用模糊路由(Implicitly Routing)的,但是也有PCIe设备厂商自定义的Message会使用地址路由或者ID路由。

可能有的人要有疑惑了,既然Message可以使用地址路由或者ID路由,为什么还要单独搞出来一个模糊路由呢?原因很简单,使用模糊路由可以广播Message到每一个设备,采用其他的路由方式必须明确指定是哪一个设备。

那么PCIe中是如何来判断TLP的类型的呢?又是如何判断其为Request还是Completion的呢?实际上是通过TLP Header的Format和Type部分来确定的,如下图所示:

【限时免费】一键获取网络规划系统模板+传输架构设计+连通性评估方案

Switch相关文章

服务电话:
400-035-6699
企服商城