运行IOS操作系统的早期Cisco路由器通过在中断处理程序中进行数据包切换而不是“常规”操作系统进程来提高其数据包处理速度。在中断处理程序中进行数据包处理可确保操作系统内的上下文切换不会影响数据包处理。据我所知,中断处理程序是操作系统中用于处理中断的软件。如何理解在中断处理程序中完成的包交换的概念?
答案 0 :(得分:1)
答案 1 :(得分:0)
以下是执行中断级切换的过程:
查找内存结构以确定下一跳地址和输出接口。
开放系统互连(OSI)第2层重写,也称为MAC重写,这意味着更改数据包的封装以符合传出接口。
将数据包放入传出接口的tx环或输出队列。
更新适当的内存结构(在缓存,更新计数器等中重置计时器)。
从网络接口接收数据包时引发的中断称为“RX中断”。仅当执行上述所有步骤时才会解除此中断。如果不能执行上述前三个步骤中的任何一个,则将分组发送到下一个交换层。如果下一个切换层是进程切换,则将数据包放入进入接口的输入队列以进行进程切换,并中断该中断。由于中断不能被同一级别的中断中断,并且所有接口都会引发相同级别的中断,因此在解除当前RX中断之前不能处理其他数据包。
可以在层次结构中组织不同的中断切换路径,从提供最快查找的查找到提供最慢查找的查找。用于处理数据包的最后手段始终是进程切换。并非每个中断切换路径都支持所有接口和数据包类型。通常,只有那些需要检查和更改限于包头的那些可以被中断切换。如果在转发之前需要检查数据包有效负载,则无法进行中断切换。对于某些中断切换路径可能存在更具体的约束。此外,如果输出接口上的第2层连接必须可靠(即,它包括对重传的支持),则无法在中断级别处理数据包。
以下是无法进行中断切换的数据包示例:
指向路由器的流量(路由协议流量,简单网络管理协议(SNMP),Telnet,普通文件传输协议(TFTP),ping等)。可以获取管理流量并将其定向到路由器。他们有与特定任务相关的流程。
OSI第2层面向连接的封装(例如,X.25)。有些任务太复杂,无法在中断切换路径中编码,因为要运行的指令太多,或者需要定时器和窗口。一些示例包括加密,局域传输(LAT)转换和数据链路交换加(DLSW +)等功能。