无线传感网:linux上 6lowpan与ieee802154(zigbee)的实现比较

一    linux上 
6lowpan与ieee802154(zigbee)的实现比较:


应用层


协议族


Api socket的类型接口


应用范畴


Ipv6


sock =
socket(PF_INET6, SOCK_DGRAM,
0);

sock =
socket(PF_INET6, SOCK_STREAM,
0);


6lowpan应用,指明协议族PF_INET6

https://github.com/JulienMasson/6LoWPAN/blob/master/webserver/webserver.c


协议族


Api socket的类型接口


应用范畴


ieee802154


目前是两种:

sock =
socket( AF_IEEE802154        , SOCK_SOCK_DGRAM,
0);

sock =
socket( AF_IEEE802154        , SOCK_RAM,
0);


ieee802154(或者说是zigbee应用)


网络层


Ipv6协议族:

路由可以基于ipv6+RPL协议;


ieee802154协议族:

传输控制也没有问题,但是路由协议又该如何解决呢?


mac子层:实现各自的网络设备驱动+MLME驱动


6lowpan子层:

kernel3.10
6@lowpan.c

Kernel4.0 @/linux-4.0/net/ieee802154/6lowpan/core.c

static const struct net_device_ops lowpan_netdev_ops = {

.ndo_init                = lowpan_dev_init,

.ndo_start_xmit                = lowpan_xmit,

.ndo_set_mac_address        = lowpan_set_address,

};

static struct ieee802154_mlme_ops lowpan_mlme = {

.get_pan_id = lowpan_get_pan_id,

.get_phy = lowpan_get_phy,

.get_short_addr = lowpan_get_short_addr,

.get_dsn = lowpan_get_dsn,

};

static struct header_ops lowpan_header_ops = {

.create        = lowpan_header_create,

};

注册网络设备方式:

static struct rtnl_link_ops lowpan_link_ops __read_mostly = {

.kind                = "lowpan",

.priv_size        = sizeof(struct lowpan_dev_info),

.setup                = lowpan_setup,

.newlink        = lowpan_newlink,

.dellink        = lowpan_dellink,

.validate        = lowpan_validate,

};

static inline int __init lowpan_netlink_init(void)

{

return rtnl_link_register(&lowpan_link_ops);

}


mac802154层:wpan.c

static struct header_ops mac802154_header_ops = {

.create                = mac802154_header_create,

.parse                = mac802154_header_parse,

};

static const struct net_device_ops mac802154_wpan_ops = {

.ndo_open                = mac802154_slave_open,

.ndo_stop                = mac802154_slave_close,

.ndo_start_xmit                = mac802154_wpan_xmit,

.ndo_do_ioctl                = mac802154_wpan_ioctl,

.ndo_set_mac_address        = mac802154_wpan_mac_addr,

};

struct ieee802154_mlme_ops mac802154_mlme_wpan = {

.get_phy = mac802154_get_phy,

.start_req = mac802154_mlme_start_req,

.get_pan_id = mac802154_dev_get_pan_id,

.get_short_addr = mac802154_dev_get_short_addr,

.get_dsn = mac802154_dev_get_dsn,

};

注册网络设备方式:

mac802154_add_iface(struct wpan_phy *phy, const char *name, int type)

{

。。。。。

err =
mac802154_netdev_register(phy, dev);----》register_netdev()注册核心层的网络设备’


如何与mac和物理层通信


通过虚拟化网络技术,类似:VLAN


ieee802154直接访问

1)6lopwan是一个mac子层协议,其下一级mac可以是ieee802.15.4也可以是IEEE
802.15.1(蓝牙)=/net/bluetooth/6lowpan.c(/net/bluetooth);

2),6lowpan网络设备如何与802154
的mac和物理层进行数据传输?仅仅通过rtnetlink就可以了?

6lowpan网络设备是在linux
平台是一个虚拟的网络设备。

---是的,通过rtnetlink构造一个
网络虚拟设备,同VLAN
:lowpan。但是在lowpan_newlink()里面:

/* find and hold real wpan device */

real_dev = dev_get_by_index(src_net,nla_get_u32(tb[IFLA_LINK]));//根据nla_get_u32(tb[IFLA_LINK]绑定真正的网络设备==》mac802154。

6lowpan网络设备与ieee802.15.4
设备的逻辑关系,如下:

3):效率问题?

”ieee802154(或者zigbee应用)“ 


6lowpan应用“---理论上同样的mac和物理层。但是数据封装不一样了。我觉得”“ieee802154或者zigbee应用的路径“  
比  
”6lowpan路径“
更加的高效。

时间: 2024-11-09 07:36:53

无线传感网:linux上 6lowpan与ieee802154(zigbee)的实现比较的相关文章

私有无线传感网 PWSN HLINK

