type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
route.hh
routing_table_
- key:前缀长度
- value:路由项列表
成员函数实现介绍
add_route
函数定义:给一个前缀,前缀长度,下一跳,接口数,然后生成一个对应的路由信息,插入到路由表中
函数逻辑:
- 如果路由表中有相关前缀长度的路由表项
- 将其插入到列表后面
- 否则
- 直接插入到对应前缀长度并初始化一个列表
route()
函数逻辑:
- 遍历每个接口
- 尝试接收数据
- 如果有数据
- 如果 ttl ≤ 1
- ttl 过期
- continue
- ttl -1
- 重新计算校验和
- 取出目标地址
- 最长前缀匹配的路由,初始化为默认路由
- 遍历路由表项
- 获取路由表项前缀长度
- 如果是默认路由
- continue
- 获取目标地址掩码
- 获得目标网络号
- 获取该前缀长度的路由表项列表
- 遍历路由表项列表
- 获取路由表项网络前缀
- 将路由表项前缀与掩码与获得路由表项目标网络地址
- 如果路由表项网络与目标地址网络一致
- 如果路由表项长度大于目前最长匹配项的长度
- 将最长匹配路由表项更新为现在的路由表项
- 如果最长匹配项存在
- 如果下一跳不为空
- 向最长匹配路径中端口发送目标地址为对应下一跳地址的数据报
- 如果为空
- 项最长匹配路径中的端口发送目标地址为目的地址的数据报
- Author:tangcuyu
- URL:https://expoli.tech/articles/2023/08/12/CS144-2023-Spring-router.cc-Function-Partial-Implementation-Explanation
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts