Deribit AWS 多播服务说明

  • 更新

导言

使用来自 Deribit 网络账户的共享资源可以接收多播,该资源目前仅在欧洲(伦敦)eu-west-2 地区或亚太地区(东京)ap-northeast-1 区域运行。本文档中提供了有关如何设置和如何测试多播设置的说明

设置 AWS 以接收多播

在访问多播流之前,您必须申请共享资源,请发送电子邮件至 'aws-support@sentillia.com'遵循以下准则:

  • 在邮件主题中包括以下内容:

    • #Multicast acceptance - <your company name> - <UID>

  • 在电子邮件正文中包含以下内容:

    • 您的 AWS 账户 ID(不是您的 VPC 终端节点 ID)

    • AWS 区域(eu-west-2 或 ap-northeast-1)

接受共享资源

确保选择欧洲(伦敦)eu-west-2 区域或亚太地区(东京)ap-northeast-1 区域。转到资源访问管理器,选择与我共享 → 资源共享。

image2.png

单击 “待处理” 共享的名称,然后单击 “接受”

image4.png

配置 Transit 网关多播

在共享交通网关上创建 Transit 网关连接,并将子网连接到您自己的 VPC 中,以便能够接收多播流量。

image3.png

转到 VPC 控制面板中的 Transit 网关多播,选择选项卡:关联,然后单击创建关联。

image6.png

选择附件和子网。

image9.png

使用亚马逊 Linux 2 实例进行测试

确保使用启用 nitro 的实例: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html (请参阅基于 Nitro 系统的实例)还要在安全组中设置入站规则:

  • 用于测试的端口: 6200-6201

  • 用于生产的端口: 6100-6101

  • IP 范围伦敦地区: 172.20.13.0/24

  • IP 范围东京地区: 172.20.14.0/24

  • 必须允许从任何地方入站 IGMPv2 协议:0.0.0.0/0

在下面的示例中,允许来自伦敦地区的测试源:自定义 UDP 端口 6200-620.20.0/24,以及来自任何地方的 IGMPv2 用于源 172.20.13.0/24 的自定义 UDP 端口 6200-6201

image7.png

Socat 用于向多播地址发送 IGMP 加入命令。使用 sudo 安装 yum install socat Tcpdump 用于接收消息,屏幕会话用于在 tcpdump 和 socat 之间切换

确保使用 IGMP 版本 2(默认为 3,目前不支持)。复制并粘贴以下代码以强制使用 IGMP v2

cat >/etc/sysctl.d/99-igmpv2.conf <<EOF
# Force kernel to use IGMP v2 rather than default to v3
net.ipv4.conf.all.force_igmp_version=2
EOF
sysctl -p /etc/sysctl.d/99-igmpv2.conf

启动屏幕会话: screen -DR mysession

启动 socat: socat -u UDP-RECVFROM:6200,reuseaddr,ip-add-membership=239.222.222.2:eth0,ip-pktinfo,fork SYSTEM:export

使用创建新的屏幕窗口 Ctrl+a n 然后跑 tcpdump -v multicast and not broadcast

输出应如下所示:

11:00:26.960914 IP (tos 0x0, ttl 4, id 53434, offset 0, flags [DF], proto UDP (17), length 248)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 220
11:00:26.961512 IP (tos 0x0, ttl 4, id 53435, offset 0, flags [DF], proto UDP (17), length 103)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 75
11:00:26.962211 IP (tos 0x0, ttl 4, id 53436, offset 0, flags [DF], proto UDP (17), length 248)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 220
11:00:27.059313 IP (tos 0x0, ttl 4, id 53438, offset 0, flags [DF], proto UDP (17), length 121)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 93
11:00:27.066568 IP (tos 0x0, ttl 4, id 53440, offset 0, flags [DF], proto UDP (17), length 121)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 93
11:00:27.185705 IP (tos 0x0, ttl 4, id 53458, offset 0, flags [DF], proto UDP (17), length 85)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 57
11:00:27.241053 IP (tos 0x0, ttl 4, id 53466, offset 0, flags [DF], proto UDP (17), length 85)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 57
11:00:27.510470 IP (tos 0x0, ttl 4, id 53504, offset 0, flags [DF], proto UDP (17), length 181)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 153
11:00:27.511022 IP (tos 0x0, ttl 4, id 53505, offset 0, flags [DF], proto UDP (17), length 181)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 153
11:00:27.511022 IP (tos 0x0, ttl 4, id 53506, offset 0, flags [DF], proto UDP (17), length 181)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 153
11:00:27.511022 IP (tos 0x0, ttl 4, id 53507, offset 0, flags [DF], proto UDP (17), length 181)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 153
11:00:27.511607 IP (tos 0x0, ttl 4, id 53508, offset 0, flags [DF], proto UDP (17), length 181)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 153
11:00:27.595607 IP (tos 0x0, ttl 4, id 53523, offset 0, flags [DF], proto UDP (17), length 103)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 75
11:00:27.596188 IP (tos 0x0, ttl 4, id 53524, offset 0, flags [DF], proto UDP (17), length 103)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 75
11:00:27.596188 IP (tos 0x0, ttl 4, id 53525, offset 0, flags [DF], proto UDP (17), length 85)
ip-172-20-13-55.eu-west-2.compute.internal.33552 > 239.222.222.2.lm-x: UDP, length 57
11:00:27.596947 IP (tos 0x0, ttl 4, id 53526, offset 0, flags [DF], proto UDP (17), length 103)

