问题标签 [sctp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1482 浏览

scapy - 使用 Scapy 制作 S1AP 数据包

我正在研究一个需要制作 S1 应用程序协议 (S1AP) 数据包的项目。它用于 4G LTE 网络的 eNodeB 和 MME 之间。S1AP 基于 IP 并由蒸汽控制传输协议 (SCTP) 承载。

有谁知道 Scapy 中当前的 SCTP 库是否足以做到这一点,或者我可能必须定义一个新协议?

我的第一个目标是模拟与物理 MME 的连接(通过程序),有人有什么建议吗?

谢谢!

0 投票
1 回答
737 浏览

connection - 错误接口上的 Netty Sctp 心跳

我在两台不同的机器之间使用带有 Netty 的 NioSctpServerChannel 连接。客户端的channelActive-Handler向服务端发送一些数据后,连接建立成功并接收数据。

接收接口似乎不同于绑定接口(192.168.122.1 而不是 192.168.243.31)——这是系统问题还是网络问题?

然后通过完全不同的接口(在本例中为 virbr 192.168.122.1)发送心跳,并以破坏连接的中止作为响应。当客户端尝试发送心跳时,这在逻辑上也会以中止作为响应,因为连接已经断开。

PC1 192.168.243.31(服务器) PC2 192.168.243.12(客户端)

服务器初始化代码:

日志输出:

网络配置:

网络流量:

0 投票
0 回答
594 浏览

linux - 在不丢失数据包的情况下进行 TCP 转储

如何进行 TCP 转储以保证所有真正通过网络的数据包都被捕获,并且没有遗漏?

详细信息:我们遇到了第 3 方供应商的问题,他们在 SCTP 堆栈之上提供了一个解决方案,他也实施了该解决方案。
在相当高的吞吐量(52 000 条消息/秒,平均消息大小为 500 字节)下,SCTP 链接会中断。
我们认为该错误存在于供应商 SCTP 堆栈中。
但是供应商说,这是因为 SCTP 堆栈发送了一条消息,但没有收到 ACK,发送了多次重传,也没有收到 ACK 并关闭了 SCTP 链接。
所以供应商说,这是有罪的网络,因为它丢失了数据包。

在客户端和服务器双方的 TCP 转储中,我们看到原始消息到达服务器,并看到服务器没有以 ACK 应答。但是供应商说 TCP 转储不可靠,捕获 TCP 转储时,可能无法捕获某些数据包,因为 libpcap 库仅在一个硬件线程内工作,其能力不足以记录所有数据包。

技术数据:52 000 条消息/秒,平均消息大小为 500 字节,因此总共 26 MB/秒,使用 4 个 SCTP 链接。
硬件:CPU E5-2670,2.6 GHz,8 个硬件线程
网络:10 GBit,流量在位于一个机架中的 HP 刀片之间。
RHEL 6。

0 投票
0 回答
168 浏览

sockets - SOL_SOCKET 可以用于任何 optname 吗?

我对 SCTP 编程非常陌生,在进行故障排除和参考一本书(Unix 网络编程,W.Richard Stevens 着)时,我遇到了一些模棱两可的东西。根据该书,他们在此处此处将级别名称用作 SOL_SOCKET用于选项名称 (optname) 值 SCTP_INITMSG 和 SCTP_EVENTS,它们应该与 IPPROTO_SCTP 一起使用。两个代码都可以正常工作,所以我一定遗漏了一些东西,我觉得我遗漏了一些关键的东西。它是什么?请帮我解决这个问题。谢谢你。

0 投票
2 回答
1232 浏览

linux - Linux:获取 sctp 连接的套接字选项时出错

在建立一对一的sctp连接过程中,sctp连接accept()后内部服务器日志报如下错误:

“获取套接字的套接字选项时出错:13”

从错误来看,似乎是getsockopt()返回了错误,根据“getsockopt(2) - Linux man page”中的函数描述设置了errno来说明原因。

我需要您的帮助以了解如何检查 errno 并跟踪此失败的原因。

仅供参考,来自 tcpdump 我有以下消息流,连接被服务器关闭。

编号 时间 源 目的地 协议 消息

19716 16:47:25.174569 client server SCTP INIT
19717 16:47:25.174667 server client SCTP INIT_ACK
19718 16:47:25.174905 client server SCTP COOKIE_ECHO
19719 16:47:25.174962 server client SCTP COOKIE_ACK
19720 16:47:25.175175 server client SCTP SHUTDOWN
19721 16:47:25.175507 客户端服务器 SCTP SHUTDOWN_ACK
19722 16:47:25.175537 服务器客户端 SCTP SHUTDOWN_COMPLETE

感谢您的支持,在此先感谢

0 投票
0 回答
36 浏览

tcp - 有没有办法在我的自定义 nmap db 文件中输入范围?

我正在尝试在 nmap 中定义我自己的端口定义,因此我正在编写一个定制版本的 nmap-services。我遇到的问题是我无法为特定服务定义端口范围,即端口 1024-65355 上的服务。我不能复制和粘贴,因为太多了。我环顾四周,但找不到任何关于它的东西。

这是在 /usr/share/nmap/nmap-services 文件中。所以我想定义一个服务,例如运行在端口 1024-65535 上的 telnet(示例)。我将如何在文件中写这个。我已经尝试过以下方法:

0 投票
1 回答
86 浏览

linux - sctp uapi 与内核不匹配?

在 3.x linux 内核中,sctp 状态在内核和 uapi 之间的定义不同。这是不匹配还是我错过了什么?

在包含/uapi/linux/sctp.h

在 include/net/sctp/constants.h

看起来 SCTP_STATE_EMPTY 已被此补丁删除:http: //lists.openwall.net/netdev/2011/04/20/31

0 投票
2 回答
4832 浏览

python - Python sctp 模块 - 服务器端

我一直在尝试测试 SCTP 以进行网络部署。我没有 SCTP 服务器或客户端,希望能够使用 pysctp。

我相当确定我的客户端代码正常工作。

有没有人在服务器端使用 python sctp 模块运气好?先感谢您!

0 投票
0 回答
429 浏览

tcp - WebRTC 和 socket.io WebSockets 心跳

我使用 WebRTC 数据通道(有序、可靠)和 socket.io WebSockets 作为信令服务器创建了一个应用程序。

假设(请确认/忽略它们)

  • WebRTC SCTP & socket.io 发送心跳,但间隔可能不同
  • 如果使用心跳检测到崩溃,则连接(DataChannel 和 WebSockets)将被关闭,并且如果对等方只是暂时断开连接,则无法重用 -> 暂时崩溃的对等方必须重新连接

是否可以配置 WebRTC 心跳间隔/超时,或者我可以依赖 Chrome 和 Firefox 中使用的任何默认值?

(与这个问题有关: https ://softwareengineering.stackexchange.com/questions/255057/p2p-locking-using-webrtc-and-socket-io-for-streaming-incremental-game-state )

0 投票
1 回答
336 浏览

sockets - lksctp 是否支持发送大消息

以一对多样式打开 SCTP 套接字 [SOCK_SEQPACKET] 我无法发送/接收大于 SO_SNDBUF 的消息。这与draft-ietf-tsvwg-sctpsocket-14.txt 第 7.1.7 节一致。SO_SNDBUF,在 linux 内核模块 3.16.3 net/sctp/socket.c line# 1874 和 lksctp 用户空间库中正确实现。

为了使用 sctp 协议发送大于指定大小的消息,我有哪些选项/策略?

一个例子:在发送方分解消息并设置 ppid=seq_number 然后在接收方重新组装原始消息。