hiroportation

ITの話だったり、音楽の話、便利なガジェットの話題などを発信しています

2021年 SRv6 入門

SRv6について2021年までに取集した情報を整理して入門書を作りました。 とりあえずSRv6に触れたい方向けの内容になっています。


1. SRv6 概要


1.1. SRv6 とは

SRv6とは「Segment Routing over IPv6」の略でセグメントルーティングとIPv6を合わしたNW技術になります。 2017年あたりから多くの https://www.janog.gr.jp/meeting/janog43/program/srv6 SRv6を理解するには主に「セグメントルーティング」と「IPv6」を理解する必要があります。


1.1.1. セグメントルーティング

セグメントルーティングとはソース情報(送信元)をベースとして、トラフィックを細かく管理(トラフィックエンジニアリング)することができるネットワークプロトコルです。

ざっくりとしたイメージは以下となります。

image.png

セグメントルーティングでは、ソースから様々なトラフィック制御(ルーティング、QoSなど)が可能になるため、アプリケーションなどと連携するSDNがとても容易になります。


1.1.2. IPv6

IPv6は128ビット長のパケットで 340×1兆×1兆×1兆 のIP割り当てが可能です。(IPv4は43億ほど) 事実上世界中で一意に使われても枯渇することがないとされています。

既に大規模DCやインターネット回線など広く使われており、最近では一般コンシューマ向けのIPv6に対応したモデムやルータなどもよく見かけるようになりました。

http://www.worldipv6launch.org/measurements/


1.2. どういうところで使われているのか?

既に多くのITインフラで利用がはじまってます。

  • データセンタ
  • 固定回線
  • キャリア回線(モバイル回線)

など IPv6には「拡張ヘッダー」と呼ばれる自由に機能を詰め込めるスペースがあり、これを使用することにより SRv6 が実現します。 そのため、プラットフォームがIPv6に対応していればSRv6を利用することができ、導入し易いようです。


1.3. 今どういう状況?

新しい技術でまだまだ発展途上だが、すでに採用済み、検討中の企業は多数。


2. SRv6 詳細

詳細については以下


2.1. SRv6の仕組み

SRv6の主な仕組み

  • SRv6は下記の通り、IPv6ヘッダー内の拡張ヘッダーにセグメントルーティングヘッダー(SRH)を付加することによって実現されている

image.png https://www.rfc-editor.org/rfc/rfc8754.html

  • Segment List について

www.slideshare.net

p23~p27参照


2.2. SRv6 Function

SRv6対応ルータでは様々なコントロールが可能です。

https://tools.ietf.org/html/draft-ietf-spring-srv6-network-programming-28#page-10

function 説明
End Endpoint function
The SRv6 instantiation of a Prefix SID [RFC8402]
End.X Endpoint with Layer-3 cross-connect
The SRv6 instantiation of an Adj SID [RFC8402]
End.T Endpoint with specific IPv6 table lookup
End.DX6 Endpoint with decapsulation and IPv6 cross-connect
Te.g. IPv6-L3VPN (equivalent to per-CE VPN label)
End.DX4 Endpoint with decaps and IPv4 cross-connect
Te.g. IPv4-L3VPN (equivalent to per-CE VPN label)
End.DT6 Endpoint with decapsulation and IPv6 table lookup
Te.g. IPv6-L3VPN (equivalent to per-VRF VPN label)
End.DT4 Endpoint with decapsulation and IPv4 table lookup
Te.g. IPv4-L3VPN (equivalent to per-VRF VPN label)
End.DT46 Endpoint with decapsulation and IP table lookup
Te.g. IP-L3VPN (equivalent to per-VRF VPN label)
End.DX2 Endpoint with decapsulation and L2 cross-connect
Te.g. L2VPN use-case
End.DX2V Endpoint with decaps and VLAN L2 table lookup
Te.g. EVPN Flexible cross-connect use-case
End.DT2U Endpoint with decaps and unicast MAC L2 table lookup
Te.g. EVPN Bridging unicast use-case
End.DT2M Endpoint with decapsulation and L2 table flooding
Te.g. EVPN Bridging BUM use-case with ESI filtering
End.B6.Encaps Endpoint bound to an SRv6 policy with encapsulation
TSRv6 instantiation of a Binding SID
End.B6.Encaps.Red End.B6.Encaps with reduced SRH
TSRv6 instantiation of a Binding SID
End.BM Endpoint bound to an SR-MPLS Policy
TSRv6 instantiation of an SR-MPLS Binding SID


