{"id":4358,"date":"2017-05-15T11:06:36","date_gmt":"2017-05-15T02:06:36","guid":{"rendered":"http:\/\/blog.bitmeister.jp\/?p=4358"},"modified":"2017-04-27T11:07:18","modified_gmt":"2017-04-27T02:07:18","slug":"mptcp%e3%81%ae%e3%83%91%e3%82%b1%e3%83%83%e3%83%88%e3%82%92%e7%9c%ba%e3%82%81%e3%81%a6%e3%81%bf%e3%82%8b%e3%81%9d%e3%81%ae2","status":"publish","type":"post","link":"https:\/\/blog.bitmeister.jp\/?p=4358","title":{"rendered":"MPTCP\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u773a\u3081\u3066\u307f\u308b(\u305d\u306e2)"},"content":{"rendered":"<p>\u524d\u56de\u306f\u3001\u5b9f\u969b\u306b\u9001\u4fe1\u3055\u308c\u308bMPTCP\u306eMP_CAPABLE\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u773a\u3081\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n\u4eca\u56de\u306f\u3001ADD_ADDR\u3001DSS\u3001DSS FIN\u3001MP_JOIN\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3068\u5b9f\u969b\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u898b\u6bd4\u3079\u3066\u307f\u307e\u3059\u3002<br \/>\nMPTCP\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u524d\u56de\u306e\u5185\u5bb9\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p><!--more--><\/p>\n<h3>ADD_ADDR<\/h3>\n<p>ADD_ADDR\u306f\u3001\u4f7f\u7528\u53ef\u80fd\u306a\u30a2\u30c9\u30ec\u30b9\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u30a2\u30c9\u30ec\u30b9\u306e\u60c5\u5831\u3092\u5bfe\u5411\u30ce\u30fc\u30c9\u306b\u77e5\u3089\u305b\u308b\u969b\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<h4>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n                     1                   2                   3\r\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\r\n+---------------+---------------+-------+-------+---------------+\r\n|     Kind      |     Length    |Subtype| IPVer |  Address ID   |\r\n+---------------+---------------+-------+-------+---------------+\r\n|          Address (IPv4 - 4 octets \/ IPv6 - 16 octets)         |\r\n+-------------------------------+-------------------------------+\r\n|   Port (2 octets, optional)   |\r\n+-------------------------------+\r\n\t\tFigure 12: Add Address (ADD_ADDR) Option\r\n<\/pre>\n<p>IPVer\u306f\u3001IPv4\u306e\u5834\u5408\u306f4\u3001IPv6\u306e\u5834\u5408\u306f6\u304c\u5165\u308a\u307e\u3059\u3002Port\u306f\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u793a\u3057\u3001\u3053\u308c\u304c\u542b\u307e\u308c\u308b\u304b\u3069\u3046\u304b\u306fLength\u304b\u3089\u63a8\u6e2c\u3057\u307e\u3059\u3002<\/p>\n<h4>ADD_ADDR\u30d1\u30b1\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:40.957874 IP (tos 0x0, ttl 64, id 23374, offset 0, flags &#x5B;DF], proto TCP (6), length 68)\r\n    192.168.101.2.51080 &gt; 192.168.109.2.5001: Flags &#x5B;.], cksum 0x538c (incorrect -&gt; 0x3225), seq 1, ack 1, win 229, options &#x5B;nop,nop,TS val 1091645 ecr 1094284,mptcp add-addr id 2 192.168.105.2,mptcp dss ack 3821824259], length 0\r\n        0x0000:  0004 0001 0006 a036 9fa1 459f 0000 0800\r\n        0x0010:  4500 0044 5b4e 4000 4006 8c10 c0a8 6502\r\n        0x0020:  c0a8 6d02 c788 1389 2fc6 f375 5007 007f\r\n        0x0030:  c010 00e5 538c 0000 0101 080a 0010 a83d\r\n        0x0040:  0010 b28c 1e08 3402 c0a8 6902 1e08 2001\r\n        0x0050:  e3cc 6903\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xc\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300148\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n\u6700\u5f8c\u306e16\u30d0\u30a4\u30c8\u76ee\u304b\u3089\u306e8\u30d0\u30a4\u30c8\u304cADD_ADDR\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\n0x1e\u304cMPTCP\u30aa\u30d7\u30b7\u30e7\u30f3\u30010x08\u304c\u9577\u3055\u30678\u30d0\u30a4\u30c8\u3001Subtype\u304c3\u3001IPVer\u304c4\u3001Address ID\u304c2\u3067\u3001Address\u304c&#8221;c0a8 6902&#8243;\u3067192.168.105.2\u3067\u3059\u3002<\/p>\n<p>\u3053\u306e\u30d1\u30b1\u30c3\u30c8\u306eTCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f48\u30d0\u30a4\u30c8\u3067\u3001\u3042\u306812\u30d0\u30a4\u30c8\u306e\u30c7\u30fc\u30bf\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4eca\u56de\u306fIPv4\u30a2\u30c9\u30ec\u30b9\u3060\u3063\u305f\u306e\u3067\u30b5\u30a4\u30ba\u306f4\u30d0\u30a4\u30c8\u3067\u3057\u305f\u304c\u3001IPv6\u30a2\u30c9\u30ec\u30b9\u306e\u5834\u5408\u306f16\u30d0\u30a4\u30c8\u3067\u3059\u3002IPv6\u30a2\u30c9\u30ec\u30b9\u3092\u901a\u77e5\u3059\u308b\u5834\u5408\u3001TCP\u30d8\u30c3\u30c0\u306e\u6700\u5927\u9577\u3067\u3042\u308b60\u30d0\u30a4\u30c8\u304c\u4f7f\u308f\u308c\u307e\u3059\u3002<\/p>\n<h3>DSS<\/h3>\n<p>DSS\u306f\u3001MPTCP\u306e\u30c7\u30fc\u30bf\u306eACK\u3068\u30b7\u30fc\u30b1\u30f3\u30b9\u756a\u53f7\u306e\u60c5\u5831\u3092\u5bfe\u5411\u30ce\u30fc\u30c9\u306b\u77e5\u3089\u305b\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<h4>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n                     1                   2                   3\r\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\r\n+---------------+---------------+-------+----------------------+\r\n|     Kind      |    Length     |Subtype| (reserved) |F|m|M|a|A|\r\n+---------------+---------------+-------+----------------------+\r\n|           Data ACK (4 or 8 octets, depending on flags)       |\r\n+--------------------------------------------------------------+\r\n|   Data sequence number (4 or 8 octets, depending on flags)   |\r\n+--------------------------------------------------------------+\r\n|              Subflow Sequence Number (4 octets)              |\r\n+-------------------------------+------------------------------+\r\n|  Data-Level Length (2 octets) |      Checksum (2 octets)     |\r\n+-------------------------------+------------------------------+\r\n\t\tFigure 9: Data Sequence Signal (DSS) Option\r\n<\/pre>\n<p>F\u306fDATA_FIN\u3067\u3001\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u9001\u4fe1\u8005\u304b\u3089\u306e\u6700\u5f8c\u306e\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u8868\u3057\u307e\u3059\u3002<br \/>\nm\u306fDSN\u304c8\u30aa\u30af\u30c6\u30c3\u30c8\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u3001\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f4\u30aa\u30af\u30c6\u30c3\u30c8\u3067\u3059\u3002<br \/>\nM\u306fDSN\u3001SSN\u3001DLL\u3001Checksum\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u307e\u3059\u3002<br \/>\na\u306fData ACK\u304c8\u30aa\u30af\u30c6\u30c3\u30c8\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u3001\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f4\u30aa\u30af\u30c6\u30c3\u30c8\u3067\u3059\u3002<br \/>\nA\u306fData ACK\u304c\u5b58\u5728\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<h4>DSS\u30d1\u30b1\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:40.958028 IP (tos 0x0, ttl 64, id 23378, offset 0, flags &#x5B;DF], proto TCP (6), length 1500)\r\n    192.168.101.2.51080 &gt; 192.168.109.2.5001: Flags &#x5B;.], seq 25:1453, ack 1, win 229, options &#x5B;nop,nop,TS val 1091645 ecr 1094284,mptcp dss ack 3821824259 seq 3197154524 subseq 25 len 1428 csum 0xb2ba], length 1428\r\n        0x0000:  0004 0001 0006 a036 9fa1 459f 0000 0800\r\n        0x0010:  4500 05dc 5b52 4000 4006 8674 c0a8 6502\r\n        0x0020:  c0a8 6d02 c788 1389 2fc6 f38d 5007 007f\r\n        0x0030:  d010 00e5 2ec7 0000 0101 080a 0010 a83d\r\n        0x0040:  0010 b28c 1e14 2005 e3cc 6903 be90 b4dc\r\n        0x0050:  0000 0019 0594 b2ba 0000 0000 0000 0001\r\n        0x0060:  0000 1389 0000 0000 0000 0000 ffff fe0c\r\n        0x0070:  3435 3637 3839 3031 3233 3435 3637 3839\r\n        0x0080:  3031 3233 3435\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xd\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300152\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n0x45\u30d0\u30a4\u30c8\u76ee\u304b\u3089\u306e20\u30d0\u30a4\u30c8\u304cDSS\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\n\u30d5\u30e9\u30b0\u306e\u9818\u57df\u306f0x05\u306a\u306e\u3067\u30012\u9032\u6570\u3067\u306f00101\u3068\u306a\u308a\u3001M\u30d5\u30e9\u30b0\u3068A\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002A\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067Data ACK\u304c\u5b58\u5728\u3057\u3001\u307e\u305fM\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001DSN\u3001SSN\u3001DLL\u3001Checksum\u304c\u5b58\u5728\u3057\u307e\u3059\u3002<\/p>\n<p>DSS\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306b\u5f93\u3063\u3066\u89e3\u91c8\u3059\u308b\u3068\u3001&#8221;0xe3cc6903&#8243;\u304cData ACK\u3001&#8221;0xbe90b4dc&#8221;\u304cDSN\u3001&#8221;0x00000019&#8243;\u304cSSN\u3001&#8221;0x0594&#8243;\u304cDLL\u3001&#8221;0xb2ba&#8221;\u304cChecksum\u3067\u3059\u3002<\/p>\n<h4>DSS FIN\u30d1\u30b1\u30c3\u30c8<\/h4>\n<p>\u3064\u3044\u3067\u306bDSS\u3067FIN\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d1\u30b1\u30c3\u30c8\u3092\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:46.265276 IP (tos 0x0, ttl 63, id 25527, offset 0, flags &#x5B;DF], proto TCP (6), length 72)\r\n    192.168.109.2.5001 &gt; 192.168.106.2.48361: Flags &#x5B;.], cksum 0x9d24 (correct), seq 1, ack 6224317, win 5805, options &#x5B;nop,nop,TS val 1095613 ecr 1092968,mptcp dss fin ack 3221927133 seq 3821824259 subseq 0 len 1 csum 0x2d3a], length 0\r\n        0x0000:  0000 0001 0006 00a2 89f3 73c5 abdf 0800\r\n        0x0010:  4500 0048 63b7 4000 3f06 7fa3 c0a8 6d02\r\n        0x0020:  c0a8 6a02 1389 bce9 4781 e03d 466e 497e\r\n        0x0030:  d010 16ad 9d24 0000 0101 080a 0010 b7bd\r\n        0x0040:  0010 ad68 1e14 2015 c00a b4dd e3cc 6903\r\n        0x0050:  0000 0000 0001 2d3a\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xd\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300152\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n\u5148\u7a0b\u3068\u540c\u69d8\u306b\u30010x45\u30d0\u30a4\u30c8\u76ee\u304b\u3089\u306e20\u30d0\u30a4\u30c8\u304cDSS\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\n\u30d5\u30e9\u30b0\u306e\u9818\u57df\u306f0x15\u306a\u306e\u3067\u30012\u9032\u6570\u3067\u306f10101\u3068\u306a\u308a\u3001F\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30d1\u30b1\u30c3\u30c8\u3067MPTCP\u30ec\u30d9\u30eb\u3067\u306eFIN\u304c\u9001\u3089\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<h3>MP_JOIN<\/h3>\n<p>MP_JOIN\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001MPTCP\u306e2\u672c\u76ee\u4ee5\u964d\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u78ba\u7acb\u3059\u308b\u969b\u306b\u9001\u53d7\u4fe1\u3055\u308c\u308bSYN\u3001SYN+ACK\u3001ACK\u306b\u4ed8\u304d\u307e\u3059\u30022\u672c\u76ee\u4ee5\u964d\u306b\u306f\u7b2c4\u306eACK\u304c\u9001\u3089\u308c\u307e\u3059\u304c\u3001\u3053\u306e\u30d1\u30b1\u30c3\u30c8\u306b\u306fMP_JOIN\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u4ed8\u304d\u307e\u305b\u3093\u3002<\/p>\n<h4>SYN+MP_JOIN\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n                     1                   2                   3\r\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\r\n+---------------+---------------+-------+-----+-+---------------+\r\n|     Kind      |  Length = 12  |Subtype|     |B|   Address ID  |\r\n+---------------+---------------+-------+-----+-+---------------+\r\n|                   Receiver's Token (32 bits)                  |\r\n+---------------------------------------------------------------+\r\n|                Sender's Random Number (32 bits)               |\r\n+---------------------------------------------------------------+\r\n\t Figure 5: Join Connection (MP_JOIN) Option (for Initial SYN)\r\n<\/pre>\n<p>B\u30d5\u30e9\u30b0\u306f\u3001\u3053\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u56de\u7dda\u304b\u3069\u3046\u304b\u3092\u793a\u3057\u307e\u3059\u3002<br \/>\nAddress ID\u306fADD_ADDR\u3067\u901a\u77e5\u3055\u308c\u305f\u30a2\u30c9\u30ec\u30b9ID\u3067\u3059\u3002<br \/>\nToken\u306fMPTCP\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u3001\u30e9\u30f3\u30c0\u30e0\u5024\u306f\u30ea\u30d7\u30ec\u30a4\u653b\u6483\u3092\u9632\u3050\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>1\u672c\u76ee\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u306eAddress ID\u306f\u901a\u77e5\u3055\u308c\u306a\u3044\u306e\u3067\u3001\u6697\u9ed9\u7684\u306b0\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<h4>SYN+MP_JOIN\u306e\u30d1\u30b1\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:40.979297 IP (tos 0x0, ttl 64, id 63400, offset 0, flags &#x5B;DF], proto TCP (6), length 72)\r\n    192.168.105.2.43992 &gt; 192.168.109.2.5001: Flags &#x5B;S], cksum 0x5790 (incorrect -&gt; 0xbfda), seq 3268763626, win 29200, options &#x5B;mss 1460,sackOK,TS val 1091650 ecr 0,nop,wscale 7,mptcp join id 2 token 0x60804130 nonce 0x4341f13e], length 0\r\n        0x0000:  0004 0001 0006 a036 9fa1 459d 0000 0800\r\n        0x0010:  4500 0048 f7a8 4000 4006 ebb1 c0a8 6902\r\n        0x0020:  c0a8 6d02 abd8 1389 c2d5 5fea 0000 0000\r\n        0x0030:  d002 7210 5790 0000 0204 05b4 0402 080a\r\n        0x0040:  0010 a842 0000 0000 0103 0307 1e0c 1002\r\n        0x0050:  6080 4130 4341 f13e\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xd\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300152\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n\u6700\u5f8c\u306e12\u30d0\u30a4\u30c8\u304cMP_JOIN\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\nB\u30d5\u30e9\u30b0\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u3089\u305a\u3001Address ID\u304c2\u3001Token\u304c&#8221;0x60804130&#8243;\u3001\u30e9\u30f3\u30c0\u30e0\u5024\u304c&#8221;0x4341f13e&#8221;\u3067\u3042\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<h4>SYN+ACK+MP_JOIN\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n                     1                   2                   3\r\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\r\n+---------------+---------------+-------+-----+-+---------------+\r\n|     Kind      |  Length = 16  |Subtype|     |B|   Address ID  |\r\n+---------------+---------------+-------+-----+-+---------------+\r\n|                                                               |\r\n|                Sender's Truncated HMAC (64 bits)              |\r\n|                                                               |\r\n+---------------------------------------------------------------+\r\n|                Sender's Random Number (32 bits)               |\r\n+---------------------------------------------------------------+\r\nFigure 6: Join Connection (MP_JOIN) Option (for Responding SYN\/ACK)\r\n<\/pre>\n<p>MP_JOIN\u3092\u542b\u3080SYN\u30d1\u30b1\u30c3\u30c8\u3092\u53d7\u3051\u53d6\u3063\u305f\u5074\u306f\u3001SYN+ACK+MP_JOIN\u30d1\u30b1\u30c3\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002Token\u3092\u77e5\u3089\u306a\u304b\u3063\u305f\u308a\u3001\u8ffd\u52a0\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u306e\u4f5c\u6210\u3092\u62d2\u5426\u3059\u308b\u5834\u5408\u306fRST\u30d1\u30b1\u30c3\u30c8\u304c\u98db\u3073\u307e\u3059\u3002<\/p>\n<h4>SYN+ACK+MP_JOIN\u306e\u30d1\u30b1\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:40.979591 IP (tos 0x0, ttl 63, id 45808, offset 0, flags &#x5B;DF], proto TCP (6), length 76)\r\n    192.168.109.2.5001 &gt; 192.168.105.2.43992: Flags &#x5B;S.], cksum 0x3008 (correct), seq 2014172733, ack 3268763627, win 28560, options &#x5B;mss 1460,sackOK,TS val 1094291 ecr 1091650,nop,wscale 7,mptcp join id 3 hmac 0x2ccfecb525bed145 nonce 0x4bb9fb37], length 0\r\n        0x0000:  0000 0001 0006 00a2 89f3 73c4 0000 0800\r\n        0x0010:  4500 004c b2f0 4000 3f06 3166 c0a8 6d02\r\n        0x0020:  c0a8 6902 1389 abd8 780d d63d c2d5 5feb\r\n        0x0030:  e012 6f90 3008 0000 0204 05b4 0402 080a\r\n        0x0040:  0010 b293 0010 a842 0103 0307 1e10 1003\r\n        0x0050:  2ccf ecb5 25be d145 4bb9 fb37\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xe\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300156\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n\u6700\u5f8c\u306e16\u30d0\u30a4\u30c8\u304cMP_JOIN\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\nB\u30d5\u30e9\u30b0\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u3089\u305a\u3001Address ID\u304c3\u3001\u5207\u308a\u8a70\u3081\u3089\u308c\u305fHMAC\u304c&#8221;0x2ccfecb525bed145&#8243;\u3001\u30e9\u30f3\u30c0\u30e0\u5024\u304c&#8221;0x4bb9fb37&#8243;\u3067\u3042\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<h4>ACK+MP_JOIN\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n                     1                   2                   3\r\n 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\r\n+---------------+---------------+-------+-----------------------+\r\n|     Kind      |  Length = 24  |Subtype|      (reserved)       |\r\n+---------------+---------------+-------+-----------------------+\r\n|                                                               |\r\n|                                                               |\r\n|                   Sender's HMAC (160 bits)                    |\r\n|                                                               |\r\n|                                                               |\r\n+---------------------------------------------------------------+\r\n\tFigure 7: Join Connection (MP_JOIN) Option (for Third ACK)\r\n<\/pre>\n<p>\u5207\u308a\u8a70\u3081\u3089\u308c\u3066\u3044\u306a\u3044HMAC\u304c\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u9001\u3063\u305fSocket\u306fPRE_ESTABLISHED\u72b6\u614b\u3068\u306a\u308a\u3001\u7b2c4\u306eACK\u3092\u5f85\u3061\u307e\u3059\u3002\u7b2c4\u306eACK\u304c\u5c4a\u304f\u3068ESTABLISHED\u72b6\u614b\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u305d\u308c\u307e\u3067\u306f\u3053\u306eSocket\u3067\u306f\u30c7\u30fc\u30bf\u306f\u9001\u4fe1\u3055\u308c\u307e\u305b\u3093\u3002<\/p>\n<h4>ACK+MP_JOIN\u306e\u30d1\u30b1\u30c3\u30c8<\/h4>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n16:02:40.979668 IP (tos 0x0, ttl 64, id 63401, offset 0, flags &#x5B;DF], proto TCP (6), length 76)\r\n    192.168.105.2.43992 &gt; 192.168.109.2.5001: Flags &#x5B;.], cksum 0x5794 (incorrect -&gt; 0xa02d), seq 1, ack 1, win 685, options &#x5B;nop,nop,TS val 1091650 ecr 1094291,mptcp join hmac 0xf2e30d4fb4e4f4cc4562c61e59d9ce7a544c30f1], length 0\r\n        0x0000:  0004 0001 0006 a036 9fa1 459d 0000 0800\r\n        0x0010:  4500 004c f7a9 4000 4006 ebac c0a8 6902\r\n        0x0020:  c0a8 6d02 abd8 1389 c2d5 5feb 780d d63e\r\n        0x0030:  e010 02ad 5794 0000 0101 080a 0010 a842\r\n        0x0040:  0010 b293 1e18 1000 f2e3 0d4f b4e4 f4cc\r\n        0x0050:  4562 c61e 59d9 ce7a 544c 30f1\r\n<\/pre>\n<p>TCP\u30d8\u30c3\u30c0\u306e\u30c7\u30fc\u30bf\u30aa\u30d5\u30bb\u30c3\u30c8\u304c0xe\u306a\u306e\u3067\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u9818\u57df\u3092\u542b\u3080TCP\u30d8\u30c3\u30c0\u306e\u9577\u3055\u306f\u300156\u30d0\u30a4\u30c8\u3067\u3059\u3002<br \/>\n\u6700\u5f8c\u306e24\u30d0\u30a4\u30c8\u304cMP_JOIN\u306e\u9818\u57df\u3067\u3059\u3002<br \/>\n\u5207\u308a\u8a70\u3081\u3089\u308c\u3066\u3044\u306a\u3044HMAC\u306f\u3001&#8221;0xf2e30d4fb4e4f4cc4562c61e59d9ce7a544c30f1&#8243;\u3067\u3042\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n<h3>\u307e\u3068\u3081<\/h3>\n<p>\u524d\u56de\u3068\u4eca\u56de\u3067\u3001RFC\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u30d1\u30b1\u30c3\u30c8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3068\u5b9f\u969b\u306eMPTCP\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u4ed8\u3044\u305f\u30d1\u30b1\u30c3\u30c8\u3092\u898b\u6bd4\u3079\u3066\u304d\u307e\u3057\u305f\u3002<br \/>\n\u4ed6\u306eTCP\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u542b\u307e\u308c\u308b\u72b6\u614b\u3067\u306e40\u30d0\u30a4\u30c8\u3068\u3044\u3046\u9577\u3055\u306e\u5236\u7d04\u306e\u4e2d\u3067\u3001\u3069\u3046\u306b\u304b\u3057\u3066\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u5b9f\u73fe\u3055\u305b\u3088\u3046\u3068\u3059\u308b\u5f37\u3044\u610f\u6c17\u8fbc\u307f\u304c\u898b\u3066\u53d6\u308c\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/tools.ietf.org\/html\/rfc6824\" target=\"_blank\">RFC 6824<\/a>\u306f\u73fe\u5728\u7b56\u5b9a\u4e2d\u306e\u4ed5\u69d8\u306a\u306e\u3067\u3001\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u65e2\u5b58\u306eL2 Switch\u306a\u3069\u306e\u6a5f\u5668\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u306a\u304f\u3001\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3044\u3046\u8a66\u307f\u306f\u975e\u5e38\u306b\u7d20\u6674\u3089\u3057\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u5bfe\u5411\u30ce\u30fc\u30c9\u304cMPTCP\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u901a\u5e38\u306eTCP\u3067\u901a\u4fe1\u3067\u304d\u307e\u3059\u306e\u3067\u3001\u3061\u3087\u3063\u3068\u3067\u3082\u8208\u5473\u306e\u3042\u308b\u65b9\u306f\u662f\u975e\u662f\u975eMPTCP\u3092\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306f\u3001\u5b9f\u969b\u306b\u9001\u4fe1\u3055\u308c\u308bMPTCP\u306eMP_CAPABLE\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u773a\u3081\u3066\u307f\u307e\u3057\u305f\u3002 \u4eca\u56de\u306f\u3001ADD_ADDR\u3001DSS\u3001DSS FIN\u3001MP_JOIN\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3068\u5b9f\u969b\u306e\u30d1\u30b1\u30c3\u30c8\u3092\u898b\u6bd4\u3079\u3066\u307f\u307e\u3059\u3002 MPTCP\u306e\u30aa\u30d7\u30b7\u30e7 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[120,18,148],"class_list":["post-4358","post","type-post","status-publish","format-standard","hentry","category-tech","tag-kernel","tag-linux","tag-mptcp"],"_links":{"self":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4358"}],"version-history":[{"count":4,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4358\/revisions"}],"predecessor-version":[{"id":4364,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=\/wp\/v2\/posts\/4358\/revisions\/4364"}],"wp:attachment":[{"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bitmeister.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}