免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 在FreeBSD 6.2安装SCTP补丁(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-10 08:50 |只看该作者 |倒序浏览
由于FreeBSD 6.2内核不支持SCTP,预计FreeBSD 7.0支持。本文讲述如何在FreeBSD 6.2安装SCTP补丁。

0. SCTP介绍
SCTP被设计用来在IP网上传输PSTN信令消息,但能有更广泛的用途。
   
SCTP是一个可靠的传输层协议,运行在无连接的包网络上(如IP网)。它为用户提供下列服务:
-- 确保(acknowledged)用户数据无差错,无重复的传送;
-- 根据通路MTU的限制,进行用户数据的分段;
-- 流内用户消息的顺序递交;(可选的)每个用户消息按到达顺序(order-of-arrival)进行递交;
-- (可选的)多个用户消息捆绑到单个SCTP包中进行传输;
-- 通过在偶联的一端或两端提供的多归属(multi-homing)机制,提供网络级容错;

SCTP的设计包含了避免拥塞机制和防泛播(flooding)及匿名攻击(masquerade attacks)的能力。

1. 首先到http://www.sctp.org/下载“SCTP Kernel patches for FreeBSD/NetBSD/OpenBSD”(http://www.sctp.org/Sep6_2007.tarball.bz2)
2. 假设Sep6_2007.tarball.bz2保存在/usr/home/linhaohong/
tar xvf Jul13_2007.tarball.bz2解压SCTP patches。解压到/usr/home/linhaohong/KERN目录中。
注意:代码中KERN/netinet/sctp_os_bsd.h中有Bug,请将54行的#include <sys/priv.h>注释掉

3.将KERN目录的setup_freebsd_src.sh设置为可执行,并进入su root后执行setup_freebsd_src.sh
%chmod 731 setup_freebsd_src.sh
linhaohong# ./setup_freebsd_src.sh
4.在如下提示中输入SCTP源文件目录(必须输入绝对路径)
Where is your cvs path (e.g. /usr/rrs/sctpCVS)?
/usr/home/linhaohong
5.在如下提示输入内核文件目录(必须输入绝对路径)
Where is your kernel source code that you are using (e.g. /usr/src/sys)?
/usr/src/sys
6.在如下提示输入版本号62,并回车
Will you be using 7.0 Current or FreeBSD 6.2 or 6.1 or 6.0 (7 or 62 or 61 or 60)?
62
I will use 6.2 then, if unsure hit ctrl-c else return
7. 系统完成编译和链接

8. 在内核配置文件中添加options SCTP,并重新编译内核,并重启

#cd /usr/src/sys/i386/conf/
#cp GENERIC LINHAOHONG
#vi LINHAOHONG #添加options SCTP
# cd /usr/src
# make buildkernel KERNCONF=LINHAOHONG
# make installkernel KERNCONF=LINHAOHONG
# reboot NOW

注意:
i.如果内核启用IPSEC,部分头文件会出现定义冲突。。估计由于SCTP/IPSec/IPv6都基于KAME,估计Randall Stewart没有忽略了部分定义的相关性
ii. /usr/obj/usr/src/sys/LINHAOHONG/machine/signal.h中struct osigcontext的"osigset_t sc_mask"改为"unsigned int sc_mask"。

9. 复制新的系统调用引用文件到/usr/include/sys/目录
cp /usr/src/sys/sys/mbuf.h /usr/include/sys/
cp /usr/src/sys/sys/socket.h /usr/include/sys/
cp /usr/src/sys/sys/syscall.h /usr/include/sys/
cp /usr/src/sys/sys/syscall.mk /usr/include/sys/
cp /usr/src/sys/sys/sysproto.h /usr/include/sys/

10. 复制如下文件
cd /usr/home/linhaohong/KERN/export_freebsd/netinet
cp *.h /usr/include/netinet
cd ../netinet6
cp *.h /usr/include/netinet6

11. 创建libsctp
cd /usr/home/linhaohong/KERN/usr.lib
make
cp libsctp* /lib
ranlib /lib/libsctp.a /lib/libsctp_p.a

至此就可以编译和运行SCTP程序

遗留问题:在《Unix Network Programming V1 3ed》中的例子编译没有问题并可以运行(没有Protocol not supported错误)。但是在协议交互过程中会出现系统重启现象。请问如何跟踪系统重启的原因?

评分

参与人数 1可用积分 +5 收起 理由
大大狗 + 5 精品文章

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2007-09-11 17:03 |只看该作者

SCTP学习资料(SCTP for Beginners)

SCTP学习资料(SCTP for Beginners)

WEB链接:http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb/

相关网站
1.  IETF传输领域工作组 Transport Area Working Group (tsvwg):
http://szxmir01-in.huawei.com/ww ... /tsvwg-charter.html (公司内部网)
http://www.ietf.org/www.ietf.org/html.charters/tsvwg-charter.html
2. Randall Stewart个人主页:http://www.sctp.org/
3. SCTP主要研究机构 特拉华大学协议工程实验室:http://pel.cis.udel.edu/
4. 另一个SCTP相关标准作者Michael Tuexen个人主页:http://www.sctp.de/

论坛徽章:
0
3 [报告]
发表于 2007-09-11 23:05 |只看该作者
楼主是华为的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP