原代号为“Wayne”的Tegra 4具备72个定制NVIDIA GeForce GPU核心,其GPU处理性能是Tegra 3的六倍,可实现更加逼真的游戏体验和更高分辨率的屏幕显示效果。Tegra 4首次集成应用了四颗Cortex-A15 CPU核心,网页浏览能力提升2.6倍。
Tegra 4与Tegra 3同样采用4+1核设计,采用第二代节电核心,适合低功耗的标准使用环境,其PRISM 2 Display技术可以在实现高级视觉效果的同时减少背光功耗。在一般使用环境中,Tegra 4的消耗功率比前一代的Tegra 3减少了45%。同时,它可实现最长14小时的手机高清视频播放。
Tegra 4还可通过选装芯片组——第五代NVIDIA Icera i500处理器实现全球4G LTE语音与数据致支持。Icera i500处理器效率更高,处理速度是传统调制解调器的四倍,但体积却只有其40%。
Tegra 4通过融合GPU、CPU与相机图像信号处理器的处理能力,支持高动态范围 (HDR)照片与视频。HDR技术可完美捕捉图像,其中包括使用闪光灯拍摄的图像,与人肉眼看到的效果完全一致,明亮与昏暗区域的细节表现十分完美。
Tegra 4 主要特性
?具备72 个GeForce GPU核心
?四核 ARM Cortex-A15 CPU 以及一个第二代节电核心
?摄影运算架构
?通过可选的Icera i500 芯片组可支持 LTE 功能
?4K 超高分辨率视频支持
在虚拟机上安装mysql
下载MySQL-5.5.24-1.rhel5.i386.tar在/usr/local 下建立必要文件夹
# cd /usr/local # mkdir mysql # cd /usr/local/mysql # mkdir src # mkdir data 用xftp将MySQL-5.5.16-1.rhel5.i386.tar 上传到虚拟机src目录下 解压:# tar -xvf MySQL-5.5.16-1.rhel5.i386.tar在src目录下安装服务端:
rpm -ivh MySQL-server-5.5.16-1.rhel5.i386.rpm 启动mysql服务:service mysql start 查看mysql端口3306是否启动:netstat –nat 看到3306端口,如图表明服务端安装成功。在src目录下安装MySQL客户端
# rpm -ivh MySQL-client-5.5.16-1.rhel5.i386.rpm 如上图显示表明MySQL客户端安装完毕 查看mysql状态:/etc/init.d/mysql status 停止mysql:/etc/init.d/mysql stop 启动mysql:/etc/init.d/mysql start 修改密码:/usr/bin/mysqladmin –u root password ‘000000’ 数据库目录 cd: /var/lib/mysql/ 配置文件 :/usr/share/mysql(mysql.server命令及配置文件) 相关命令:/usr/bin/mysql*(mysqladmin mysqldump等命令) 更改MySQL目录。由于MySQL数据库目录占用磁盘比较大,而MySQL默认的数据文件存储目录为/"var/lib/mysql",所以我们要把目录移到"/"根目录下的"mysql_data"目录中。 "/"根目录下建立"mysql_data"目录 停掉mysql:service mysql stop 或者 mysqladmin –u root –p shutdown 把"/var/lib/mysql"整个目录移到"/mysql_data" 修改配置文件 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 对"my-medium.cnf"进行配置 vim /etc /my.cnf
基于openswan klips的IPsec VPN实现分析之数据发送
转载请注明出处:http://blog.csdn.net/rosetta
Klips是openswan自带实现IPsec功能的模块,其主要实现数据加解密、安全关联、密钥管理、身份认证等功能,并以.ko模块插入到内核中运行。
Klips对外出数据的处理流程如下(网上拉的不怎么清晰,为贪图省力就不画了):
相关函数调用过程如下:
ipsec_tunnel_start_xmit()
->ipsec_xmit_encap_bundle()
->ipsec_sa_getbyid()//获取sa
->ipsec_xmit_encap_once()
->ipsec_alg_esp_encrypt()
->struct ipsec_alg_enc *ixt_e=sa_p->ips_alg_enc
->ixt_e->ixt_e_cbc_encrypt()//真正的加密处理
//此加密函数指针是在ipsec_xmit_encap_bundle()中获取sa后赋的值。
// ixt_e=ixs->ipsp->ips_alg_enc;
->ipsec_tunnel_send()//发送数据
下面详细分析从模块初始化到数据加密发送的整个过程。
模块加载时ipsec_klips_init()执行初始化工作,此函数主要包括以下内容:ipsec_proc_init()创建proc文件系统与用户层交换数据,ipsec_sadb_init()初始化SADB,ipsec_radijinit()初始化SPDB(即eroute策略), pfkey_init()初始化与用户层通信的PF_KEY套接字, ipsec_tunnel_init_devices()创建ipsec虚拟网卡,ipsec_alg_init()注册可用的加密算法(3des,aes等),openswan_inet_add_protocol()增加ESP、AH、COMP支持。
ipsec_tunnel_init_devices()创建ipsec虚拟网卡时会由注册发送数据包处理函数ipsec_tunnel_start_xmit(),那么这个函数就是klips发送数据(加密)的核心部分。此函数里的ipsec_xmit_sanity_check_dev()对网卡设备状态检测,其中会判断物理网卡是否已和虚拟网卡绑定,这两者的绑定是需要由用户层通过tncfg命令完成的; ipsec_xmit_sanity_check_skb()检测skb数据包状态,比如确保skb是一份拷贝的数据而不是原始数据,能支持的IP协议版本的判断等;ipsec_tunnel_strip_hard_header()获取链路层帧头,并去掉帧头获取网络层IP数据;ipsec_tunnel_SAlookup()查找是否有相应的SA,即比对目的IP、SPI、协议(said,所谓的三元组);经过前面处理都正常的话就走到ipsec_xmit_encap_bundle()函数。
ipsec_xmit_encap_bundle()函数会根据SPI来决定数据包的去向:SPI_DROP、SPI_REJECT、SPI_PASS等(实际应用中没遇到过?),ipsec_sa_getbyid()由said查找SA放在ixs->ipsp中,接着第一次遍历ixs->ipsp,判断SA状态是否有效,根据proto的值分别对AH、ESP、COMP、IPIP进行处理,主要是预留空间,如果是IPIP隧道模式和AH仅是分别留一个IP头和AH头大小的空间,如果是ESP那么会把相应的加密函数取出。再一次遍历ixs->ipsp,在ipsec_xmit_encap_once()中分别对proto的值做处理,这里对之前预留出的空间填入对应的数据,比如IP头,ESP头或者AH头等,并且对需要加密的原始数据进行填充,因为加密前的数据长度需要等于算法分组长度的整数倍。
到这里才由ipsec_alg_esp_encrypt()对数据加密,并由ixs->ipsp->ips_authalg的值使用对应的哈希算法对数据做认证并把哈希值加到数据包尾部,如果是IPCOMP还会调用相关压缩函数处理数据,最终由ipsec_tunnel_send()经物理口发出。