免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10103 | 回复: 11
打印 上一主题 下一主题

[FreeBSD] ipfw pipe show 的BKT序号修正 [复制链接]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-14 16:44 |只看该作者 |倒序浏览
本帖最后由 lsstarboy 于 2013-01-14 22:25 编辑

--打算发博客,结果博客正在装修,先发本坛子了:

环境:FreeBSD9.0 ,ipfw pipe限速,客户机大约1000台。

问题:ipfw pipe show 的时候,无论怎么调整buckets值(默认值是:net.inet.ip.dummynet.hash_size,或者pipe config后加bucket参数),BTK总显示小于256,并且有大量的重复值。
   如果按照说明,多个ip可以共享一个bucket,那么就有可能多台机器共享同一个流量,那结果就麻烦了。但是根据测试结果,每台机器都是单独的流量,说明不是同一个buckets。

原因:/usr/src/sbin/ipfw/dummynet.c,list_flow函数:
  1. printf("%3u%c", (ni->oid.id) & 0xff, id->extra ? '*' : ' ');
复制代码
一个& 0xff限制了它的显示范围,局域网的机器上千,还是改为 & 0xffff好了,同时%3u也改为%6u:
  1. printf("%6u%c", (ni->oid.id) & 0xffff,
复制代码
解决:
按上面的思路,修改/usr/src/sbin/ipfw/dummynet.c,再make && make install
重新运行ipfw,显示正确的bucket了:
  1. ipfw pipe show | more
  2. 00040:   2.000 Mbit/s    0 ms burst 0
  3. q131112  50 sl. 0 flows (1 buckets) sched 65576 weight 0 lmax 0 pri 0 droptail
  4. sched 65576 type FIFO flags 0x1 4096 buckets 334 active
  5.     mask:  0x00 0x0000ffff/0x0000 -> 0x00000000/0x0000
  6. BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  7.   8194 ip          0.0.16.1/0             0.0.0.0/0     129958 144677812  0    0  21
  8.   8198 ip          0.0.16.3/0             0.0.0.0/0       30     2280  0    0   0
  9.   8204 ip          0.0.16.6/0             0.0.0.0/0        1       94  0    0   0
  10.   8208 ip          0.0.16.8/0             0.0.0.0/0      197    48868  0    0   0
  11.   8214 ip         0.0.16.11/0             0.0.0.0/0       16     1243  0    0   0
  12.   8216 ip         0.0.16.12/0             0.0.0.0/0        2      390  0    0   0
  13.   8226 ip         0.0.16.17/0             0.0.0.0/0     32769 41675167  6 6584   0
  14.   8230 ip         0.0.16.19/0             0.0.0.0/0     1183   163386  0    0   0
  15.   8234 ip         0.0.16.21/0             0.0.0.0/0        3      156  0    0   0
  16.   8240 ip         0.0.16.24/0             0.0.0.0/0       56     3237  0    0   0
  17.   8242 ip         0.0.16.25/0             0.0.0.0/0       56    13723  0    0   0
  18.   8248 ip         0.0.16.28/0             0.0.0.0/0        1      229  0    0   0
  19.   8250 ip         0.0.16.29/0             0.0.0.0/0        5      453  0    0   0
  20.   8252 ip         0.0.16.30/0             0.0.0.0/0      338    32030  0    0   0
  21.   8254 ip         0.0.16.31/0             0.0.0.0/0        5      390  0    0   0
  22.   8256 ip         0.0.16.32/0             0.0.0.0/0       18     3227  0    0   0
  23.   8258 ip         0.0.16.33/0             0.0.0.0/0     13692 15727551  0    0   0
  24.   8294 ip         0.0.16.51/0             0.0.0.0/0        2      150  0    0   0
  25.   8328 ip         0.0.16.68/0             0.0.0.0/0        5      255  0    0   0
  26.   8330 ip         0.0.16.69/0             0.0.0.0/0     2450  2734727  0    0 164
  27.   8334 ip         0.0.16.71/0             0.0.0.0/0      138     7774  0    0   0
  28.   8348 ip         0.0.16.78/0             0.0.0.0/0       14     1596  0    0   0
复制代码

评分

参与人数 1可用积分 +10 信誉积分 +2 收起 理由
fender0107401 + 10 + 2 很好

查看全部评分

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
2 [报告]
发表于 2013-01-14 16:46 |只看该作者
本帖最后由 lsstarboy 于 2013-01-14 16:47 编辑

哪位老大给反映到官方去吧,我英文是自学的,只会阅读不会写,说就更不用提了

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
3 [报告]
发表于 2013-01-14 22:26 |只看该作者
感谢版主加精!

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
4 [报告]
发表于 2013-01-16 08:35 |只看该作者
lsstarboy 发表于 2013-01-14 16:46
哪位老大给反映到官方去吧,我英文是自学的,只会阅读不会写,说就更不用提了。


你大致写个稿,大不了我帮你改改,然后发送过去,要是能被接收,也算是咱们社区对系统的贡献。

具体问题我不了解,所以没法帮你写,而且这是你的贡献,我不能给你发送,要不然会误以为是我发现的。 :wink:

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
5 [报告]
发表于 2013-01-17 23:13 |只看该作者
我只会写中文!没有老师教的英语很郁闷!

论坛徽章:
0
6 [报告]
发表于 2013-01-20 15:22 |只看该作者
本帖最后由 zeissoctopus 于 2013-01-20 15:25 编辑
lsstarboy 发表于 2013-01-17 23:13
我只会写中文!没有老师教的英语很郁闷!


我的英文水平也低,見沒有人幫你,我嘗試以我有限英語水平幫你一把。

我把你的補丁碼轉換為官方認可 diff 格式,預備了 patch.txt 補丁文字檔案如下,請你複制並儲存為 patch.txt 檔案以備上傳用

  1. --- dummynet.c.original 2013-01-20 15:01:11.000000000 +0800
  2. +++ dummynet.c  2013-01-20 15:12:43.000000000 +0800
  3. @@ -184,11 +184,11 @@
  4.                 print_header(&ni->fid);
  5.                 *print = 0;
  6.         }
  7.         pe = getprotobynumber(id->proto);
  8.                 /* XXX: Should check for IPv4 flows */
  9. -       printf("%3u%c", (ni->oid.id) & 0xff,
  10. +       printf("%6u%c", (ni->oid.id) & 0xffff,
  11.                 id->extra ? '*' : ' ');
  12.         if (!IS_IP6_FLOW_ID(id)) {
  13.                 if (pe)
  14.                         printf("%-4s ", pe->p_name);
  15.                 else
复制代码
請你到 官方 send-pr 網頁 ,利用這網頁,提交你的補丁。填寫內容跟著我以下來做

Your Electronic Mail Address:
填入 你的電郵地址

Your Name:
填入 你的大名

Your Organization or Company:

填入 你的組織,可以不填

Synopsis:

填入 [ipfw] [dummynet] [patch] ipfw pipe show the buckets value incorrectly

Category:
選 kern

Class:
選 sw-bug

Which FreeBSD Release You Are Using:
填入 你的 FreeBSD 版本

Environment (outpout of "uname -a" on the problem machine):
填入 你的 uname -a 輸出

Full Description:

填入以下這段英文

The buckets value always shows less than 256 of the output of ipfw pipe show no matter you change it.

In function list_flow of /usr/src/sbin/ipfw/dummynet.c. The following statement is not able to show
the correct buckets value in the environment where have over 1000 clients behind ipfw.

printf("%3u%c", (ni->oid.id) & 0xff, id->extra ? '*' : ' ');


How to repeat the problem:

填入以下這段英文

In the environment with over 1000 clients behind ipfw and using ipfw to limit connection brandwidth.

Fix to the problem if known:
填入以下這段英文

apply the patch.txt

And/or patch file (100KB max, .txt extension or shar file required):
用瀏覽器,把 patch.txt 補丁檔案上傳。

最後填入防機器人的認証碼,然後按 submit 上傳。

一經官方審核和批准後,從此 FreeBSD 內有樓主的貢獻,恭喜了。

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
7 [报告]
发表于 2013-01-20 21:00 |只看该作者
回复 6# zeissoctopus


    非常感谢!您是一位热心人。
 我试试,不懂的再向你请教!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-02-11 06:20:00
8 [报告]
发表于 2013-02-06 19:50 |只看该作者
list_flow->  list_u_foreach

论坛徽章:
0
9 [报告]
发表于 2013-03-01 19:32 |只看该作者
论坛有好人啊

论坛徽章:
0
10 [报告]
发表于 2013-03-22 12:39 |只看该作者
谢谢分享!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP