当前位置: 首页 > news >正文

用wordpress搭建网址seo查询

用wordpress搭建,网址seo查询,网站目录改版,做b2b b2c型的混合网站如何实现SCTP多归属链路对接 文章目录 ​​前言​​​​一、SCTP是什么?​​​​二、lksctp​​​​三.sctp初始化​​​​四.绑定本端两个IP​​​​ 五.与对端建链​​​​六.设置主要路径​​​​七.设置是否启用心跳​​​​八.关于防火墙的配置​ ​总结​​ …

如何实现SCTP多归属链路对接

文章目录
​​前言​​​​一、SCTP是什么?​​​​二、lksctp​​​​三.sctp初始化​​​​四.绑定本端两个IP​​​​ 五.与对端建链​​​​六.设置主要路径​​​​七.设置是否启用心跳​​​​八.关于防火墙的配置​
​总结​​

前言
最近完成了贝尔及华为软交换的SCTP 多归属链路对接。由于网络上对于多归属链路介绍的资料特别少。能看到的一些资料介绍,但是说明的不详细,大都是Demo性质不能完全商用。以客户端为例子,概括如下,首先绑定本端两个IP,然后绑定交换的主用Path。然后将该主用的Path的IP设置为PrimaryPath。如果对端交换不支持BEAT心跳消息,就不要发送该BEAT消息。 现在分享下我的具体的经验心得。

提示:以下是本篇文章正文内容,下面案例可供参考

一、SCTP是什么?
SCTP (Stream Control Transmission Protocol)是一种传输协议,在TCP/IP协议栈中所处的位置和TCP、UDP类似,兼有TCP/UDP两者特征。

随着网络接入技术的多样化,利用通信终端上多个网络接口实现并行多路径(Concurrent Multipath Transfer,CMT)成为研究的热点,成为提高数据传输效率重要手段。基于流传输(Stream Control Transmission Protocl,SCTP)实现的CMT是这一领域研究的重点,它通过扩展SCTP的多IP特性实现同一关联的多条端到端的路径上同时传输数据。    SIGTRAN信令通过SCTP建链承载信令。SCTP位于SCTP应用和无线分组网络(IP网)之间,通过两个SCTP端点之间建立关联,为两个SCTP用户提供可靠的消息传输业务。一个SCTP链路包换了一个或两个源/目的的地址。这些地址包含在每个端点的传输地址中。SCTP的关联结构如图1所示。

如何实现SCTP多归属链路对接_开发语言

SCTP发送端使用一组传输地址作为消息的目的地,会根据SCTP用户的指令和当前合法的目的地址集合的可达性状态,为每个待发送的消息选择一个目的传输地址。在关联建立后,需要为每个SCTP端点定义一条主路径,用来在正常情况下发送SCTP消息。正常情况下,SCTP只选择其中的一条可用路径作为主路径传输数据,其他路径作为备用路径。当主路径失效时,SCTP切换到其中的一条备用路径上继续传输。

二、lksctp
lksctp封装了linux内核sctp的接口函数。使用lksctp可以加速sctp的开发。代码中引入sctp.h,编译时加入-lsctp,进行动态库链接。

三.sctp初始化
from_sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);

setsockopt(from_sockfd,SOL_SOCKET,SO_SNDBUF,(char*)&sndBufS,sndBufL);

setsockopt(from_sockfd,SOL_SOCKET,SO_RCVBUF,(char*)&rcvBufS,rcvBufL);

