1、通用路由器体系架构
路由:运行路由选择算法/协议(RIP,OSPF,BGP),生成路由表;
转发:根据路由表进行分组的转发,选择从输入到输出的链路;
2、输入端口
2.1、输入端口的功能
- 物理层:bit级的接收,将物理信号转化为0/1的数字信号;
- 数据链路层:对比特流的数据解封装;
- 判断帧头帧尾,CRC校验;
- 判断帧中的MAC地址和路由器的MAC是否一致,要不要接收;
- 取出IP数据报交给网络层;
- 网络层:排队,根据IP数据报头部的信息,在路由表中查找合适的输出端口进行转发;
- 基于目标的转发:仅依赖于IP数据报的IP地址(传统方法);
- 通用转发:基于头部字段的任意集合进行转发;
2.2、输入端口缓存
当交换机构转发的速率小于输入端口的汇集速率时,在输入端口需要排队;
出现上述情况的就是Head of the Line(HOL)blocking:由于输出端口竞争,排在队头的数据报被阻塞了,同时也阻止了队列中其他数据报向前移动;
当排队逐渐变长,排队延时也逐渐增大,还可能出现缓存溢出,数据报丢失;
3、交换机构
功能:将分组从输入缓冲区传输到合适的输出端口;
交换速率:N个输入端口,交换机构的交换速率是输入线路速率的N倍以上;
3.1、通过内存交换(memory)
第一代路由器:
- 采用通用计算机实现,在CPU直接控制下交换;
- 分组被拷贝到系统内存,CPU从分组头部提取出目标地址,查找转发表,找到对应的输出端口,拷贝到输出端口;
- 转发速率被计算机的内存带宽限制,而且要两次通过system bus;
- 一次只能转发一个分组;
3.2、通过总线交换(bus)
- 数据报发送到共享总线,由对应的输出端取出数据报;
- 总线竞争:交换速率受限于总线带宽;
- 一次只能转发一个分组;
Cisco 1900:1Gbps bus; Cisco 5600:32Gbps bus;
对于接入网或企业级路由器,速度足够,但不适合于区域或骨干网络;
3.3、通过互联网络的交换(crossbar等)
- 多处理器:Banyan榕树网络,crossbar纵横和其他互联网络等;
- 可同时并发转发多个分组,克服总线带宽的限制;(比如:短接AY交点和BZ交点)
- 高级设计:将数据报分片为固定长度的信元,通过交换网络来交换;
Cisco12000:60Gbps
4、输出端口
4.1、为什么需要输出缓存?
当多个输入端口 通过 交换机构 向同一个输出端口转发数据,数据报从交换机构到达的速率 大于 输出速率,就需要输出缓存;
4.2、调度规则_如何选择下一个要传输的分组
FIFO:
- 传输:按照分组到来的先后次序,选择下一个要传输的分组;
- 丢弃策略:丢弃刚到达的分组、优先权低的分组、随机丢弃;
优先级 :
- 传输:选择优先级最高的分组传输;优先级相同按FIFO;
优先级依赖于某些字段,比如IP source/dest,port等;
若高优先级队列一直有数据要传输,低优先级是得不到传输的;
Round Robin(RR):
- 传输:分类,循环输出A、B、C的分组;
A、B、C三类队列得到运行的概率是平均的;
Weighted Fair Queuing(WFQ):(改进Round Robin)
- 传输:分类,按照权重循环输出A、B、C的分组;
每个类在每个循环中有不同的权重,比如A是50%,B是30%,C是20%;
那么在一次循环中,服务A队列的时间是50%,服务B......