输出应该相当频繁地出现(通常是每秒多次),这可以验证多播是否正常。

有了屏幕,你可以使用 Ctrl-a n 或 Ctrl-a p 在多个屏幕之间切换,要杀死一个屏幕,使用 Ctrl-a K

在 Wireshark 中显示多播包的数据

为此,我们需要 Wireshark https://www.wireshark.org/ 还有 Deribit 提供的 Wireshark 插件,该插件可以在 MC 客户端开发包 (ZIP) 的页面上找到: https://insights.deribit.com/exchange-updates/launch-of-our-new-multicast-service/

在 zip 文件中,你会找到 deribit_sbe.lua 文件,必须将其复制到 Wireshark 的插件文件夹中。在默认安装 Wireshark 的 Windows 系统上,此文件夹是 C:\Program Files\Wireshark\plugins

可以在 Wireshark 中加载一个 .pcap 文件,这个文件可以使用 tcpdump 创建:

We can capture the tcpdump to a file when we add -s 65535 -w <file> to the tcpdump command: tcpdump -v multicast and not broadcast -s 65535 -w multidump.pcap

在启用插件的情况下在 Wireshark 中打开时,协议应显示:Deribit SBE 如下所示

image11.png

双击项目以检索详细信息:

image10.png

这应该验证组播数据是否已成功接收。

多播频道

有关多播频道的最新信息可以通过从以下网址下载 MC 客户端开发包 Zip 来找到 这里

故障排除

TransitGateway 附件创建失败

如果用户的权限不足,则根据步骤 1.2 创建的传输网关附件可能会进入失败状态。

要创建 RAM 共享传输网关的 VPC 附件,IAM 用户需要以下权限:

  1. RAM: createResourceShare 权限跨账户共享传输网关。

  2. EC2: CreateTransitGatewayVpcAttachment 权限,用于创建共享交通网关的 VPC 附件。

  3. EC2: describeTransitGateways 查看共享交通网关的权限。

在一个屏幕会话中发出 socat 命令并在另一个屏幕会话中发出 tcpdump 时,未收到任何数据。

如果尽管在一个屏幕会话中执行了 socat 命令并在另一个屏幕会话中执行了 tcpdump,但仍无法接收数据,则可能需要验证为该实例配置的安全组规则。按如下方式配置 SG:

image7.png

具体而言,可能需要第二条线路允许来自任何来源的 IGMP 流量。

为什么我会收到响应错误 404?

验证以下内容:

  1. 您的 VPCE 位于正确的区域,伦敦或东京,具体取决于您请求的地区。

  2. 确认安装指南中的第 3 步配置正确,并且 DNS 指向 gateway.deribit.com

IP 白名单-我想将我的 IP 列入白名单

这可以通过API本身直接完成,无需我们的干预,如果你想确定IP地址?只需发送请求,并告知我们您的 UID 以及确切的时间窗口,这样我们就可以从日志中为您追溯该

IGMPv2 0.0.0/0 足够安全吗?

实际上,安全组中 0.0.0.0 的规则是安全的。这是因为它只允许 IGMP(互联网组管理协议)流量。IGMP 是一种本地协议,其设计目的是不从外部来源进入您的虚拟私有云 (VPC),除非通过共享传输网关附件,您可在其中接收测试和生产源。因此,实施此规则不应带来任何额外的安全风险。请注意,这是设置过程的关键步骤,如果跳过则会触发错误