'sdparta' 在 Firefox webRTC session 描述中代表什么?

What does 'sdparta' stand for in a Firefox webRTC session description?

在 Firefox 的 webRTC 信号期间生成报价和回答 objects 时,Mozilla 添加了关于 Session D 的双关语escription P协议通过返回答案和提供“THIS_IS_SDPARTA”。“

除了搞笑,'SDParta'的'arta'部分还有什么意义吗?


下面是两个SDP。一个是在 Chrome 中制作的,另一个是在 Firefox 中制作的,每个都使用相同的网络应用程序、STUN 服务器和信令服务器。

由 Chrome:

生成的 webRTC 答案 object
"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=-```numbers omitted``` 2 IN IP4 123.4.5.6\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:CYLs\r\na=ice-pwd:```pwd omitted```\r\na=ice-options:trickle\r\na=fingerprint:sha-256 ```sha-256 omitted```\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"
}

Firefox 生成的 webRTC 答案 object:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=mozilla...THIS_IS_SDPARTA-61.0.2```numbers omitted``` 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 ```sha-256 omitted``` \r\na=group:BUNDLE sdparta_0\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=sendrecv\r\na=ice-pwd:```pwd omitted```\r\na=ice-ufrag:8e051271\r\na=mid:sdparta_0\r\na=sctpmap:5000 webrtc-datachannel 256\r\na=setup:active\r\na=max-message-size:1073741823\r\n"
}

'THIS_IS_SDPARTA' 指的是电影 300 和随后的模因 .

根据RFC 4566大纲Session描述Protcol,原始值由SDP字符串中的'o=value'赋值:

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

我假设“THIS_IS_SDPARTA 根据协议被视为 session id 的非正式前缀。

我找不到任何使用 'ARTA' 作为与 SDP 或 webRTC 有任何关系的首字母缩略词。作为一个词,'Arta' 可以是一个人的名字,也可以是希腊、吉布提或阿尔巴尼亚的一个地方。除了都是希腊人之外,我找不到古代斯巴达和阿尔塔之间的任何关联。 Wikipedia's disambiguation page on 'Arta.'

正在搜索 'this_is_sdparta' 或 'sdparta' returns 用户对其 SDP 和信令进行故障排除的代码片段的搜索堆栈溢出,没有人在他们的标题中提出与 sdparta 相关的问题 SO search for 'sdparta' ,也没有直接讨论 'sdparta' 或 'this_is_sdparta' 我能找到的任何答案。

找了两个开发者专门讲'this_is_sdparta'的例子。一个是来自 Iñaki Baz Castillo 的 tweet,没有技术解释:

Sense of humor in Firefox Nightly #WebRTC:

v=0 o=mozilla...THIS_IS_SDPARTA-37.0a1 44108 0 IN IP4 0.0.0.0 a=group:BUNDLE sdparta_0 sdparta_1

另一个是 article,我很难找到作者的名字,而且他大多只是在享受幽默。这是一个截图:

注意:这是我删除的问题的重新发布,因为它包含个人网络连接详细信息。抱歉造成混淆。

除了搞笑,'SDParta'的'arta'部分还有什么意义吗?

有趣的调查。用户代理已添加用于调试目的,可以从 associated bug:

中推断出来

Adam Roach: It would be helpful for debugging if we reported the current Firefox version in our SDP.

然后 Byron Campen 添加了带有用户代理的 changesetmozilla...THIS_IS_SDPARTA-<user-agent> 行。所以,肯定没有别的了。

早在 2014 年,五位 Mozilla 开发人员(包括我自己)将他们自己锁在 AirBnB 中一周,以便为 Firefox 添加多流支持。周一晚上,我们得出结论,使用当前的代码库不可能实现这一点,当时该代码库包含来自 Cisco 的完整的 SIP 堆栈。在星期二早上,我们开始删除所有我们不想再使用的代码,并开始用从头开始编写的代码替换它,但适用于 WebRTC 的更高级用例。