2.3. SRv6 Control Plane

SRv6は宛先(終端)にアクセスするのに、宛先までのセグメントIDと各セグメントID間のIPv6ルーティングによって宛先に到達することができます。 あらかじめトポロジ全体のセグメントIDがわかっていれば良いですが、手動で全パターンを終端に設定していくのは大変です。 通常のIPルーティングと同じでSRv6にもコントロールプレーンがいくつか使えます。

<手動でやる場合の絵を書く>

<自動でやることのメリットを絵にする>


2.4. Flex-Algo (Flexible Algorithm)

セグメントIDをグループ化することによって、各グループに応じたルーティングが可能になります。グループ化すると広報するセグメントIDはグループ内でのやりとりになります。 またこのようなに理論的にネットワーク分割することをネットワークスライシングと呼びます。

f:id:thelarklife1021:20210430053501p:plain
ネットワークスラインシング

https://5g-innovation.com/report/networkslicing-2019-event-report2/


2.5. TI-LFA

障害発生時の高速経路切替(ここではlocal repairを想定)のことで、SRではTI-LFA(Topology Independent – Loop Free Alternate)という機能でこれを実現しています。


2.6. SRv6 OAM (Operation, Administration, and Maintenance)

ping や traceroute といったトラブルシュートなどに役立てるためのSRv6機能のこと。


2.6. 今後のSRv6

現在 SRv6 は主に以下の方法でハンズオンが可能


3.1. iproute2

iproute2 はLinuxで使えるネットワークユーティリティです。 実は日頃使っているipコマンドのことで、既にSRv6を設定するために必要な機能が備わっています。

root@linux:~# ip -6 route help
Usage: ip route { list | flush } SELECTOR
       ip route save SELECTOR

(~ snip ~)

ENCAPTYPE := [ mpls | ip | ip6 | seg6 | seg6local ]
ENCAPHDR := [ MPLSLABEL | SEG6HDR ]
SEG6HDR := [ mode SEGMODE ] segs ADDR1,ADDRi,ADDRn [hmac HMACKEYID] [cleanup]
SEGMODE := [ encap | inline ]
ROUTE_GET_FLAGS := [ fibmatch ]

設定には以下のように全てまたは特定のethのカーネル設定が必要になります。

sysctl net.ipv6.conf.all.forwarding=1
sysctl net.ipv6.conf.all.seg6_enabled=1
sysctl net.ipv6.conf.default.seg6_enabled=1
sysctl net.ipv6.conf.eth1.seg6_enabled=1

# 以下コマンドで事後確認
sysctl -a | grep seg6
echo 100 localsid1 >> /etc/iproute2/rt_tables
echo 200 localsid2 >> /etc/iproute2/rt_tables
echo 300 localsid3 >> /etc/iproute2/rt_tables
echo 400 localsid4 >> /etc/iproute2/rt_tables

以下設定で encap、transit、decap それぞれが可能

ip -6 route add 2001:db10::/64 encap seg6 mode encap segs 2001:db2::2,2001:db5::2,2001:db8::2 dev eth1 table localsid1
ip -6 route add 2001:db2::2/128 encap seg6local action End dev eth1
ip -6 route add 2001:db2::1/128 encap seg6local action End.DX6 nh6 2001:db1::1 dev eth1 table localsid1

またコマンド変数の意味は以下になります また、Namespaceと組み合わせて使用することも可能です Namespaceと組み合わせれば一台のホスト上で仮想的に複数台のノードの定義と紐付けが可能になります

