java sdp协议_Java 7 SDP
名词解释:
RDMA,Remote Direct Memory Access,远程直接内存存取。为低延迟应用提供了一种协议,可以直接访问其他计算机的内存,而不需要操作系统的参与。
InfiniBand: InfiniBand (IB) 是一项新的基于交换光纤结构的 I/O 技术。 它为将 I/O 设备连接到主机以及主机到主机通信提供了高带宽、低延迟的互连。InfiniBand提供了对RDMA的支持。
SDP:Sockets Direct Protocol,套接字直接协议。是一种网络协议用于支持在InfiniBand连接上的流连接。
概览
SDP本质上是一种TCP绕过技术。当SDP允许时,一个应用程序尝试打开一个TCP连接,TCP机制被绕过了,通信直接到IB网络。
当应用程序尝试绑定到一个TCP地址时,底层软件根据配置文件里的信息决定是否重新绑定到一个SDP协议。这个过程可以在绑定过程或连接过程(但对每个连接只发生一次)。
不需要修改应用代码里的API就可以利用SDP协议:实现是透明的并被经典网络(java.net)和NIO(java.nio.channels)包支持。
SDP默认是禁止的,开启步骤:
创建一个SDP配置文件;
设置系统属性指向配置文件路径。
创建SDP配置文件
配置文件的编写规则:配置文件有两种类型的条目,注释行和规则行。注释行是以#字符开头的。
规则行有两种类型:
bing规则:只要TCP套接字绑定到与规则匹配的地址和端口,就会使用SDP协议进行传输。
connect规则:没有绑定的TCP套接字尝试连接匹配规则地址和端口时,就会使用SDP协议进行传输。
配置文件示例:
# 绑定到192.0.2.1时使用SDP,端口任意。
bind 192.0.2.1 *
# 连接到192.0.2.*上的所有应用服务时都使用SDP,且端口是大于等于1024的。用`-`指定的端口范围是闭区间的。
connect 192.0.2.0/24 1024-*
# 用SDP连接到web服务器或数据库
connect examplecluster.example.com 80
connect examplecluster.example.com 3306
启动SDP
在启动JVM时指定SDP的配置文件的路径:
java -Dcom.sun.sdp.conf=sdp.conf -Djava.net.preferIPv4Stack=true Application.class
这里启动时要指定网络格式为IPv4Stack是因为:尽管Java 7和InfiniBand都支持IPv6网络格式,但Solaris和Linux都不支持两者之间的映射。所以启动支持SDP的Java 7 VM时,还是要使用基础、可靠的IPv4网络格式。
调试SDP
通过-Dcom.sun.sdp.debug标记允许输出调试信息,如果指定了日志文件,则输出到该文件,否则输出到标准输出。
java -Dcom.sun.sdp.conf=sdp.conf -Dcom.sun.sdp.debug ExampleApplicaton
BIND to 192.0.2.1:5000 (socket converted to SDP protocol)
CONNECT to 129.156.232.160:80 (no match)
CONNECT to 192.0.2.2:80 (socket converted to SDP protocol)
或
java -Dcom.sun.sdp.conf=sdp.conf -Dcom.sun.sdp.debug=debug.log ExampleApplication
SDP的技术问题
IPv4地址是32位的,以十进制格式书写,用句点(.)分隔。IPv6是128位的,以十六进制格式书写,用冒号(:)分隔。
IPv4地址不能用在IPv6里,但IPv6确实支持一类特殊地址:IPv4-mapped地址。
在IPv4-mapped地址里,前80位设置为0,接下来16位设置为1,最后的32为表示IPv4地址。
例如:
IPv4 address IPv4-mapped address (for use in IPv6)
192.0.2.1 ::ffff:192.0.2.1
默认是,如果IB适配器支持IPv6,Java平台就可以使用IPv6。但当前Solaris和Linux 系统不支持IPv4-mapped地址。由于这个原因,应该在JDK 7下使用这个配置 -Djava.net.preferIPv4Stack=true 来使用IPv4。
支持的Java API
java.net package
Socket
ServerSocket
java.nio.channels package:
SocketChannel
ServerSocketChannel
AsynchronousSocketChannel
AsynchronousServerSocketChannel
当SDP支持允许时,不需要对代码做任何修改就可以工作,编译也是不必要的。
注意:一个套接字只绑定一次。一个连接是隐式绑定的。如果套接字之前没有进行绑定,在connect调用时进行绑定。
对于下面的代码片段:
AsynchronousSocketChannel ch = AsynchronousSocketChannel.open();
ch.bind(local);
Future result = ch.connect(remote);
在bind被调用时,异步套接字通道被绑定到本地的一个TCP地址上,代码用这个套接字尝试连接远程地址,如果远程地址使用 InfiniBand,连接将不会转换到SDP,因为套接字之前已被绑定过。
SDP RDMA 图示
借助Java到RDMA的连接点,SDP也能让Java具备非常有力的“零拷贝”能力。“零拷贝”操作指CPU不用将一个内存区域的数据拷贝到另一个内存区域。
Java 7应用Node 1(JVM启动时使用SDP)使用java.net.Socket API把应用数据块跨网络写给java.net.ServerSocket监听器。
JVM启动时使用SDP,所以会完全绕过操作系统的TCP/IP栈——应用数据会直接写到InfiniBand的RDMA(要求网卡的物理提供者是InfiniBand)。
Java 7应用Node 2(JVM启动时也使用SDP)使用java.net.ServerSocket API监听应用数据块,应用数据块由java.net.Socket写入者经RDMA跨网络写入。(要求网卡的物理提供者是InfiniBand)
数据会直接写入Java 7 VM的应用缓冲区!不需要操作系统或服务调用——既不需要Node 1的操作系统,也不需要Node 2的操作系统。这就是Java 7 SDP的功能。
SDP TCP绕过图示
参考链接
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。
java sdp协议_Java 7 SDP相关推荐
- java相关协议_java相关网络协议是什么
能够有效保证我们上网安全的就是网络协议,那么java相关网络协议是什么?了解网络安全常识,首先就要了解佰佰安全网小编就带您认识一下吧. 1.概述 Java通过协议获取网络数据或者从设备上获取设备数据的 ...
- java url 协议_Java自定义URL协议
Java提供了对URL协议进行扩展的能力,通过扩展用户可以自定义URL通信协议,JDK默认提供了对HTTP,FTP,JAR,FILE等的实现,而当需要自己定义通信协议的时候,就需要利用JDK提供的对U ...
- java 发送邮件协议_Java通过stmp协议发送邮件
本文实例为大家分享了Java通过stmp协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 org.springframework.boot spring-boot-starte ...
- WebRTC源码-信令之六:SDP协议与协商流程
一.SDP协议概述 SDP(Session Description Protocol)是一个用来描述多媒体会话的应用层控制协议, 它是一个基于文本的协议,用于会话建立过程中的媒体类型和编码方案的协商等 ...
- SIP协议-05 SDP协议
文章目录 1 SDP简介 2 SDP协议格式 2.1 字段描述 2.1.1 Version(必选) 2.1.2 origion(必选) 2.1.3 Session Name(必选) 2.1.4 Con ...
- SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html
SDP 协议分析 一.SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP).会话初始协议(SIP).实时流协议(RTSP) ...
- 转--SDP 协议分析
原文地址:http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html 一.SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属 ...
- 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
0.前言 流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输:下面这几种协议就围绕着这两个需求而产生. 1.rtp协议 rtp的全称是实时传输协议RTP(Real-time Tran ...
- SDP协议基本分析(RTSP、WebRTC使用)
目录 一.介绍 二.标准 SDP 规范 1. SDP 的格式 2. SDP 的结构 (1)会话描述 (2)媒体描述 三.WebRTC 中的 SDP 一.介绍 SDP(Session Descripti ...
最新文章
- 高并发环境下如何优化Tomcat性能?看完我懂了!
- mysql触发器和存储过程_MySql的存储过程和触发器
- Apache Ranger初识
- LVQ神经网络的分类
- jQuery 仿淘宝 鼠标悬停显示大图效果
- 牛津临床和实验室调查手册 Oxford Handbook of Clinical and Laboratory Investigation
- 做了三年Java,docker网络映射配置
- 基于modelsim的十个Verilog入门试验程序(2)(JK触发器+环形计数器)—程序+测试代码+波形+结果分析
- (转)编写Spring的第一个案例并测试Spring的开发环境
- java 释放锁,在Java中以原子方式释放多个锁
- hive教程:第一次使用sql
- R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第一章 R语言必备基础知识
- HTML网站导航栏的制作
- iphonex适配游戏_Unity+iPhoneX适配方案
- POJ刷题顺序(转载)
- TCP粘包的分析和处理
- 为什么HTTPS比HTTP更安全?
- 学生信息管理系统Java版(信息自动生成)
- Django由一查多
- Ubuntu server安装ubuntu桌面,安装软件中心-ubuntu software
热门文章
- 忘记开机密码怎么办?
- filter:blur() 实现毛玻璃效果
- HDU--1219AC me
- oracle rac几块网卡,AIX5.3+HACMP+GPFS+ORACLE10G RAC配置下,每台机器要配置几块网卡?...
- 做有声播客月赚5.9万?37岁大叔公开分享自己的经验帮你学习
- SWD和JTAG调试接口
- Ubuntu 12.04 耳机外放同时有声音解决办法
- 2021年全球与中国回转支承行业市场规模及发展前景分析
- 情迁QQ机器人的激活步骤[重新给大家捋一遍]
- (7)ManicTime——PC端软件使用情况记录