麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Linux服務器 > 正文

內核打印限速函數net_ratelimit()使用說明

2024-09-05 23:00:58
字體:
來源:轉載
供稿:網友

本文主要介紹內核打印限速函數net_ratelimit()的使用說明:

1) net_ratelimit()用于保護內核網絡調試信息的打印, 當它返回(TRUE)時則可以打印調試信息,返回零則禁止信息打印. 它的特性為當"極快地"調用net_ratelimit()時,它最多只允許連續打印前10條信息, 后繼信息每隔5秒允許打印一次.這樣可防止攻擊者使內核不斷產生調試信息來使系統過載的拒絕服務攻擊.2) net_ratelimit()定義了一個時間計數器變量(toks), 它隨著系統時鐘計數線性增長,但不超時50秒時鐘計數(net_msg_burst). 當計時器的值大于或等于5秒時鐘計數(net_msg_cost)時,則允許打印信息. 每允許打印一條信息, 計時器就減去5秒計數, 當計時器的值小于5秒時, 就不允許打印信息了.; net/core/utils.c:

  int net_msg_cost = 5*HZ; /*在擁塞時, 每條網絡消息記錄所間隔的時間*/

  int net_msg_burst = 10*5*HZ; /*連續記錄網絡突發消息的間隔(最多連續記錄10條消息)*/

  /*

  * This enforces a rate limit: not more than one kernel message

  * every 5secs to make a denial-of-service attack impossible.

  *

  * All warning printk()s should be guarded by this function.

  */

  int net_ratelimit(void)

  {

  static spinlock_t ratelimit_lock = SPIN_LOCK_UNLOCKED;

  static unsigned long toks = 10*5*HZ; /*50秒量程的計時器,每打印一條消息,計時器減5秒時間*/

  static unsigned long last_msg; /*上一次調用net_ratelimit()的時戳*/

  static int missed; /*兩次net_ratelimit()調用之間所丟棄的信息數量*/

  unsigned long flags;

  unsigned long now = jiffies; /*取當前時戳*/

  spin_lock_irqsave(&ratelimit_lock, flags);

  toks += now - last_msg;

  /*計時器加上兩次net_ratelimit()調用的時間差,表現為計時時間的線性增長*/

  last_msg = now;

  if (toks > net_msg_burst) /*計時器累積時間超時50秒時*/

  toks = net_msg_burst;/* 設置計時上限*/

  if (toks >= net_msg_cost) { /*當計時大于或等于5秒時可以打印信息*/

  int lost = missed;

  missed = 0;

  toks -= net_msg_cost; /*減去5秒時間*/

  spin_unlock_irqrestore(&ratelimit_lock, flags);

  if (lost)

  printk(KERN_WARNING "NET: %d messages suppressed./n", lost);

  return 1;

  }

  missed++;

  spin_unlock_irqrestore(&ratelimit_lock, flags);

  return 0;

  }

  /*linux 2.6內核直接調用__printk_ratelimit()*/

  int net_ratelimit(void)

  {

  return __printk_ratelimit(net_msg_cost, net_msg_burst);

  }

  kernel/printk.c

  /*

  * printk rate limiting, lifted from the networking subsystem.

  *

  * This enforces a rate limit: not more than one kernel message

  * every printk_ratelimit_jiffies to make a denial-of-service

  * attack impossible.

  */

  int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst)

  {

  static DEFINE_SPINLOCK(ratelimit_lock);

  static unsigned long toks = 10 * 5 * HZ;

  static unsigned long last_msg;

  static int missed;

  unsigned long flags;

  unsigned long now = jiffies;

  spin_lock_irqsave(&ratelimit_lock, flags);

  toks += now - last_msg;

  last_msg = now;

  if (toks > (ratelimit_burst * ratelimit_jiffies))

  toks = ratelimit_burst * ratelimit_jiffies;

  if (toks >= ratelimit_jiffies) {

  int lost = mis

sed;

  missed = 0;

  toks -= ratelimit_jiffies;

  spin_unlock_irqrestore(&ratelimit_lock, flags);

  if (lost)

  printk(KERN_WARNING "printk: %d messages suppressed./n", lost);

  return 1;

  }

  missed++;

  spin_unlock_irqrestore(&ratelimit_lock, flags);

  return 0;

  }

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产资源在线免费观看 | 久草网在线 | 黄色网址入口 | 草操影院 | 亚洲免费永久 | 精品一区二区久久久久久久网精 | 99爱视频 | 国产一级爱c视频 | 欧美精品videos | 日本aaaa片毛片免费观蜜桃 | 韩国草草影院 | 免费日本一区二区 | 国产99久久精品一区二区 | 草莓福利社区在线 | 毛毛片在线看 | 毛片免费看网站 | 97久久人人超碰caoprom | 韩国草草影院 | 中国7777高潮网站 | 人人舔人人舔 | 精品999www | 一区二区三区欧美在线观看 | a一级黄色毛片 | 本色视频aaaaaa一级网站 | 久久久免费 | 91成人免费看片 | 黄网站在线播放视频免费观看 | 一区国产在线 | 一色桃子av大全在线播放 | 色999久久久精品人人澡69 | 亚洲一区在线免费视频 | 亚洲精品7777xxxx青睐 | 夏目友人帐第七季第一集 | 中文字幕国产亚洲 | 中文字幕在线永久 | 国产精品色在线网站 | av免费提供 | 久久综合网址 | 99精品视频在线观看免费 | 国产精品99久久久久久大便 | 最新中文字幕日本 |