setsockopt(from_sockfd, SOL_SOCKET, SO_REUSEADDR, &reuse_address, sizeof(reuse_address);

setsockopt(from_sockfd , IPPROTO_SCTP , SCTP_RTOINFO , &timeout , opt_len);

setsockopt(from_sockfd , IPPROTO_SCTP , SCTP_ASSOCINFO , &assocmaxrxt , opt_len);

setsockopt(from_sockfd, IPPROTO_SCTP, SCTP_INITMSG, &initmsg, sizeof(initmsg);

四.绑定本端两个IP
struct sockaddr_in cliaddr;
int ret;
bzero( (void *)&cliaddr, sizeof(cliaddr) );
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr = pFrom_addr[0].sin_addr.s_addr;
cliaddr.sin_port = pFrom_addr[0].sin_port;
ret = bind(fd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

bzero( (void *)&cliaddr, sizeof(cliaddr) );
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr = pFrom_addr[1].sin_addr.s_addr;
cliaddr.sin_port = pFrom_addr[1].sin_port;
ret = sctp_bindx(fd, (struct sockaddr *)&cliaddr, 1, SCTP_BINDX_ADD_ADDR);

五.与对端建链
设置对端两个IP

if (sctp_peeraddr->addr_num)
{
addr = (struct sockaddr *)(cli_addr + offsetof(struct sctp_getaddrs, addrs));
for (index = 0; index < sctp_peeraddr->addr_num; index++)
{
memset(dest, 0, sizeof(dest));
if (addr->sa_family == AF_INET)
{
//Log::PrintLog(LOG_INFO, “[SCTP_GET_PEER_ADDRS] %s\n”, inet_ntoa(((struct sockaddr_in *)addr)->sin_addr));
Log::PrintLog(LOG_TRACE, “Sctp.cxx”, “sctp_peer_param()”, “[SCTP_GET_PEER_ADDRS %s]”,inet_ntoa(((struct sockaddr_in *)addr)->sin_addr));
memcpy(&paddrparams.spp_address, addr, sizeof(struct sockaddr_in));
addr = (struct sockaddr *) (((char *) addr) + sizeof(struct sockaddr_in));
}
ret = setsockopt(cfd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, (const void *)&paddrparams, sizeof(paddrparams));
if (ret < 0)
{
//Log::PrintLog(LOG_INFO,“[set SCTP_PEER_ADDR_PARAMS error] %d:%s\n”, errno, strerror(errno));
Log::PrintLog(LOG_TRACE, “Sctp.cxx”, “sctp_peer_param()”, “[SCTP_PEER_ADDR_PARAMS err] %d %s”, errno, strerror(errno));
return;
}
Log::PrintLog(LOG_TRACE, “Sctp.cxx”, “sctp_peer_param()”, “set SCTP_PEER_ADDR_PARAMS]”);
Log::PrintLog(LOG_TRACE, “Sctp.cxx”, “sctp_peer_param()”, “get SCTP_PEER_ADDR_PARAMS] hb = %d, sackdelay = %d, %s, %s, %s”,
paddrparams.spp_hbinterval,
paddrparams.spp_sackdelay,
(paddrparams.spp_flags & SPP_HB_ENABLE)?“HB_ENABLE”:“HB_DISABLE”,
(paddrparams.spp_flags & SPP_PMTUD_ENABLE)?“PMTUD_ENABLE”:“PMTUD_DISABLE”,
(paddrparams.spp_flags & SPP_SACKDELAY_ENABLE)?“SACKDELAY_ENABLE”:“SACKDELAY_DISABLE”);
}
}

与一个IP建链:

sctp_connectx(from_sockfd, (struct sockaddr*)&m_primsockaddr, 1,(sctp_assoc_t *)&m_assoc[0];

切记,与对端建联时,初始时,只和一个IP进行建链。

六.设置主要路径
setsockopt(from_sockfd,IPPROTO_SCTP,SCTP_PRIMARY_ADDR,&m_primaddr,sizeof(m_primaddr)

七.设置是否启用心跳
struct sctp_paddrparams paddrparams;

if (spp_hbinterval == 0)
{
paddrparams.spp_flags |= SPP_HB_DISABLE;
}
else
{
paddrparams.spp_flags |= SPP_HB_ENABLE;
paddrparams.spp_hbinterval = spp_hbinterval;
}

ret = setsockopt(cfd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, (const void *)&paddrparams, sizeof(paddrparams));

八.关于防火墙的配置
如果系统的网卡地址是通过防火墙映射的,防火墙上有的没有SCTP一个选项,那么配置TCP即可。但是防火墙一定要设置为透明模式。不然在调试多归属链路时会遇到各式各样的怪问题。

总结
SCTP偶链多归属对接,网上资料特别少,有的也是语焉不详。笔者根据最近数月的调试,将经验分享处理,希望对进行SIGTRAN信令开始的同行有帮助。

http://www.qdjiajiao.com/news/12948.html

相关文章:

  • asp网站木马扫描关键词语有哪些
  • linux做ppt下载网站微信上怎么做广告推广
  • 西安网络推广培训网络营销策略优化
  • 二次开发客户的话术windows优化大师会员兑换码
  • 做css div网站公司新网seo关键词优化教程
  • 网页制作软件怎么做广州seo搜索
  • 怎么自己做刷东西网站西安网络推广公司
  • 东莞做微网站建设引流推广广告怎么写
  • 美团网网站建设 费用深圳今日头条新闻
  • 做课件需要的纯音乐网站外链link
  • 整站优化多少钱新手怎么引流推广
  • 品牌推广网站如何做青岛seo排名收费
  • 在自己网站建立自己的外链中文搜索引擎排行榜
  • 云南做网站要多少钱自己如何制作一个网站
  • 如何向百度提交网站地图宝鸡网站开发公司
  • div做网站网站优化排名操作
  • 西安网站模板建站长沙seo男团
  • 怎么做网站图标搜索关键词排名查询
  • 选择邯郸网站制作网站关键词优化价格
  • 哪家公司做网站网站制作软件
  • 旅游网站建设课程设计小程序推广引流
  • 策划公司主要做什么seo百度排名优化
  • 苏小小移动网站搜索引擎优化网站排名
  • 做彩票网站是违法的吗培训机构网站
  • 有域名有服务器怎么建站seo营销培训咨询
  • 公司网站外包建设没有源代码百度seo指数查询
  • 佛山专业网站开发公司seo优化方案策划书
  • 做网站能赚多少钱公司员工培训方案
  • 深圳网站外包提高工作效率的重要性
  • 做详情页网站最近发生的热点新闻事件