自动驾驶网络大学课程W4L2
本周的第二节课延续上一节课关于芯片设计的讨论,讲完报文处理流水线的设计以后,开始讲可编程流量管理的设计。
调度器和报文处理在分组网络里面就是通常说的Packet Processor和Traffic Manager芯片,通常用PP和TM指代。
PP的设计有多种流派,主要针对二层报文处理和三层报文的处理可以有不同的优化。Silicon ONE采取的是RTC结构,可以用许多个微核做出众核结构,配合内部的资源调度器将报文调度到不同的微核上进行处理,每个微核完成针对报文的全部处理任务,也就是Run to Complete的RTC。这种结构有它的优势,可以利用多核处理器的设计方法、容量可以通过增加微核的数量来扩展,但是问题是如何实现高效的调度、如何针对大象流也能做到线速。PP也可以是Pipeline结构,比较适合于报文处理规则相对简单的二层交换应用。
本节课是讲可编程的流量管理芯片的设计,文章介绍说TM通常采用固定的设计,支持哪些调度算法通常是固化在芯片里面的,可编程能力非常有限。
文章提出了一种可编程TM设计,它基于报文的调度本质上是安排每个报文的发生顺序和发送时间的问题,而发送顺序和时间在报文进入队列之前就可以确定下来。
文章以此为基础,提出了通过在报文进入队列前计算报文发送顺序和发送时间,进而基于计算结果讲报文插入到一个PIFO优先级队列,发送端固定从队列头取报文发送的可编程TM结构。
PIFO结构是一种Push in, First out结构,不同的队列调度算法决定了Push in的不同位置。
这种结构不需要为每个流保留一个队列,仅仅需要为每个Egress端口保留一个队列就可以了。
文章确认了PIFO结构可以实现的调度算法,也指出了其不能支持的调度算法。
文章开源了C++算法和Verilog实现,通过模拟综合比较了可编程TM结构需要的资源情况。
文章的结论部分机器翻译+手工校对:
直到最近,人们还普遍认为最快的交换芯片应该是固定功能的;可编程设备不可能有同样的性能。最近对可编程解析器、快速可编程交换流水线和编程语言的研究,以及最近的Tbit /s可编程商业芯片的研究表明,情况可能正在变化中。
但到目前为止,人们一直认为对包调度程序进行编程是不可能的——部分原因是所需的算法是如此多样,而且因为调度程序位于共享包缓冲区的核心,在这里,计时需求是最紧迫的。
人们普遍认为,很难找到一个有用的抽象,同时也能在快速硬件中实现。
pifo似乎是一个非常有前途的抽象:它们包括各种现有算法,并允许我们表达新的算法。此外,它们可以在适度的芯片面积开销下以线路速率实现。
我们相信,最令人兴奋的结果将是产生许多新的调度程序,由网络运营商发明、迭代和改进,然后根据自己的需要部署。
研究实验将不再局限于模拟和进度的限制,由供应商的选择调度算法。那些需要新的算法的人可以创建他们自己的算法,甚至可以从开源存储库或可复制的SIGCOMM论文中下载一个。
为了实现这一目标,我们将需要真正的具有可编程PIFO调度器的交换芯片。好消息是,我们没有理由认为未来的交换芯片不能包含可编程PIFO调度器。
名校就是名校,这课程设置和进度,紧贴业界最前沿。

浙公网安备 33010602011771号