下载此文档

路由过程分析.docx


文档分类:高等教育 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
重要数据结构
struct fib_config {
u8 fc_dst_len; //目的地址的掩码
u8 fc_tos;
u8 fc_protocol; //路由协议,其实更像是指该条路由是从何而来,参见RTPROT_STATIC等宏; RTPROT_STATIC表示该route为管理员添加的静态路由,RTPROT_ZEBRA为由zebra添加的路由
u8 fc_scope; //参见rt_scope_t的定义
u8 fc_type; //类型如RTN_UNICAST:直连路由,参见类似的定义
/* 3 bytes unused */
u32 fc_table; //指示哪个路由表,如RT6_TABLE_MAIN
__be32 fc_dst; //目的地址
__be32 fc_gw; //网关
int fc_oif; //出口的网卡
u32 fc_flags; //路由标志
u32 fc_priority; //优先级
__be32 fc_prefsrc; //prefer 源地址,暂不知道用途

struct nlattr *fc_mx;
struct rtnexthop *fc_mp;
int fc_mx_len;
int fc_mp_len;
u32 fc_flow;
u32 fc_nlflags;
struct nl_info fc_nlinfo;
};
路由流程
路由部分在TCP/IP协议的第三层,从网卡接收到IP报文后,要通过路由查找,决定是本地处理还是转发。本机发出IP报文之前,也要通过路由查找,决定是发往本机Loop设备还是真正发送出去
本机发往本机(比较复杂)
应用层将数据发往网络三层(IP层)
ip_queue_xmit
-> ip_route_output*
-> ip_local_out
-> ip_output
-> ip_finish_output
-> [dst->neighour->output] = neigh_resolve_output
其中在ip_route_output*处理中, = net->loopback_dev ->ifindex,并且在__mkroute_output函数中又如下代码
if (flags & RTCF_LOCAL) {
rth-> = ip_local_deliver;
rth->rt_spec_dst = fl->fl4_dst;
}
为之后重新进入本机做好了准备
网络二层neigh处理
neigh_resolve_output
-> [neigh->ops->queue_xmit] = dev_queue_xmit
-> __dev_xmit_skb
-> sch_direct_xmit
-> dev_hard_start_xmit
-> [dev->netdev_ops->ndo_start_xmit] = loopback_xmit
(虚拟)硬件网卡接收到数据
loopback_xmit [@/]
-> netif_rx
-> enqueue_to_backlog
-

路由过程分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人260933426
  • 文件大小119 KB
  • 时间2017-09-11