{"id":5879,"date":"2021-06-17T08:21:27","date_gmt":"2021-06-16T23:21:27","guid":{"rendered":"https:\/\/mimumimu.net\/blog\/?p=5879"},"modified":"2021-06-17T08:21:27","modified_gmt":"2021-06-16T23:21:27","slug":"jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82","status":"publish","type":"post","link":"https:\/\/mimumimu.net\/blog\/2021\/06\/17\/jumbo-frame-winserver-2019-%e3%81%ae-hyper-v-%e3%81%ae%e9%80%9a%e4%bf%a1%e3%81%af%e5%a6%99%e3%81%ab%e9%81%85%e3%81%84%e3%80%82\/","title":{"rendered":"Jumbo Frame + WinServer 2019 \u306e Hyper-V \u306e\u901a\u4fe1\u306f\u5999\u306b\u9045\u3044\u3002"},"content":{"rendered":"\n<p>\u3069\u3046\u3082\u307f\u3080\u3089\u3067\u3059\u3002<br>\u6700\u8fd1\u6885\u96e8\u306b\u5165\u3063\u305f\u306e\u304b\u590f\u306b\u5165\u3063\u305f\u306e\u304b\u3001\u8272\u3005\u30d1\u30c3\u3068\u3057\u306a\u304f\u3066\u56f0\u308b\u65e5\u3005\u304c\u7d9a\u3044\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5148\u65e5 Windows Server 2019 (\u3082\u3057\u304f\u306f Hyper-V Server 2019) \u3092 Jumbo Frame \u74b0\u5883\u4e0b\u3067\u7528\u3044\u308b\u3068\u3001\u901a\u4fe1\u304c\u9045\u304f\u306a\u308b\u3068\u3044\u3046\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3057\u305f\u306e\u3067\u30e1\u30e2\u304c\u3066\u3089\u3002<br>\u540c\u3058\u3088\u3046\u306a\u554f\u984c\u306b\u906d\u9047\u3057\u305f\u65b9\u306e\u4e00\u52a9\u306e\u3068\u306a\u308c\u3070\u3042\u308a\u304c\u305f\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e8b\u8c61\uff1a<\/h3>\n\n\n\n<p><span style=\"text-decoration: underline;\">Windows Server 2019 \u4e0a\u306e Hyper-V <\/span>\u306b\u5c55\u958b\u3055\u308c\u305f VM \u306b\u304a\u3044\u3066<br><span style=\"text-decoration: underline;\">RSC (Receive Side Coalescing,  Linux \u3067\u306f Large Receive Offload \u3067\u77e5\u3089\u308c\u3066\u3044\u308b) \u304c\u6709\u52b9<\/span><br>\u304b\u3064<span style=\"text-decoration: underline;\"> VM \u304c Jumbo Frame<\/span> \u306e\u74b0\u5883\u306b\u304a\u3044\u3066\u3001VM\u304b\u3089\u898b\u3066\u53d7\u4fe1\u65b9\u5411\u306e\u901a\u4fe1\u304c\u9045\u304f\u306a\u308b\u3002<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">\u6ce8\uff11\uff1aWindows Server 2019 \u3067\u306f<strong> RSC \u306f\u65e2\u5b9a\u3067\u6709\u52b9<\/strong>\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/span><br><span style=\"text-decoration: underline;\">\u6ce8\uff12\uff1a<strong>MTU \u304c 2850 bytes \u3092\u4e0a\u56de\u308b ( >2850 ) \u5834\u5408<\/strong>\u306b\u901f\u5ea6\u4f4e\u4e0b\u304c\u767a\u751f\u3059\u308b\u3088\u3046\u3067\u3059\u3002 <\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u539f\u56e0\uff1a<\/h3>\n\n\n\n<p>VMSwitch \u306b\u304a\u3044\u3066 Reassemble \u3055\u308c\u305f\u30d1\u30b1\u30c3\u30c8\u304c VM\u306b\u5c4a\u304b\u306a\u304f\u306a\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u56de\u907f\u65b9\u6cd5\uff1a<\/h3>\n\n\n\n<p><span style=\"text-decoration: underline;\">RSC \u3092\u7121\u52b9\u306b\u3059\u308b\u304b MTU \u3092 1500 \u306b\u3059\u308b<\/span><\/p>\n\n\n\n<p><strong>\u65b9\u6cd5\uff11<\/strong>\uff1a\u30b2\u30b9\u30c8 VM \u306e MTU \u3092 1500 \u306b\u3059\u308b\u3002<br>\u3000\u4f8b\uff09 ip l set mtu 1500 dev eth0<\/p>\n\n\n\n<p><strong>\u65b9\u6cd5\uff12<\/strong>\uff1a\u30db\u30b9\u30c8\u5074\u3067RSC \u6a5f\u80fd\u3092 VMSwitch \u5358\u4f4d\u3067\u7121\u52b9\u306b\u3059\u308b<br>\u3000\u4f8b\uff09Set-VMSwitch (Switch\u540d)  -EnableSoftwareRsc $false<\/p>\n\n\n\n<p><strong>\u65b9\u6cd5\uff13<\/strong>\uff1a\u30b2\u30b9\u30c8VM \u306b\u304a\u3044\u3066 ethtool \u7b49\u3092\u7528\u3044\u3066 &#8220;large-receive-offload&#8221; \u3092 off \u306b\u3059\u308b<br>\u3000Linux\uff09 ethtool -K eth0 large-receive-offload off<br>\u3000Windows\uff09 Set-NetAdapterAdvancedProperty &#8220;*&#8221; -DisplayName &#8220;Recv Segment Coalescing&#8221; -RegistryValue 0<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d1\u30b1\u30c3\u30c8\u306e\u6c17\u6301\u3061\u306b\u306a\u3063\u3066\u307f\u308b<\/h2>\n\n\n\n<p>\u6700\u8fd1\u30d1\u30b1\u30c3\u30c8\u306e\u6c17\u6301\u3061\u306b\u306a\u308b\u3001\u304c\u4e00\u90e8\u754c\u9688\u3067\u6709\u540d\u3067\u3059\u306e\u3067\u300c\u306a\u3063\u3066\u307f\u3088\u3046\u300d\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3056\u3063\u304f\u308a\u3068\u69cb\u6210\u306f\u4e0b\u8a18\u306e\u901a\u308a\u3002<br>Hyper-V \u30b5\u30fc\u30d0\u5185\u306b\u7acb\u3066\u3089\u308c\u305f VM-01 \u3068\u306e\u901a\u4fe1\u306b\u3064\u3044\u3066 Hyper-V \u30b5\u30fc\u30d0\u306e\u524d\u6bb5\u306e\u30df\u30e9\u30fc (CAP-01) \u3068 VMSwitch \u306e\u30df\u30e9\u30fc (CAP-02) \u3067\u901a\u4fe1\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066\u6319\u52d5\u3092\u78ba\u8a8d\u3057\u3088\u3046\u3001\u3068\u3044\u3046\u69cb\u6210\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\uff08<span style=\"text-decoration: underline;\">\u306a\u304a\u3001\u5404\u30ad\u30e3\u30d7\u30c1\u30e3\u306f\u540c\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u306e\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3054\u4e86\u627f\u304f\u3060\u3055\u3044<\/span>\uff09<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"332\" height=\"607\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-12.png\" alt=\"\" class=\"wp-image-5892\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">VM-01 \u3067\u306e curl \u3067\u306e\u901f\u5ea6\u6bd4\u8f03<\/h3>\n\n\n\n<p>\u4e8b\u8c61\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u307e\u305a\u306f curl \u3067\u9069\u5f53\u306a\u901a\u4fe1\u3092\u767a\u751f\u3055\u305b\u3066\u901f\u5ea6\u3092\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"196\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-3.png\" alt=\"\" class=\"wp-image-5883\"\/><\/figure>\n\n\n\n<p>MTU 1500 \u306e\u5834\u5408\u306f Average Speed \u304c 10.7M \u3068\u306a\u3063\u3066\u3044\u308b\u306e\u306b\u5bfe\u3057<br>MTU 9000 \u306e\u5834\u5408\u306f Average Speed \u304c 44024 \u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">MTU 9000 \u306e\u6642\u306e VM-01 \u306e\u30ad\u30e3\u30d7\u30c1\u30e3<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"299\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-9.png\" alt=\"\" class=\"wp-image-5889\"\/><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 <\/p>\n\n\n\n<p>No. 12 \u306b\u304a\u3044\u3066 Seq=141, Ack=1409 \u3092\u30b5\u30fc\u30d0\u306b\u5bfe\u3057\u3066\u8fd4\u7b54\u3057\u3066\u3044\u307e\u3059\u304c<br>\u305d\u306e\u6b21\u306b\u3084\u3063\u3066\u304d\u305f\u30d1\u30b1\u30c3\u30c8 (No.13) \u306f Seq=16897 \u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br>\uff08\u901a\u5e38\u306f\u76f4\u524d\u306e Ack \u3068\u540c\u3058\u756a\u53f7\u306e Seq \u304c\u8fd4\u3063\u3066\u304d\u307e\u3059\uff09<\/p>\n\n\n\n<p>\u305d\u306e\u305f\u3081 No.14 \u306b\u304a\u3044\u3066 Ack=1409 \u3092\u518d\u5ea6\u9001\u4fe1\u3055\u308c\u3001<br>\u30b5\u30fc\u30d0\u5074\u304b\u3089\u306f No.16 \u306b\u304a\u3044\u3066 Seq=1409 \u306e\u8fd4\u7b54\uff08\u518d\u9001\uff09\u304c\u8d77\u304d\u3066\u3057\u307e\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">MTU9000 \u306e\u6642\u306e CAP-02 \u306e\u30ad\u30e3\u30d7\u30c1\u30e3<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"548\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-11.png\" alt=\"\" class=\"wp-image-5891\"\/><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br>No. 13 \u307e\u3067\u306f\u5148\u307b\u3069\u306e VM-01 \u3068\u540c\u3058\u3088\u3046\u306a\u6d41\u308c\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3067\u3059\u304c No.14 \u4ed8\u8fd1\u304b\u3089 1474 bytes  \u3067\u306f\u306a\u3044\u30d1\u30b1\u30c3\u30c8\u304c\u6d41\u308c\u306f\u3058\u3081\u307e\u3059\u3002<br>\u307e\u305f<span style=\"text-decoration: underline;\">\u305d\u308c\u3092\u5883\u306b\u3057\u3066\u3001 Ack \u3068 Seq \u306e\u95a2\u4fc2\u304c\u58ca\u308c\u306f\u3058\u3081\u308b<\/span>\u306e\u3082\u78ba\u8a8d\u304c\u51fa\u6765\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305f\u3068\u3048\u3070 No.14 \u306f Seq=1409 \u3068\u3057\u3066 2882 bytes \u306e\u901a\u4fe1\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u304c<br>\u305d\u306e\u5f8c\u306e ACK (No.16) \u3067\u306f Ack=1409 \u3068\u3057\u3066\u8fd4\u7b54\u304c\u884c\u308f\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u3001<br>\u901a\u4fe1\u304c\u6b63\u5e38\u306b\u884c\u308f\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u304c\u3053\u3053\u304b\u3089\u8aad\u307f\u53d6\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305f\u3053\u306e 1475 bytes \u3067\u306a\u3044\u30d1\u30b1\u30c3\u30c8\u306b\u3064\u3044\u3066\u306f\u5148\u8ff0\u306e VM-01 \u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u306b\u304a\u3044\u3066\u306f\u78ba\u8a8d\u51fa\u6765\u305a\u3001\u305d\u306e\u5f8c\u767a\u751f\u3057\u305f No.25 \u306e Ack \u306b\u5bfe\u3059\u308b No.26 \u306e 1474 bytes \u306e\u901a\u4fe1\u304c\u884c\u308f\u308c\u3066\u521d\u3081\u3066 VM-01 \u5074\u306b\u30d1\u30b1\u30c3\u30c8\u304c\u5230\u9054\u3057\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u53d7\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">MTU9000 \u306e\u6642\u306e CAP-01 \u306e\u30ad\u30e3\u30d7\u30c1\u30e3<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"943\" height=\"442\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-13.png\" alt=\"\" class=\"wp-image-5893\"\/><\/figure>\n\n\n\n<p>\u4e0a\u8a18\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u3092\u4ecb\u3057\u3066 No.10 ~ No.19 \u306b\u639b\u3051\u3066\u52e2\u3044\u3088\u304f\u901a\u4fe1\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u304c<br>\u305d\u306e\u5f8c No.20 \u306b\u304a\u3044\u3066 Ack=1 \u304c\u8fd4\u3055\u308c\u3001No.23 \u306b\u304a\u3044\u3066\u518d\u9001\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u306e\u9593 Seq \u306f 12673 \u307e\u3067\u5897\u3048\u3066\u304a\u308a\u3001\u3053\u306e No.19 \u306b\u5f53\u8a72\u3059\u308b\u30d1\u30b1\u30c3\u30c8\u306f\u5148\u8ff0\u306e CAP-02 \u306b\u304a\u3044\u3066\u3082 No.21 \u3068\u3057\u3066\u89b3\u6e2c\u3067\u304d\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u53d7\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u4e8b\u8c61\u3001\u307e\u305f CAP-02 \u306b\u304a\u3044\u3066\u30d1\u30b1\u30c3\u30c8\u3092\u3068\u308a\u7d9a\u3051\u308b\u3068\u3001 reassemble \u3055\u308c\u305f\u30d1\u30b1\u30c3\u30c8\u304c\u9001\u4fe1\u3055\u308c\u305f\u5f8c\u306b\u518d\u9001\u8981\u6c42\u304c\u767a\u751f\u3057\u3066\u3044\u308b\u3053\u3068\u3001\u305d\u3057\u3066 RSC \u3092 Disable \u306b\u3059\u308b\u3068\u3053\u308c\u3089\u306e\u4e8b\u8c61\u304c\u89e3\u6c7a\u3059\u308b\u3053\u3068\u304b\u3089 RSC (LRO) \u304c\u539f\u56e0\u3068\u5224\u65ad\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"727\" height=\"445\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-14.png\" alt=\"\" class=\"wp-image-5894\"\/><\/figure>\n\n\n\n<p>\u307e\u305f\u7e70\u308a\u8fd4\u3057\u3067\u306f\u3042\u308a\u307e\u3059\u304c\u3001<br><span style=\"text-decoration: underline;\">Windows Server 2022 (Preview) \u3084 Windows 10 (21H1) \u3067\u306f\u767a\u751f\u3057\u306a\u3044<\/span>\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u306e\u3067<span style=\"text-decoration: underline;\"> Windows Server 2019 \u7279\u6709\u306e\u554f\u984c ( 1809 \u30d9\u30fc\u30b9\u306e Hyper-V \u7279\u6709? ) \u3068\u5224\u65ad<\/span>\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"> \u756a\u5916\uff1a\u30c9\u30e9\u30a4\u30d0\u30d9\u30fc\u30b9\u3067\u6cbb\u305b\u306a\u3044\u304b\u3084\u3063\u3066\u307f\u308b<\/h2>\n\n\n\n<p>Linux \u306e\u30c9\u30e9\u30a4\u30d0\u306f\u81ea\u7531\u306b\u4fee\u6b63\u3057\u305f\u308a\u3057\u3066\u5b9f\u9a13\u3067\u304d\u307e\u3059\u306e\u3067\u3001<br>\u3053\u308c\u3067\u4f55\u304b\u51fa\u6765\u306a\u3044\u304b\u3084\u3063\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uff11\uff0e\u305d\u3082\u305d\u3082\u6a5f\u80fd\u3092\u5207\u308b:<\/h3>\n\n\n\n<p>netvsc \u306e 603 \u884c\u76ee\u306b\u4e0b\u8a18\u306e\u3088\u3046\u306a\u8a18\u8ff0\u304c\u3042\u308a\u307e\u3059<br><a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/drivers\/net\/hyperv\/netvsc.c#L603\">https:\/\/github.com\/torvalds\/linux\/blob\/master\/drivers\/net\/hyperv\/netvsc.c#L603<\/a><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-cpp\" data-lang=\"C++\"><code>\/* Negotiate NVSP protocol version *\/\nstatic int negotiate_nvsp_ver(struct hv_device *device,\n\t\t\t      struct netvsc_device *net_device,\n\t\t\t      struct nvsp_message *init_packet,\n\t\t\t      u32 nvsp_ver)\n{\n\n\/\/\/ \u7701\u7565 \/\/\/\n\n\tif (nvsp_ver &gt;= NVSP_PROTOCOL_VERSION_61)\n\t\tinit_packet-&gt;msg.v2_msg.send_ndis_config.capability.rsc = 1;\n\n\/\/\/ \u7701\u7565 \/\/\/\n\n\treturn ret;\n}<\/code><\/pre><\/div>\n\n\n\n<p>\u3053\u306e nvsp_ver \u3067 Windows Server 2019 \u3068\u305d\u308c\u4ee5\u964d\u306e\u533a\u5225\u3092\u8a66\u307f\u307e\u3057\u305f\u304c<br>\u5171\u306b NVSP_PROTOCOL_VERSION_61 (0x60001) \u304c\u8fd4\u308b\u305f\u3081\u3001\u533a\u5225\u306f\u51fa\u6765\u307e\u305b\u3093\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3082\u3061\u308d\u3093\u3067\u3059\u304c\u3001&#8221;init_packet->msg.v2_msg.send_ndis_config.capability.rsc = <span style=\"text-decoration: underline;\">0;<\/span>&#8221; \u3068\u3059\u308b\u3068 RSC \u306e\u6a5f\u80fd\u304c\u6052\u4e45\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\uff12\uff0e\u5225\u30d1\u30e9\u30e1\u30fc\u30bf\u304b\u3089\u5024\u3092\u63a8\u6e2c\u3059\u308b\u7b49\u3067\u5024\u3092\u4fee\u6b63\u3059\u308b\uff1a<\/h3>\n\n\n\n<p>\u3053\u3061\u3089\u3067\u3059\u304c\u3001\u305d\u3082\u305d\u3082 VMBus \u7d4c\u7531\u3067\u306e VMQ \u306e\u5272\u8fbc\u304c\u6765\u306a\u3044\u305f\u3081<br>\u4fee\u6b63\u306f\u96e3\u3057\u3044\u3068\u3044\u3046\u5f62\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>Hyper-V \u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901a\u4fe1\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/docs.microsoft.com\/ja-jp\/windows-hardware\/drivers\/network\/images\/vmqarch.png\" alt=\"vmq \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\"\/><\/figure>\n\n\n\n<p>\u5f15\u7528\u5143 : <a href=\"https:\/\/docs.microsoft.com\/ja-jp\/windows-hardware\/drivers\/network\/vmq-components\">https:\/\/docs.microsoft.com\/ja-jp\/windows-hardware\/drivers\/network\/vmq-components<\/a><\/p>\n\n\n\n<p>\u89aa\uff08\u30db\u30b9\u30c8\uff09\u304c\u6301\u3064 NetVSP (VMSwitch) \u306b\u5bfe\u3057\u3066 VMBus \u7d4c\u7531\u3067\u63a5\u7d9a\u3059\u308b\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u306a\u3063\u3066\u304a\u308a\u3001Linux \u306e netvsc \u30c9\u30e9\u30a4\u30d0\u306b\u304a\u3044\u3066\u3082 1665 \u884c\u76ee\u4ed8\u8fd1\u3067\u305d\u306e\u63a5\u7d9a\u304c\u884c\u308f\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u4f3a\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-cpp\" data-lang=\"C++\"><code>struct netvsc_device *netvsc_device_add(struct hv_device *device,\n\t\t\t\tconst struct netvsc_device_info *device_info)\n{\n\n\/\/\/ \u7701\u7565 \/\/\/\n\n\t\/* Enable NAPI handler before init callbacks *\/\n\tnetif_napi_add(ndev, &net_device-&gt;chan_table[0].napi,\n\t\t       netvsc_poll, NAPI_POLL_WEIGHT);\n\n\t\/* Open the channel *\/\n\tdevice-&gt;channel-&gt;rqstor_size = netvsc_rqstor_size(netvsc_ring_bytes);\n\tret = vmbus_open(device-&gt;channel, netvsc_ring_bytes,\n\t\t\t netvsc_ring_bytes,  NULL, 0,\n\t\t\t netvsc_channel_cb, net_device-&gt;chan_table);\n\n\tif (ret != 0) {\n\t\tnetdev_err(ndev, &quot;unable to open channel: %d\\n&quot;, ret);\n\t\tgoto cleanup;\n\t}\n\n\t\/* Channel is opened *\/\n\tnetdev_dbg(ndev, &quot;hv_netvsc channel opened successfully\\n&quot;);\n\n\tnapi_enable(&net_device-&gt;chan_table[0].napi);\n\n\t\/* Connect with the NetVsp *\/\n\tret = netvsc_connect_vsp(device, net_device, device_info);\n\tif (ret != 0) {\n\t\tnetdev_err(ndev,\n\t\t\t&quot;unable to connect to NetVSP - %d\\n&quot;, ret);\n\t\tgoto close;\n\t}\n\n\/\/\/ \u7701\u7565 \/\/\/\n\n}<\/code><\/pre><\/div>\n\n\n\n<p><a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/9d31d2338950293ec19d9b095fbaa9030899dcb4\/drivers\/net\/hyperv\/netvsc.c#L1648\">https:\/\/github.com\/torvalds\/linux\/blob\/9d31d2338950293ec19d9b095fbaa9030899dcb4\/drivers\/net\/hyperv\/netvsc.c#L1648<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u8a66\u3057\u306b netvsc_receive \u95a2\u6570\u3092\u4e0b\u8a18\u306e\u3088\u3046\u306b\u7de8\u96c6\u3057\u3066\u307f\u308b\u3068\u4e0b\u8a18\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u5f97\u3089\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-cpp\" data-lang=\"C++\"><code>static int netvsc_receive(struct net_device *ndev,\n\t\t\t  struct netvsc_device *net_device,\n\t\t\t  struct netvsc_channel *nvchan,\n\t\t\t  const struct vmpacket_descriptor *desc)\n{\n\tstruct net_device_context *net_device_ctx = netdev_priv(ndev);\n\tstruct vmbus_channel *channel = nvchan-&gt;channel;\n\tconst struct vmtransfer_page_packet_header *vmxferpage_packet\n\t\t= container_of(desc, const struct vmtransfer_page_packet_header, d);\n\tconst struct nvsp_message *nvsp = hv_pkt_data(desc);\n\tu32 msglen = hv_pkt_datalen(desc);\n\tu16 q_idx = channel-&gt;offermsg.offer.sub_channel_index;\n\tchar *recv_buf = net_device-&gt;recv_buf;\n\tu32 status = NVSP_STAT_SUCCESS;\n\tint i;\n\tint count = 0;\n\n  \/\/ \u4e0b\u8a18\u884c\u3092\u8ffd\u8a18\n\tnetif_info(netdevice_ctx, rx_err, ndev, &quot;BUF-SIZE : %u, SEC-SIZE : %u, RSC-PKTLEN %u\\n&quot;,\n    net_device-&gt;recv_buf_size, net_device-&gt;recv_section_size,\n    nvchan-&gt;rsc.pktlen);\n\n\t\/* Ensure packet is big enough to read header fields *\/\n\tif (msglen &lt; sizeof(struct nvsp_message_header)) {\n\t\tnetif_err(net_device_ctx, rx_err, ndev,\n\t\t\t  &quot;invalid nvsp header, length too small: %u\\n&quot;,\n\t\t\t  msglen);\n\t\treturn 0;\n\t}\n\n\/\/\/ \u4ee5\u4e0b\u7701\u7565 \/\/\/<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1025\" height=\"475\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-15.png\" alt=\"\" class=\"wp-image-5895\"\/><\/figure>\n\n\n\n<p>BUF-SIZE \u304c Window Size \u306b\u3061\u3087\u3063\u3068\u8db3\u3057\u305f\u3082\u306e\u3001SEC-SIZE \u304c MTU \u306b\u3061\u3087\u3063\u3068\u8db3\u3057\u305f\u3082\u306e\u306e\u5024\u306b\u306a\u308a\u3001 RSC-PKTLEN  \u304c\u30d5\u30ec\u30fc\u30e0\u30b5\u30a4\u30ba\u3068\u540c\u3058\u5024\u3092\u6307\u3057\u793a\u3059\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p>RSC-PKTLEN \u306e\u5024\u306f 1474 \u3092\u793a\u3057\u3066\u304a\u308a\u3001\u5192\u982d\u306e\u30d1\u30b1\u30c3\u30c8\u30ad\u30e3\u30d7\u30c1\u30e3\u3068\u540c\u3058\u3088\u3046\u306a\u611f\u3058\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u8aad\u307f\u53d6\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u306a\u304a\u3001\u540c\u3058 VM \u3092\u540c\u3058\u8a2d\u5b9a\u3067 Windows 10 \u306e\u4e0a\u306b\u69cb\u7bc9\u3057\u305f\u5834\u5408\u306f\u4e0b\u8a18\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2021\/06\/image-17.png\" alt=\"\" class=\"wp-image-5897\"\/><\/figure>\n\n\n\n<p>RSC-PKTLEN \u304c\u5341\u5206\u306b\u5927\u304d\u306a\u5024\u306b\u306a\u3063\u3066\u304a\u308a\u3001 RSC \u306b\u3066 reassemble \u3055\u308c\u305f\u30d1\u30b1\u30c3\u30c8\u304c\u53d7\u4fe1\u51fa\u6765\u3066\u3044\u308b\u3053\u3068\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c9\u30e9\u30a4\u30d0\u3092\u8ffd\u3044\u304b\u3051\u3066\u307f\u305f\u306e\u3067\u3059\u304c\u3001\u6b63\u3057\u3044\u5024\u304c\u5225\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u5165\u3063\u3066\u3044\u308b\u3053\u3068\u306a\u3069\u306f\u306a\u304f\u3001\u307e\u305f NetVSP \u306e\u5272\u8fbc\u304c\u6765\u306a\u3044\u305f\u3081\u4fee\u6b63\u306f\u96e3\u3057\u3044\u3068\u8003\u3048\u3089\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u307e\u3068\u3081<\/h2>\n\n\n\n<p>Windows Server 2019 \u306e Hyper-V \u3092\u4f7f\u7528\u3057\u3066 VM \u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u306f<\/p>\n\n\n\n<p>\u30fbMTU \u3092 1500 \u4ee5\u4e0b\u306b\u8a2d\u5b9a\u3057\u3066 RSO \u304c\u6b63\u5e38\u306b\u6a5f\u80fd\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u4f7f\u3046<br>\u30fbJumbo Frame \u3092\u6709\u52b9\u306b\u3057\u305f\u3044\u5834\u5408\u306f RSO \u3092 Disable \u306b\u3059\u308b<\/p>\n\n\n\n<p>\u306e\u3069\u3061\u3089\u304b\u3067\u5229\u7528\u3057\u306a\u3044\u3068\u3001\u843d\u3068\u3057\u7a74\u304c\u3042\u308b\u3068\u3044\u3046\u8a71\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u57f7\u7b46\u6642\u70b9\u306e\u6700\u65b0\u7248\u3067\u3042\u308b &#8220;10.0.17763.1999&#8221; \u3067\u3082\u3053\u306e\u4e8b\u8c61\u306f\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001<br>\u304a\u6c17\u3092\u3064\u3051\u304f\u3060\u3055\u3044\u307e\u305b\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">P.S.<\/h3>\n\n\n\n<p>\u5272\u3068\u6d77\u5916\u306e\u30d5\u30a9\u30fc\u30e9\u30e0\u3060\u3068 &#8220;RSO \u3092\u7121\u52b9\u306b\u3057\u305f\u3089\u826f\u304f\u306a\u3063\u305f\uff01&#8221; \u7684\u306a\u306e\u306f\u3061\u3089\u307b\u3089\u5831\u544a\u3055\u308c\u3066\u3044\u308b\u307f\u305f\u3044\u3067\u3059\u306d\u3002\u3002\u4fee\u6b63\u3055\u308c\u305f\u3089\u3044\u3044\u306a\u3068\u307c\u3093\u3084\u308a\u601d\u3063\u3066\u307e\u3059\u3002\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/social.technet.microsoft.com\/Forums\/en-US\/8aa6a88c-ffc8-4ede-abfc-42e746ff5996\/windows-server-2019-hyperv-guest-on-windows-server-2019-hyperv-host?forum=winserverhyperv\">https:\/\/social.technet.microsoft.com\/Forums\/en-US\/8aa6a88c-ffc8-4ede-abfc-42e746ff5996\/windows-server-2019-hyperv-guest-on-windows-server-2019-hyperv-host?forum=winserverhyperv<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.doitfixit.com\/blog\/2020\/01\/15\/slow-network-speed-with-hyper-v-virtual-machines-on-windows-server-server-2019\/\">https:\/\/www.doitfixit.com\/blog\/2020\/01\/15\/slow-network-speed-with-hyper-v-virtual-machines-on-windows-server-server-2019\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3069\u3046\u3082\u307f\u3080\u3089\u3067\u3059\u3002\u6700\u8fd1\u6885\u96e8\u306b\u5165\u3063\u305f\u306e\u304b\u590f\u306b\u5165\u3063\u305f\u306e\u304b\u3001\u8272\u3005\u30d1\u30c3\u3068\u3057\u306a\u304f\u3066\u56f0\u308b\u65e5\u3005\u304c\u7d9a\u3044\u3066\u304a\u308a\u307e\u3059\u3002 \u5148\u65e5 Windows Server 2019 (\u3082\u3057\u304f\u306f Hyper-V Server 2019) \u3092 Jumbo Fr [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,1],"tags":[],"class_list":["post-5879","post","type-post","status-publish","format-standard","hentry","category-windows","category-other"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts\/5879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/comments?post=5879"}],"version-history":[{"count":0,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts\/5879\/revisions"}],"wp:attachment":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/media?parent=5879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/categories?post=5879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/tags?post=5879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}