ip_vs_core阅读
来源:互联网 发布:仁爱英语听力软件下载 编辑:程序博客网 时间:2024/04/29 22:18
ip_vs_in函数的了解;
当报文首先进入到系统中,这个函数的处理:外部到达本机的报文都要经过LOCAL_IN这个节点。(到达的报文分为哪些类型)
首先检查/* Packet types */,当/* Packet types */不是本机时,不处理,
类型如果不是主机还有以下几种情况:PACKET_BROADCAST 广播,PACKET_MULTICAST 多播,
PACKET_OUTGOING PACKET_LOOPBACK回环 (PACKET_FASTROUTE 快转 这个稍后讨论)
试想以下,如果不做检查的话,将多播的报文也做了负载均衡,会引起不必要的网络错误。所以检查报文类型是第一道门。
(那么什么时候会对报文的头做标记呢?这个Packet types是什么贴到报文身上的呢)
返回值 含义
NF_DROP 丢弃该数据包
NF_ACCEPT 保留该数据包
NF_STOLEN 忘掉该数据包
NF_QUEUE 将该数据包插入到用户空间
NF_REPEAT 再次调用该hook函数
如果这个接口接收到类型非本机的包,将返回NF_ACCEPT给netfilter框架,这个返回值的意义是,告诉它这个包需要其他的接口继续处理,把这个包返还给netfilter框架。
下一步就是检查进来的ip报文是否为icmp包,icmp包只有ping的时候才会用到,和网络检查的时候才可以用到,
if (unlikely(iph.protocol == IPPROTO_ICMP)) {
int related, verdict = ip_vs_in_icmp(skb, &related, hooknum);
if (related)
return verdict;
ip_vs_in_icmp(skb, &related, hooknum);关于这个函数
它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.
if ((ic->type != ICMP_DEST_UNREACH) &&
(ic->type != ICMP_SOURCE_QUENCH) &&
(ic->type != ICMP_TIME_EXCEEDED)) {
*related = 0;
return NF_ACCEPT;
}
返回这个就是不相关,查看icmp报文,看一下type是在什么时候赋值的
- ip_vs_core阅读
- IPVS负载均衡(六)浅析ip_vs_core.c
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 阅读
- 除了阅读,还是阅读
- 阅读摘要-每日阅读
- libstdc++阅读
- hdu1530 最大团简单题目
- cookie购物车基本实现记录
- HDU1005 Number Sequence
- Sql server 得到表结构的Sql语句
- pl/sql无法连接oracle,toad无法连接oracle 弹出Can't initialize OCI. Error -1
- ip_vs_core阅读
- QQ游戏连连看
- Android 学习 之 图形绘制篇 获取要绘制的文字的宽度/长度
- poj2240(map建图+bellman)
- Android线程机制浅析(ppt)
- 换热器的安装方法
- JavaScript学习七 jquery学习1
- hdu 1075 what are talking about
- 换热器的安装方法