12.1 路由核心数据结构 路由分为策略路由和多路路由,策略路由会参考用户设置的一些路由策略。路由可以使 用 tcp/ip 分析的下篇系列文章之一中的 route 和 ip route 工具设置。路由分为路由部分包括 三大块,路由缓存、路由表、路由信息查找。策略路由常用于安全和统计(经济)方面。多路 路由允许对于一个给定的目的地址分配多个下一跳入口。这常被用于主备(可靠性、鲁棒性) 路由。 路由表的构建途径: 通过用户命令[route(ioctl) 、ip route(netlink)]静态配置 通过路由协议动态配置,这些协议是 BGP(Border Gateway Protocol)、EGP(Exterior Gateway Protocol)以及 OSPF(Open Shortest Path First) 这一章的内容基于 route 方法,其它的配置路由的方法不在这章中,但是上面的方法区 别在于配置方法,而对应调用的路由核心函数以及操作的核心路由数据结构是一样的,这章 的主要内容就是关于这些和核心函数和核心数据结构的。 路由相关数据结构在 include/net/route.h struct ip_rt_acct { __u32 o_bytes; //发送数据的字节数 __u32 o_packets; __u32 i_bytes; __u32 i_packets; }; 这个结构体在 ip_rcv_finish中被使用到,由于网络数据包的统计,分别按照 byte和 packet 两种方法计数,ip_rcv_finish 在网络层接收中分析过,这里会再一次看到在网络层被跳过的 关于路由相关的代码,下面的代码片段就是上面统计信息被赋值的一个地方: static int ip_rcv_finish(struct sk_buff *skb) { #ifdef CONFIG_IP_ROUTE_CLASSID if (unlikely(skb_dst(skb)->tclassid)) { struct ip_rt_acct *st = this_cpu_ptr(ip_rt_acct); u32 idx = skb_dst(skb)->tclassid; st[idx&0xFF].o_packets++; st[idx&0xFF].o_bytes += skb->len; st[(idx>>16)&0xFF].i_packets++; st[(idx>>16)&0xFF].i_bytes += skb->len; } #endif } 由上面的使用可以知道,定义了基于路由的分类器就会使用该字段。该字段根据 idx 索 引可构成具有 256 个成员的数组。其初始化在 ip_rt_init 中完成。 rt_cache_stat 路由表缓存的统计信息,除了输入输出路由信息统计,还有垃圾回收信息。 fib_result 查找路由表会得到此结构。 struct fib_result { unsigned char prefixlen; unsigned char nh_sel; unsigned char type;
2022-12-21 16:40:48 4.07MB Linux TCP/IP 协议栈
1
离散数学的考研指导,真的不错,可惜我还没学完!
2022-12-18 22:07:49 5.23MB 数学 离散 考研
1
离散数学》考点精讲
2022-12-18 21:19:54 2.69MB 离散数学 复习资料
1
离散数学1】学习资料(图论)
2022-12-13 19:14:50 819.29MB 图论 离散数学
1
这份资料里面含有大量的离散数学习题,并且是采用了分类强化训练方式,每道习题后面有相应的详细答案标注。有利于同学们复习。
2022-12-08 23:44:55 3.73MB 离散数学 复习 题库 答案
1
含高等教育自考考试02324离散数学科目的历年真题和答案,还有全套的相关复习资料
2022-12-08 09:15:35 65.36MB 自考 离散数学 历年真题 资料
1
离散下的四次实验,关于树和图那部分的,内含每次实验的要求和对应的源码。
2022-12-05 22:12:59 73.86MB 离散实验 树和图
1
对给定n个结点,随机生成邻接矩阵以确定某无向简单图并进行欧拉图的判定,若符合则给出至少一条欧拉回路。
2022-12-05 21:13:17 4KB 离散数学 图论
1
离散数学与组合数学第五版的答案,英文的但是很全,页数400多吧
2022-12-01 15:15:43 29.93MB 离散数学
1
北京工业大学离散数学大作业群论调研报告
1