image.png


【ハンズオンツール】

以下githubハンズオンツール(構築/デモ手順はリポジトリ内にあります) https://github.com/vn-cdr/srv6-netns-demo

git clone <git repository>
cd srv6-netns-demo
vagrant up
vagrant ssh
sudo su -
bash scripts/01_create-namespaces.sh
bash scripts/02_create-quagga.sh
bash scripts/03_create-ospf6.sh
bash scripts/04_create_srv6.sh

パケットキャプチャで取得した際に下記の通りSRv6 Headerが確認できます f:id:thelarklife1021:20210430112332p:plain


3.2. VPP

FD.ioプロジェクトで管理されているOSS仮想ルータ。 様々な機能を有している仮想ルータですが、RAMを大きく使用するため、個人にて検証する際には注意。 https://docs.fd.io/vpp/17.07/srv6_doc.html


3.3. CML (Cisco Model Lab)

CMLCiscoの様々なルータを自由に構成して検証できる、サンドボックスツールです。 CMLを使えば Nexus-9000v や XRv-9000、ASAv など個人では大きな壁であった、NW-OS使用までの環境を瞬時に用意できます。 https://developer.cisco.com/docs/modeling-labs/#!faq/faq---cisco-modeling-labs-v2x

XRv9000 では利用できるバージョンが既にSRv6に対応しており、個人でSRv6環境を構築できます。

RP/0/RP0/CPU0:xrkv-0#show segment-routing srv6 manager
Fri Apr 30 01:23:03.725 UTC
Parameters:
  SRv6 Enabled: Yes
  Encapsulation:
    Source Address:
      Configured: 2001:db2::1
      Default: 2001:db22::2
    Hop-Limit: 255
    Traffic-class: Default
  Config Op Mode: SRv6
    SID Base Blocks:
        2001:db2:2200::/40
Summary:
  Number of Locators: 1 (1 operational)
  Number of SIDs: 2 (0 stale)
  Max SIDs: 8000
  OOR:
    Thresholds: Green 400, Warning 240
    Status: Resource Available (0 cleared, 0 warnings, 0 full)
Platform Capabilities:
  SRv6: Yes
  TILFA: Yes
  Microloop-Avoidance: Yes
  End Functions:
    End (PSP)
    End.X (PSP)
    End.DX4
    End.DT4
    End.OP
    uN (PSP/USD)
    uA (PSP/USD)
    uDT6
    uDT4
  Transit Functions:
    T
    T.Insert.Red
    T.Encaps.Red
  Security rules:
    SEC-1
    SEC-2
    SEC-3
  Counters:
    CNT-1
    CNT-3
  Signaled parameters:
    Max-SL          : 3
    Max-End-Pop-SRH : 3
    Max-T-Insert    : 3 sids
    Max-T-Encap     : 4 sids
    Max-End-D       : 4
  Configurable parameters (under srv6):
    Encapsulation:
      Source Address: Yes
      Hop-Limit     : value=Yes, propagate=No
      Traffic-class : value=Yes, propagate=Yes
  Max SIDs: 8000
  SID Holdtime: 30 mins
RP/0/RP0/CPU0:xrkv-0#show segment-routing srv6 ?
  locator  Locator information
  manager  SID Manager information
  sid      SID information across all locators(cisco-support)
  trace    Show trace data for SID Manager
RP/0/RP0/CPU0:xrkv-0#

XRv9000を使用したSRv6-EVPNは近日中に検証したいと思います。

以上

最近買ったもの紹介 2021/01~03 ( roborock S6 MaxV / Intel用PCパーツ )

2021/01~03に購入したガジェットを紹介します。

1. お掃除ロボット

コロナ下でお家時間が増えてきたのでついにこれを購入

f:id:thelarklife1021:20210425035310p:plain
roborock

3ヶ月ほど使った roborock S6 MaxV の感想

