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
        • 获取目标地址掩码
        • 获得目标网络号
        • 获取该前缀长度的路由表项列表
        • 遍历路由表项列表
          • 获取路由表项网络前缀
          • 将路由表项前缀与掩码与获得路由表项目标网络地址
          • 如果路由表项网络与目标地址网络一致
            • 如果路由表项长度大于目前最长匹配项的长度
            • 将最长匹配路由表项更新为现在的路由表项
      • 如果最长匹配项存在
        • 如果下一跳不为空
          • 向最长匹配路径中端口发送目标地址为对应下一跳地址的数据报
        • 如果为空
          • 项最长匹配路径中的端口发送目标地址为目的地址的数据报
Relate Posts
树莓派寄存器物理基地址查询
Lazy loaded image
CS144-2023-Spring network_interface.cc 功能部分实现讲解
Lazy loaded image
[MIT 6.s081] Lab: Copy-on-Write Fork for xv6 实验记录
Lazy loaded image
Linux 0.11 中的 put_page 函数
Lazy loaded image
Linux 0.11 中的内存地址空间概念
Lazy loaded image
linux 0.11 修改时间片大小后的表现
Lazy loaded image
在树莓派官网系统 Raspberry Pi OS 上吃鹅全过程CS144-2023-Spring network_interface.cc 功能部分实现讲解
Loading...
tangcuyu
tangcuyu
一只尘世中努力争渡的🐠
Latest posts
自建 tailscaler derper 中继服务
2024-11-9
在 CentOS 9 上编译 DPDK 与 pktgen 24.07
2024-11-1
CentOS 9 DPDK 源码编译
2024-10-31
在 CentOS 9 上启用 CRB 源
2024-10-16
Rime 小狼毫定时用户词库同步设置
2024-5-1
在 Arch Linux 上通过 OneDrive 进行 rime 的用户词库同步
2024-4-20