您可以想象,到本周末,我们所有人都会厌倦神秘的会话描述协议。因此,当 Adam 打开漏洞时,Byron 开始研究 SDP 语法以及它允许​​我们放置 Firefox 版本号的位置。就在那时,我们意识到这将是增添乐趣的理想场所。

所以 TL;DR:这只是一个典型的复活节彩蛋,开发人员希望从中获得一些乐趣。仅此而已。

为了进一步说明 Nils 的回答,我不记得我们五个人中是谁的想法,但我认为可能是 Martin。它在代码中出现的第一个地方是here in some ASCII art in the rewritten code.

我们知道这种重写是极端和冒险的,但我们对代码当前状态的耐心终于 运行 消失了,房间里的气氛让人想起 Leeroy Jenkins。所以代码中加入了一些愚蠢的幽默。


         ,-----.                  ,--.  ,--.
        '  .--./ ,--,--.,--.,--.,-'  '-.`--' ,---. ,--,--,
        |  |    ' ,-.  ||  ||  |'-.  .-',--.| .-. ||      `
        '  '--'\ '-'  |'  ''  '  |  |  |  |' '-' '|  ||  |
         `-----' `--`--' `----'   `--'  `--' `---' `--''--'

                        :+o+-
                      -dNNNNNd.
                      yNNNNNNNs
                      :mNNNNNm-
                       `/sso/``-://-
                        .:+sydNNNNNNms:                      `://`
                 `-/+shmNNNNNNNNNNNNNNNms-                  :mNNNm/
           `-/oydmNNNNNNNNNNNNNNNNNNNNNNNNdo-              +NNNNNN+
       .shmNNNNNNNNNNNmdyo/:dNNNNNNNNNNNNNNNNdo.         `sNNNNNm+
       hNNNNNNNNmhs+:-`   .dNNNNNNNNNNNNNNNNNNNNh+-`    `hNNNNNm:
       -yddyo/:.         -dNNNNm::ymNNNNNNNNNNNNNNNmdy+/dNNNNNd.
                        :mNNNNd.   `/ymNNNNNNNNNNNNNNNNNNNNNNh`
                       +NNNNNh`       `+hNNNNNNNNNNNNNNNNNNNs
                      sNNNNNy`           .yNNNNNm`-/oymNNNm+
                    `yNNNNNo              oNNNNNm`     `-.
                   .dNNNNm/               oNNNNNm`
                   oNNNNm:                +NNNNNm`
                   `+yho.                 +NNNNNm`
                                          +NNNNNNs.
                                          `yNNNNNNmy-
                                            -smNNNNNNh:
                                              .smNNNNNNh/
                                                `omNNNNNNd:
                                                  `+dNNNNNd
                             ````......````          /hmdy-
            `.:/+osyhddmNNMMMMMMMMMMMMMMMMMMMMNNmddhyso+/:.`
     `-+shmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmhs+-`
  -smMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds-
 hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh
 yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs
  .ohNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+.
      ./oydmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmhyo:.
             `.:/+osyyhddmmNNMMMMMMMMMMMMMMNNmmddhyyso+/:.`

            ,--------.,--.     ,--.           ,--.
            '--.  .--'|  ,---. `--' ,---.     |  | ,---.
               |  |   |  .-.  |,--.(  .-'     |  |(  .-'
               |  |   |  | |  ||  |.-'  `)    |  |.-'  `)
               `--'   `--' `--'`--'`----'     `--'`----'
                                                                ,--.
       ,---.  ,------.  ,------.                  ,--.          |  |
      '   .-' |  .-.  \ |  .--. ' ,--,--.,--.--.,-'  '-. ,--,--.|  |
      `.  `-. |  |  \  :|  '--' |' ,-.  ||  .--''-.  .-'' ,-.  ||  |
      .-'    ||  '--'  /|  | --' \ '-'  ||  |     |  |  \ '-'  |`--'
      `-----' `-------' `--'      `--`--'`--'     `--'   `--`--'.--.
                                                                '__'