長所 詳細
拭くと吸うの同時は最高 同時はうれしい
電池の持ちが良い おそらく100平米分は持ちます
ハマることが少ない じゅうたんや余程複雑な地形でなければハマったことがありません
段差からはまず落ちない 3ヶ月の間で段差、階段から落ち事はありません
掃除スピードが早い お掃除ルートの複雑さにもよりますが30平米くらいなら30分以内でやってくれます
マシンの掃除は楽 マシンの掃除はダストボックスとモップを簡単にお掃除するだけでOKだと思います
1分でできます
部屋のマッピング能力は高い 最初の掃除でほとんどの部屋を把握してました
強引に場所を移してもすぐに周りを把握してくれるのでとても使い勝手が良い
複数階の掃除も可能 移動させてもすぐに周りを把握してくれるので複数階の掃除も簡単です
リモート制御可能 wifi環境があればお掃除開始から終了までリモートで制御でき、進捗をモニタリングできます
監視、留守番用途でも使えるらしい 玄関前に置いておけば常にリモートで監視できます
安い 掃除ロボットと比べても安い方だと思いますが製品自体はハード、ソフト共にとてもしっかりとしています
短所 詳細
じゅうたんに弱い 引きずってしまったりハマってしまったりするのでそこは侵入禁止にするか、じゅうたんをどかす必要があります
ハマると自力で出てこれない 一度ハマってしまうと、自力での復帰はほとんどの場合できませんでした
たまに掃除再開させて復帰してくれることもあります

時短にはとても良い製品だと思いました。特に毎日掃除される方は1日の過ごし方が変わると思います。 じゅうたん対策だけしておけば、ほとんどハマることはないかと思います。

2. PCパーツ

2021初めには自作PCAMD->Intelに変えました。理由としては一部業務用のソフトウェアが動かなかったためです。やはり汎用機にはIntelですね。
ファンは導入しやすいNocture の空冷ファンを購入しています。

f:id:thelarklife1021:20210425044811p:plain

Azure リソース管理スコープ

はじめに

Azure のリソース管理がAWSと異なり混乱するので整理しました。

スコープ

f:id:thelarklife1021:20210109192303p:plain

docs.microsoft.com

上位レベルの設定が下位レベルに継承されます。 サブスクリプションにポリシーを適用すると、そのポリシーはサブスクリプション内のすべてのリソース グループとリソースに適用されます。

管理項目 説明
管理グループ AWSでいうOrganizationのようなもの
サブスクリプション Azureの契約、課金の単位。一般的にはユーザ毎に作るが、複数のユーザが一つのサブスクリプションになることもある(共同で支払い)
リソースグループ リソースのコンテナ。リソースグループ自体はリージョン毎に配置する。
リソース 仮想マシンやデータベース、仮想ネットワークなど、Azure環境上に構築する各サービス。

以上

Terraform で AWS、Azure、GCP にアクセスする

はじめに

今後TerraformでIaCできるようにしたいので、まずは各クラウドにアクセスできるようにしたい。 各社専用のユーザを作成するが、全く手順が異なりましたのでまとめたいと思います。

AWSにアクセス

GUIで1プロセスで作成できるため、個人的にAWSが一番簡単です。

認証に必要なパラメータ

export AWS_ACCESS_KEY_ID="<aws_access_key_id>"
export AWS_SECRET_ACCESS_KEY="<aws_secret_access_key>"

手順

1.IAMにてユーザを作成する

  • ユーザタブへ移動
  • ユーザ作成を押下 f:id:thelarklife1021:20210109121613p:plain

2.ユーザ設定

  • ユーザ名設定
  • アクセス種類から「プログラムによるアクセス」をチェック f:id:thelarklife1021:20210109121753p:plain

3.ユーザの権限設定

  • アクセス許可の設定から「既存ポリシーを直接アタッチ」を選択
  • ポリシー一覧からポリシーを選択(AdministratiorAccessを選べば全てのサービスのオーナー権限を設定できます) f:id:thelarklife1021:20210109123941p:plain

4.タグ設定(オプション)

  • タグを設定することによりユーザを整理しやすくします
  • 最後に設定確認をして完了 f:id:thelarklife1021:20210109123914p:plain

Azureにアクセス

認証に必要なパラメータ

export ARM_SUBSCRIPTION_ID="<arm_subscription_id>"
export ARM_CLIENT_ID="<arm_client_id>"
export ARM_CLIENT_SECRET="<arm_client_secret>"
export ARM_TENANT_ID="<arm_tenant_id>"

Azureでは以下の通りARMがsubscription_id毎ににリソースIDを定義しているため、AWSより必要なパラメータが多い /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

手順(GUI)

手順はGUIでもCLIでも可能ですがCLIでも比較的楽にできますのでどちらも載せておきます。

docs.microsoft.com

  1. Azure Active Directoryから「アプリ登録」タブを押下
  2. 新規ユーザ作成
  3. 情報を入力すれば完了

手順(CLI)

CLIで専用ユーザを作成する。AzureではAPI用ユーザのことを「サービスプリンシパルと呼びます。 また、Azureの場合は下記の通りADサービスのコマンドを使用します。

docs.microsoft.com

1.azure cliをインストール

Azure CLIを使用することになるため、Azureダッシュボード上にある「Cloud Shell」を使う。

f:id:thelarklife1021:20210109125623p:plain

2.subscription_idを検索

$ az account show --query "{subscriptionId:id, tenantId:tenantId}"
{
  "subscriptionId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenantId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

3.subscription_idのセット

$ SUBSCRIPTION_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$ az account set --subscription="SUBSCRIPTION_ID"

4.サービスプリンシパルを作成

roleオプションにて"Contributor"を設定することによって

$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"
Creating a role assignment under the scope of "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  Retrying role assignment creation: 1/36
{
  "appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "displayName": "azure-cli-YYYY-MM-DD-hh-mm-ss",
  "name": "http://azure-cli-YYYY-MM-DD-hh-mm-ss",
  "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

GCPにアクセス

GCPGUIで設定できますが、初回の場合ユーザー設定とは別にサービスアカウント権限を有効にする必要があります。 GCPではAPI用のユーザを「サービスアカウント」と呼びます。

認証に必要なパラメータ

GCPは他と違いファイルをアカウント情報が入ったjsonファイルを用意することになります

<account名>.json

手順

1.サービスアカウントの作成

  • 「IAMと管理」からサービスタブを選択
  • 「サービスアカウントの作成」を押下
  • サービスアカウント名の設定や権限の設定を入力し進めていく
  • 完了を押下 f:id:thelarklife1021:20210109135014p:plain

2.サービスアカウントのアカウント情報を取得

  • サービスアカウント一覧からの作成したアカウントの行の操作 列を選択して「鍵を作成」を選択する
  • そうするとjsonファイルがダウンロードされる f:id:thelarklife1021:20210109140400p:plain

3.サービスアカウント権限の有効化

  • 使用するサービスアカウントのAPIを有効化します

f:id:thelarklife1021:20210109135721p:plain

※1.でサービスアカウントの権限設定をしただけでは権限は有効になりません

以上

AMD CPUで IOS XRv9000 が起動しない問題と対処

経緯

Cisco CML2.1にてXRv9000を使おうとしたところ起動がいつまで経っても終わらず、以下の状態で止まってしまい XRv9000 が使えませんでした。 CMLで提供されている他のNetworkOSについては問題なく使用できました。

Running INIT process in Crash Kernel
/etc/init.d/pd-functions: line 743: on_baremetal: command not found
/etc/init.d/pd-functions: line 564: on_baremetal: command not found
/etc/init.d/pd-functions: line 571: is_xrv9k_aws: command not found
/etc/init.d/pd-functions: line 673: blkid: command not found
/init: line 119: get_board_type: command not found
[    1.048246] device-mapper: ioctl: 4.27.0-ioctl (2013-10-30) initialised: dm-devel@redhat.com
[    1.051102] insmod (724) used greatest stack depth: 14120 bytes left
[    1.060529] insmod (729) used greatest stack depth: 14072 bytes left
[    1.080373] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
[    1.095135] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
[    1.122734] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10
[    1.139100] blk-mq: CPU -> queue map
[    1.140233]   CPU 0 -> Queue 0
[    1.141922]  vda: vda1 vda2 vda3 vda4
[    1.168338] insmod (758) used greatest stack depth: 12248 bytes left
[    1.171547] random: lvm urandom read with 99 bits of entropy available
[    1.179923] random: nonblocking pool is initialized
[    1.190228] bio: create slab <bio-1> at 1
[    1.201811] EXT2-fs (dm-2): error: couldn't mount because of unsupported optional features (244)
[    1.214340] EXT4-fs (dm-2): recovery complete
[    1.215928] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)

下記の通り同じ事象の方を見つけました。 learningnetwork.cisco.com

原因

どうやら CPUがAMD(Ryzen)なのが根本原因のようで、Ciscoによれば検証はIntel製のサーバでしているため、AMDは検証不足だそうです。 (CIscoさんはAMD対応しているといってますが・・・)

対処

IntelCPUを使用するのが一番確実ですが、AMDでも何とか動きましたので紹介したいと思います。

  1. コンソールにてsysadminでログイン
  2. sudo vi /etc/modprobe.d/kvm.conf にて編集
  3. options kvm_amd nested=1 をコメントイン
  4. reboot

CML のUIにてXRv9000を配置し直して起動するとプロンプト

ですが、うまくいかない場合もあったり、とても不安定のためIntel CPUを使うことを推奨します。

2021/1では一般用CPUですと、AMDの方がコアが多く、パフォーマンス的に優れているため別にAMDで使える方法がみつかりましたら更新したいと思います。

VPNの種別や仕様をjson化してまとめてみる

はじめに

VPN には IPsec-VPN や インターネットVPN など 様々なタイプや仕様があるため、全体を整理し、仕様も含めたドキュメントデータベースを作成してみようかと思います。

情報整理

どういったサイト間でVPNを使うのか?

・インターネット経由で通信する場合(危険でオープンなネットワーク)
 -> インターネットVPN
 ・対向先とプライベートネットワーク(L2)を設けた上で様々な作業を実施したい(SSH/HTTPS)
  -> IPsec-VPN
   ・ESP + トンネルモードをつかう
    -> 事前準備:両方のVPNにPSKを設定
    -> 第一フェーズ:IKE SAに必要な情報を交換
     ・共有鍵 Diffie-Hellmanで共有鍵を安全に交換
     ・SAに使う暗号アルゴリズムを提案
     ・SAに使うハッシュアルゴリズムを提案
     ・PSKと相手のIPでハッシュ値作成
      -> お互いの証明が可能になる
       ・暗号アルゴリズム、ハッシュアルゴリズムに対する返答を返す
    -> 第二フェーズ:相互でコネクションするためにSAを上り下り二つ作成する
     ・SAのための暗号アルゴリズム決定
     ・SAのためのハッシュアルゴリズム決定
 ・対向先にHTTP通信(80/443)のみで安全にアクセスしたい
  -> SSL-VPN
   ・ ブラウザアクセスのみをする場合
    -> リバースプロキシ方式
     ・経由するリバースプロキシサーバが必要
     ・リバースプロキシにてURLを変換する
   ・ブラウザアクセスだけでなく、様々なアプリケーションにてアクセスを行う場合
    -> ポートフォワーディング方式
     ・踏み台となる(経由する)サーバが必要
     ・踏み台サーバにて静的なポート変換が行われる
    -> L2フォワーディング方式
     ・クライアント側は送信するパケットをHTTP(L7)でカプセル化して通信するため、専用のクライアントソフトが必要になる
     ・クライアントはアクセス先からダウンロードしたソフトをインストールする必要がある
     ・クライアントソフトに対応したクライアントが必要
・専用回線を使って通信する場合(クローズドで安全なネットワーク)
 -> キャリア回線を使う(docomo/KDDI/Softbank)
  -> IP-VPN(L3VPN)
   ・MPLS
   ・SRMPLS?/SRv6?
 -> 有料VPNサービスを使う(Arcstar Universal One)
  -> 広域イーサーネット(L2VPN)
   ・EVPN
   ・SRv6?

整理した内容をjson

{ 
  "インターネット経由で通信する場合(危険でオープンなネットワーク)" :  {
    "インターネットVPN" : {
      "対向先とプライベートネットワーク(L2)を設けた上で様々な作業を実施したい(SSH/HTTPS)" : {
        "IPsec-VPN" : {
          "ESP + トンネルモードをつかう" : {
             "事前準備":"両方のVPNにPSKを設定",
             "第一フェーズ": {
               "IKE SAに必要な情報を交換" : [
                    "共有鍵 Diffie-Hellmanで共有鍵を安全に交換",
                    "SAに使う暗号アルゴリズムを提案",
                    "SAに使うハッシュアルゴリズムを提案",
                    "PSKと相手のIPでハッシュ値作成" : { "お互いの証明が可能になる" : "暗号アルゴリズム、ハッシュアルゴリズムに対する返答を返す" }
                 ]
             }
             "第二フェーズ":{
               "相互でコネクションするためにSAを上り下り二つ作成する" : [ 
                    "SAのための暗号アルゴリズム決定",
                    "SAのためのハッシュアルゴリズム決定"
                 ]
          }}}}}
    "対向先にHTTP通信(80/443)のみで安全にアクセスしたい" : {
      "SSL-VPN" : {
        "ブラウザアクセスのみをする場合" : {
           "リバースプロキシ方式" : [ 
                "経由するリバースプロキシサーバが必要",
                "リバースプロキシにてURLを変換する"
             ]
           }
           "ブラウザアクセスだけでなく、様々なアプリケーションにてアクセスを行う場合" : {
             "ポートフォワーディング方式" : [
                 "踏み台となる(経由する)サーバが必要",
                 "踏み台サーバにて静的なポート変換が行われる"
               ]
             "L2フォワーディング方式" : [
                 "クライアント側は送信するパケットをHTTP(L7)でカプセル化して通信するため、専用のクライアントソフトが必要になる",
                 "クライアントはアクセス先からダウンロードしたソフトをインストールする必要がある",
                 "クライアントソフトに対応したクライアントが必要"
               ]
  "専用回線を使って通信する場合(クローズドで安全なネットワーク)" : {
    "キャリア回線を使う(docomo/KDDI/Softbank)" : {
      "IP-VPN(L3VPN)" : [
          "MPLS",
          "SRMPLS",
          "SRv6"
       ]
     }
  }
  "有料VPNサービスを使う(Arcstar Universal One)" : {
    "広域イーサーネット(L2VPN)" :  [
        "EVPN",
        "SRMPLS",
        "SRv6"
      ]
    }
  }
}

AMD-V/RVI でのVM起動ができなくなった問題の対処

経緯

Windows10にてNested VMを使用するためにVMware Workstation Player 16にて以下仮想化エンジン設定を行い起動した。

f:id:thelarklife1021:20210102133521p:plain

そうすると仮想 AMD-V/RVIはこのプラットフォームではサポートされていません。というエラーが出力され、VMが起動できなかった。以前にも起動したことがあるので、余計な設定が起因しているかと思い調べた。

f:id:thelarklife1021:20210102133630p:plain

原因と対処

原因は Windowsの機能 の Windows ハイパーバイザー プラットフォーム にチェックが入っていたからでした。 以下通りチェックを外して再起動を行なったところ、問題なく起動できました。

f:id:thelarklife1021:20210102134041p:plain

以上