当前位置: 首页 > article >正文

【计算机网络】路由器的工作原理

文章目录

  • 输入端口处理和基于目的地转发
  • 交换结构
  • 输出端口处理
  • 排队问题
  • 参考资料

image.png
路由器的四个组件

  1. 输入端口(input port):执行物理层功能(input port 左边方框、output port 右边方框)、数据链路层功能(input/output port 中间方框)、查找功能(input port右边方框)
  2. 交换结构:将路由器的输入端口连接到它的输岀端口
  3. 输出端口:存储从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输出链路上传输这些分组
  4. 路由选择处理器:执行控制平面功能。在传统路由中执行路由选择协议,在SDN路由器中与远程控制器通信

输入端口处理和基于目的地转发

image.png
输入端口的线路端接功能与链路层处理实现了用于各个输入链路的物理层和链路层
input port的查找转发功能所依据的转发表是来自路由选择处理器
路由选择处理器将转发表复制到线路卡,使得router能够在本地做出转发决策,而不必基于每个分组调用路由选择处理器,避免了集中式处理

一个基于目的地转发的路由表简单实现:
image.png

  1. 路由器用分组目的地址的前缀(prefix)与该表中的表项进行匹配
  2. 为了处理转发表中多项匹配当前目的地址的情况,这里使用最长前缀匹配规则(longest prefix matching rule)

从硬件来说,为了实现足够高速的查找,使用特殊的内存,比如三态内容可寻址存储器(Tenary Content Address Memory, TCAM)来查找

交换结构

image.png
经内存交换
在CPU (路由选择处理器)的直接控制下完成
分组到达input port,向路由器发起中断,分组被复制到处理器内存中,计算output port,再将该分组复制到output port中

经总线交换
输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预

纵横式交换
并行转发多个分组
非阻塞的(nonblocking):只要没有其他分组当前被转发到该输出端口,转发到输出端口的分组将不会被到达输出端口的分组阻塞

输出端口处理

image.png

排队问题

在输入端口和输出端口处都可以形成分组队列,当router的缓存空间耗尽时,就会出现丢包(packet loss)现象
input排队
交换结构不能快得(相对于输入线路速度而言)使所有到达分组无时延地通过它传送时,在输入端口将岀现分组排队
使用纵横式交换结构进行说明
image.png
这里在输入队列前端的两个分组(带深色阴影)要发往同一个右上角输出端口,出现了线路前部(HOL)阻塞

output排队
假定 R s w i t c h R_{switch} Rswitch R l i n e R_{line} Rline快N倍,并且到达N个输入端口的每个端口的分组,其目的地是相同的输出端口,在这样的情况下,output port即会出现排队情况

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版

http://www.kler.cn/news/109273.html

相关文章:

  • Python beautifulsoup解析本地文件之基础语法
  • linux-磁盘应用
  • 决策树的优缺点
  • 磁盘管理(初始化,引导块,坏块管理,固态硬盘)
  • c# .net linux ImageSharp+FastDFS+Base64上传图片,压缩图片大小,图像处理dcoker中使用也可以
  • 汽车混动技术
  • docker 启动简单的开发环境(mysql, redis, etcd)
  • MySQL WITH AS及递归查询
  • ELASTICO-A Secure Sharding Protocol For Open Blockchains
  • 目标检测YOLO实战应用案例100讲-高速铁路供电安全检测监测系统图像智能识别(中)
  • 七层负载均衡 HAproxy
  • 由k8s升级慢引起的etcd性能不足的问题排查
  • Windows-Oracle11g 安装详解-含Navicate远程连接配置 -本地监听设置及更换navicate环境指向的oci.dll
  • 人工智能在疾病治疗中的应用:机遇与挑战
  • redis原理 主从同步和哨兵集群
  • 【蓝桥杯选拔赛真题05】C++超级素数 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析
  • VR数字党建:红色文化展厅和爱国主义教育线上线下联动
  • 2023秋《论文写作》课程总结
  • go-kit中如何开启websocket服务
  • 23种设计模式在SpringCloud源码里的应用
  • 单元测试,集成测试,系统测试的区别是什么?
  • css position属性与js滚动
  • Leetcode 2914. Minimum Number of Changes to Make Binary String Beautiful
  • 一个特殊级数的敛散性判断
  • C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序
  • k8s二进制安装部署
  • 适用于 Mac 或 Windows 的 4 种最佳 JPEG/PNG图片 恢复软件
  • 在Go项目中二次封装Kafka客户端功能
  • rust学习-LinkedList
  • 物联网和互联网医院小程序:如何实现医疗设备的远程监测和管理?