
- TOP
- ã¿ã°äžèЧ
- ããŒããŠã§ã¢
ããŒããŠã§ã¢
ã€ãã³ã
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã
ãã¬ãžã³
æè¡ããã°
Containerlab ãš Juniper ã®ç¡åä»®æ³ã€ã¡ãŒãž vJunos ã䜿çšããããŒã¿ã»ã³ã¿ãŒãããã¯ãŒã¯ïŒNWïŒã®å®çªã¢ãŒããã¯ãã£ãLeaf-Spine æ§æãããŒãããæ§ç¯ãããã³ãºãªã³èšäºã§ããeBGP ã«ãã Underlay æ§æãç®åãã«ãEVPN/VXLAN ã«ããããã³ã L2 æ¡åŒµãESI-LAG ãçšããåé·åãVRF Route Leaking ã«ããã€ã³ã¿ãŒãããæ¥ç¶ã²ãŒããŠã§ã€æš¡æ¬ãŸã§ãã¯ã©ãŠã NW ã®äžæ žæè¡ãã²ãšéãäœéšã§ããŸããããŒããŠã§ã¢äžèŠã»ç¡åã€ã¡ãŒãžã®ã¿ã§åãæé ãšå
šèšå®äŸãæ²èŒããŠããŸãã ã¯ããã« åæç¥è å
šäœå æ§ç¯ããããããž ãã€ã³ã é²ãæ¹ åæãšããç°å¢ vJunos ã€ã¡ãŒãžã®æºåïŒvrnetlab ã§ã³ã³ããåïŒ 1. ç°å¢æ§ç¯ â Containerlab ã§æ©åšãèµ·å 1.1 ããããžå®çŸ©ïŒclos-network.clab.ymlïŒ 1.2 ããã〠â
å®æç¶æ
ãã§ãã¯ãªã¹ã 2. Underlay ã®æ§ç¯ â eBGP ã§ Loopback å士ãçéããã 2.1 IP ã¢ãã¬ã¹èšèš 2.2 åããŒãã® IP / Loopback èšå® 2.3 eBGP ã®èšå® ãã€ã³ã spine1 leaf1-1 2.4 åäœç¢ºèª â
å®æç¶æ
ãã§ãã¯ãªã¹ã 3. Overlay ã®æ§ç¯ â EVPN/VXLAN 3.1 ã¢ãŒããã¯ãã£ã®æŽç 3.2 C-Plane: iBGP EVPN ã㢠leaf2-1 rr1 hv1ïŒFRRïŒ ç¢ºèª 3.3 D-Plane: VXLAN ã»ã°ã¡ã³ããäœã hv1ïŒLinux Kernel + FRR leaf2-1 bm1 åäœç¢ºèª 3.4 EVPN MultihomingïŒESI-LAGïŒã§ BM ã®æ¥ç¶ãåé·å æ¹é leaf2-1ïŒæ¢åèšå®ã®çœ®ãæãïŒ leaf2-2ïŒæ°èŠïŒ bm1ïŒLinux BondïŒ åæè©Šéš â
å®æç¶æ
ãã§ãã¯ãªã¹ãïŒOverlayå
šäœïŒ 4. Border Leaf ãš Internet Gateway 4.1 leaf3-1ïŒBorder Leaf ãšã㊠VTEP åïŒ 4.2 inet-gw1: å
±éã®äžæºåïŒI/F + ASNïŒ 4.3 inet-gw1: VRF ãš Route Leaking 4.4 inet-gw1: å€éš ISP ãšã® eBGP 4.5 isp1 ïŒå€éš ISP æš¡æ¬ïŒ 4.6 bm1 ïŒGlobal IP ä»äžãšããã©ã«ãã²ãŒããŠã§ã€ïŒ 4.7 åäœç¢ºèª â
å®æç¶æ
ãã§ãã¯ãªã¹ãïŒBorder GWïŒ å
šäœã®å®æç¢ºèª ããŸã: ããã£ããèŠããšããïŒTroubleshootingïŒ Junos åŽã§äœãèµ·ããŠãããèŠãã³ãã³ã FRR åŽ ãŸãšã ã¯ããã« ããã«ã¡ã¯ãNTTãã³ã¢ããžãã¹ã®ã¯ã©ãŠãã SDPFã¯ã©ãŠã/ãµãŒã㌠ïŒä»¥éãSDPF ã¯ã©ãŠãïŒã®å
補éçºã«åŸäºããŠããå 岡åæãšç³ããŸãã ç§ãäž»ã«æ
åœããŠããã®ã¯ãESIïŒElastic Service InfrastructureïŒãšããåç§°ã®ãã¯ã©ãŠãã®NWãªãŒã±ã¹ãã¬ãŒã¿ã®éçºã§ããESI ããŒã ã®æ¥åå
容ã«ã€ããŠã¯ã ãã¡ãã®èšäº ã§è©³ãã玹ä»ããŠããŸãã â» æ¬èšäºã§åºãŠããEVPN Multihoming ã®é¢é£çšèªã§ããESIïŒEthernet Segment IdentifierïŒãšã¯å
šãã®å¥ç©ã§ãã çªç¶ã§ãããããŒã¿ã»ã³ã¿ãŒ NW ã®å®çªã¢ãŒããã¯ãã£ã§ãã Leaf-SpineïŒCLOSïŒ ãšããã®äžã§åã EVPN/VXLAN ã¯ãã¯ã©ãŠã NW ã®äžæ žæè¡ã§ããããã宿©ãã·ãã¥ã¬ãŒã¿ããªããã°ããã®æåãèã§çè§£ããã®ã¯å€§å€é£ããã§ããç§èªèº«ãå
¥ç€ŸåœæïŒ2025幎4æïŒã¯ã¯ã©ãŠã NW ã«ã€ããŠã¯å®å
šãªååŠè
ã ã£ãã®ã§ããããã® 1 幎éã§å匷ãããŠããã ãããã®å
šè²ã®äžç«¯ãçè§£ã§ããããã«ãªã£ãŠããŸãããæ¬èšäºãéããŠãç§ãåŸãç¥èŠãå
±æã§ããŸããã幞ãã§ããããŸããŸãªçšèªãåºãŠããŸãããããããå
šãŠè§£èª¬ããã®ã¯äžå¯èœã§ãããããæ°ã«ãªãç¹ã¯é©å®èª¿ã¹ãªããé²ããŠããã ããã°ãšæããŸãã çšèªè§£èª¬ Leaf-Spine ⊠ãµãŒããŒãå容ãããLeafïŒèïŒãã¹ã€ãããšãLeaf å士ãã€ãªããSpineïŒè骚ïŒãã¹ã€ããã® 2 éå±€ã§ãããã¯ãŒã¯ãçµã CLOS ã®å®çªèšèšãã©ã®ãµãŒããŒéãåããããæ°ã§éä¿¡ã§ãã垯åãæšªã«è¶³ããããã®ãç¹é·ã§ããSDPFã¯ã©ãŠãã§ã¯ãSpineã®ããã«äžã®Super SpineãååšããŠããã3 é局㮠CLOS ã«ãªã£ãŠããŸãã EVPN/VXLAN ⊠ç©ççã«é¢ãããµãŒããŒå士ããåã LAN ã«ãããã®ããã«ãã€ãªãä»®æ³ãããã¯ãŒã¯æè¡ã§ããEVPN ãã誰ãã©ãã«ããããã®æ
å ±äº€æïŒå¶åŸ¡ãã¬ãŒã³ïŒãVXLAN ãå®ããŒã¿ã®ãã³ãã«è»¢éïŒããŒã¿ãã¬ãŒã³ïŒãæ
ããŸãã æ¬èšäºã§ã¯ãOSS ã§ãã Containerlab ãš Juniper Networks 瀟㮠vJunos ïŒç¡åã®ä»®æ³ã«ãŒã¿ïŒã¹ã€ããã€ã¡ãŒãžïŒã䜿çšããå
žåç㪠Leaf-Spine æ§æããŒãããçµã¿ç«ãŠãŸããæçµçã«ã¯ä»¥äžãéæããŸãã eBGP ã«ãã Underlay ã®çµè·¯äº€æ iBGP + EVPN Type-2/3 ã«ãã MAC/IP åŠç¿ïŒC-Plane ïŒ å¶åŸ¡ãã¬ãŒã³ïŒ VXLAN ã«ããããã³ãïŒå©çšè
ïŒãã©ãã£ãã¯ã®ã«ãã»ã«åïŒD-Plane ïŒ ããŒã¿ãã¬ãŒã³ïŒ ESI-LAG ã«ãã EVPN MultihomingïŒãµãŒããŒã®è€æ°ã¹ã€ãããžã®åé·æ¥ç¶ïŒ Border Leaf + VRF Route Leaking ïŒä»®æ³ã«ãŒãã£ã³ã°ããŒãã«éã®çµè·¯å
±æïŒã«ããã€ã³ã¿ãŒãããæ¥ç¶ã²ãŒããŠã§ã€æš¡æ¬ ãSDPFã¯ã©ãŠãã® SDN ã³ã³ãããŒã©ã NW ãªãŒã±ã¹ãã¬ãŒã¿ãè£ã§äœãããŠããã®ããããã³ãºãªã³ã§äœéšããã¯ã©ãŠã NW ã®è£åŽãèŠããŠããã ããæ§æã«ãªã£ãŠããŸãã â ïž æ¬èšäºã¯åŠç¿çšã©ãæ§æãåæãšããŠããŸã åäœãããããšãåªå
ããŠãããããæ¬çªèšèšãšã¯ç°ãªãéžæãããŠããç®æãå€ã
ãããŸãïŒäŸ: MTU ããã©ã«ãã®ãŸãŸãBGP èªèšŒãªãããªã©ïŒ åæç¥è æ¬èšäºã®äž»ãªå¯Ÿè±¡èªè
ã¯ã BGP ã®åºæ¬æŠå¿µïŒASã»ãã¢ãªã³ã°ã»çµè·¯åºåïŒãçè§£ããŠãããããŒã¿ã»ã³ã¿ãŒ NW ã® Overlay æè¡ãæãåãããŠåŠã³ããã€ã³ãã©ãšã³ãžãã¢ãåŠç ã§ãã以äžã®ç¥èããããšã¹ã ãŒãºã«é²ããããŸãã åé æåŸ
ããã¬ãã«ã®ç®å® Linux æäœ ã³ãã³ãã©ã€ã³æäœïŒ ip , ping , tcpdump ãªã©ïŒãNetwork Namespace ã®æŠå¿µ TCP/IP åºç€ IP ã¢ãã¬ã¹ã»ãµãããããã¹ã¯ã»ã«ãŒãã£ã³ã°ã®ä»çµã¿ãL2ïŒEthernetïŒãš L3ïŒIPïŒã®éã BGP åºç€ ASïŒAutonomous SystemïŒã»ASNã»eBGP / iBGP ã®åºå¥ãçµè·¯åºåã»ãã¢ãªã³ã°ã®æŠå¿µ Docker åºç€ docker ps / docker pull ãªã©ã®åºæ¬æäœãã³ã³ãããšã€ã¡ãŒãžã®éã åã»ã¯ã·ã§ã³ã«èšããŠãããçšèªè§£èª¬ãããQ&Aãã¯è£è¶³æ
å ±ã§ãããã§ã«ãåç¥ã®æ¹ã¯èªã¿é£ã°ããŠãã ããã å
šäœå æ§ç¯ããããããž æçµçãªãŽãŒã«ã¯ã ç©ççã«ç°ãªãã©ãã¯ã«å容ããã HV1ïŒãã€ããŒãã€ã¶ãŒäžã® VMïŒãš BM1ïŒãã¢ã¡ã¿ã«ãµãŒããŒïŒãåäžã® L2 ãããã¯ãŒã¯äžã§éä¿¡ã§ããããã«ããããã€ã³ã¿ãŒããããžæãããã ç¶æ
ãäœãããšã§ãããããå®çŸããããã«ãUnderlayïŒç©ç IP 転éã®åå°ïŒâ OverlayïŒEVPN/VXLAN ã«ãã L2 延䌞ïŒâ Internet GWïŒVRF Route Leaking ã«ããå€éšæ¥ç¶ïŒã®é ã«ç©ã¿äžããŠãããŸãã äž»ãªç»å Žäººç©ã¯ä»¥äžã®éãã§ãã ããŒã åœ¹å² ASN Loopback spine1 Spine #1 64512 10.255.255.1 spine2 Spine #2 64513 10.255.255.2 leaf1-1 Underlay LeafïŒHV=ãã€ããŒãã€ã¶ãŒåå®¹ïŒ 65000 10.255.255.11 leaf2-1 / leaf2-2 Overlay LeafïŒBM=ãã¢ã¡ã¿ã«ãµãŒããŒå容ãESI-LAG ãã¢æ€èšŒïŒ 65000 10.255.255.21 / .22 leaf3-1 Border LeafïŒInternet GW åå®¹ïŒ 65000 10.255.255.31 rr1 Route ReflectorïŒçµè·¯æ
å ±ãéããŠä»ã«é
ãäžç¶åœ¹ïŒ 65000 10.255.255.101 hv1 ãã€ããŒãã€ã¶ãŒæš¡æ¬ïŒLinux + FRRãVTEPïŒVXLANãã³ãã«ã®ç«¯ç¹ ãæã€ïŒ 65000 10.255.255.201 bm1 ãã¢ã¡ã¿ã«ãµãŒããŒæš¡æ¬ïŒLinuxïŒ â â inet-gw1 Internet Gateway æš¡æ¬ïŒvJunos-routerïŒ 65002 198.51.100.1 isp1 å€éš ISP æš¡æ¬ 65001 192.0.2.1 çšèªè§£èª¬ UnderlayïŒã¢ã³ããŒã¬ã€ïŒ ⊠ç©çã¹ã€ããã»ã«ãŒã¿ãå®éã« IP ãã±ããã転éãããåå°ãã®ãããã¯ãŒã¯å±€ã§ããæ¬èšäºã§ã¯ Leaf-Spine éã® P2P ãªã³ã¯ãš eBGP ãããã«ããããŸãã OverlayïŒãªãŒããŒã¬ã€ïŒ ⊠Underlay ã®äžã«ãè«ççã«éãããä»®æ³ãããã¯ãŒã¯å±€ã§ããæ¬èšäºã§ã¯ VXLAN ãããŒã¿ã®ã«ãã»ã«åïŒD-PlaneïŒãEVPN ãçµè·¯æ
å ±ã®äº€æïŒC-PlaneïŒãæ
ããããã³ãã® L2 ã»ã°ã¡ã³ããç©ççã«é¢ããããŒãéãžå»¶äŒžããŸããUnderlay ããéè·¯ããªã Overlay ã¯ãå®
é
䟿ãã®ãããªã€ã¡ãŒãžã§ãã ãã€ã³ã Spine ããšã« ASN ãåãã ïŒ64512 / 64513ïŒãLeaf åŽã¯ multipath multiple-as ã§ Spine 2 å°ãžã® ECMPïŒEqual-Cost Multi-PathïŒãæå¹ã«ããŠããŸãããã®èšå®ã«ãããé害çºçæã¯ãã¹ããã¹åéžå®ãªãã§æ®åãã¹ã«åãæ¿ãããŸãã Leaf ã¯å
šãŠåã ASNïŒ65000ïŒ ã«ããŠå¢èšã³ã¹ããäžããŠããŸãã詳现ã¯ä»¥äžãåç
§ã RR 㯠Underlay ã«ãåå ããŸãããçŽæ¥ããŒã¿ã転éãã Overlay ã®çµè·¯åå°ïŒä»ã®ããŒãã®çµè·¯æ
å ±ããŸãšããŠåé
åžãã圹å²ïŒãæ
åœããŸãã HV åŽã¯ FRR ã§ EVPN ãã¢ãªã³ã°ãä»£çš ããRR ãš EVPN ãã¢ã匵ããŸãïŒå®éã®ã¯ã©ãŠãã§ã¯ SDN ã³ã³ãããŒã©ã HV äžã®çµè·¯ãåéã EVPN ã«å€æããŸãïŒã Q. ãªã Leaf ãå
šãŠåã ASN ã«ããã®ãïŒ RFC 7938 ã¯ãLeaf ããšã«å¥ ASNããæšå¥šããŠããŸãããæ¬æ§æã§ã¯å
±é ASNïŒ65000ïŒãæ¡çšããŸããããã¬ãŒããªãã¯æ¬¡ã®éãã å
±é ASNïŒæ¬èšäºïŒ å¥ ASNïŒRFC 7938 æšå¥šïŒ å¢èšéçš â
Leaf ãã³ãã¬æµçšãSpine åŽã peer-as 1 〠â Leaf ããšã« ASN æ¡çªãSpine åŽãå¢ãããã³ neighbor å¥èšå® AS-PATH ã«ãŒã鲿¢ â as-override ã§ç¡å¹åããã â
ãã®ãŸãŸå¹ã ãã©ãã«ã·ã¥ãŒã â AS-PATH ã« Leaf èå¥åãåºãªã â
ã©ã® Leaf çµç±ã AS-PATH ã§åãã é²ãæ¹ Containerlab ã§æ©åšãèµ·å UnderlayïŒIP / eBGPïŒæ§ç¯ OverlayïŒiBGP EVPN / VXLAN / ESI-LAGïŒæ§ç¯ Border Leaf + Internet GW æ§ç¯ åã»ã¯ã·ã§ã³ã®æ«å°Ÿã«ã¯ãåäœç¢ºèªããšãå®æç¶æ
ãã§ãã¯ãªã¹ãããèŒããŠããŸãã åæãšããç°å¢ 以äžãæºåããŠãã ããã é
ç® å
容 ãã·ã³ã®æšå¥šã¹ãã㯠ã¡ã¢ãª 32GB 以äžïŒvJunos 㯠1 ããŒãããã 4GB ã»ã©äœ¿ããŸãïŒããã£ã¹ã¯ç©ºã容é 20GB ä»¥äž ïŒvJunos ã® qcow2 㯠1 ã€ã¡ãŒãžçŽ 5GBãDocker ãã«ãåŸã¯åèš 10GB è¶
ã«ãªããŸãïŒ ãã¹ã OS LinuxïŒUbuntu 24.04 ã§æ€èšŒïŒãDocker ãåãç°å¢ãªãOK Docker v29.2.0 ã§æ€èšŒ Containerlab v0.75.0 ã§æ€èšŒã ã€ã³ã¹ããŒã«æé vJunos ã€ã¡ãŒãž vJunos-switch-25.4R1.12 , vJunos-router-25.4R1.12 ïŒæé ã¯ä»¥äžïŒ ã²ã¹ã OS 軜é Linux nicolaka/netshoot ïŒHV / BM çšïŒãã³ã³ããå
ã® FRR 㯠v10.6.1 ã§æ€èšŒ ãšãã£ã¿ VS Code + Containerlab æ¡åŒµããããšäŸ¿å© vJunos ã€ã¡ãŒãžã®æºåïŒvrnetlab ã§ã³ã³ããåïŒ vJunos 㯠Juniper ã ç¡åã§å
¬éããŠããä»®æ³ã«ãŒã¿ïŒã¹ã€ããã€ã¡ãŒãž ã§ãããã ãé
åžåœ¢åŒã¯ qcow2ïŒKVM çšïŒãªã®ã§ãContainerlab ã§äœ¿ãã«ã¯ vrnetlab ã§ Docker ã€ã¡ãŒãžã«å€æããå¿
èŠããããŸãã詳现㯠ãã¡ã ãåç
§ã # 1. vrnetlab ãã¯ããŒã³ git clone https://github.com/srl-labs/vrnetlab && cd vrnetlab/juniper # 2. Juniper å
¬åŒãµã€ãããããŠã³ããŒããã qcow2 ã vrnetlab äžã«é
眮 # https://support.juniper.net/support/downloads ã§ vjunos-switch (ãŸã㯠vjunos-router) ã§æ€çŽ¢ cp ~/Downloads/vJunos-router-25.4R1.12.qcow2 vjunosrouter/ cp ~/Downloads/vJunos-switch-25.4R1.12.qcow2 vjunosswitch/ # 3. Docker ã€ã¡ãŒãžããã«ãïŒããããæ°åãããïŒ cd vjunos-switch && make && cd .. cd vjunos-router && make && cd .. # 4. ãã«ãçµæãç¢ºèª docker images | grep vjunos # vrnetlab/juniper_vjunos-switch 25.4R1.12 ... # vrnetlab/juniper_vjunos-router 25.4R1.12 ... # HV / BM çšã€ã¡ãŒãž docker pull nicolaka/netshoot:v0.15 â ïž vJunos ã®ã©ã€ã»ã³ã¹ã«ã€ã㊠vJunos 㯠è©äŸ¡ã»æ€èšŒã»åŠç¿çšéã§ç¡åå©çšå¯èœ ã§ãïŒåçšãµããŒããªãïŒã以äžã®ç¹ã«æ³šæããŠãã ããã æ©èœå¶éã¯ã»ãŒãããŸãããã commit æã« warning: requires 'bgp' license çã®èŠåãåºãŸãã ããã¯ã©ã€ã»ã³ã¹ããŒãæå
¥ããŠããªãã ãã§ãBGP èªäœã¯åé¡ãªãåäœããŸã ïŒæ¬èšäºã®å
šæé ã¯ã©ã€ã»ã³ã¹ãªãã§å®èµ°ã§ããŸãïŒ æ¬çªç°å¢ãåçšç®çã§ã®å©çšã«ã¯æ£èŠã©ã€ã»ã³ã¹ãå¿
èŠã§ãã詳ãã㯠Juniper vJunos ããŒãž ãåç
§ããŠãã ãã 1. ç°å¢æ§ç¯ â Containerlab ã§æ©åšãèµ·å ãã®ç« ã§ã¯ãäžå³ã®ããã« Spine / Leaf / RR / ãµãŒããŒæš¡æ¬ãªã©å
š 11 ããŒãã Containerlab ã§äžæ¬èµ·åããSSH ã§ãã°ã€ã³ã§ããç¶æ
ãç®æããŸãã 1.1 ããããžå®çŸ©ïŒclos-network.clab.ymlïŒ name : clos-network topology : nodes : # --- SPINE --- spine1 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 spine2 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 # --- LEAF --- leaf1-1 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 leaf2-1 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 leaf2-2 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 leaf3-1 : kind : juniper_vjunosswitch image : vrnetlab/juniper_vjunos-switch:25.4R1.12 # --- Route Reflector --- rr1 : kind : juniper_vjunosrouter image : vrnetlab/juniper_vjunos-router:25.4R1.12 # --- HV / BM æš¡æ¬ --- hv1 : kind : linux image : nicolaka/netshoot:v0.15 bm1 : kind : linux image : nicolaka/netshoot:v0.15 # --- Internet Gateway / å€éš ISP æš¡æ¬ --- inet-gw1 : kind : juniper_vjunosrouter image : vrnetlab/juniper_vjunos-router:25.4R1.12 isp1 : kind : juniper_vjunosrouter image : vrnetlab/juniper_vjunos-router:25.4R1.12 links : # Spine <-> Leaf - endpoints : [ "spine1:eth1" , "leaf1-1:eth1" ] - endpoints : [ "spine1:eth2" , "leaf2-1:eth1" ] - endpoints : [ "spine1:eth3" , "leaf2-2:eth1" ] - endpoints : [ "spine1:eth4" , "leaf3-1:eth1" ] - endpoints : [ "spine2:eth1" , "leaf1-1:eth2" ] - endpoints : [ "spine2:eth2" , "leaf2-1:eth2" ] - endpoints : [ "spine2:eth3" , "leaf2-2:eth2" ] - endpoints : [ "spine2:eth4" , "leaf3-1:eth2" ] # Spine <-> RR - endpoints : [ "spine1:eth10" , "rr1:eth1" ] - endpoints : [ "spine2:eth10" , "rr1:eth2" ] # Server / GW - endpoints : [ "leaf1-1:eth3" , "hv1:eth1" ] - endpoints : [ "leaf2-1:eth3" , "bm1:eth1" ] - endpoints : [ "leaf2-2:eth3" , "bm1:eth2" ] - endpoints : [ "leaf3-1:eth3" , "inet-gw1:eth1" ] - endpoints : [ "inet-gw1:eth2" , "isp1:eth1" ] 1.2 ããã〠clab deploy -t clos-network.clab.yml # ããããžã Web UI ã§ç¢ºèªïŒãªã¢ãŒããµãŒããŒã®å Žåã¯ããŒããã©ã¯ãŒãïŒ clab graph -t clos-network.clab.yml # å
šéšå£ããŠããçŽããããªã£ãæã¯ clab destroy -t clos-network.clab.yml ããŒããžã® SSH 㯠ssh admin@clab-clos-network-spine1 ïŒåæãã¹ã¯ãŒã㯠admin@123 ïŒããªããLinux ã³ã³ããïŒhv1 / bm1ïŒã¯ docker exec -it clab-clos-network-hv1 bash ã®ããã«çŽæ¥ã·ã§ã«ã«å
¥ãæ¹ã確å®ã§ãã Containerlabã®VS Codeæ¡åŒµãå
¥ããŠãããšãã³ã³ããããŸãšããŠç®¡çã§ããŠäŸ¿å©ã§ãã Spineã»Leafã»RRã»Inet-GWã»ISPã«ãããŠãããããã以äžã®æé ã§ root ãã¹ã¯ãŒããèšå®ã㊠commit ããŠãããŸããããã¯ä»¥éã®èšå®ãã³ãããããäžã§å¿
é ã®æäœã§ããadmin ãŠãŒã¶ãŒã®ãã¹ã¯ãŒã倿Žã§ã¯ãªãããšã«çæã configure set system root-authentication plain-text-password commit â
å®æç¶æ
ãã§ãã¯ãªã¹ã clab deploy ããšã©ãŒãªãå®äºãã docker ps ã§å
š 11 ããŒãã Up ã«ãªã£ãŠãã ssh admin@clab-clos-network-spine1 ã§ãã°ã€ã³ã§ãã clab graph ã® Web UI ã§ããããžãæ³å®éã衚瀺ããã ãããŸã§ã§ãåé ã®å³ã§ç€ºããå
šããŒããèµ·åããåæ©åšãžãã°ã€ã³ã§ããç¶æ
ã«ãªããŸããããŸã NW èšå®ã¯å
¥ã£ãŠããªãã®ã§ã次ã®ã»ã¯ã·ã§ã³ã§ Underlay ããæ§ç¯ããŠãããŸãã 2. Underlay ã®æ§ç¯ â eBGP ã§ Loopback å士ãçéããã ãã®ç« ã§ã¯ãäžå³ã®ããã«åããŒãã« IP ã¢ãã¬ã¹ãæ¯ããSpine-Leaf éã§ eBGP ã匵ãããšã§ãå
šããŒãã® Loopback å士ãçéã§ããç¶æ
ãç®æããŸãããã®ãäžå°ããåŸã® OverlayïŒEVPN/VXLANïŒã®åå°ã«ãªããŸãã 2.1 IP ã¢ãã¬ã¹èšèš P2P ãªã³ã¯ïŒæ©åšå士ã 1察1 ã§ã€ãªããªã³ã¯ïŒã¯ /30 ïŒIP 2 ååïŒãLoopback 㯠/32 ïŒIP 1 åïŒãSpine åŽã .1 ãLeaf åŽã .2 ã®èŠåã§èšèšããŠããŸãã ãªã³ã¯ Spine åŽ Leaf åŽ spine1 â leaf1-1 10.1.11.1/30 10.1.11.2/30 spine1 â leaf2-1 10.1.21.1/30 10.1.21.2/30 spine1 â leaf2-2 10.1.22.1/30 10.1.22.2/30 spine1 â leaf3-1 10.1.31.1/30 10.1.31.2/30 spine1 â rr1 10.1.101.1/30 10.1.101.2/30 spine2 â * 10.2.x.1/30 10.2.x.2/30ïŒåæ§ïŒ leaf1-1 â hv1 10.11.201.1/30 10.11.201.2/30 2.2 åããŒãã® IP / Loopback èšå® 代衚ãšã㊠spine1, hv1 ãæ²èŒããŸããä»ã®ããŒããåããã¿ãŒã³ïŒIP ã®ã¿å·®ãæ¿ãïŒã spine1 configure set routing-options router-id 10.255.255.1 set interfaces lo0 unit 0 family inet address 10.255.255.1/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.11.1/30 set interfaces ge-0/0/1 unit 0 family inet address 10.1.21.1/30 set interfaces ge-0/0/2 unit 0 family inet address 10.1.22.1/30 set interfaces ge-0/0/3 unit 0 family inet address 10.1.31.1/30 set interfaces ge-0/0/9 unit 0 family inet address 10.1.101.1/30 commit spine2 / leaf1-1 / leaf2-1 / leaf2-2 / leaf3-1 / rr1 ã®ã³ãã³ããéã spine2 configure set routing-options router-id 10.255.255.2 set interfaces lo0 unit 0 family inet address 10.255.255.2/32 set interfaces ge-0/0/0 unit 0 family inet address 10.2.11.1/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.21.1/30 set interfaces ge-0/0/2 unit 0 family inet address 10.2.22.1/30 set interfaces ge-0/0/3 unit 0 family inet address 10.2.31.1/30 set interfaces ge-0/0/9 unit 0 family inet address 10.2.101.1/30 commit leaf1-1 configure set routing-options router-id 10.255.255.11 set interfaces lo0 unit 0 family inet address 10.255.255.11/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.11.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.11.2/30 set interfaces ge-0/0/2 unit 0 family inet address 10.11.201.1/30 commit leaf2-1 configure set routing-options router-id 10.255.255.21 set interfaces lo0 unit 0 family inet address 10.255.255.21/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.21.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.21.2/30 commit leaf2-2 configure set routing-options router-id 10.255.255.22 set interfaces lo0 unit 0 family inet address 10.255.255.22/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.22.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.22.2/30 commit leaf3-1 configure set routing-options router-id 10.255.255.31 set interfaces lo0 unit 0 family inet address 10.255.255.31/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.31.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.31.2/30 commit rr1 configure set routing-options router-id 10.255.255.101 set interfaces lo0 unit 0 family inet address 10.255.255.101/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.101.2/30 set interfaces ge-0/0/1 unit 0 family inet address 10.2.101.2/30 commit hv1 ïŒLinux ãªã®ã§å¥ç©ïŒ # FRR ã®ã€ã³ã¹ããŒã« apk add frr sed -i 's/bgpd=no/bgpd=yes/' /etc/frr/daemons /usr/lib/frr/frrinit.sh start # IP èšå® ip addr add 10.255.255.201/32 dev lo ip addr add 10.11.201.2/30 dev eth1 ip link set eth1 up ip route del default ip route add default via 10.11.201.1 â ïž ip route del default ãå®è¡ãããš management NW çµç±ã® SSH ãåããŸãã以é hv1 ãžã®æäœã¯ docker exec -it clab-clos-network-hv1 bash ã§å
¥ã£ãŠãã ããã çŽçµãªã³ã¯ã§ ping ãéãã° OK ã§ãã 2.3 eBGP ã®èšå® Underlay ã®ç®æšã¯ãå
šããŒãã® Loopback å士ãçéãããããšãããããã§ããã°ãããšã§ Overlay ïŒEVPN/VXLANïŒããã®ãäžå°ãã®äžã«ä¹ããŸããSpine ãš Leaf ã§ eBGPïŒç°ãªã ASN å士㮠BGPïŒã匵ããLoopback çµè·¯ãåºåããŸãã ãã€ã³ã Spine ããšã« ASN ãåãã ïŒ spine1=64512 , spine2=64513 Spine åŽã« as-override ïŒLeaf å
±é ASN æ¹åŒã®ä»£åãšããŠãBGP ã®ãAS-PATHïŒçµè·¯ãéã£ãŠãã ASN ã®å±¥æŽïŒã«åã ASN ããããšã«ãŒããšã¿ãªããŠç Žæ£ãããã«ãŒã«ãåé¿ãããããSpine åŽã§ AS-PATH äžã® Leaf ASN ã Spine èªèº«ã® ASN ã«æžãæããŸã Leaf åŽã« multipath multiple-as ïŒspine1/spine2 ã® ASN ãç°ãªããããäž¡æ¹ã ECMP ãšããŠäœ¿ãããã«å¿
é ECMP æå¹å ïŒ load-balance per-packet ãšããååã§ãããã㯠Junos ã®ã¬ã¬ã·ãŒãªä»æ§ã§ã宿
㯠5-tupleïŒéä¿¡å
/å®å
IPã»ããŒãã»ãããã³ã«ïŒã®ããã·ã¥ã«ãããããŒåäœã®è² è·åæ£ ã§ã åºåçµè·¯ã¯ Loopback ã®ã¿ ïŒ from interface lo0.0 ã§ Loopback ã«çµãããšã§ããªã³ã¯ IP ãåºåãããçµè·¯ãã¹ãããªããŸã commit æã«ä»¥äžã®èŠåãåºãŸãããç¡èŠã㊠OK ã§ãïŒè©³ããã¯ãåæãšããç°å¢ãã®ã©ã€ã»ã³ã¹æ³šèšãåç
§ïŒã warning: requires 'bgp' license commit complete spine1 configure # ECMP æå¹å set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB # çµè·¯åºåããªã·ãŒïŒLoopback + BGP çµè·¯ïŒ set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-BGP from protocol bgp set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-BGP then accept set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-DIRECT then accept # BGPïŒASN 64512ïŒ set routing-options autonomous-system 64512 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY peer-as 65000 set protocols bgp group UNDERLAY as-override # å Leaf / RR ãžã® neighbor set protocols bgp group UNDERLAY neighbor 10.1.11.2 set protocols bgp group UNDERLAY neighbor 10.1.21.2 set protocols bgp group UNDERLAY neighbor 10.1.22.2 set protocols bgp group UNDERLAY neighbor 10.1.31.2 set protocols bgp group UNDERLAY neighbor 10.1.101.2 commit spine2 ã®ã³ãã³ããéã configure set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-BGP from protocol bgp set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-BGP then accept set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALLOW-DIRECT then accept # BGPïŒASN 64513ïŒ set routing-options autonomous-system 64513 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY peer-as 65000 set protocols bgp group UNDERLAY as-override set protocols bgp group UNDERLAY neighbor 10.2.11.2 set protocols bgp group UNDERLAY neighbor 10.2.21.2 set protocols bgp group UNDERLAY neighbor 10.2.22.2 set protocols bgp group UNDERLAY neighbor 10.2.31.2 set protocols bgp group UNDERLAY neighbor 10.2.101.2 commit leaf1-1 leaf1-1 㯠HV1ïŒFRRïŒãçŽæ¥ BGP ãåããªããããHV1 Loopback å®ã® static route ãåºåã«å«ããŸãã configure # ECMP set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB # Loopback + static ãåºå set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT then accept set policy-options policy-statement EXPORT-UNDERLAY term ALL-STATIC from protocol static set policy-options policy-statement EXPORT-UNDERLAY term ALL-STATIC then accept # BGPïŒmultiple-as ã¯å¿
é ïŒ set routing-options autonomous-system 65000 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath multiple-as set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY neighbor 10.1.11.1 peer-as 64512 set protocols bgp group UNDERLAY neighbor 10.2.11.1 peer-as 64513 # HV1 Loopback ãžã® static route set routing-options static route 10.255.255.201/32 next-hop 10.11.201.2 commit leaf2-1 / leaf2-2 / leaf3-1 / rr1 ã®ã³ãã³ããéã leaf2-1 configure set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT then accept set routing-options autonomous-system 65000 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath multiple-as set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY neighbor 10.1.21.1 peer-as 64512 set protocols bgp group UNDERLAY neighbor 10.2.21.1 peer-as 64513 commit leaf2-2 configure set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT then accept set routing-options autonomous-system 65000 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath multiple-as set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY neighbor 10.1.22.1 peer-as 64512 set protocols bgp group UNDERLAY neighbor 10.2.22.1 peer-as 64513 commit leaf3-1 configure set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT then accept set routing-options autonomous-system 65000 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath multiple-as set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY neighbor 10.1.31.1 peer-as 64512 set protocols bgp group UNDERLAY neighbor 10.2.31.1 peer-as 64513 commit rr1 configure set policy-options policy-statement PFE-LB term 1 then load-balance per-packet set routing-options forwarding-table export PFE-LB set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT from interface lo0.0 set policy-options policy-statement EXPORT-UNDERLAY term ALL-DIRECT then accept set routing-options autonomous-system 65000 set protocols bgp group UNDERLAY type external set protocols bgp group UNDERLAY multipath multiple-as set protocols bgp group UNDERLAY export EXPORT-UNDERLAY set protocols bgp group UNDERLAY neighbor 10.1.101.1 peer-as 64512 set protocols bgp group UNDERLAY neighbor 10.2.101.1 peer-as 64513 commit 2.4 åäœç¢ºèª admin@spine1# run show bgp summary ... Peer AS InPkt OutPkt ... State|#Active/Received/Accepted/Damped... 10.1.11.2 65000 6 8 ... 58 Establ 10.1.21.2 65000 5 7 ... 33 Establ 10.1.22.2 65000 4 7 ... 22 Establ 10.1.31.2 65000 4 7 ... 13 Establ 10.1.101.2 65000 4 7 ... 6 Establ Spine ããå Leaf / RR ãšã®ãã¢ã Establ (Established) ã«ãªã£ãŠããã° OK ã§ããæçµçã« Border Leaf (leaf3-1) ãã HV1 ã® Loopback ãŸã§çéã§ããŸãã admin@leaf3-1# run ping 10.255.255.201 source 10.255.255.31 count 3 64 bytes from 10.255.255.201: icmp_seq=0 ttl=62 time=3.254 ms ... 3 packets transmitted, 3 packets received, 0% packet loss â
å®æç¶æ
ãã§ãã¯ãªã¹ã Spine ããèŠãŠãå
š Leaf / RR ã® eBGP ã»ãã·ã§ã³ã Establ show route 10.255.255.0/24 ã§å
šããŒãã® Loopback ãåŠç¿ãããŠãã ä»»æã® Leaf ããä»»æã® Leaf ã® Loopback ãž ping ãéã HV1 ã® Loopback ( 10.255.255.201/32 ) ã leaf3-1 ããèŠãã ãããŸã§ã§ Underlay ã宿ããå
šããŒãã® Loopback å士ã IP ã§çéã§ãããäžå°ããæŽããŸãããæ¬¡ã®ã»ã¯ã·ã§ã³ã§ããã®äžã« EVPN/VXLAN ã® Overlay ã被ããŸãã 3. Overlay ã®æ§ç¯ â EVPN/VXLAN ãããããæ žå¿ã§ããUnderlay ã®äžã« EVPNïŒC-PlaneïŒ + VXLANïŒD-PlaneïŒ ã被ããããã³ãã® L2 ã»ã°ã¡ã³ããè€æ° Leaf éã§æ¡åŒµããŸãã Q. ãªã VLAN ã§ã¯ãã¡ãªã®ãïŒ ããŒã¿ã»ã³ã¿ãŒã§ã¯è€æ°ã®ããã³ãïŒå©çšè
ïŒãåãç©çã¹ã€ãããå
±æããŸããããã³ãå士ã®ãã©ãã£ãã¯ãåé¢ããæãåºæ¬çãªææ®µã VLAN ïŒVirtual LANïŒã§ããããã VLAN ã«ã¯ä»¥äžã®éçããããŸãã èª²é¡ VLAN ã®éç EVPN/VXLAN ã§ã®è§£æ±º ID æ° æå€§ 4,094 å â å€§èŠæš¡ã¯ã©ãŠãã§ã¯æ¯æžãã VNI ã¯æå€§çŽ 1,600 äžåïŒVNIã«ã€ããŠã¯åŸè¿°ïŒ L2 ã®æ¡åŒµ VLAN ãã©ãã¯éã«äŒžã°ãã«ã¯ã«ãŒã察çïŒSTPïŒãå¿
èŠã«ãªããæ§æãè€éåãã VXLAN ã§ L3ïŒIP UnderlayïŒäžã«ãã³ãã«ã匵ããããSTP äžèŠã§ä»»æã®ã©ãã¯éãž L2 ã延䌞å¯èœ MAC åŠç¿ã®ã¹ã±ãŒã©ããªã㣠ããŒã¿ãã¬ãŒã³ã®ãã©ããã£ã³ã°ã§ MAC ãåŠç¿ãããããèŠæš¡æ¡å€§ã«äŒŽã垯åãå§è¿«ãã EVPN ãå¶åŸ¡ãã¬ãŒã³ã§ MAC/IP ãé
åžãããããäžèŠãªãã©ããã£ã³ã°ãæå¶ã§ãã ã€ãŸã VLAN ã¯ã1 å°ã®ã¹ã€ããå
or 飿¥ã¹ã€ããéãã® L2 åé¢ ã VXLAN ã¯ãDC å
šäœèŠæš¡ãã® L2 åé¢ ãšåœ¹å²ãéããŸããæ¬èšäºã§æ§ç¯ããã®ã¯åŸè
ã§ãã ããã³ãããšã« L3ïŒã«ãŒãã£ã³ã°ïŒãåé¢ ãããå Žå㯠VRF ïŒVirtual Routing and ForwardingïŒã䜿ããŸããVRF ã¯ã¹ã€ãã / ã«ãŒã¿ã®äžã«ãããã³ãå°çšã®çµè·¯è¡šããäœãæè¡ã§ãããã³ã A ãšããã³ã B ãåã 192.168.1.0/24 ã䜿ã£ãŠããŠãã«ãŒãã£ã³ã°ãæ··ãããŸãããæ¬èšäºã®ã»ã¯ã·ã§ã³ 4 ã§ VRF ã䜿ã£ãå€éšæ¥ç¶ãæ§ç¯ããŸãã 3.1 ã¢ãŒããã¯ãã£ã®æŽç åããŒãã Overlay ã«ãããŠæ
ã圹å²ãæŽçããŸãã åœ¹å² C-Plane D-Plane Spine ïŒåãªãäžç¶ïŒ ïŒåãªã IP 転éïŒ RR (rr1) iBGP RRãEVPN çµè·¯åå° â Underlay Leaf (leaf1-1) åå ããªã åå ããªã Overlay Leaf (leaf2-1/2-2/3-1) iBGP/EVPN ã㢠VTEPïŒVXLAN ãã³ãã«ã®åºå
¥å£ïŒ HV1 (FRR) iBGP/EVPN ã㢠VTEP Q. ãªã leaf1-1 㯠EVPN ã«åå ããªãã®ãïŒ HV1 ã VTEP ãæã€ã®ã§ãleaf1-1 ã¯åãªã IP ã«ãŒã¿ãšã㊠VXLAN ãã±ããã Underlay è¶ãã«è»¢éããã ãã§æžã¿ãŸããå®ç°å¢ã§ãåæ§ã§ãHV äžã®ãœãããŠã§ã¢ VTEPïŒContrail vRouter çïŒã VTEP ã®åœ¹å²ãæ
ããŸããæ¬èšäºã§ã¯ããã FRR ã§ä»£çšããŠããŸãã 3.2 C-Plane: iBGP EVPN ã㢠leaf2-1 configure # RR ãšã® iBGPïŒOverlayïŒ set protocols bgp group OVERLAY type internal set protocols bgp group OVERLAY local-address 10.255.255.21 set protocols bgp group OVERLAY neighbor 10.255.255.101 set protocols bgp group OVERLAY family evpn signaling # EVPN/VXLAN åºæ¬èšå® set switch-options vtep-source-interface lo0.0 set switch-options route-distinguisher 10.255.255.21:1 set protocols evpn encapsulation vxlan # IRBïŒL3 ã²ãŒããŠã§ã€ïŒã䜿ããªã宣èšãType-2 ã«ãŒãã« default-gateway ã³ãã¥ããã£ãä»ããªã set protocols evpn default-gateway no-gateway-community set protocols evpn extended-vni-list all # RT ãæç€ºæå®ãFRR ã® advertise-all-vni 㯠AS:VNI 圢åŒïŒ65000:10010ïŒã§ RT ãçæããããã # Junos åŽãåãå€ã䜿ãïŒJunos ã® vrf-target auto 㯠AS:(VNI+0x10000000) ãšèšç®åŒãç°ãªãäºææ§ããªãïŒ set switch-options vrf-target target:65000:10010 commit leaf2-2 / leaf3-1 ã®ã³ãã³ããéã leaf2-2 configure set protocols bgp group OVERLAY type internal set protocols bgp group OVERLAY local-address 10.255.255.22 set protocols bgp group OVERLAY neighbor 10.255.255.101 set protocols bgp group OVERLAY family evpn signaling set switch-options vtep-source-interface lo0.0 set switch-options route-distinguisher 10.255.255.22:1 set protocols evpn encapsulation vxlan set protocols evpn default-gateway no-gateway-community set protocols evpn extended-vni-list all set switch-options vrf-target target:65000:10010 commit leaf3-1 configure set protocols bgp group OVERLAY type internal set protocols bgp group OVERLAY local-address 10.255.255.31 set protocols bgp group OVERLAY neighbor 10.255.255.101 set protocols bgp group OVERLAY family evpn signaling set switch-options vtep-source-interface lo0.0 set switch-options route-distinguisher 10.255.255.31:1 set protocols evpn encapsulation vxlan set protocols evpn default-gateway no-gateway-community set protocols evpn extended-vni-list all set switch-options vrf-target target:65000:10010 commit rr1 configure set protocols bgp group OVERLAY type internal set protocols bgp group OVERLAY cluster 10.255.255.101 set protocols bgp group OVERLAY local-address 10.255.255.101 set protocols bgp group OVERLAY neighbor 10.255.255.21 set protocols bgp group OVERLAY neighbor 10.255.255.22 set protocols bgp group OVERLAY neighbor 10.255.255.31 set protocols bgp group OVERLAY neighbor 10.255.255.201 set protocols bgp group OVERLAY family evpn signaling commit hv1ïŒFRRïŒ vtysh configure terminal router bgp 65000 bgp router-id 10.255.255.201 no bgp ebgp-requires-policy neighbor 10.255.255.101 remote-as 65000 neighbor 10.255.255.101 update-source 10.255.255.201 address-family l2vpn evpn neighbor 10.255.255.101 activate exit-address-family exit end write exit ç¢ºèª admin@rr1# run show bgp summary group OVERLAY ... 10.255.255.21 65000 ... Establ bgp.evpn.0: 0/0/0/0 10.255.255.22 65000 ... Establ bgp.evpn.0: 0/0/0/0 10.255.255.31 65000 ... Establ bgp.evpn.0: 0/0/0/0 10.255.255.201 65000 ... Establ bgp.evpn.0: 0/0/0/0 å
šãã¢ã Establ (Established) ã«ãªãã°å®æã§ãããŸã VNI ãäœã£ãŠããªãã®ã§ EVPN çµè·¯ã¯ 0 ä»¶ã§ãã 3.3 D-Plane: VXLAN ã»ã°ã¡ã³ããäœã VNI 10010 ïŒVLAN 10ïŒãçšæãã VM1ïŒHV1 äžã192.168.10.10ïŒ ãš BM1ïŒleaf2-1 é
äžã192.168.10.101ïŒ ãåã L2ïŒåäžãµãããããã€ãŸããåã LANãïŒã§éä¿¡ã§ããããã«ããŸãã Q. VNI ãšã¯? VXLAN Network Identifier ã®ç¥ãVLAN ID ã®ãæ¡åŒµçãã®ãããªãã®ã§ãæå€§çŽ 1,600 äžã®ã»ã°ã¡ã³ããäœããŸãïŒVLAN 㯠4,094 ãŸã§ïŒã â ïž æ¬çªã§ã¯ MTU èšèšãå¿
é VXLAN ã¯å€åŽã« IP(20) + UDP(8) + VXLAN(8) + Inner Ethernet(14) = 50 ãã€ãã®ãªãŒããŒããã ãä¹ããŸããããã³ãã MTU 1500 ã§éä¿¡ããããªããUnderlay ã®ç©ç MTU ã 9000ïŒJumbo FrameïŒ ã«ããã®ãå®çªã§ãã hv1ïŒLinux Kernel + FRR # VM æš¡æ¬ã® Network Namespace äœæ ip netns add vm1 ip link add veth-host type veth peer name veth-vm ip link set veth-vm netns vm1 ip netns exec vm1 ip link set dev veth-vm address 02:00:00:00:01:10 ip netns exec vm1 ip addr add 192.168.10.10/24 dev veth-vm ip netns exec vm1 ip link set veth-vm up ip netns exec vm1 ip link set lo up # VTEPïŒVXLAN I/FïŒäœæ ip link add vxlan10 type vxlan id 10010 local 10.255.255.201 dstport 4789 nolearning # Bridge çµç±ã§ VM åŽãš VXLAN ãæ¥ç¶ ip link add br10 type bridge ip link set veth-host master br10 ip link set vxlan10 master br10 ip link set vxlan10 up ip link set veth-host up ip link set br10 up vtysh configure terminal router bgp 65000 address-family l2vpn evpn advertise-all-vni exit-address-family end write exit leaf2-1 configure set vlans v10 vlan-id 10 set vlans v10 vxlan vni 10010 set vlans v10 vxlan ingress-node-replication # BM1 æ¥ç¶ããŒã set interfaces ge-0/0/2 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/2 unit 0 family ethernet-switching vlan members v10 commit Q. ingress-node-replication ãšã¯? SDPF ã¯ã©ãŠãã§ã¯ãã客ããŸã«èªç±ãª L2 ãããã¯ãŒã¯ãæ§æããŠããã ãããããOverlay ãããã¯ãŒã¯ã«ãªãã¹ãå¶éãäžããªã圢ã§ãµãŒãã¹ãæäŸããŸãããã®ãããBUMïŒBroadcast / Unknown unicast / MulticastïŒãã©ãã£ãã¯ãéãå¿
èŠããããŸãã ingress-node-replication ã¯ããã® BUM ãã±ããããã©ããããéã®æ¹åŒãæå®ããèšå®ã§ãããããæå¹ã«ãããšãType-3ïŒIMïŒã«ãŒãã§åŠç¿ããåãªã¢ãŒã VTEP ã«å¯Ÿã㊠ãŠããã£ã¹ãã§è€è£œéä¿¡ ããŸãã bm1 ip link set eth1 up ip link add link eth1 name eth1.10 type vlan id 10 ip link set eth1.10 up ip addr add 192.168.10.101/24 dev eth1.10 åäœç¢ºèª VM1 â BM1 ã§ ping ãéããHV1 ã§ tcpdump ãåããš UDP/4789 ã® VXLAN ã«ã«ãã»ã«å ãããŠããã®ãåãããŸãã # BM1ã§å®è¡ ~ # ping 192.168.10.10 64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=3.35 ms ... # HV1ã§å®è¡ ~ # tcpdump -i eth1 -n -vv udp port 4789 tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes ... IP (tos 0x0, ttl 253, id 21304, offset 0, flags [none], proto UDP (17), length 134) 10.255.255.21.55534 > 10.255.255.201.4789: [no cksum] VXLAN, flags [I] (0x08), vni 10010 IP (tos 0x0, ttl 64, id 44875, offset 0, flags [DF], proto ICMP (1), length 84) 192.168.10.101 > 192.168.10.10: ICMP echo request, id 102, seq 8, length 64 ... IP (tos 0x0, ttl 64, id 21000, offset 0, flags [none], proto UDP (17), length 134) 10.255.255.201.49139 > 10.255.255.21.4789: [udp sum ok] VXLAN, flags [I] (0x08), vni 10010 IP (tos 0x0, ttl 64, id 6907, offset 0, flags [none], proto ICMP (1), length 84) 192.168.10.10 > 192.168.10.101: ICMP echo reply, id 102, seq 8, length 64 leaf2-1 åŽã§ã EVPN Type-2ïŒMAC/IPïŒãš Type-3ïŒIMïŒã®çµè·¯ããªã¢ãŒã VTEP å®ã«åŠç¿ãããŠããŸãã admin@leaf2-1# run show route table bgp.evpn.0 bgp.evpn.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 2:10.255.255.21:1::10010::aa:c1:ab:0a:18:4a/304 MAC/IP *[EVPN/170] 00:01:12 Indirect 2:10.255.255.201:2::0::02:00:00:00:01:10/304 MAC/IP *[BGP/170] 00:03:21, localpref 100, from 10.255.255.101 AS path: I, validation-state: unverified to 10.1.21.1 via ge-0/0/0.0 > to 10.2.21.1 via ge-0/0/1.0 2:10.255.255.21:1::10010::aa:c1:ab:0a:18:4a::192.168.10.101/304 MAC/IP *[EVPN/170] 00:01:05 Indirect 3:10.255.255.21:1::10010::10.255.255.21/248 IM *[EVPN/170] 00:03:09 Indirect 3:10.255.255.201:2::0::10.255.255.201/248 IM *[BGP/170] 00:03:10, localpref 100, from 10.255.255.101 AS path: I, validation-state: unverified > to 10.1.21.1 via ge-0/0/0.0 to 10.2.21.1 via ge-0/0/1.0 確èªã®ãã€ã³ããæŽçããŸãã [EVPN/170] Indirect ã®ãšã³ããªïŒRD 10.255.255.21:1 ïŒã¯ leaf2-1 èªèº«ãããŒã«ã«ã§çæãã EVPN çµè·¯ïŒèªåã®ããŒãã«æ¥ç¶ããã BM1 ã® MAC/IPãããã³èªåãå±ãã VNI ã® IM ã«ãŒãïŒã [BGP/170] from 10.255.255.101 ã®ãšã³ããªïŒRD 10.255.255.201:2 ïŒã¯ RRïŒrr1ïŒçµç±ã§åãåã£ããªã¢ãŒã VTEPïŒHV1ïŒããã®çµè·¯ã to 10.1.21.1 / to 10.2.21.1 ã® 2 çµè·¯ã䞊ãã§ããã®ã¯ãspine1ã»spine2 ã®äž¡æ¹ãçµç±ãã ECMP ãæå¹ã«ãªã£ãŠããããã§ãã EVPN ã®çµè·¯æ
å ±ã¯ BGP ã«ãã£ãŠå¶åŸ¡ãã¬ãŒã³äžã§ããåããããå®éã®ãã±ãã転é㯠VXLANïŒUDP/4789ïŒãããŒã¿ãã¬ãŒã³ãšããŠæ
ããŸããtcpdump ã§ç¢ºèªããéãã vni 10010 ã®ã«ãã»ã«åã§è»¢éãããŠããããšã確èªã§ããŸãã 3.4 EVPN MultihomingïŒESI-LAGïŒã§ BM ã®æ¥ç¶ãåé·å ã»ã¯ã·ã§ã³ 3.3 ã§ VXLAN ã®çéã¯ç¢ºèªã§ããŸãããããã®ãŸãŸã§ã¯ BM1 ã leaf2-1 ã® 1 æ¬ã ãã§ã¶ãäžãã£ãŠããç¶æ
ã§ããã¯ã©ãŠããµãŒãã¹ã§ã¯ç©çæ
éã®åäžé害ç¹ãæé€ããããšãåºæ¬èŠä»¶ã§ããããªã³ã¯ãã¹ã€ããã®é害ã§ãµãŒããŒãå€ç«ããªããããè€æ° Leaf ãžåé·æ¥ç¶ããŸãã ãããã㯠BM1 ã leaf2-1 / leaf2-2 ã®äž¡æ¹ã«æ¥ç¶ããŠåé·åããŸããBM1 ã®ãããã¯ãŒã¯èšå®ããã£ããåé€ã㊠bond ã«çµã¿çŽããããäžæçã« BM1 â VM1 éã®éä¿¡ãéçµ¶ããŸãã EVPN Type-1 / Type-4 ãæŽ»ãã ESI-LAGïŒAll-ActiveïŒ ã§æ§æããŸãã EVPN Multihoming ã®åçšå°å
¥äºäŸãšããŠãSDPF ã¯ã©ãŠãéçºã¡ã³ããŒã JANOG48 ã§çºè¡šãã EVPN Anycast Gateway ãåçšå°å
¥ãã話 ã倧å€åèã«ãªããŸãã Q. ESI-LAG ãšã¯ïŒ éåžžã® LAGïŒLink AggregationïŒã¯ 1 å°ã®ã¹ã€ãããžã®æãã§ãããESI-LAG ã¯ è€æ°å°ã®ã¹ã€ããããŸããã§ LAG ãçµããæè¡ã§ãããµãŒããŒããèŠããš 1 å°ã®ã¹ã€ããã«ã€ãªãã§ããããã«èŠããŸãã æ¹é 2 å°ã® Leaf ã§ åã ESI ãš åã LACP System ID ãèšå® â BM1 ããèŠããšåäžã® LAG çžæã«èŠãã BM1 åŽã¯ Linux bondïŒmode=802.3adïŒ leaf2-1ïŒæ¢åèšå®ã®çœ®ãæãïŒ configure delete interfaces ge-0/0/2 unit 0 set chassis aggregated-devices ethernet device-count 1 set interfaces ge-0/0/2 ether-options 802.3ad ae0 set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk set interfaces ae0 unit 0 family ethernet-switching vlan members v10 # ESIïŒleaf2-1/2-2 ã§å®å
šäžèŽãããïŒ set interfaces ae0 esi 00:00:00:00:00:00:00:00:00:01 set interfaces ae0 esi all-active set interfaces ae0 aggregated-ether-options lacp active set interfaces ae0 aggregated-ether-options lacp periodic fast set interfaces ae0 aggregated-ether-options lacp system-id 00:00:00:00:00:01 commit leaf2-2ïŒæ°èŠïŒ leaf2-1 ãšå®å
šã«åã ESI / LACP System ID ãæå
¥ããŸããVLAN/VNI/RT ãããã§äœæã configure set vlans v10 vlan-id 10 set vlans v10 vxlan vni 10010 set vlans v10 vxlan ingress-node-replication set chassis aggregated-devices ethernet device-count 1 set interfaces ge-0/0/2 ether-options 802.3ad ae0 set interfaces ae0 unit 0 family ethernet-switching interface-mode trunk set interfaces ae0 unit 0 family ethernet-switching vlan members v10 set interfaces ae0 esi 00:00:00:00:00:00:00:00:00:01 set interfaces ae0 esi all-active set interfaces ae0 aggregated-ether-options lacp active set interfaces ae0 aggregated-ether-options lacp periodic fast set interfaces ae0 aggregated-ether-options lacp system-id 00:00:00:00:00:01 commit bm1ïŒLinux BondïŒ ip addr flush dev eth1.10 ip link del eth1.10 ip link add bond0 type bond mode 802.3ad miimon 100 lacp_rate 1 xmit_hash_policy layer3+4 ip link set eth1 down ip link set eth2 down ip link set eth1 master bond0 ip link set eth2 master bond0 ip link set bond0 up ip link set eth1 up ip link set eth2 up ip link add link bond0 name bond0.10 type vlan id 10 ip link set bond0.10 up ip addr add 192.168.10.101/24 dev bond0.10 åæè©Šéš BM1 ãã VM1 ã« ping ãæµãããŸãŸãleaf2-1 â leaf2-2 ã®é ã«ãªã³ã¯ãèœãšããšãçæ¹ãçããŠããé㯠ping ãç¶ç¶ããããšã確èªã§ããŸãã # leaf2-1 ã§æ¥ç¶æ â ping ç¶ç¶ configure set interfaces ge-0/0/2 disable commit # leaf2-2 ã§ãæ¥ç¶æ â ping 忢 configure set interfaces ge-0/0/2 disable commit # leaf2-1 ã埩掻 â ping 埩掻 configure delete interfaces ge-0/0/2 disable commit # leaf2-2 ã§å®è¡ configure delete interfaces ge-0/0/2 disable commit HV1 ããèŠããšãBM1 ã® bond0 MAC ã leaf2-1 / leaf2-2 ã®äž¡æ¹ããåã ESI ã§åºå ãããŠããŸãã ~ # vtysh -c "show bgp l2vpn evpn" Route Distinguisher: 10.255.255.21:1 *>i [2]:[10010]:[48]:[xx:xx:xx:xx:xx:xx] â bond0 ã® MAC 10.255.255.21 ESI:00:00:00:00:00:00:00:00:00:01 RT:65000:10010 Route Distinguisher: 10.255.255.22:1 *>i [2]:[10010]:[48]:[xx:xx:xx:xx:xx:xx] 10.255.255.22 ESI:00:00:00:00:00:00:00:00:00:01 RT:65000:10010 ð¡ bond0 ã® MAC ã¯ã«ãŒãã«ãèªåä»äžããŸãïŒéåžž eth1 ã® MAC ãç¶æ¿ïŒãå®éã®å€ã¯ ip link show bond0 ã§ç¢ºèªããŠãã ããã ESI ãäž¡ããŒãã§äžèŽããŠãããããHV1 ã¯ãã® 2 çµè·¯ã Aliasing ïŒECMP çã«ããŒããã©ã³ã¹ïŒããŠæ±ããŸããã€ãŸãããleaf2-1 ããã³ leaf2-2 ã®ããããçµç±ããŠããBM1 ã«å±ããç¶æ
ã宿ããŠããŸããããã ESI-LAG ã®æ¬è³ªã§ãã â
å®æç¶æ
ãã§ãã¯ãªã¹ãïŒOverlayå
šäœïŒ RR ã® OVERLAY ã°ã«ãŒãã§å
š Leaf / HV1 ã Establ HV1 ã§ show evpn vni ã« VNI 10010 ã衚瀺ããã BM1 â VM1ïŒVXLAN çµç±ïŒã® ping ãéã HV1 ã® tcpdump -i eth1 udp port 4789 ã§ VXLAN ãããïŒvni 10010ïŒãèŠãã leaf2-1/2-2 ã®ã©ã¡ããã®ãªã³ã¯ãèœãšããŠã BM1 â VM1 ã®éä¿¡ãç¶ç¶ãã show bgp l2vpn evpn ã§ BM1 ã® MAC ã leaf2-1/2-2 ã®äž¡æ¹ããåã ESI ã§åºåãããŠãã ãããŸã§ã§ãEVPN/VXLAN ã«ããããã³ã L2 æ¡åŒµãš ESI-LAG ã«ããåé·æ¥ç¶ã宿ããŸãããVM1ïŒHV1 äžïŒãš BM1 ãç©ççã«é¢ããŠããŠãåäž L2 ã§éä¿¡ã§ãããã€çæ¹ã®ãªã³ã¯ãèœã¡ãŠãéä¿¡ãç¶ç¶ããç¶æ
ã§ãã 4. Border Leaf ãš Internet Gateway æåŸã«ãããã³ãç¶²ïŒVRF ïŒ ä»®æ³ã«ãŒãã£ã³ã°ããŒãã«ããããã³ãå°çšã®çµè·¯è¡šããšèããŠOKïŒãšå€éšç¶²ïŒGlobal ïŒ ã€ã³ã¿ãŒãããåŽïŒãæ¥ç¶ããŸãã leaf3-1 ã VTEP å ã㊠Overlay ã® VLAN10 ã Internet GW ãŸã§å»¶äŒž inet-gw1 ã§ VRF-User ãš Global ã Route Leaking inet-gw1 â isp1 ã§ eBGP ãisp1 ãã default route ãåãåã 以äžã®å
å®¹ãæ§æããŸãã 4.1 leaf3-1ïŒBorder Leaf ãšã㊠VTEP åïŒ configure set vlans v10 vlan-id 10 set vlans v10 vxlan vni 10010 set vlans v10 vxlan ingress-node-replication # inet-gw1 æ¥ç¶ããŒã set interfaces ge-0/0/2 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/2 unit 0 family ethernet-switching vlan members v10 commit 4.2 inet-gw1: å
±éã®äžæºåïŒI/F + ASNïŒ configure set routing-options router-id 198.51.100.1 set routing-options autonomous-system 65002 # I/F set interfaces ge-0/0/0 vlan-tagging set interfaces ge-0/0/0 unit 10 vlan-id 10 set interfaces ge-0/0/0 unit 10 family inet address 192.168.10.1/24 set interfaces ge-0/0/1 unit 0 family inet address 203.0.113.2/30 set interfaces lo0 unit 0 family inet address 198.51.100.1/32 commit ge-0/0/0.10 ãããã³ãåŽïŒleaf3-1 çµç±ã§ BM1 ãšåã»ã°ïŒã ge-0/0/1.0 ã ã€ã³ã¿ãŒãããåŽïŒå€éšïŒã§ãã 4.3 inet-gw1: VRF ãš Route Leaking ãŠãŒã¶ãŒã® VRFïŒ VRF-User ïŒãš Global ããŒãã«ïŒ inet.0 ïŒ Junos ã®éåžžã®çµè·¯è¡šïŒãåé¢ãã€ã€ãå¿
èŠãªçµè·¯ã ãçžäºã«ãªãŒã¯ïŒæŒããïŒããŸããããããRoute Leakingãã§ããããã³ãå
éšã®çµè·¯ãã€ã³ã¿ãŒãããåŽã«æããïŒãŸãã¯ãã®éïŒãããšã§ãããã³ãå
ã®ãµãŒããŒãã€ã³ã¿ãŒããããšéä¿¡ã§ããããã«ãªããŸãã configure # Route Leaking ããªã·ãŒïŒåæ¹åïŒ # Global -> VRF: default route ã®ã¿ VRF ã«æµã set policy-options policy-statement LEAK-GLOBAL-TO-VRF term ALLOW-DEFAULT from instance master set policy-options policy-statement LEAK-GLOBAL-TO-VRF term ALLOW-DEFAULT from route-filter 0.0.0.0/0 exact set policy-options policy-statement LEAK-GLOBAL-TO-VRF term ALLOW-DEFAULT then accept set policy-options policy-statement LEAK-GLOBAL-TO-VRF term DENY-REST then reject # VRF -> Global: BM1 ã® Global IPïŒ/32ïŒã®ã¿ Global ãžæµã set policy-options policy-statement LEAK-VRF-TO-GLOBAL term ALLOW-BM1 from instance VRF-User set policy-options policy-statement LEAK-VRF-TO-GLOBAL term ALLOW-BM1 from route-filter 198.51.100.41/32 exact set policy-options policy-statement LEAK-VRF-TO-GLOBAL term ALLOW-BM1 then accept set policy-options policy-statement LEAK-VRF-TO-GLOBAL term DENY-REST then reject # VRF æ¬äœ set routing-instances VRF-User instance-type virtual-router set routing-instances VRF-User interface ge-0/0/0.10 set routing-instances VRF-User routing-options instance-import LEAK-GLOBAL-TO-VRF # BM1 ã® Global IP ãžã® static set routing-instances VRF-User routing-options static route 198.51.100.41/32 next-hop 192.168.10.101 # Global åŽã«ã VRF ããã®çµè·¯ãåã蟌ã set routing-options instance-import LEAK-VRF-TO-GLOBAL commit 4.4 inet-gw1: å€éš ISP ãšã® eBGP æåŸã«ãäžã§ Global ã«ãªãŒã¯ããçµè·¯ã eBGP ã§ å€éš ISP ãžåºåããŸãã configure # å€éš ISP ãžåºåããããªã·ãŒïŒstatic ã®ã¿ â 198.51.100.41/32 ãä¹ãïŒ set policy-options policy-statement ADVERTISE-TO-ISP term 1 from protocol static set policy-options policy-statement ADVERTISE-TO-ISP term 1 then accept set protocols bgp group TO-ISP type external set protocols bgp group TO-ISP peer-as 65001 set protocols bgp group TO-ISP neighbor 203.0.113.1 set protocols bgp group TO-ISP export ADVERTISE-TO-ISP commit 4.5 isp1 ïŒå€éš ISP æš¡æ¬ïŒ configure set routing-options router-id 192.0.2.1 set routing-options autonomous-system 65001 set interfaces ge-0/0/0 unit 0 family inet address 203.0.113.1/30 set interfaces lo0 unit 0 family inet address 192.0.2.1/32 set protocols bgp group TO-GW type external set protocols bgp group TO-GW peer-as 65002 set protocols bgp group TO-GW neighbor 203.0.113.2 set policy-options policy-statement SEND-DEFAULT term 1 from protocol static set policy-options policy-statement SEND-DEFAULT term 1 from route-filter 0.0.0.0/0 exact set policy-options policy-statement SEND-DEFAULT term 1 then accept set protocols bgp group TO-GW export SEND-DEFAULT set routing-options static route 0.0.0.0/0 discard commit 4.6 bm1 ïŒGlobal IP ä»äžãšããã©ã«ãã²ãŒããŠã§ã€ïŒ ip addr add 198.51.100.41/32 dev bond0.10 ip route replace default via 192.168.10.1 Q. ãªã /32 ã§ä»äžããã®ã BM1 ããèªå㯠198.51.100.41 ã§ããããšããåä¹ããã°ååã§ããæ»ããã±ããã®ã«ãŒãã£ã³ã°ã¯ inet-gw1 ã® VRF å
ã« 198.51.100.41/32 next-hop 192.168.10.101 ã® static route ããããããISP â inet-gw1 â (VRF) â leaf3-1 â VXLAN â leaf2-1/2-2 â BM1 ãšæ£ãã転éãããŸãã 4.7 åäœç¢ºèª inet-gw1 ã§ Global ã® inet.0 ã«ã 198.51.100.41/32 ãçŸããŸã ïŒïŒ VRF ããã®ãªãŒã¯æåïŒã admin@inet-gw1# run show route 198.51.100.41 inet.0: 198.51.100.41/32 *[Static/5] > to 192.168.10.101 via ge-0/0/0.10 VRF-User.inet.0: 198.51.100.41/32 *[Static/5] > to 192.168.10.101 via ge-0/0/0.10 ãã㊠BM1 â å€éš ISPïŒ192.0.2.1ïŒãžã® ping ãããã³éæ¹åã® å€éš ISP â BM1ïŒ198.51.100.41ïŒãžã® ping ããšãã«éãã°ãEnd-to-End ã®çµè·¯ã宿ã§ãã ~ # ping -c 3 -I 198.51.100.41 192.0.2.1 64 bytes from 192.0.2.1: icmp_seq=1 ttl=63 time=5.87 ms ... 3 packets transmitted, 3 received, 0% packet loss admin@isp1# run ping 198.51.100.41 count 3 64 bytes from 198.51.100.41: icmp_seq=0 ttl=63 time=6.070 ms ... 3 packets transmitted, 3 packets received, 0% packet loss â
å®æç¶æ
ãã§ãã¯ãªã¹ãïŒBorder GWïŒ inet-gw1 ã® inet.0 ãš VRF-User.inet.0 ã®äž¡æ¹ã« 198.51.100.41/32 ãååš inet-gw1 â isp1 ã® eBGP ã Establ ãisp1 ãã default route ãåä¿¡ BM1 â 192.0.2.1 (å€éš ISP) ã® ping ãéãïŒ -I 198.51.100.41 ã§ source æå®ïŒ å€éš ISP â 198.51.100.41 (BM1) ã® ping ãéã ãããŸã§ã§ãããã³ãå
ã® BM1 ã VRF Route Leaking ãçµç±ããŠå€éš ISP ãšåæ¹åã«éä¿¡ã§ãã End-to-End ã®çµè·¯ã宿ããŸãããæ¬èšäºã§ç®æšãšããŠããå
šæ§æã®æ§ç¯ãå®äºã§ãã å
šäœã®å®æç¢ºèª å
šã»ã¯ã·ã§ã³ãéããŠæ§ç¯ããçµæãåé ã§æ²ãããŽãŒã« â ç©ççã«é¢ãã HV1 äžã® VM ãš BM1 ãåäž L2 ã§éä¿¡ã§ããããã«ã€ã³ã¿ãŒããããžæãããã â ãéæã§ããŠããŸãã宿ãã NW ã§å®çŸã§ããŠããããšãæŽçããŸãã éä¿¡ãã¹ çµç±ããã¬ã€ã€ VM1ïŒHV1ïŒâ BM1 HV1 (VTEP) â VXLAN â Underlay (Spineçµç±) â leaf2-1/2-2 (VTEP) â BM1 BM1 â ã€ã³ã¿ãŒããã BM1 â leaf2-1/2-2 â VXLAN â leaf3-1 â inet-gw1 ( VRF Route Leaking ) â isp1 ã€ã³ã¿ãŒããã â BM1 isp1 â inet-gw1 (GlobalâVRF) â leaf3-1 â VXLAN â leaf2-1/2-2 â BM1 Underlay ïŒeBGP + ECMP ã«ãããã©ã¡ãã® Spine ãçµç±ããŠãå
šããŒãã® Loopback ãå°éå¯èœ Overlay ïŒEVPN/VXLAN ã«ãããç°ãªãã©ãã¯ã® VM1 ãš BM1 ãåäž L2ïŒVNI 10010ïŒã§éä¿¡ åé·å ïŒESI-LAG ã«ãããleaf2-1 ãŸã㯠leaf2-2 ã®ã©ã¡ããäžæ¹ãæ
éããŠã BM1 ã®éä¿¡ãç¶ç¶ å€éšæ¥ç¶ ïŒVRF Route Leaking ã«ãããããã³ãå
éšã®çµè·¯ãšã€ã³ã¿ãŒãããåŽã®çµè·¯ãçžäºã«ãªãŒã¯ããBM1 ãå€éšãšåæ¹åã«éä¿¡å¯èœ ããããçµã¿åãããããšã§ãã¯ã©ãŠã NW ã®åºæ¬æ§æ â ãã«ãããã³ã察å¿ã® L2 延䌞ã»ç©çåé·ã»å€éšæ¥ç¶ â ã 1 ã€ã®ã©ãäžã§åçŸã§ããŠããŸãã ããŸã: ããã£ããèŠããšããïŒTroubleshootingïŒ æé éããã£ãŠãããŸããããªããšããäžããé ã«åãåãããšæ©ãã§ãã çç¶ ç¢ºèªãã€ã³ã BGP ã Active ããé²ãŸãªã çŽçµ ping â Loopback é ping â peer-as ã®å€ â ããªã·ãŒã§èªåã®çµè·¯ãçµã£ãŠãªãã Underlay 㯠OK ã ã Overlay iBGP ã Active Loopback éã® pingã local-address ãèªåã® Loopback ã«ãªã£ãŠããã EVPN ãã¢ã¯åŒµãããçµè·¯ãæ¥ãªã 䞡端㮠RT ãäžèŽããŠãããã extended-vni-list ã® VNI ç¯å² ESI-LAG ã§çåŽã ãããæµããªã 2 å°ã® esi ãš lacp system-id ã å®å
šã« äžèŽããŠããã Junos åŽã§äœãèµ·ããŠãããèŠãã³ãã³ã run show bgp summary run show route table bgp.evpn.0 run show route advertising-protocol bgp <neighbor> run show route receive-protocol bgp <neighbor> run show ethernet-switching vxlan-tunnel-end-point remote run show evpn database FRR åŽ vtysh -c "show bgp l2vpn evpn summary" vtysh -c "show evpn vni" vtysh -c "show evpn mac vni all" ãŸãšã Containerlab + vJunos ã§ã¯ã©ãŠã NW ã®çéæ§æãäžéãäœéšããŸãããããããæ¬èšäºã¯ãããŸã§åŠç¿çšã§ãããå®éã®éçšã§ã¯æ¬¡ã®ãããªäºé
ãæ€èšãå¿
èŠã§ãã IRB / Anycast Gateway ïŒå Leaf ã«åã GW IP ãæããã忣 L3 ã«ãŒãã£ã³ã°ïŒ MTU èšèš ïŒUnderlay 9000 / ããã³ã 1500ïŒ BGP èªèšŒ ïŒMD5ïŒ ãã«ãããã³ãéçš ïŒVNI æ°åèŠæš¡ã®ç®¡çïŒ ã»ãã¥ãªãã£ããªã·ãŒ ïŒãã€ã¯ãã»ã°ã¡ã³ããŒã·ã§ã³ãACLïŒ ç£èŠé£æº æ¬èšäºãéããŠã¯ã©ãŠã NW ãå°ãã§ãç¥ã£ãŠããã ãããé¢çœãïŒããšæã£ãŠããã ããŸããã幞ãã§ãã ã¯ã©ãŠã NW éçºã«èå³ãæã£ãŠããã ããåŠçã®æ¹ã¯ããã²ã€ã³ã¿ãŒã³ã®ãã¹ãã ãB19ããšã³ã¿ãŒãã©ã€ãºåãå€§èŠæš¡ã¯ã©ãŠã/ãããã¯ãŒã¯ãµãŒãã¹ãæ¯ããã³ã³ãããŒã©éçº ããã ãB25ããšã³ã¿ãŒãã©ã€ãºåãå€§èŠæš¡ã¯ã©ãŠããµãŒãã¹ãæ¯ããä»®æ³ãããã¯ãŒã¯ãœãããŠã§ã¢éçº ãã«ãå¿åãã ããã
ã¿ãªãããããã«ã¡ã¯ãæ ªåŒäŒç€Ÿ APTO ã§ Physical AI ã®ããŒã¿åºç€ãæ§ç¯ããŠããç°äžã§ãã è¿å¹Žãããããåã VLA ã¢ãã«ã®å°é ã«ãããAI éçºã®æåŠã¯ãåŠç¿ããŒã¿ã®å質ãã«åŒ·ãäŸåããããã«ãªã£ãŠããŸãã ãããã倧容éãã€å³å¯ãªåæãæ±ããããããããã®æäœããŒã¿ãå質ãèœãšããã«æ¥ã
åéããããšã¯éåžžã«å°é£ã§ãããPhysical AI éçºã«ãããæå€§ã®ããã«ããã¯ãšãªã£ãŠããŸãã ãã®ããã°ã§ã¯ãåã課é¡ã«çŽé¢ããããŒã ã®åèãšãªããããAPTO 瀟ããã®ãããŒã¿åéãã®ããŒãã«ãã©ã®ããã«ä»çµã¿åããŠè§£æ±ºããã®ãã玹ä»ããŸãã æ³å®èªè
Physical AI / ãããã£ã¯ã¹åéã§ããŒã¿åºç€ãèšèšããŠããæ¹ AWS äžã§å€§éããŒã¿ã®ã€ãã³ãé§ååŠçãæ§ç¯ããããšããŠããæ¹ ã¹ã¿ãŒãã¢ããã§å°äººæ°ããŒã ã® MLOps ãéçšããŠããæ¹ APTO ã AWS äžã«æ§ç¯ããŠããåè
é éæäœããããåãã® Physical AI ããŒã¿åºç€ã«ã€ããŠãäžã®å³ 1 ã§ã°ãªãŒã³ã® â åé ã®éšå â ãšããžåŽã§å®å
šæ§ãã©ã確å®ãããAmazon S3 ãžã©ãåŒãæž¡ããŠããã â ã 3 ç« ã·ãªãŒãºã®ç¬¬ 1 ç« ãšããŠè§£èª¬ããŸããããŒã¿åºç€ã®å
šäœåã¯ãåé â ãã¥ã¬ãŒã·ã§ã³ â æ¡åŒµ â åŠç¿ â è©äŸ¡ããšãã MLOps ã«ãŒãã§æ§æãããŠããã第 2 ç« ã§ã¯ã¯ã©ãŠãåŽã®èªåãã¥ã¬ãŒã·ã§ã³ãã€ãã©ã€ã³ã«çžåœãã â¡ ãã¥ã¬ãŒã·ã§ã³ ã第 3 ç« ã§ã¯ ⢠æ¡åŒµ ãã㳠⣠åŠç¿ ãžã®æ¥ç¶ãæ±ãäºå®ã§ãããªããæ¬çš¿ã§æ±ã â åéã§ã¯ãšããžåŽã®ãã§ãã¯ããããŒã¿ã®åæãåããŠããããã«çµã£ãŠãããå質ã¹ã³ã¢ãªã³ã°ã»éè€å€å®ã»PIIæ€æ»ã»çµ±èšéèšãªã©ã®ãã¥ã¬ãŒã·ã§ã³å·¥çšã¯ãã¹ãŠã¯ã©ãŠãåŽã§å®æœããèšèšã§ãã å³ 1: MLOps ã«ãŒãå
šäœå â åéãæ¬çš¿ã®ã¹ã³ãŒã 1. APTO ãš Physical AI APTO 㯠2020 幎 1 æèšç«ãæ±äº¬éœå代ç°åºã«ããçŽ 40 åã®ã¹ã¿ãŒãã¢ããã§ã ( APTO äŒç€ŸæŠèŠ 2026æç¹)ããã€ãããŒãã£ããªã¢ãããŒã·ã§ã³ã§ AI éçºã«å€é©ãããæ²ããAI ããŒã¿ãã©ãããã©ãŒã harBest ã軞ã«ãç»åã»åç»ã»3D (LiDAR)ã»èªç¶èšèªã»é³å£°ãŸã§å¹
åºãåŠç¿ããŒã¿äºæ¥ãå±éããã¹ã¿ãŒãã¢ããã§ããè¿å¹Žã¯ LLM éçºæ¯æŽãRLHFããšãŒãžã§ã³ããRAG ãšãã£ãé åã«å ããPhysical AI ã®ãŠãŒã¹ã±ãŒã¹ãå¢ãããŠããŸãã ãã®äžç°ãšããŠãåè
ã®é éæäœãããã (bimanual teleoperation robot) ããããŒã¿ãéããVision-Language-Action (VLA) ã¢ãã«ã®ãã¡ã€ã³ãã¥ãŒãã³ã°ã«äŸããèªç€Ÿåºç€ã AWS äžã§éçºããŠããŸããæ¬åºç€ã®äžå¿ã¯ãåé â èªåãã¥ã¬ãŒã·ã§ã³ â åŠç¿ãã®ã«ãŒããå¹çããåãç¶ããããã®ä»çµã¿ã§ããããã®ããã°ã§ã¯ãã®ãã¡æãäžæµã«ããããåéããæ±ããŸãã 2. èæ¯ãšèª²é¡ Physical AI ãšããŒã¿åºç€ã®é¢ä¿ Vision-Language-Action (VLA) ã¢ãã«ã¯ãèŠèŠãšèšèªæç€ºãçµ±åããŠããããã®åäœãçæããåºç€ã¢ãã«ãšããŠãç ç©¶ãšç£æ¥å¿çšã®äž¡é¢ã§é²å±ããŠããŸããGoogle DeepMind ã® RT-2 ãPhysical Intelligence ã® Ï0 ãªã©ãå€§èŠæš¡ VLA ã¢ãã«ãçžæ¬¡ãã§çºè¡šãããŠããããã¡ã€ã³ãã¥ãŒãã³ã°åãã®é«å質ããŒã¿ã»ãããžã®éèŠã¯ä»åŸãæ¡å€§ãèŠèŸŒãŸããŸãã ãã¡ã€ã³ãã¥ãŒãã³ã°ã®æåŠã¯ãã¢ãã«ã¢ãŒããã¯ãã£ã®è¯ãæªã以äžã«ãæå
¥ããããŒã¿ãå®å®ããåè³ªã§æã£ãŠããããã«äŸåããŸããLLM ã® RLHF ããŒã¿ã»ããã«å¯ŸããçµéšåãšåãããPhysical AI ã§ãããŒã¿ããã³ãããæäŸããããŒã¿åºç€ã®å®æåºŠãã¢ãã«å質ã®äžéãæ±ºããæ§é ã«ãªãã€ã€ãããŸãã ããŒã¿ãå©çšããäžã§çŽé¢ãã 3 ã€ã®æ§é çèª²é¡ Physical AI ã®ããŒã¿ãã€ãã©ã€ã³ãéçšããããšãããšã次ã®èª²é¡ã«å¿
ãçªãåœãããŸãã åéçŸå Žã®äžå®å®æ§ : åè
ããããã®é éæäœäžã« PC ãèœã¡ããUSB ãå€ããããªãã¬ãŒã¿ãéäžã§ä»å
¥ããããšãã£ãäºè±¡ã¯æ¥åžžçã«çºçããŸãã1 ä»¶ã§ãç ŽæãšããœãŒããæ··å
¥ããã°ããã®åŸã®åçŸå®éšãåŠç¿ææšã®ä¿¡é Œæ§ãæãªãããŸãã åŸæ®µã¯ã©ãŠãã§å質å€å®ããã³ã¹ã : 1 ãšããœãŒããæ°çŸ MBãæ° GB ã«éããããããã²ãšãŸã Amazon S3 ã«ã¢ããããŒãããŠããå質å€å®ãããèšèšã§ã¯ã転éã»ã¹ãã¬ãŒãžã»åããã·ã¥ã®ã³ã¹ããç·åœ¢ã«ç©ã¿äžãããŸãã æåãã¥ã¬ãŒã·ã§ã³ã®éç : åé â ãã¥ã¬ãŒã·ã§ã³ â åŠç¿ ã®ã«ãŒããåãã«ã¯ãç®èŠç¢ºèªã»å質ã©ãã«ä»ãã»Snapshot æ§æãšãã£ãå·¥çšãæ©æ¢°åããªããã°ãåéã«ãã¥ã¬ãŒã·ã§ã³ã远ãã€ããŸããã æ¬åºç€ãç®æãç¶æ
ããããèžãŸããAPTO ã® Physical AI ããŒã¿åºç€ã¯æ¬¡ã®ç¶æ
ãå®è£
ç®æšãšããŠããŸãã äžå®å
šãªãšããœãŒã㯠ãšããžåŽã§é€å€ ããAmazon S3 ã«ã¯ã宿ãããšããœãŒãã ãããå±ã Amazon S3 ãžã®å°çãã€ãã³ãé§åã§åãåãã人éã®å€æã¯ Release æ¿èªã®ã¿ ã«éå®ãã ã¬ãã¥ã¢ãŒã¯ãã¯ã©ãŠãåŽã®ãã¥ã¬ãŒã·ã§ã³ãã€ãã©ã€ã³ãç®åºããå質ã²ãŒãçµæã»ããŒã¿ã»ããçµ±èšã»lineage ãèŠãŠæ¿èª / å·®ãæ»ãã倿ãã (è©³çŽ°ã¯æ¬¡åããã°ã§æ±ã) ããŒã¿ã® ID ãããã·ã¥ããå°åºããingest ã åªç ã«ãã (åãããŒã¿ãäœåºŠåã蟌ãã§ãçµæãå€ãããªã) 3. Physical AI ã®ããŒã¿åéãé£ããçç± å³ 2: åéãããã¥ã¬ãŒã·ã§ã³ãŸã§ã®ããŒã¿ãããŒå
šäœå æš¡å£åŠç¿ (imitation learning) ã¯ããææ¬ãšãªããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŒã¿ãåçŸããããã«ããªã·ãŒã¢ãã«ãåŠç¿ãããææ³ã§ããPhysical AI ã®æèã§ã¯ãæåž«ããŒã¿ã®åè£ãšã㊠人éã®ãã¬ãªãã¬ãŒã·ã§ã³ã§åéãããããŒã¿ãšã·ãã¥ã¬ãŒã·ã§ã³ç°å¢ã§çæãããåæããŒã¿ãæããããŸããçŸæç¹ã§ã¯åäœãæ åã®èªç¶ããæ¥è§Šã®å¿ å®åºŠãšãã£ãé¢ã§ãã¬ãªãããŒã¿ã®æ¹ãå質ãé«ããšèããããå€ãã®å Žåã¯äººéãé éæäœããããããã®åäœãåçŸããããã«ã¢ãã«ãåŠç¿ãããŸããVLA ã¢ãã«ã®ãã¡ã€ã³ãã¥ãŒãã³ã°ã§ã¯ããã®æåž«ããŒã¿ãšããŠçšããã人éã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããäžå®åè³ªã§æã£ãŠããããšãåæãšãªããŸãã ãšãããããããã®çãã°ã«ã¯ã次ã®äžã€ã®ãã€ãºãå¿
ãæ··å
¥ããŸãã ã¢ã¯ã·ã§ã³ãšç¶æ
ã®æ··åš : åè
é éæäœã§ã¯ã人éãæäœãããªãŒããŒã¢ãŒã ãšè¿œåŸãããã©ãã¯ãŒã¢ãŒã ãå¥ã¹ããªãŒã ãšããŠæ®ããªããšã action ãš state ãåäžãã³ãœã«ã«æ··ãã£ãŠããŸããŸããããã¯åŠç¿åŽã®ã©ãã«èšèšãç Žå£ããŸãã åæãºã¬ : ã«ã¡ã©ãã¬ãŒã ãšã¢ãŒã¿ãµã³ãã«ã®ã¿ã€ã ã¹ã¿ã³ãå·®åãäžå®å€ãè¶
ãããšãèŠèŠãšåäœã®å¯Ÿå¿é¢ä¿ã厩ããŸããæ¬å®è£
ã§ã¯ WARNING / CRITICALïŒ2ms / 5msïŒã®äºæ®µééŸå€ã§é次å€å®ããŠããŸãã ãšããœãŒãã®æ¬ æ : æžã蟌ã¿äžã« PC ãèœã¡ãã人éãéäžã§ä»å
¥ããããšãã£ãçç±ã§äžå®å
šãªãšããœãŒããæ··ãããŸãã1 ä»¶ã®æ··å
¥ã§åçŸå®éšã®ä¿¡é Œæ§ã倱ãããŸãã å³ 3: åè
é éæäœã® Leader / Follower æ§æ ããããåŸæ®µã®ã¯ã©ãŠãã§é€å»ããèšèšã¯è²»çšå¯Ÿå¹æãæªããAmazon S3 ã«ã¢ããããŒãããŠãããäžå®å
šã ã£ãããšå€æããçµè·¯ã§ã¯ã転éãšåããã·ã¥ã®ã³ã¹ããç·åœ¢ã«ç©ã¿äžãããŸããæ¬åºç€ã§ã¯ãšããžåŽã§å®å
šæ§ã確å®ãããäžå®å
šãªãšããœãŒã㯠S3 ã«æž¡ããªãããšãèšèšã®åºçºç¹ãšããŸããã 4. èšèšã貫ã 3 åå æ¬åºç€ã貫ãèšèšååã¯æ¬¡ã® 3 ã€ã§ããããŒã¿å質ãæ
ä¿ããããã®ã«ãŒã«ãšããŠå
ã«å®çŸ©ãããã®ããã§ã«ãŒã«ã«åã£ãŠ AWSã®ãµãŒãã¹ãæ©èœãéžå®ããŠããŸãã Immutability : Episode / Snapshot / Batch ã¯äžåºŠäœã£ããæžãæããŸãããä¿®æ£ã¯æ°ããã·ã¥ã§å¥ãšã³ãã£ãã£ãäœãã derived_from ã§ç³»èãæ®ããŸãã Content-Addressed Storage : ãšããœãŒãã® ID ã¯ãã¡ã€ã«çŸ€ã®æ±ºå®è«çããã·ã¥ããå°åºããŸããåãããŒã¿ãäœåºŠåã蟌ãã§ãåã ID ã«ãªããingest ãåªçã«ãªããŸãã Event-Driven : å®äºãããšããœãŒãã®å°çã S3 ã€ãã³ãã§æ€ç¥ããèªååŠçãé§åããŸãã人éã®å€æã¯ Release æ¿èªã®ã¿ã«éå®ããŸãã 5. åéãšã³ãžã³ã® 3 ããã»ã¹æ§æ å³ 4: sync-engine ã® 3 ããã»ã¹åé¢ ãšããž PC åŽã®åéãšã³ãžã³ (sync-engine) ã¯ã責åã®ç°ãªã 3 ã€ã®ããã»ã¹ãå
±æã¡ã¢ãª ( SharedRingBuffer ) ã§æ¥ç¶ããæ§æãæ¡ã£ãŠããŸãã Collector ããã»ã¹ : ã»ã³ãµãŒãšã«ã¡ã©ããã®èªã¿åããH.264 ãš FFV1 (深床) ã®åç»ãšã³ã³ãŒããæ
åœããŸãã Sync ããã»ã¹ : ã¡ã¿ããŒã¿ã ãã§ã¿ã€ã ã¹ã¿ã³ããç
§åããåæå質ã鿬¡å€å®ããŸãã Storage ããã»ã¹ : motor_state.bin / sync_log.bin / events.jsonl ãªã©ã®ãã€ããªãã¡ã€ã«ããã£ã¹ã¯ã«æžãåºããŸãã ãã® 3 ããã»ã¹æ§æã¯ãåŸè¿°ããç°åžžåæ¢æã®å®å
šè£
眮 (QualityMonitor) ãšçŽæ¥çµã³ã€ããŸããSync ããã»ã¹å
ã§å質å£åãæ€ç¥ããæç¹ã§ multiprocessing.Event ãç«ãŠãCollector / Sync / Storage ã® 3 ã€ãåæã«ã°ã¬ãŒã¹ãã«åæ¢ãããšããœãŒãã« .failed ã»ã³ããã«ãçœ®ãæµãã§ãã 6. raw ãã©ãŒãããã®èšèš çŸç¶ã®ãã©ãŒãããéžå®ãšä»åŸã®æ¹åæ§ ãšããžã§ä¿åãã忬 (raw) ã®ãã©ãŒãããã¯ãåŠç¿ã§äœ¿ã LeRobot v3.0 ãžã®å€æåããŒã¿ãæ ŒçŽããã¬ã€ã€ã§ããPhysical AI / ãããã£ã¯ã¹ã§äžè¬ã«æ€èšãããåè£ãšè©äŸ¡ãã€ã³ãã䞊ã¹ããšæ¬¡ã®ããã«ãªããŸãã åè£ è©äŸ¡ãã€ã³ã apto-raw-v5 (çŸè¡è©Šè¡) 倿åã®ç©çå±€ãå¯éã«æ®ãããåœé¢ã®éçšã«ã¯ååã ãæšæºã§ã¯ãªã MCAP (Foxglove + ROS 2) ã¹ããŒããšå¯èŠåã匷ãããã¹ã¬ã¹æ·±åºŠåç» (FFV1) ã CAN-FD çãã°ã 1 éå±€ã«åå±
ãããéçšã確ç«ã§ããã°æååè£ HDF5 èªå·± èšè¿°åã§æ±ããããäžæ¹ãåç»ã³ãŒããã¯ã®éžæè¢ãéå®çã巚倧åäžãã¡ã€ã«ã S3 ã®ãªããžã§ã¯ãåäœã¢ããããŒãïŒéšåååŸãšçžæ§ãæªããšããèª²é¡ Apache Arrow IPC åæåã§åŠç¿åŽãšã®èŠªåæ§ã¯é«ããStream Format ã§è¿œèšã¯å¯èœã ãããšããœãŒãéäžã§ç°åžžçµäºããéã®æŽåæ§ä¿èšŒãçŸæç¹ã®ãã㯠ããããèžãŸããçŸæç¹ã§ã¯èªåã® apto-raw-v5 ã詊è¡çã«æ¡çšããŠããŸããæšæºãã©ãŒãããåŽã§ããã¹ã¬ã¹æ·±åºŠåç» + CAN-FD çãã°ã 1 éå±€ã«åå±
ããããéçšããŠããŠãæããã£ãŠããªãããããŸãã¯å¯éæ§ãšéçšå®¹ææ§ãåªå
ããæ«å®è§£ãšããäœçœ®ã¥ãã§ãã ãã ãããã®ã¬ã€ã€ã®ãã©ãŒãããéžå®ã¯åŒãç¶ãæ€èšäžã§ãPhysical AI åšèŸºã®ãã©ãŒãããæšæºã¯æµåçãªãããå°æ¥çã« MCAP ãªã©ã®æšæºãã©ãŒããããžç§»è¡ããå¯èœæ§ã¯æ®ããŠããŸããããããæ¡ãã«ããã(1) å
šã¿ã€ã ã¹ã¿ã³ãã int64 ããç§ã§çµ±äžããã(2) CAN-FD çãã°ããã®ãŸãŸä¿æããã(3) 深床åç»ããã¹ã¬ã¹ã§ä¿æããããšããäžç¹ã¯ãã©ãŒãããéžå®ã«äŸããæºããæ¹éã§ãããããã¯å°æ¥ããã¥ã¬ãŒã·ã§ã³ãããçŽãããå¥ã®ç¹åŸŽéãåŸä»ãã§èšç®ããããšããèŠä»¶ã«çŽæ¥å¹ããŠããŸãã ã¯ããã¯åææº i64 ns ã§ç²ŸåºŠã確ä¿ããŠããåã»ã³ãµãŒã®ã¯ããã¯æºãæã£ãŠããªããã°åæå€å®ãã®ãã®ãæå³ã倱ããŸããæ¬åºç€ã§ã¯æ¬¡ã®æ¹éãåã£ãŠããŸãã ã«ã¡ã© : PTP (IEEE 1588) 察å¿ã® GigE Vision ã«ã¡ã©ãæ¡çšããPC ãã¹ãã PTP ãã¹ã¿ãšããŠå
šã«ã¡ã©ãåæããã¬ãŒã ã«ã¯ PC åä¿¡æå»ã§ã¯ãªãã«ã¡ã©åŽããŒããŠã§ã¢ã¯ããã¯ã®ã¿ã€ã ã¹ã¿ã³ããæ£ãšããŠä¿åããŸãã ã¢ãŒã¿ (CAN-FD) : CAN ãã¬ãŒã èªäœã¯ã¿ã€ã ã¹ã¿ã³ããæããªããããCAN ã³ã³ãããŒã©ã® SOF åä¿¡ã¿ã€ãã³ã°ã PC ãã¹ãã® CLOCK_MONOTONIC_RAW ã§æå»ããŠããŸããCANã³ã³ãããŒã©ã®HWã¿ã€ã ã¹ã¿ã³ããäœ¿ãæ¹æ³ãèããããŸãã WARNING / CRITICAL éŸå€ã®æ ¹æ : ã«ã¡ã©ãã¬ãŒã éé 33 ms (30 fps) ã«å¯Ÿãããµããã¬ãŒã 粟床ãä¿ã€ããã« WARNING 2 msãCRITICAL 5 ms ãèšå®ãCRITICAL ãè¶
ãããšãã¬ãŒã å
ã§ã®èŠèŠãšåäœã®å¯Ÿå¿é¢ä¿ããããæš¡å£åŠç¿ã§æ±ããªããªããŸãã PTP åæããªãç°å¢ã§ã¯ NTP ã®ããªç§ç²ŸåºŠã«å£åããCRITICAL ãè¶
ãããªã¹ã¯ãå¢ããŸããæ¬åºç€ãå¥ç°å¢ã«é©çšããå Žåã¯ããŸãã¯ããã¯åææºã®éžå®ãåºçºç¹ã«ãªããŸãã 7. å®å
šæ§ããšããžã§ç¢ºå®ãããä»çµã¿ åé²äžã®é»æºæã»ããã»ã¹ã¯ã©ãã·ã¥ã§ããšããœãŒãããéäžãŸã§æžãããç¶æ
ãã«ãªãããšã¯é¿ããããŸãããåé¡ã¯ãããåŸæ®µã宿æžã¿ãšèª€èªããããšã§ãã誀èªãããšäžå®å
šãªããŒã¿ãåŠç¿ããŒã¿ã»ããã«æ··å
¥ããŸãããšããžåŽã§ã¯ãéäžã§å£ããç¶æ
ã®ãšããœãŒããäžæµã«æµããªããããšãæåªå
ã«ããŠããŸãã ãšããžã§ã¯æœè±¡åºŠã®ç°ãªã3ã€ã®å±€ã§å®å
šæ§ãæ
ä¿ããŸãã é²ã倱æ ä»çµã¿ 倱ææã®ããŒã«ãŒ ã¬ã€ã€ 1: ãã¡ã€ã«åäœ åäžãã¡ã€ã«ãæžãããã®ãŸãŸæ¬æ¥åã§æ®ã ã¢ãããã¯æžã蟌ã¿: .part æ¡åŒµåã§æžãåºã â fsync â atomic rename äžéãã¡ã€ã«ã¯ .part ã®ãŸãŸæ®ãïŒæ¬æ¥åã¯ååšããªãïŒ ã¬ã€ã€ 2: ãšããœãŒãåäœ åã
ã®ãã¡ã€ã«ã¯å®å
šã ãããšããœãŒãå
šäœãšããŠã¯éäžã§äžæããŠãã .done ã»ã³ããã«ã«ããå®äºå€å®ãå
šãã¡ã€ã«ãæã£ãåŸã« .done ã»ã³ããã«ã眮ã .done ãååšããªã ã¬ã€ã€ 3: æå³çå質 ãã¡ã€ã«ãšããŠã¯å®å
šã ããåæãºã¬ã§åŠç¿ã«äœ¿ããªã åæå質å£åæã®å®å
šåæ¢ (QualityMonitor): QualityMonitor ãéŸå€è¶
éãæ€ç¥ .failed ã眮ã åŸæ®µïŒã¯ã©ãŠã ingest ã Storage ããã»ã¹åŽã®ã¹ãã£ãïŒã¯ããã®3ã€ã®ããŒã«ãŒã ããèŠãŠãå®äº / æªå®äº / 倱æããå€å®ããŸããäžèº«ã®ããŒã¹ã SHA-256 æ€èšŒã¯åŸæ®µã®è²¬åãšããŠæç¢ºã«åãåããŠããŸãã ãã¡ã€ã«ã®ååšã ããå®äºæ¡ä»¶ã«ããŠããçç±ã¯ã åŸ©æ§æã®å€æãéçæ€æ»ã ãã§å®çµãããã ããã§ãããç¹å®ãã¡ã€ã«ãååšãããåŠããã ãã§å€å®ã§ããã°ã埩æ§ããžãã¯èªäœãå®è³ªçã« ãŒãã«ã§ããŸããåŸè¿°ãã Amazon S3 Event Notifications ã®ãã£ã«ã¿èšèšãããã®ååã®å»¶é·ç·äžã«ãããŸãã å
šäœã·ãŒã±ã³ã¹ ãŸãåãã«å
šäœã®æµããå³ç€ºããŸãã åããŒã¿ãã¡ã€ã«ã .part ã§æžãåºã â fsync â atomic rename manifest.json ã atomic write + 芪ãã£ã¬ã¯ã㪠fsync æ£åžžå®äºãªã .doneãç°åžžåæ¢ãªã .failed ã touch RawUploadAgent ãåãã¡ã€ã«ã䞊å PUT åŸãmanifest.json ãæåŸã« PUT ã㊠S3 Event ãçºç« ãã¡ã€ã«åäœã®ã¢ãããã¯æžã蟌㿠åã
ã®ãã¡ã€ã«ã¯æ¬¡ã®æé ã§æžãåºããŸãã .part æ¡åŒµåã§æžãåºãïŒäŸ: cam_front.mp4.part ïŒ æžãçµãã£ãã fsync() ã§ããŒã¿ãç©çããã€ã¹ã«æ°žç¶åãã os.replace() ã§ .part ãæ¬æ¥åïŒäŸ: cam_front.mp4 ïŒã«ã¢ãããã¯ã« rename ãã 芪ãã£ã¬ã¯ããªã«å¯Ÿã㊠fsync() ãåŒã³ããã£ã¬ã¯ããªãšã³ããªã®å€æŽãæ°žç¶åãã ãã®æé ãå®ãããšã§ã黿ºæãèµ·ããŠããå€ãå®å
šãªããŒã¿ãæ®ã£ãŠããããæ°ããå®å
šãªããŒã¿ã眮ãããŠã ããã .part ã®ãŸãŸæ®ã£ãŠãããã®ããããã«ãããªããã æ¬æ¥åã§å端ãªãã¡ã€ã«ãèŠããç¶æ
ã¯çºçããŸãã ã manifest.json ãåãæé ã§æžãåºããŸãã ãŸãããšããžã¹ãã¬ãŒãž 㯠NVMe SSD + ext4 (data=ordered) ãæ¡çšããŠããŸããext4 ã® data=ordered ã¢ãŒãã§ã¯ãããŒã¿ãããã¯ããžã£ãŒãã« commit ããå
ã«ãã£ã¹ã¯ãžæžãåºãããããšãä¿èšŒãããŸãããã®ãããfsync() + os.replace() ã®çµåãã§ã¯ã©ãã·ã¥åŸããå€ãå®å
šãªããŒã¿ããŸãã¯ãæ°ããå®å
šãªããŒã¿ãã®ã©ã¡ ãããå¿
ã芳枬ãããŸãããã㯠ã¢ãããã¯æžã蟌ã¿ãæç«ããåææ¡ä»¶ã§ããNFS / FUSE çã«ãã¡ã€ã«ã·ã¹ãã ã倿Žããå Žåãã¢ãããã¯æžã蟌ã¿ãç Žç¶»ããå¯èœæ§ããããããå¿
ãåè©äŸ¡ãå¿
èŠã§ãã ãšããœãŒãåäœã®å®äºå€å® ãã¹ãŠã®ãã¡ã€ã«ãæã£ãæç¹ã§ããšããœãŒããã£ã¬ã¯ããªçŽäžã« .done ã touch ããŸããéäžã§äžæããå Žå㯠.done ã眮ããªãããQualityMonitor ã .failed ã眮ããŸãã å®äºæ€ç¥ã¯ã .done ãš manifest.json ã®äž¡æ¹ãæã£ãŠãããã ãã§å€æããŸããäžèº«ã®ããŒã¹ãæŽåæ§ãã§ãã¯ã¯ã¯ã©ãŠãåŽ ingest ã®è²¬åãšããŠåŸæ®µã«åãåããŠããŸãã æå³çå質ãå®ãå®å
šè£
眮 (QualityMonitor) ãã¡ã€ã«ãå®å
šã«æžããŠããåé²äžã®åæå質ãå£åããŠããã°åŠç¿ã«ã¯äœ¿ããŸãããSync ããã»ã¹ã¯ã«ã¡ã©ãã¬ãŒã ãšæè¿åã¢ãŒã¿ãµã³ãã«ã®ã¿ã€ã ã¹ã¿ã³ãå·®åïŒåæãºã¬ïŒã鿬¡ç£èŠããŠããŸãããã®å·®åã®æç³»åã¯åæ¬äžã® sync_log.bin ã«ä¿åãããåŸæ®µã®å質ã²ãŒãã§ãåç
§ã§ããŸãã QualityMonitor ã .failed ã眮ãå€å®æ¡ä»¶ã¯æ¬¡ã®äºã€ã§ãã CRITICAL ã¬ãã«ã®ããªãããäžå®ãã¬ãŒã æ°é£ç¶ãã 芳枬ãŠã£ã³ããŠå
ã§ CRITICAL ã®å²åãäžå®å²åãè¶
ãã ãããããæºãããæç¹ã§ã3 ããã»ã¹å
šäœïŒSync / Storage / CameraïŒãã°ã¬ãŒã¹ãã«åæ¢ãããšããœãŒãã« .failed ã»ã³ããã«ã眮ããŸããããã«ãããå質ãå£åãããã¬ãŒã ãå«ãŸãããšããœãŒãã¯ã¯ã©ãŠ ãã«æž¡ãåã«ãšããžã§é€å€ãããŸãã 8. Amazon S3 ãžã®ã¢ããããŒã manifest.json ãæåŸã« PUT ããèšèš RawUploadAgent ã¯å®äºãããšããœãŒãã®ãã£ã¬ã¯ããªã 1 ãã¡ã€ã«ã〠Amazon S3 raw ãã±ããã«ã¢ããããŒãããŸããããã§éèŠãªã®ã¯ã manifest.json ã æåŸã« PUT ããããšã§ãã çç±ã¯ã¯ã©ãŠãåŽã® S3 Event Notifications ãšã®æ¥ç¶ã«ãããŸãã1 ãšããœãŒããã 8 ãªããžã§ã¯ãååŸãçæãããŸããããã¹ãŠã«å¯ŸããŠã€ãã³ããçºç«ããããšäžæµã® Amazon SQS ãã¥ãŒã 8 åã«èšãã¿ãŸããããã«ããŸã ã¢ããããŒãéäžã®ç¶æ
ã§ Worker ã S3 ãèªã¿ã«è¡ããšããã¡ã€ã«äžäžèŽã«ããåœã® IntegrityError ã DLQ ã«ç©ãŸããŠããŸããŸãã ããã§ã(1) S3 Event Notifications åŽã§ãã£ã«ã¿ã filter_suffix = "/manifest.json" ã«çµãã(2) manifest.json ã¯ä»ã®å
šãã¡ã€ã«ã® PUT ãå®äºããŠããæåŸã«çœ®ãããšããäºæ®µã®å¶çŽã§ãå®äºãããšããœãŒã 1 ã€ã«å¯Ÿã㊠SQS ã¡ãã»ãŒãž 1 ã€ããæç«ãããŠããŸãã ãã®èšèšãæç«ããã®ã¯ãS3 Event Notifications ããªããžã§ã¯ãããŒã® prefix / suffix ãã£ã«ã¿ããã€ãã£ãã«ãµããŒãããŠããããã§ããTerraform ã§ã®èšå®ã¯ã»ãŒæ¬¡ã® 1 ãããã¯ã«åãŸããŸãã resource "aws_s3_bucket_notification" "raw" { bucket = aws_s3_bucket.raw.id queue { queue_arn = aws_sqs_queue.s3_events.arn events = [ "s3:ObjectCreated:Put" ] filter_suffix = "/manifest.json" } depends_on = [aws_sqs_queue_policy.s3_events] } filter_suffix ã /manifest.json ã«åºå®ããã ãã§ããšããžåŽã manifest.json ãæåŸã« PUT ããç¬éã«ã®ã¿ SQS ã¡ãã»ãŒãžã 1 ä»¶ãã¥ãŒã«å
¥ãé¢ä¿ã S3 åŽã§å®çµããŸãã å®è£
㯠concurrent.futures.ThreadPoolExecutor ã§äžŠå PUT ãã as_completed() ã§å
š future ã®å®äºãåŸ
ã£ãŠãã manifest.json ã PUT ããŸãã1 ã€ã§ã倱æããŠããã°äŸå€ãäŒæããã .failed ãæ®ããŠãšããœãŒãå
šäœãç Žæ£ããŸãã from concurrent.futures import ThreadPoolExecutor, as_completed def upload_episode (episode_dir: Path , bucket: str , key_prefix: str ) -> None : data_files = [f for f in episode_dir.iterdir() if f.name not in { "manifest.json" , ".done" }] with ThreadPoolExecutor(max_workers= 8 ) as pool: futures = [pool.submit(_put_with_checksum, f, bucket, f"{key_prefix}/{f.name}" ) for f in data_files] for fut in as_completed(futures): fut.result() # raise on failure â episode ãç Žæ£ # å
šããŒã¿ãã¡ã€ã« PUT å®äºåŸã« manifest.json ãæåŸã« PUT # â S3 Event Notifications ã® filter_suffix="/manifest.json"ãçºç« _put_with_checksum(episode_dir / "manifest.json" , bucket, f"{key_prefix}/manifest.json" ) _put_with_checksum 㯠boto3 ã® put_object(ChecksumAlgorithm="SHA256") ãåŒã³ãS3 ã® Additional Checksum æ©èœã§ãµãŒãåŽã§ã SHA-256 ãåèšç®ãããŠãªããžã§ã¯ãã¡ã¿ããŒã¿ã«ä¿åããŸããWorker åŽã®åèšç®æ€èšŒãšçµã¿åãããããŒã¿æŽåæ§ã¯äºéã«æ
ä¿ããŠããŸãã .tar ã§ãŸãšããªãçç± ä»åã¯ãšããœãŒãã .tar ã§ãŸãšããã«ããã£ã¬ã¯ããªæ§é ããã®ãŸãŸ Amazon S3 ã®ããŒéå±€ã«åãåãæ¹éãæ¡ã£ãŠããŸããtar äžæ¬ PUT æ¡ãšåå¥ PUT æ¡ã粟æ»ããçµæãã³ã¹ãå·®ã¯å°ãã(çŸç¶ 8 ãã¡ã€ã«/ãšããœãŒãèŠæš¡ã§æçåå²ã¯çŽ 43 ãã¡ã€ã«)ãå€æã¯æè¡èгç¹ã§æ±ºãŸããŸãããåå¥ PUT ãéžãã äž»ãªçç±ã¯æ¬¡ã®éãã§ãã åŸæ®µ Stage ã®é察称ãªã¢ã¯ã»ã¹ãã¿ãŒã³ : CosmosStage(æ åå質å€å®)ã¯åç»ã®ã¿ãåŠç¿(DataLoader)㯠Parquet ã®ã¿ãå¿
èŠãšããŸããåå¥ PUT ãªãå¿
èŠãªãã¡ã€ã«ã ã GET ã§ããŸãããtar åãããšæ¯åå
šäœã GET ããŠå±éããå¿
èŠããããç¹ã« GPU ããŒãã§ I/O åŸ
ã¡ãçºçããã®ã¯èšèšãšããŠäžé©åã§ãã CopyObject ã«ãã stream-copy æé©åã厩ãã : ColdConvertStage ã§ã¯åç»ã raw ãã cold ãž CopyObject ã§è»¢èšããECS Worker ã® CPUã»åž¯åã³ã¹ãããŒãã«æããŠããŸããããã¯åå¥ãã¡ã€ã«ãç¬ç«ãã S3 ãªããžã§ã¯ããšããŠååšããããšãåæã§ãã tar ã®ãå
šãç¡ããæ§è³ªãšã®äžæŽå : éšåç Žæã§å
šäœãèªããªããªããRange Request ã§éšåèªã¿ã§ããªããGlacier 埩å
ã§æ¯åå
šäœãåãåºãããšã«ãªããIAM / KMS ç²åºŠããã¡ã€ã«åäœã§åããªãããšãã£ãåé¡ãç©ã¿éãªããŸãã ãªã tar 圢åŒãã®ãã®ãåŠå®ããŠããããã§ã¯ãªããåŠç¿é
åžçšã® WebDataset 圢åŒã Glacier Deep Archive ãžã®é·æã¢ãŒã«ã€ããªã©ãraw ã¢ããããŒãçµè·¯ãšã¯å¥ã¬ã€ã€ãŒã§ tar åãã䟡å€ãããçšéã¯ååšããŸãã 9. ãŸãšããšæ¬¡åäºå ãã®ããã°ã§ã¯ãPhysical AI ã®ããŒã¿åºç€ã«ãããŠã宿ãããšããœãŒãã ãã AWS ã«æž¡ããç¶æ
ããšããžåŽã§ã©ãäœããã解説ããŸãããèŠç¹ã¯æ¬¡ã®äžç¹ã§ãã èªåãã©ãŒããã apto-raw-v5 ãæ¡çš : i64 ns ã¿ã€ã ã¹ã¿ã³ãã»CAN çãã°ã»ãã¹ã¬ã¹æ·±åºŠã 1 éå±€ã§ä¿æããŠããŸããMCAP / HDF5 / Apache Arrow IPC ã®ãããã§ããã®çµåããåç¬ã§ã¯æºãããªãã£ãããã§ãã å®äºå€å®ããã¡ã€ã«ååšã®ã¿ã«çµ±äž : .done ãš manifest.json ã®äž¡æ¹ãæã£ããšãã ãå®äºãšã¿ãªãååãæ¡ããç¶æ
æ©æ¢°ã®è€éåãé¿ããŸããããããã¯ã©ãŠãåŽã®ã€ãã³ãé§åèšèšã«çŽçµããŸãã manifest.json ãæåŸã« PUT : Amazon S3 Event Notifications ãããšããœãŒãå®äº = 1 éç¥ããšãã察å¿é¢ä¿ã«æŽçããŸããã Physical AI ã®ããŒã¿ãã€ãã©ã€ã³ãé·ãåãç¶ããã«ã¯ããæ©æ¢°çã«ãããå·¥çšã¯å
šéšèªåã«å¯ãã人éã®å€æã Release æ¿èªã ãã«éäžããããããšãéµãšãªããŸãããšããžåŽã§å®å
šæ§ã確å®ãããæ¬çš¿ã®èšèšã¯ããã®èªååãæç«ãããåå°ã§ãã 第 2 ç« ã§ã¯ããã® manifest.json å°çã€ãã³ããèµ·ç¹ã«åã AWS åŽã®ãã¥ã¬ãŒã·ã§ã³ãã€ãã©ã€ã³ãæ±ããŸããAmazon S3 â Amazon SQS â Amazon ECS Fargate Worker ã®ã€ãã³ãé§å ingestãEpisode / Snapshot / Batch ã® 3 å±€ã¢ãã«ã9 ãµãã¹ãããã®æ§é åãã¥ã¬ãŒã·ã§ã³ãš 2 éå±€å質ã²ãŒããäžå¿ã§ããç¶ã第 3 ç« ã§ã¯ãããŒã¿æ¡åŒµãš VLA ãã¡ã€ã³ãã¥ãŒãã³ã°ãžã®æ¥ç¶ãã·ãã¥ã¬ãŒã·ã§ã³ç°å¢ãšã®çµ±åããã«ããããã察å¿ã®æ¹åæ§ãäºåç·šãšããŠãå±ãããŸãã åããããªèª²é¡ã«åãçµãŸããŠããã¹ã¿ãŒãã¢ããã®åèã«ãªãã°å¹žãã§ãã We are hiring!! APTOã¯ãAIãPhysical AIé åã®ããŒã¿ã«ç¹åãããµãŒãã¹ãæäŸããŠããŸãã æè¡ã®å®è£
ãé²ãããæ¹ãç ç©¶éçºã«èå³ãããæ¹ãªã©ã¯ãäžèšæ¡çšããŒãžãããšã³ããªãŒãã ããïŒ https://apto.co.jp/careers/ èè
ãããã£ãŒã« ç°äž éä¹ (Tatsuya Tanaka) APTOã«ãŠPhysical AIããããã£ã¯ã¹é åã®ããŒã¿ãã€ãã©ã€ã³éçºãããã³UIæ§ç¯ãã¡ã€ã³ã«æ
åœããŠããAIãšã³ãžãã¢ã§ããããŒã¿ã®åæããã«ãã¢ãŒãã«ããŒã¿ç®¡çãªã©ãAI掻çšã«åããããŒã¿åºç€ã®èšèšã»éçºã«åŸäºããŠããŸããè¶£å³ã¯ç«¶æããã°ã©ãã³ã°ãšéžäžèгæŠãåŠçæä»£ã¯éžäžäžçã§ããããçŸåšã¯ãã£ã±ãèŠãå°éã§ãã é è€ ä¿ç (Shunsaku Endo) ããžã·ã§ã³: Co-founder / AI Engineer ãã³ã¿ã³ã²ãŒã ã¢ã«ãããŒã§ãåŠå
ã®å¯©æ»äŒã§æ°ã
ã®è³ãåè³ããã®åŸãAIéçºã«ãèå³ãæã¡2020幎1æã«APTOãå
±å嵿¥ãçŸåšã¯ãAPTOã®CDOãšããŠéçºãšããžãã¹åæ¹ã管çã GitHubã¢ã«ãŠã³ã: synsax( https://github.com/synsax ) 黿Ÿ€ è® (Ren Kurosawa) 㯠AWS Japan ã®ãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã§ãStartup æ¥çã®ã客æ§ãäžå¿ã«ã¢ãŒããã¯ãã£èšèšãæ§ç¯ããµããŒãããŠããŸããããŒã¿ã¢ããªãã£ã¯ã¹ãµãŒãã¹ãæ©æ¢°åŠç¿ã®é åãåŸæãšããŠããŸããå°æ¥ã®å€¢ã¯å®å®ã§ããšã ãè© ãããšã§ãã
ã¹ã¿ãŒãã¢ãããšã®ä»äºã«ã¯ãæ¬åœã«åºæ¿çãªäœãããããŸããç§ã¯ 2 幎以äžã«ããã£ãŠããã®ãããªä»äºã«ç²Ÿåçã«åãçµãã§ããŸãããã¹ã¿ãŒãã¢ããã¯ãä»ãšã¯ç°ãªãåšæ³¢æ°ã§æŽ»åããŠããŸããåè¿«æã¯åå®ã§ãå¶çŽã¯å³ãããèè² ã£ãŠãããªã¹ã¯ã¯å人çãªãã®ã§ãããããã®ã¹ã¿ãŒãã¢ãããããžãã¹ã¢ãã«ã蚌æãããšãã課é¡ãä¹ãè¶ããã®ããµããŒãããã«ã¯ãæè¡çãªå°éç¥èã ãã§ãªããè¿
éã«è¡åããåæãçãããŸã å®ç§ãªããŒã¿ãååšããŠããªãæç¹ããé©åãªã¢ãŒããã¯ãã£ã«è³ããææ¬²ãå¿
èŠã§ãã ç§ãæãæ°ã«å
¥ã£ãŠããã®ã¯ãä»äºã決ããŠæœè±¡çã§ã¯ãªãããšã§ããããªãã¡ãã¹ã¿ãŒãã¢ãããäžãã®ãç§ããµããŒãããããããæææ±ºå®ã¯ã驿ã«è£œåãåºè·ã§ããããäºç®å
ã«åããããšãã§ããããæè³å®¶ããæ¬¡ã®ã©ãŠã³ãã§ä¿¡é ŒãåŸããããã«çŽæ¥åœ±é¿ãããã®ã§ãã 2026 幎 5 æ 25 æ¥é±ã® AWS ãã¥ãŒã¹ãèŠãŠãããŸãããã ãããã©ã€ã³ æ°èŠéèš â ãã«ã³ã®ã€ã¹ã¿ã³ããŒã«ã«ããã AWS ããŒã«ã«ãŸãŒã³ â AWS ã¯ãã«ã³ã®ã€ã¹ã¿ã³ããŒã«ã«æ°ããããŒã«ã«ãŸãŒã³ãéèšããŸãããããã«ãããæ¬§å·æå€§ã®éœåžåã® 1 ã€ã« AWS ã®ã³ã³ãã¥ãŒãã£ã³ã°ãã¹ãã¬ãŒãžããããã¯ãŒãã³ã°ãµãŒãã¹ãæäŸã§ããããã«ãªããŸããããã«ã³ã§ããŒã¿ã¬ãžãã³ã·ãŒã«é¢ããèŠä»¶ãæºããå¿
èŠãããçµç¹ã«ãšã£ãŠããã®ããŒã«ã«ãŸãŒã³ã¯ãAWS ãµãŒãã¹ã®ããããæ©èœããã«æŽ»çšããªãããããŒã¿ãåœå
ã«ä¿æããããšãå¯èœã«ããŸãããŸãããšã³ããŠãŒã¶ãŒã®å®éã®æåšå°ã«ããè¿ãå Žæã§å®è¡ã§ããããããªã¢ã«ã¿ã€ã ã²ãŒã ãã¡ãã£ã¢å¶äœãã©ã€ãåç»ã¹ããªãŒãã³ã°ãéèãµãŒãã¹ãªã©ã1 æ¡ããªç§ã®ã¬ã€ãã³ã·ãŒãå¿
èŠãšããã¢ããªã±ãŒã·ã§ã³ã«ãããŒã«ã«ãŸãŒã³ã¯å€§ããªã¡ãªããããããããŸãã ããŒã«ã«ãŸãŒã³ã¯ãå€§èŠæš¡ãªã€ã³ãã©ã¹ãã©ã¯ãã£æè³ã§ããããªãã¡ãããŒããŠã§ã¢ãé»åããããã¯ãŒãã³ã°ãéçšäžã®åªç§æ§ãšãã£ãç¹ã§ããªãŒãžã§ã³ãšåãã¬ãã«ã®ã³ãããã¡ã³ããå¿
èŠãšãªããŸãããŸããããã¯ããµãŒãã¹ãè¡ãå±ããŠããªãåžå Žãžã®ç¶ç¶çãªæ¡å€§ãåæ ãã AWS ã®åãçµã¿ã§ããããŸãã ãã«ã³ã®ãã«ããŒã«ãšã£ãŠãããã¯äžé£ã®æ°ããªã¢ãŒããã¯ãã£ã®å¯èœæ§ãåãéããã®ã§ããããŒã¿ã¬ãžãã³ã·ãŒã«é¢ããèŠä»¶ãæºããã®ã«åœ¹ç«ã€ããããã«ã³å
ã«ããŒã¿ãä¿åããã³ããã¯ã¢ããã§ããããã«ãªã£ãã»ããã€ã¹ã¿ã³ããŒã«ã®ããŒã«ã«ãŸãŒã³ã§äœã¬ã€ãã³ã·ãŒã¯ãŒã¯ããŒããå®è¡ããAWS ãªãŒãžã§ã³ã«ã·ãŒã ã¬ã¹ã«æ¥ç¶ã§ããããã«ãªããŸããããã®ãããç¬èªã®ããŒã¿ã»ã³ã¿ãŒã€ã³ãã©ã¹ãã©ã¯ãã£ã管çããããšãªãããã€ããªããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æè»æ§ãåŸãããŸãããã«ã³ã«ããã 10 幎ã«ãããåœç€Ÿã®åãçµã¿ãå©çšå¯èœãªãµãŒãã¹ãã客æ§ãããŒãããŒã«é¢ãã詳现ã«ã€ããŠã¯ã ç«ã¡äžãã«é¢ããããã°èšäº ã«ã¢ã¯ã»ã¹ããŠãã ããã 2026 幎 5 æ 18 æ¥é±ã®ãªãªãŒã¹ ç§ã泚ç®ããããã€ãã®ãªãªãŒã¹ãææ°æ
å ±ãããã€ãã玹ä»ããŸã: Security Hub Extended ã 9 ã€ã®ã«ããŽãªã«ããã 21 ã®å³éžãããããŒãããŒãœãªã¥ãŒã·ã§ã³ã«å¯Ÿå¿ â AWS Security Hub Extended ã¯ããšã³ããã€ã³ãä¿è·ãã¯ã©ãŠãã»ãã¥ãªãã£äœå¶ç®¡çãè
åšã€ã³ããªãžã§ã³ã¹ãªã©ã9 ã€ã®ã«ããŽãªã«ããã 21 ã®å³éžãããããŒãããŒã»ãã¥ãªãã£ãœãªã¥ãŒã·ã§ã³ãšçµ±åããããã«ãªããŸãããã«ã¹ã¿ã çµ±åãå¿
èŠãšããã«ãããåºç¯ãªããŒã«ãšã³ã·ã¹ãã ãããçµ±åãããåªå
é äœä»ãããããã»ãã¥ãªãã£ã«é¢ããæ€åºçµæã Security Hub å
ã§çŽæ¥ååŸã§ããããã«ãªããŸãããããã¯ãAWS ããã³ãµãŒãããŒãã£ãŒããŒã«å
šäœã«ãããã»ãã¥ãªãã£äœå¶ã®çµ±åãã¥ãŒãæ±ããŠãããšã³ã¿ãŒãã©ã€ãºã»ãã¥ãªãã£ããŒã ã«ãšã£ãŠç¹ã«æçã§ãã Amazon SageMaker AI now supports OpenAI-compatible APIs for inference endpoints â OpenAI äºæ API ã䜿çšããŠãAmazon SageMaker AI ã®æšè«ãšã³ããã€ã³ããåŒã³åºããããã«ãªããŸãããããã«ãããSDK ã®å€æŽãªããAI ã¯ãŒã¯ããŒãã OpenAI ãã SageMaker ã«ç§»è¡ããããè€æ°ã®ãããã€ããŒéã§æ©èœããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãããããããšã倧å¹
ã«å®¹æã«ãªããŸããããã«ãããOpenAI ã䜿çšããŠãããã¿ã€ãã³ã°ãéå§ããAWS äžã®ãããã¹ã±ãŒã©ãã«ã§ã³ã¹ã管çãããã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®ç§»è¡ãæ€èšããŠããããŒã ã«ãšã£ãŠãç§»è¡ã®ããŒãã«ãäžãããŸããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯ãã®ãŸãŸäœ¿çšã§ããŸããå¿
èŠãªã®ã¯ãSageMaker ãšã³ããã€ã³ãããã€ã³ãããããšã ãã§ãã AWS Secrets Manager Agent ã®ããªãã§ãããš IAM ããŒã«åŒãåãã®çŽ¹ä» â AWS Secrets Manager Agent ã¯ãèµ·åæã«ã·ãŒã¯ã¬ãããããªãã§ããããIAM ããŒã«ãåŒãåããŠãããã®ã·ãŒã¯ã¬ãããååŸã§ããããã«ãªããŸãããããã«ãããã¬ã€ãã³ã·ãŒãéèŠãªèŠçŽ ãšãªãã¢ããªã±ãŒã·ã§ã³ã§ãªã³ããã³ãã®ã·ãŒã¯ã¬ããååŸã«äŒŽãã³ãŒã«ãã¹ã¿ãŒãæã®ã¬ã€ãã³ã·ãŒãè§£æ¶ãããŸãããšãŒãžã§ã³ããèšå®ããããšã§ãã¢ããªã±ãŒã·ã§ã³ããã©ãã£ãã¯åŠçãéå§ããåã«å¿
èŠãªã·ãŒã¯ã¬ãããããªããŒãã§ãããããæ¬çªã«ãããã·ãŒã¯ã¬ããé¢é£ã®ã¬ã€ãã³ã·ãŒã¹ãã€ã¯ã®ãªã¹ã¯ã軜æžã§ããŸãããŸããIAM ããŒã«ã®åŒãåãã®ãµããŒãã«ãããã¢ã¯ã»ã¹èš±å¯ã®å¢çãç°ãªãã¯ãŒã¯ããŒãéã§ãšãŒãžã§ã³ããå
±æããããšã容æã«ãªããŸãã AWS ããªãŒãã³ãœãŒã¹ã® DynamoDB äºæã¢ããã¿ãŒ ExtendDB ãçºè¡š â AWS ã¯ãDynamoDB äºæã¢ããã¿ãŒ ExtendDB ããªãŒãã³ãœãŒã¹åããŸãããããã«ããã代æ¿ããã¯ãšã³ãã¹ãã¬ãŒãžã·ã¹ãã äžã§ DynamoDB API ãšããŒã¿ã¢ãã«ãå©çšã§ããŸããããã¯ãããŒã«ã«éçºããã³ãã¹ãã¯ãŒã¯ãããŒã«ãããŠç¹ã«æçšã§ããã©ã€ã AWS æ¥ç¶ãå¿
èŠãšããã« DynamoDB API ãžã®æžã蟌ã¿ãå¯èœã§ãããŸããåºç€ãšãªãã¹ãã¬ãŒãžã¬ã€ã€ãŒããã詳现ã«å¶åŸ¡ããªãã DynamoDB äºæã®ã»ãã³ãã£ã¯ã¹ãå¿
èŠãšããã·ããªãªã«ã圹ç«ã¡ãŸããããã¯ãããŒã¿ã¢ã¯ã»ã¹ã¬ã€ã€ãŒã«ç§»æ€æ§ãçµã¿èŸŒã¿ããããŒã ã«ãšã£ãŠå®çšçãªããŒã«ã§ãã AWS SAM CLI ãããŒã«ã«ã®ãµãŒããŒã¬ã¹éçºãå éããããã« AWS CloudFormation Language Extensions ã®ãµããŒãã远å â AWS SAM CLI ã AWS CloudFormation Language Extensions ãããŒã«ã«ã§ãµããŒãããããã«ãªããŸãããããã¯ã倿ãåçåç
§ãããã³ä»ã® CloudFormation èšèªæ©èœããããŒã«ã«ã®éçºããã³ãã¹ãã¯ãŒã¯ãããŒã§çŽæ¥äœ¿çšã§ããããšãæå³ããŸããããã«ãããããŒã«ã«ã§ãã¹ãã§ãããã®ãšãæ¬çªã§å®è¡ããããã®ã®éã«é·å¹ŽååšããŠããã®ã£ãããè§£æ¶ãããããŒã«ã«ã§ã®ãµãŒããŒã¬ã¹éçºãããé«éãã€ä¿¡é Œæ§ã®é«ããã®ã«ãªããŸããSAM ã䜿çšããŠãµãŒããŒã¬ã¹ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããŒã«ã«ãã¹ãã§ãšããžã±ãŒã¹ã«ééããå Žåããã®ã¢ããããŒãã«ãã£ãŠãšã¯ã¹ããªãšã³ã¹ã倧å¹
ã«æ¹åãããŸãã AWS ã®ãç¥ããã«é¢ãã詳ãããªã¹ãã«ã€ããŠã¯ãã AWS ã®ææ°æ
å ± ãããŒãžãã芧ãã ããã AWS ã®ãã®ä»ã®ãã¥ãŒã¹ è峿·±ããšæããã远å ã®èšäºããªãœãŒã¹ãããã€ãã玹ä»ããŸã: Amazon Bedrock introduces new advanced prompt optimization and migration tool â ãã®èšäºã¯ãAmazon Bedrock ã§æ°ãã«ãªãªãŒã¹ãããé«åºŠãªããã³ããæé©åããã³ç§»è¡ããŒã«ãã«ããŒããŠããŸãããããã¯ãã客æ§ãã¢ãã«ã®ããã©ãŒãã³ã¹ãåäžãããããã«ããã³ãããèªåçã«ãã¥ãŒãã³ã°ããã®ã«åœ¹ç«ã¡ãç°ãªãåºç€ã¢ãã«éã§ããã³ãããç§»è¡ããã®ãæ¯æŽããŸããæ¬çª AI ã¯ãŒã¯ããŒãã«ãããããã³ããã®è³ªã®ã€ãã¬ãŒã·ã§ã³ã«åãçµãã§ããå Žåã¯å¿
èªã§ãã Introducing Kiro Web â AWS ã® AI å©çšéçºç°å¢ã§ãã Kiro ã«ããŠã§ãããŒã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ã远å ãããŸãããKiro Web ã䜿çšããããšã§ããã¹ã¯ããã IDE ãã€ã³ã¹ããŒã«ããããšãªãããã©ãŠã¶ããçŽæ¥ãKiro ã®ä»æ§é§ååéçºãAI ãã£ããããšãŒãžã§ã³ãæ©èœã«ã¢ã¯ã»ã¹ã§ããŸããããã¯ãã¯ã€ãã¯ã¬ãã¥ãŒãæ°ãããã·ã³ã§ã®ãããã¿ã€ãã³ã°ãããŒã ãžã® Kiro ã¯ãŒã¯ãããŒã®å°å
¥ãªã©ãããããå Žé¢ã«ãããŠãAI æ¯æŽéçºããã身è¿ãªãã®ã«ããããã®å€§ããªäžæ©ã§ãã Announcing updated retry behavior for AWS SDKs and Tools â AWS ã¯ãSDK ããã³ CLI ããŒã«å
šäœã®ããã©ã«ãã®ãªãã©ã€åäœãæŽæ°ããŸãããããã«ãããããããããŒã«ããèšå®å€æŽãå¿
èŠãšããã«ãäžæçãªãšã©ãŒã«å¯Ÿããå埩åãé«ãŸããŸãããæŽæ°ãããåäœã«ã¯ãããã¹ããŒããªããã¯ãªãæŠç¥ãšãã¹ããããªã³ã°å¿çã®ããé©åãªåŠçãå«ãŸããŠããŸããAPI ã¬ãŒãå¶éãäžæçãªéå®³ã«ææééããæ¬çªã¯ãŒã¯ããŒããå®è¡ããŠããå Žåãä»åã®ã¢ããããŒãã«ãããããã«ä¿¡é Œæ§ãé«ãŸããŸãã倿Žå
容ãšã¢ããªã±ãŒã·ã§ã³ãžã®åœ±é¿ãçè§£ããããã«ããã²ãäžèªãã ããã Bitnami image removal from ECR Public â AWS ã¯ãBitnami ã³ã³ããã€ã¡ãŒãžã Amazon ECR Public ããåé€ãããããšãçºè¡šããŸãããã¯ãŒã¯ããŒãã ECR Public ãã Bitnami ã€ã¡ãŒãžããã«ããŠããå Žåã¯ããã®èšäºã確èªããŠãã¿ã€ã ã©ã€ã³ãšç§»è¡ãã¹ãçè§£ããŠãã ãããBitnami ã€ã¡ãŒãžã¯ Bitnami ã®ç¬èªã®ã¬ãžã¹ããªããåŒãç¶ãçŽæ¥å
¥æã§ããŸãããã®èšäºã§ã¯ãã€ã¡ãŒãžåç
§ãæŽæ°ããŠäžæãªããã«ãç¶ããæ¹æ³ã«ã€ããŠèª¬æããŠããŸãã ä»åŸã® AWS ã€ãã³ã ã«ã¬ã³ããŒã確èªããŠããããã®ã€ãã³ãã«ãµã€ã³ã¢ããããŸããã: AWS Summit Amsterdam â 5 æ 27 æ¥ã«ã¢ã ã¹ãã«ãã ã§éå¬ãããã¯ã©ãŠããš AI ã«é¢ããã»ãã·ã§ã³ããã³ãºãªã³ã©ããæ¬§å·åå°ã®ãã«ããŒã AWS ãšãã¹ããŒããšã®ãããã¯ãŒãã³ã°ãšãã£ããçãã ãããã® 1 æ¥ããéããããã ããŸããç»é²ã¯ç¡æã§ãã AWS Summit Bangkok â AWS Summit Bangkok 㯠5 æ 28 æ¥ã«éå¬ãããŸããæ±åã¢ãžã¢ã®ãã«ããŒãã客æ§ã«ãšã£ãŠãã¯ã©ãŠãã€ãããŒã·ã§ã³ã®ææ°æ
å ±ã詳ããç¥ããã€ãªããããã®çµ¶å¥œã®æ©äŒãšãªããŸãã AWS Summit Milan â åãã 5 æ 28 æ¥ãAWS Summit Milan ãã€ã¿ãªã¢ã§éå¬ãããŸããAWS ã³ãã¥ããã£ãäžå ã«äŒããŸãã忬§å·ã«ãäœãŸãã®æ¹ã¯ããã²ãåå ãã ããã AWS Summit Mumbai â åãã 5 æ 28 æ¥ãAWS Summit Mumbai ããã¯ã©ãŠããš AI ã«é¢ããã³ã³ãã³ããã€ã³ãå
šåã®ãã«ããŒã«ãå±ãããŸãã詳现ãªã¢ãžã§ã³ããšç»é²ã«ã€ããŠã¯ããªã³ã¯ãã確èªãã ããã AWS Summit Los Angeles â ããµã³ãŒã«ã¹ã«ããã 6 æ 10 æ¥ã®ã€ãã³ãããèŠéããªããè¿æ¥éå¬äºå®ã® AWS Summit LA ã¯ã西海岞ã®ãã«ããŒã³ãã¥ããã£ãšã€ãªããçµ¶å¥œã®æ©äŒã§ãã AWS Community Day â ã³ãã¥ããã£ãªãŒããŒãã¡ãã³ã³ãã³ããèšç»ã調éãæäŸããã³ãã¥ããã£äž»å°ã®ã«ã³ãã¡ã¬ã³ã¹ãã©ãã³ã¢ã¡ãªã«ã«ãäœãŸãã®æ¹ã¯ã8 æ 22 æ¥ã«éå¬ããã AWS Community Day Belo Horizonte ããèŠéããªããç»é²ã¯ awscommunityday.com.br ã§åä»äžã§ãã AWS Builder Center ã«åå ããŠããã«ããŒãšã€ãªããããœãªã¥ãŒã·ã§ã³ãå
±æããéçºããµããŒãããã³ã³ãã³ãã«ã¢ã¯ã»ã¹ããŸãããã ãã¡ã ãããä»åŸéå¬ããããã¹ãŠã® AWS äž»å°ã®å¯Ÿé¢ã€ãã³ãããã³ä»®æ³ã€ãã³ããšããããããŒåãã®ã€ãã³ããã芧ããã ããŸãã 2026 幎 5 æ 25 æ¥é±ã®ãã¥ãŒã¹ã¯ä»¥äžã§ãã2026 幎 6 æ 1 æ¥é±ã® Weekly Roundup ããæ¥œãã¿ã«! â Daniel Abib ãã®èšäºã¯ãWeekly Roundup ã·ãªãŒãºã®äžéšã§ããAWS ããã®è峿·±ããã¥ãŒã¹ãçºè¡šãç°¡åã«ãŸãšããŠæ¯é±ã玹ä»ããŸã! åæã¯ ãã¡ã ã§ãã