私有无线传感网,我把其叫做 Personal Wireless Sensor Network.此种网络最另众人所知的就是ZIGBEE了.由于在用户不同的使用场景中,对传感网络有许多不同的要求,例如:通信速率.穿透性.功耗.移动性.路由级联.加密.而不同的网络在这些特性中又有不同的表现:这样就导致形形色色的网络在实际使用中共存.这里介绍一种在功耗.穿透性.移动性.路由级联.网络拓扑方面表现俱佳的私有无线传感网络HLINK. HLINK主要特性 功耗:1节5号锂亚电池,在典型网络中使用1年-2年:

无线传感网CC2530终应端、路由以及协调器系统用

要做到目视千里,耳听八方是人类长久的梦想,现代卫星技术的出现虽然使人们离这目标又进了一步,但卫星高高在上,洞察全局在行,明察细微就不管用了.这个时候,本文的主角—无线传感器网络就排上用场了.将大量的传感器节点遍撒指定区域,数据通过无线电波传回监控中心,监控区域内的所有信息就会尽收观察者的眼中了. 闲话不说,直接进入正题.想让传感数据回来,总得有一套可以“采集传感器数据,打包发送数据给上层”的系统,这里就程序简单说明一下该系统的实现. 主开发程序在/ZStack-CC2530-2.3.0-1.4.

linux上不了网,宿主机ping虚拟机通,虚拟机内部ping的同,但ping宿主机外网不通

背景介绍:搭建虚拟机linux环境,但linux上不了网,宿主机ping虚拟机通,虚拟机内部ping得通,ping宿主机外网不通,在ping外部网络的时候老是提示以下报错: From 192.168.93.130 icmp_seq=8 Destination Host Unreachable From 192.168.93.130 icmp_seq=8 Destination Host Unreachable 或者ping好久都没有反应 类似的情况遇到了几次,总结了一下遇到的原因 第一个原因,搭

无线传感网络初学笔记

 无线传感网络(wireless sensor network),由部署在监測区域内的大量传感器以自组织和多跳的方式构成的,以协作方式感知.採集.传输和处理网络覆盖区域内监測对象信息的无线网络. 无线传感网络系统通常包含传感器节点(sensor node).汇聚节点(sink node)和管理节点.大量传感器节点随机部署在监測区域内或附近,可以通过自组织方式构成网络.传感器节点监測的数据沿着其它传感器节点逐跳地进行传输.在传输过程中监測数据可能被多个节点处理,经过多跳路由到汇聚节点,最后通过

Linux上构建一个RADIUS服务器详解

作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息.但是网络设备通常只支持有限的用户管理功能.学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个LDAP服务器进行验证,可以集中放置存储在LDAP服务器上并且由RADIUS服务器进行验证的用户信息,从而既可以减少用户管理上的管理开销,又可以使远程登录过程更加安全.数据安全作为现代系统中网络安全的一部分,与系统安全一样的重要,所以保护数据--确保提供机密性.完整性和可用性--对管理员来说至关重要

利用tinyproxy在Linux上搭建HTTP Proxy Server

之所以需要用到HTTP Proxy Server并不是为了要翻墙,而是为了让没有公网IP地址的内网主机通过有公网IP地址的外网主机访问Internet.举个例子,阿里云ECS在购买时可以不购买公网IP地址,但这种没有公网IP地址的ECS云主机(实例)是没有访问Internet的能力的,也就是说无法在这台实例上下载文件,这在部署应用如部署MySQL时可能遇到无法完成安装问题.解决的办法有两种,一种是在另一台具有公网访问能力的ECS实例上搭建VPN服务,另一种是在另一台具有公网访问能力的ECS实例上

ASP.NET Core MVC 在linux上的创建及发布

前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲试,准备搞一下ASP.NET Core mvc的创建和部署,于是便有了这篇文章,希望能够帮助到你. 环境准备 这是我的开发环境,使用的nginx是nginx 1.6.3 直接yum install,然后需要安装dotnet环境,可以参照官网教程https://www.microsoft.com/ne

So Easy! Oracle在Linux上的安装配置系列一

So Easy! Oracle在Linux上的安装配置系列一 本文为So Easy!Oracle在linux上的安装和配置序列的第一篇Oracle安装基础环境的搭建 VMware Workstation 11.0 配置和CentOS-6.6-x86_64安装 本文环境及所需软件: Win7 Sevice Pack1 内存 6GB VMware Workstation 11.0  build-2305329 CentOS-6.6-x86_64-bin-DVD1.iso Xmanger Enterp

php+mysql+nginx在linux上的环境部署

一直在linux上鼓捣,还没有完整在linux下配置过nginx服务器环境部署呢,这几天没什么事就部署了一下,遇到的问题也很多,现在把我的环境部署文档发出了,有什么问题大家可以一起讨论一下,希望大家采用后遇到问题多多沟通. || 安装所需各种依赖包 sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2