Berkeley IP信息
欢迎来到blip(Berkeley IP implementation for low-power networks)工程目录。
我们已经在TinyOS上开发出基于IPv6的应用。该应用使用6lowpan/HC-10包头压缩技术,支持IPv6邻居发现(neighbor discovery)协议、默认路由选择(default route selection)、点对点路由(point-to-point routing)和网络编程(network programing)等功能。这些应用已经在micaz、telosb、epic等平台上测试通过。标准工具(比如ping6、tracert6和nc6)可以用来与blip网络设备进行交互以及错误检测,同时支持在PC端基于标准BSD sockets API(或者任何内核提供的网络接口)编写的应用工具。传感器网络能够很容易的通过连接公共子网,提供广域连接性(global connectivity)。
当前的代码库已经在一些多达75个节点的应用部署中测试了稳定性和性能表现,其中包括我们自己的测试平台(smote)、ACme 项目以及各种各样的在楼宇电能检测项目。尽管路由部分在设计之初是静态人工指定的,但我们有理由相信该协议栈的性能表现和稳定性。
开始
第一步是获取代码。以TinyOS2.1.1为例,blip是作为核心部分包含在TinyOS中的。按着“
http://docs.tinyos.net”的指导进行TinyOS以及你的平台工具链的安装。一旦安装完成,便可以参照“
blip tutorial”的解释进行编译同时配置blip网络。
Blip2.0
在2010年5月,我们第一次向公众推出blip-2.0(发行在tinyos-2.x-contrib/berkeley/blip-2.0)。下一版本的目标是支持IETF的相关标准,而当前版本只是一个非正式的发布(and in a less casual way then the current version)。在那个春天,这个提前发布的blip-2.0对draft-ietf-hc-06实现了全面的支持;这意味着对于cc2420无线模块实现了64位地址的支持,封装了所有奇怪的多播地址格式(multicast address formats)以及其他功能。我同时整理了很多其他的内部代码和接口,将所有6lowpan压缩行为都隔离到一个便于更新的库-lib6lowpan;如果你想应用你自己的6lowpan压缩,建议你先查看下我的这些代码作为测试资源,因为这样我们都能从相互合作中获得好处。
介绍下我们工作的思路,在Johns Hopkins的同事们正在致力于RPL的应用研究,并且他们已经取得了长足的进步;我期望我们能够使用他们的成果作为blip-2.0路由的基础。我同时也查看了下6lowpan-nd,但我觉得该文档一直在变动之中,以至于还不利于应用。一旦WG汇集,我们期望能够很快的推出应用。在即将到来的日子里,我希望在国际上,针对于已经存在的6lowpan组件架构,在比较容易的实现出入转换多重路由协议(multiple routing protocol)上,能有更加完善的文档推出。
对于在tinyos-2.x-contrib/berkeley/blip-2.0中的代码;其中的README可以帮助你运行。该代码目前可能存在bug,此外,因为没有支持路由(仅仅是本地链路层地址[link-local addresses]),它只适用于一般的尝试(playing with),但至少它是一种对于将来发展的尝试。
发行历程
- tinyos-2.1.1发行
- 核心整合
- 系统连线(system-wire) Ieee154消息抽象
- blip+AM/dual协议栈操作生效
- 串口协议栈bug修复
- 路由
- DAG number/rebuildign
- traffic generation
- "experimental" multi-driver support
- 明晰LPL支持
- "experimental" tcp 支持
- ip扩展包头结构
- 路由驱动现在通过gnu自动工具进行编译/交叉编译
- 丰富statistics接口(tatistics interface)
- 平台支持:telosb epic shimmer iris[micaz]
- code/b6lowpan/tags/release-3-20-2009
- 名称改变:发行版本存放在tinyos-2.x-contrib/berkerley/blip
- 不再需要独立的radvd(advertisement daemon is include in the routing driver)
- 驱动支持telnet实现路由检测和维护
- UDP可以通过通用组件调用,支持被动开放握手(passive open handled),为活跃开放(active open)提供bind()
- TCP协议原型(没有文档、存在若干已知问题)
- NWPRrog(point-to-point network programming using pieces of Deluge)已经完全调试通过
- IP地址结构更加"漂亮"(参考ip.h),在格式上和linux中的格式一致
- UDPshell得到了进一步的改良;新的BinaryShell,提供相似的功能,其中,移除了ascii处理,从而节省了4k的代码空间
- code/b6lowpan/tags/release-11-13-2008
- 为了改善性能和汇聚能力(convergence),完全修订了路由算法
- 进一步稳定性改良和bug修复
- 支持MIPS平台的路由编译
- 提供RPC协议原型和stub generator
- code/b6lowpan/tags/release-8-25-2008
- 单跳(Single-phase)UDP和IP接口
- 去除缓冲池(buffer pool)
- 报文不支持多跳(hop-by-hop)重组
- 网络编程支持使用类似TFTP的网络协议,但存在部分deluge(TFTP将会在以后实现)
- code/b6lowpan/tags/release-7-15-2008
- 初始发行
- 核心整合
- 系统连线(system-wire) Ieee154消息抽象
- blip+AM/dual协议栈操作生效
- 串口协议栈bug修复
- 路由
- DAG number/rebuildign
- traffic generation
- "experimental" multi-driver support
- 明晰LPL支持
- "experimental" tcp 支持
- ip扩展包头结构
- 路由驱动现在通过gnu自动工具进行编译/交叉编译
- 丰富statistics接口(tatistics interface)
- 平台支持:telosb epic shimmer iris[micaz]
- 名称改变:发行版本存放在tinyos-2.x-contrib/berkerley/blip
- 不再需要独立的radvd(advertisement daemon is include in the routing driver)
- 驱动支持telnet实现路由检测和维护
- UDP可以通过通用组件调用,支持被动开放握手(passive open handled),为活跃开放(active open)提供bind()
- TCP协议原型(没有文档、存在若干已知问题)
- NWPRrog(point-to-point network programming using pieces of Deluge)已经完全调试通过
- IP地址结构更加"漂亮"(参考ip.h),在格式上和linux中的格式一致
- UDPshell得到了进一步的改良;新的BinaryShell,提供相似的功能,其中,移除了ascii处理,从而节省了4k的代码空间
- 为了改善性能和汇聚能力(convergence),完全修订了路由算法
- 进一步稳定性改良和bug修复
- 支持MIPS平台的路由编译
- 提供RPC协议原型和stub generator
- 单跳(Single-phase)UDP和IP接口
- 去除缓冲池(buffer pool)
- 报文不支持多跳(hop-by-hop)重组
- 网络编程支持使用类似TFTP的网络协议,但存在部分deluge(TFTP将会在以后实现)
- 初始发行
文档
在wiki中的文档几乎是过时了。目前主要的文档作为blip tutorial进行维护。
- blip/CrossCompling-如何交叉编译路由代码
邮件列表
对于b6lowpan的公开使用者列表位于https://lists.eecs.berkeley.edu/sympa/info/blip-users。目前它的信息量还不大;仅仅发布了一些注意事项,但同样欢迎你使用它来提出各种问题。
相关链接
相关人员
原文地址: