From 9b8f26f120b654cbf49be4ee242e053c20f48b62 Mon Sep 17 00:00:00 2001 From: Huifeng Le Date: Sun, 24 Nov 2019 15:59:44 +0800 Subject: [PATCH] Add operation doc for TSN This operation guide will introduce how to deploy and run TSN application in STX virtual machine workload. Patchset 3: Added reST and doc formatting for readability and consistency in docs. Also: capitalization, spelling, and grammar. Story: 2006885 Task: 37487 Change-Id: If48c7154b6aa4a938b8216c2c2ed7a322a20ecd8 Co-authored-by: Yizhou Xu Signed-off-by: Huifeng Le Signed-off-by: MCamp859 Signed-off-by: Kristal Dale --- .../figures/stx-tsn-demo-environment.png | Bin 0 -> 22952 bytes .../figures/stx-tsn-demo-result1.png | Bin 0 -> 18269 bytes .../figures/stx-tsn-demo-result2.png | Bin 0 -> 19060 bytes .../figures/stx-tsn-demo-result3.png | Bin 0 -> 24477 bytes .../figures/stx-tsn-demo-result4.png | Bin 0 -> 23983 bytes .../figures/stx-tsn-demo-result5.png | Bin 0 -> 28220 bytes doc/source/operations/tsn.rst | 493 +++++++++++++++++- 7 files changed, 478 insertions(+), 15 deletions(-) create mode 100644 doc/source/operations/figures/stx-tsn-demo-environment.png create mode 100644 doc/source/operations/figures/stx-tsn-demo-result1.png create mode 100644 doc/source/operations/figures/stx-tsn-demo-result2.png create mode 100644 doc/source/operations/figures/stx-tsn-demo-result3.png create mode 100644 doc/source/operations/figures/stx-tsn-demo-result4.png create mode 100644 doc/source/operations/figures/stx-tsn-demo-result5.png diff --git a/doc/source/operations/figures/stx-tsn-demo-environment.png b/doc/source/operations/figures/stx-tsn-demo-environment.png new file mode 100644 index 0000000000000000000000000000000000000000..391d2acf64a709d922ccc384a445369253997026 GIT binary patch literal 22952 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%0D8%uUpRbA8S&oEb^ao}klz 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 literal 0 HcmV?d00001 diff --git a/doc/source/operations/figures/stx-tsn-demo-result1.png b/doc/source/operations/figures/stx-tsn-demo-result1.png new file mode 100644 index 0000000000000000000000000000000000000000..98fd0d2a3f4af42f2e6e674eae8c6a067664efc9 GIT binary patch literal 18269 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%0D<|wFCVmqjKOqIiK}+mBnjuy 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 literal 0 HcmV?d00001 diff --git a/doc/source/operations/figures/stx-tsn-demo-result4.png b/doc/source/operations/figures/stx-tsn-demo-result4.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a48f705335fd988c2da03517e06a26bd70a1b0 GIT binary patch literal 23983 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�FT{+i4?opbeFl}*G=#CV4EMp3$dIAVPL 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 So&ZYLC3f!cb-(XQO8FmbK1FQ+ literal 0 HcmV?d00001 diff --git a/doc/source/operations/figures/stx-tsn-demo-result5.png b/doc/source/operations/figures/stx-tsn-demo-result5.png new file mode 100644 index 0000000000000000000000000000000000000000..d60b3c0b5ac5dc217e723183e7bddc22e88e1e89 GIT binary patch literal 28220 zcmb@ucR1GVA3xks6rxn3GP6@8du2;zsEmvhMKZI;os4ADFtWD>6|!ZI6hcb&9+eT< zJg=+n@%=r|as2*z?&G)*M}_P9oagy|zhCRT{MA(z$amB3-m+y2`B_ET^INuT+q-4U zRx^@q_?yR8fkgPS)$Y84^p+PNj!fVWL}pSdQd_pX3?W@J-hn^wvR2fw+p=Y!J>mbY zy{7a|TeeuXo|To-ax(ZH>v-vaPEmHV+@?;YFD z#3|pjS9U)Y6Z=lBx5rtv_U}Ky%(UIF?^DP5RWd`PSB+w)C%e zO3N1q1~PT?9JHTnYnS&eYOjgLGLU#N9P)GW#aE-_gEU_F`tqI`{*t7YDUOlwj{*Nb z{$o*NV`E8)*oMVWp3~xwp097Lma~IAb$d&kHPzMCFI-3q>ZIV>)pc*{nt-Ha{POjo zg=F2VptYtPiDw;EeiYN)g;kqLNlcbrsuv9m;vyn6#||#fH>l)A|6*m(Tl!Sz)7 zDr?`GnwoE9o=+{gPrFs~5%nxgb@p_3pSWC<64W{P<+WL{5E1FBsv2sDVC!;PPf1Pv{`Cz-PkXJWYMi9!j~_pJQ_nr#SYM?$ zA{44ZdEh{*+hC;+sdCZnsYh8iNPJuuf7Be#wb>rJAs29P2Qe|^963bbvLR9&4AL zn&+JQnr}JPUHCKTuwZ)zT{J~lSlG?F?rwdz>!VFkUAYu<1|62wBvCbt`F0Gdcm@u$qAmTvfdd{M9-B)c zo1c>vC{CU{nR?;n%a>Gas>e>Ju^wPAv>j>un0k(xi7AxRJ#lb;qD@)apTx+lDbi+P zQhT@m)sUm2@(oL~L)0hqGp_1ZL?>+An;5JK(Ak>OR#9O*_90eT+6>S2p3Jb^qtv)+ z=cIC+7)_MP$2^P9u6)bY;=c7@X`(l|xw)pM9p1jax_Wv;;$2SU!`itP-32zUP2U$e z%`&lk`SNA^PO_zulb*s(GyOYA4^lqoqe{9Rebz)rZ=nh&FI&Ixe4pI)7o486gEjXL za9t9aj1LVxL%VnXe%acDwBBOJlMD=RTi*P@3Dr%UGtbS+y3b!xl6lrV&*8i7MqAM7 zC&&DAx9fP$^lwe8rxg(uCEmF+Ej`_;r|99Qm-?o0QBlt0EsPgJ_|qj+s*Ez4+bb)j z4@%X&(0ijw-uBYs(=$d3#=C2ao|}uoM@3bmPWkK}YmPUIYuq6w2wl+V`KS@5_3{0C1z$P+992mPJtHI{Ld!eyrfKVloWZU) z8sf*ZEIMCgW@bLSRPM2^ZoEI}AdLYTgKN&KSEuI5j*#lq>0T%OKIrE}x2qASz<=F_ z+2!tacXWpQ{Cpvz9_e#xabgWtyxh9?^^Bg_@BMz|mawoevwUE}o^7R98}^x=Yj}HS zdsJ4@mF2mSXWMtlzMp$q!N)H3DbFT$kKp=`;_2}_d}bf)$6L1E6|?T&!gc0i3(Cw^Up?s`Vu|*X)vr1?rOI0*dS>yy~>F zi;M)&R3&G~3=Ivvm17S`<=nh^^VO?YEvIsKGA7S-JiSO3K}^}i^lF^>m5)JPbv1)Q z3P*=s`$VLcmR5?F`-Alut1_vWL-IM4wAInZ(w7h3p=Gjj+Q)Tf9jz~jmS5>I znU!6`u}_|mJmFBNj^Y#Pc&5Wwa;JZBOy6^>{kfi?@?+yJ)v-1Q z+x_x7C*tmWf08)#8b`*Q3?nVg#+yrmXv>I&cinA(MM071e(o%|GK#R zb8P=9;u7NKgl3(yteK4k?JbEiFS*jflQX21X`A~cC6r{^8_pDMqe>OjI$EJj*-V)` zMbpUF(h|n3uuq52ZLoUR@Wik0Us0kNhdbDhr82BI*xAXP(CAoNaw05Fzl%sj z@o4TTCZ=uNqW0sI$z%+TN~4i{0y65J-#)(-uWtB?A0c$jX9tGKyW!LnrZIOU}B zmJd7?LQiF@Xjp3%xNb04HLd+@mNfHcmpCV7aAVs!g#aCzhiBFOR_>iLl{tJv$j6s5 ze{s4mexZ)xA=Q*|EU%*O^PtXSS3Q@i=&cz!# zI@R)+<=i8N;9=t4-d@E6O4aN|4ig_!1+99&br(_{ke@a;UEWTTdzQ3bxTWmcyGO>t zk53xPTV|>`c!}{&&~FUT-%H38v+6B*#I1Kq`C9I-WqEp=AmZCa4Kbbn}Pk8ckcpHpITJf*x1tBEns zjWJKt(H%Q>+*J9<|EQ++8dn65u@))yi4-nt_h^|NMP96J9miu0Ukb^eEm5>+|Moxb8L9H>4|XLhY!J@2`9Ze z9}C6csazvRa$iH7#i!kP&+x&mx<^{tkf0Ew;*?E~8H7pQfY)kYRo%h^LsPVY5lQIhjnpxLrdeitwQ zPuVjM^`);}V==F9^6#VB`H`e_^i|emu(m9D!_Zju+{(zSxwX*vr|&9ve+nAeH^Fx7 z7|%nWEQ@a`q8Y~m(mGc7E!6vqRZS|$!>#adMhWG7?V4)rvCco9o=NO zurHLU|NJne3u&uN@pV$tD-YF;tMszkZ@x4yisd)U+x2VVL_KG$$nE>|A5D&jd8m(& zh+8Hy=B@+pbIJ|9dG7apGf5SCixC+5`u_RcXH z48~i%CClJh9DPN%Edma5UokN`X;}7ce0+R#RNh>=$jHJ%6ukyd(Ht*X4qBwl5)~=x z_#!oxMM74o6;ug4ZIA`T!1Bwhk;aEyXZdS`kA4LysN2~$NR9X4aXS8oOD(=j#C|+s zk?cXK&TG?2xiyl~6?G|RXW_yfnRl~Zo7C-TkJlOkutd+i(5G1c;X{5-4#}Q9C)n8; zN?Sa2_ietVv$eI|wr!iDLi<^sgG#o^2Fbrylw#RFE-W%qkuza2u+(*Nka#k6jpth9 z{*Qas60j6^?%c@=jn6pQ+)w%WuFDvoX-m2q{gG{?#=cj1vTQG1ihTI+fDauV9qhAsi-4H+nj4bKaU?j9^C1s zMxKBL_PJ@UYBtTR zELft{@!>AOT3KWsr_*{s>!lEF2BB=y})bTf5vw2ZLSAJ4V>)k zB#t*avN}*z>?N*?w>n>3RtTb%8~G3`I>dqj-7z&QGedUrWHylG3Bxim0fGDvA>q-7 zDd@!BzHT7Nvyn=#lKLXKu;@l=-T!uL@X^~ZJ~v^f?gs|SdOnGbB~W`+{}_SzNou4a?jnrl&KNxGeX6`8j8~-PoQRcOoL% z3T%evFMi-%#;F~g0pKPaX8!&xyN5{f& zLj>VZVKgB$e50S9>k~u(9-`@fej7l25*koke0;N~ z?}GTd6oQ&Uv2r-c+??4nEh%XbV#l=j**%aF@*MlZ!}oD|8d05!ztNU9a0v>>}bDU7ap(e)le-&E7Z1gt8)1X6?Ed(WUFD`rC-E4p;kAi8}r`BJN^u zWRxI0@4xIKZ)}_x64Hz_b4cLn*QYxM#1$8LYbg4D{=9gUS!=_l?tv~<-YLmjd*bOj zK0~PT^z{6s&&7YasgutD8h~ZjX*M=CL&H8C5Z){mN}|_WUy9zIY!9U2t1sM@=-1dj1oqTPtsSJPuWwCOcysg1 zDcfO1VZm#I8LMgY&8ehbG+xonEjS_SugY$IdDSer`J{|ZMz+>Iz>eXRrgEVq9 z9YI@0Mn-n++GT8PtPp%eikG9p>4kowEgHx9N9d@g*RF+y%{*mOi<<}B#@s+Tr`jqh z?Y4ViU``HMrn7vfv{X1R3Y8+B$s$KqR<_^H_EzHqM&hySI(X;MlU~1mJ>nH-S9cPnfW2gt@x7#@6Gmlp zxZqwuz&W%AR+Z>nr`anWWuO8VFLt68iUm6NzVUffll?x6bJVVbnSqRvN09U+c=E9ShikLa~mLfm+7 zSC@!@fJ1Yf_)$@Z+&6DdVju+stS)4GmYR2DH8v_`4bUh{*F}Vfm#s`bg*-@U8z$nm zzRD@Xw{G2vi;Ej( zacaU)v6$TOxqpB6HI3nQjI2o@uUP8gwjUA(l(fPoD%IZ>iap9C{J>Vu#?kU#KK5$9`LklLYfL}AxO`3^x%Yq; zz1?Wj%bXmiU*DnxZk=(yrmZTqm*(xewTqH{^go+9oU}D=d|U9JnXxX6Gah7b{tQCz zDt0~9%SbiBhG;`^)79@S&hztU&*rU&7?#z?(t_zFdsEIv)YsP!4h~jVR|5&i$;$FX z;1GtJWkmJU{2YC6=ip!(d91dzm6wlClZ6tqmtNduo&f4X4h#M$6+Eea$9@y&8cH>k z)}++b)PR6@uD5Af`B!EgfNq?82}jOF;;y(50FH!&0iDOeCd%PB*+fvM=^n#kwArpW zoB44K*(ZvmQjT_Znw{GM?%#)z;7dj`7iUIxi07|6-rhu)*W-#RN-M2sw0ugX0S{UxoKLHl*gg zhu&L3sCM|#ExcaHv2O?2s0w-0lg5F80W!YZUtV1UoN!s1VXX4y;b&pF20fPjP!73`(3{+E08OeIG;hFvdXa#S63gLJrMQ0(wbTW4rRP zc8AoGa3Q8id#2`HFE8aep8^yYRWpx`R$OAQ20KY*Gr5Z{!AXfcl9-sdv9U2olcs$3 z{c2j8N{j>GHO_q|slAu_;WkOR%XY$vcb=Ry*H3?rhVQ;IKjFUmtFW-Jf!~@cJ$F=i z1{6ajPE1%#Y^`)vo=8eVLrZI^|HtCBH0OY7f{Oz1Z9PzlQr$sB1WujvAx7%e>(^*; zE@K~#TCSNeB(E+`n?VPXEce_jD_U9Cz;DdM|KKbD^lOm*g9cq}4Gem_@+`!~#J+v| zHcVUKpZq~ZPF_CTI8sKQV@-&2x|e-7#mYwE4UcpR{>9nZ<&JC*pUI%3qWO4bG|Ct5 zJ12TeU59FeMD0cc1vYr4Wn@4ts@|?FOrgcxP@Y$bwfve-j@Hv*ZEt_Gugo3tYt>_; zPm~L1WZHkyO!s)0hDWaQTZb!I>Qhc08_K$+`PYw$)kWXvo!5_qX>M+;L(&M9^n~V7 zwls)6UtV4Y40=~zF9fs&gz2A#9=$Q#K;_{jo0gJ7c{5BoBR!gj&Lcc7&SRi*hj(1J zm+>Ue+b2*`@*we`nt*)4&k{^ucEDzu<+4nXceAsz>(D!UZ!9MWk0Y3ro@T93xbxOv zy}PEDMt5P_*OE(%&sJKA!18Lr)H=p-TA`ivF^ynof&?8sb(KUD4b~d-Si*e;^<=~? zB_)M}Sxxrr*)yCeh4b5BVsY!{Mhe*sf(yUXHY&RowP^Gr*-iuR>?wV;Kb7Yk)gw?8U7q9BRSMU+x z^E7H_&o;meb9ZxFVyrb4MLf^iycGGC_U`-$mV8> z3lD!~GbHcoy1KUJwwsHKD>gP(*sY#z(lwjg*>}Lz((&8p)@(z`a5B@m0j^0j{u^Kp zJ(==yQ70CCevI&4{?NQ!x2CiE-3o*Kj$Q%hxvNDM1C>5m#L9<%E|4v_)q)}Xg8Em% z(6^m>vbJ5^1RlnuyO*v8x$CcQFZ1((Jfdk?24K&K;4grt$~RV~09+nFd>9s%d%g7v zdOuO8P&L3{`?^Mx`9^$s;b};eup{cwy=`G_>C6vawCnUU6HRGBHH zj!fWIcgDPZN0#=b51<+}0^W`3YViiJf}RN5d3kxwbEuj~y|@!2VVnKjXg}+Bn)rQz zX4pQ!CjBzELJ{q2O7*4rX(3L&M*9b8B=^$L(4c71$tNqssbs{e=Ajn_N{bD#C4p@w zB)rwi-WOmNDFO3d116I^L!9x-{(}bxX>iKA3K-h`@q37HvGc4aIWeX&d zBDmJ^-QC^L6@m}(R#sMCX-$&T%{*)J!?_ks90ffySVL+@Lg`I^7xts1wzjrfyhN$v zbX<9P`7jM@u!};X8-@N73EuDC`USE!gd@HjF&+X}53|9&?7VHW>_zuY}bRzXtD zr%aEpfILLZl+8Tu_?ismE%400i}8Q`fu;Q=Am}*5ASII#^DZ#5BErIK(CG#TuRPE2 zr9NqZgF5IyQlo)f5u;XW#Vn^b1*S-@6N6BVGXiRb~nhM+Bv? zApaP0iIbC4sM^xXiteRLp+5cOkeJBWSXpc9>fYRFGldAYKP@foREg8@phekA2b#NpG0=ej+Gc7D}f zci>0uju&(OSmy4UuP!CEb%LZfffMW?X8$ok!N<>bysp^CF6Q{7`%RyR-k8Fv_SG~f zcn|_Is0iCBVAXp(PQzXMOljKQYjA^Ch+mMeU5BFVyXWZS$Ve)E&Ca#;^^S2UO|Vqm z;kftr8|mrkOyDfr>(?_dZ9ogpszj!*cwaR&HTBzbR9aeE z>!=JsP0+=GOKa8unvs-Wu1QO8D@*O5B*K%LYn(s7kBaK<3C5#;Rgz(5qC2LojOfZt zE(C(YwNaz^YlSBQV7U|(6=9lc#jH_D2^fvjr0f~r0B-3RkK!}KfqxtwT?F2Bp4gUT zH$cK?F-R>bN0ocZJ?|LqnCfanio{7NAa@B5j|AGA}{C@g9?G;Lo@;$db^#<@Yute6B`l(6`8T$|?U z+esTQ#6*nghR^OF6v5#C4w(kKb?LN$T-?j+tx1r1=jLoJkv&4Tq`et}oWu971BVWQ zu^8Gl^L=b|in`3R_nu+=)q;ix z51bI9`S>yX$=&y%j~~}H3Wq}043~M_G-SeLQ(BL3i;XQksJ+FU}(L$M0 z-S&$^Gi`Wym?0AgwfBuxyuflggP2%%MFr^7o(mT)U_V7LXE@CY37W#b!nh5aa=kaV z3X6+}4i2+$4s5ZHe^%Mry4UKhz>Uj#ETK;<~oDsWJ+mlY!5OG zy%EPFhGpXJP{Q!O2I&;Dg?$ypFzF`rBFu~1+0|7+PVUB#mpU7v#oz2MXzh+~W(MG=75PJH(d!B?53mRZUIMkGh8B&v1eyG@m<^E&Tis^e_;$Blz#= zQ8bFyJd2AK7E_@`2AsW$9PI2fv$MiBgWdusNN%GF4{f!{Uyh4m+Jd7^05ya$5BbtgeI!p%r-GZUWJxfawFh)VeOq?WUzB0t{Rg-!=+jrFJT z%G(R^i+uecHJhb1S= z2>CP2v80?Fbzp}{d7OXxeWYGDP7{ssEUuH(8m*1~MN$hZciK9axTA9Y+zG&HBA>Sh$mzPEy5~kI(9n*d{De1d+@A4Xg=x^UrD*MjqMnnJy!(U$%VR}&<6`4mZ?pH&1Os-N?(c=%5AD#`cV%hm^VhF2tBY^JvH%3v)HdhUK#<2jJ&ytD!Wo2! zKzNS}Wtlkl5vtJyO+t~-Gb)a$hhRhko7hPT-X3W@aPHi@(9lrqf2hHXBsceWFkiyU zmslzNfw7@Vc8h`S?d=tJiOoz+&4*b1x&>JX1%QR`(^`1^whj&kMrnAUD1SF}bT&2x z9N9l;|2M$xxl2p|k%)Y0>x0w0?g3@|xe`lXBFlnmk_s32dZc%%>%d<~yi# z^?wS%s4YzeU<51({QS|QM=H^$X?U;5LPwRvTS8MYC)8(D8S2%=$?0ZqiB4HOBcagL zC7qp}33J@h@l9SHKQtlz0&8P*vb}rvLR!6;ZScOKVHXL>=X}c;fx_9lXO-h6dg|)N z(1tI*(C58#(u+irlyLfCdc{h5N5U9-s-;oV=N7C(bsP9AZ9Zi5H9e{PIB7ZD>b_l=g3{h2N1nvRsh%XXe}tb<*AEONS^l&@Bcef?qT%7IY;5U(WpS{wF}tu} zbi%g7KrgvCfd3Jo7R+;qSvg?Jm<$~qc_}I0s!^wJgk$N@bpM^|8Xw`1qFe=0b`Ee*-m_rn%d+5*dTh~i4lbOoYWA(SkU*lH%I2| zc<*n(;OIC0qpw^NdJ4u{ zQMca4#{0*rkk|O~MaQ`p?X5vF|K^vZ$wNuK8c0lRCCDYR1OhFsjRph#qM)!4QHK|v zn;XDpm+I4-#6YB2BPO(etdfV70&t4(9l$gz)Zx?I5Q$5BKyg94sgc-%xt_F zAe=?Kj8iQ@qt?;zU2}op4_CJ1*)JXr(XR%K&(-MQ^>*9Qd!Rrk!X z=e`Voq2rKVFd|8ot=;8x4k*@;NS`U>p$WWiCNayr#&|jXHEh&dGX=}KxilH z+Rgr62M31&FWPHA!FxwrlP8A`j=kLp$}87pY++Fhil<%I*B7sUOjOhr0s>~i#gCqt zjbL*f%V)cwBnSu}j&YLmWPZd@g6dM21mBRMpxU?Zp3wXCm~&@BRp;bBjDXurOwb%X zsuBml)d@dm-HlopQv}v>+0};dgWS3~EbV*;!JQ{s5~~15E~Osex{!PGOE}TJ_f-y+ z0ziQ<*_C(Pmf+>(oh_a&`$xP0k0p}x%VVx5MG9-6r{UJXO7`YTHpJuk zpFg>dA5VFrpNO6W(-s&t<>+Kq6*i;eO=HyX=xExftXHpW7bZKj;6)sML`hA3am+VG z?$VxJv zdCz+Q-VW7;Aak*Tu8!Q&3Mm=Ts)*at43>>-L7a_^_?)Qo+_8_@2PW)q3ZDuAMGH-U zNW-8VE#WQ_vy5JSTJwZE=^q&C68Y$n15Q|VHJoPj!JaaAy?6u4lH|&?`7fzhQ~2~@ z34xg17;$-h5=ej*DRq4VPqhaG%+|R9hoh!@fogfhjW`bb81dbOI;ls z!VK?k?$Og-3d2v)%kCnv8H3&3G+-}R8W;B9K|2x*RTMu5l5p>#U7l7FVBWyM0K1Vp zj|zv~{Rfy4Q2OQKN0E_2*BT%E_1Biy5`wp92jxUXi}75D6NR6=%z%+!>M}AgKuAOZn!@8JtE#MIVqqab294=G z8X-iDDw@)zgm+D}@D~Bfcsi0?y>@M{|JTo-L#>f47KA4kW3(@0iUwYIYweCiRRa0> zTy*=XlRUpYpbQ1TWV@@VvOfxG=$_L6&MaV`o~|w-G9dGtT(Pr%eswJ%J3AZ56qs=b z&=>)#exofZEoD=VG*aqw(4JoRFV#T8784UguFFEnYR|<^zV^=bCPooTk7I*0mBdowIrlLY>^%3ZL4$)KqG`2D zD{HrT_>BZHX2N}&f3W@KW}c}rKC~;ex#J7>&qTOfUhRwjK2q2@miY>b7Gk(Q=|3O6@$?mset z5Y{?!DC+N^0!6#VNqxB8`4>WP>8YtvACJD7bg6~5@GsJV3pTP$21t49h=iLE8=If8 z=KVUuQWt*r6?@Gh*Go$}zZJjIiM8(D;8VJ3JbFQL31m1nuu`A;wOhA-K;4oLqU}J^`lbvQ{|$*@8rW3OxXq0qngd@1VmmIV zSbp1o;J|UN{m@ZNJv;X zsx>n5kfklN!sYED!NKs^|D0M9QqqVinxb#tZrYvz*G21gU+i(jgoC%wYPSd9eQ{cv z+S}zf>Ff1*5%%!m$kYB4QK8gbC%GymZ=ImnL8l3lj7or7Bj!T92N zLI@Km1&A?O<<@Y9ohC5_UHd=p;d6mavXgwC9lTS+!CP!NrB?(+DvXlG}btN~5xAX;1j!kb5CZ;G4bep6R^_-XvuFkiw4g>u+Ct zizzPVv9^SQ-^cM!`v(tdM^p+#Q@lmoIEty@f2ENo)X@S zay*CoUfDl~#0Ubasr#)ga9l}ANk+zj`Y>j&fO@VAQU}vi1a>_ztLL{KU`D0LGjzV) zl(w;%g(3^Yg77==pXDjTcJ)P-?>)sA|EW78=yQOmKm~}$fPrC+30F({+Lq2Vzp>$g2Zl;v*A`rMinhvPF0-~ZZcfcY+pn>vHyYI}ycO}G4 zO!XAMiI49Cm^t*XUIqS%3{p*JXD8mYTl_@w7obmM;R>)BC|V?rDmR;&nh5#_%wS1L z!>66~e=ykG%nSiy;UNIkb9Z?e-6Oz_dPRudva;0~8p+$XZ+}1E!w7PulV`3Cu>r{7 z=B6@u8pO9{B-nYM8!#)x#$cT0{3GyGfGodX?B4Gzk3guha#Jh4SIOKaUPHH3KKOrl z>Vt{@*_MAyDgur8&w(=f6gP|ChBptf6t#-MV3Eq|hh>7F<+V35&#a#SJ@GF}s;UA5 z&FB8zK^<3lXXipczdD@L(00hm`fxZ9-~DZG%rb3f{pp4~ZU6onq!AIsK=^s$P5JtF zvv_w?E2};jQ$UY;Iy!_~4UCLZShjyDv|ahmU`vRyEjuvgnct{q)?fGA}2GNKs1Pfdve#-QehM@BL$7ymn%WaJ+M zfCzC6zI^@+5We|bqToSHj3^Rz=vJOfexA5HR|*U0sE~C6z$+^L7`-_nrY_kK_0?A3 zY6B&Mr#OzcRDAtf{Gqt~ff?qK!aqgFAS852Oy+S|n6Z`B^!WH8C?Fezn<&t1hL3a& ztC8q!>nR6hgi0%T^K-&((%rjfd~uZ^vlXFR@}nYz{(^^wHk3lUpFmWAnh>x6InbDn zx&J?n_KZU{pFJZZBYMl^?eV{S(3EfX6ln)}xSZnSo8@+ovq3(@mUMlk|L3p_k`t_B z2qRw@%LIH?W7=n5+b5W2KL9von(eH_Zs zv**u&(Wid=kU-d(WgV-K_wpr>T~L+@35`GQOK8@G&`*z!3P4Ult`6My@#Du9{6t#; zYIIS)&-4pF*3|5nP@inYCc~4v5up+d#S=w?I@|jR$zQZIl}Mh74sf?wIv&B@mi8jF}G1i`%!|Lw@1?gP^ZX;#_LEA~W=}xuGEpcipx^{opR! z+;FwuUUNn;4wDue3sVCmIcBwxqumZMK_n#<`QWVAR#&f)OUlZ9G_tayKX@=ro)3%u z3zkc!hQOiVIbdw$CGDqsFQ+O9>7x(MO=6*J}rz zeet`TcRF8FRSg!_FWKioMi7odFNK=H8w@8-A))K)=w$v2eovk(w;kEN_c_i^w}syN&fxNa%jYEpF+L&2OtwOoq9*8`K#|Bv z8G=s-#hk!FMv-wFmgyhn71oLyn4TuwJ4SIwSJfW;`+>|-($nKb9ry6!ctDaOP`^FUaaHP)AYw`~QdeOPpUr%T%ZwnVh`u6HLSBdk1ZSH#9sv=?~0-n1=fx z^*F-+s@2fz;BC-JxJAAd!3F6fy-c%=%?azinUDN+GF3L4Gx z&Q4A^!i}Z*9b!0Gu&qG@*-9aF384*sKRL*MzI~Aoi)BsfwZrc7=Rb&$ew#&7Gr)=c z`41}Eo+a1YGci4iq2t_d7uinL6hS z92*)PokdvC)in5;5s{HjL$&12X=;BsqT(sA|0kiL3~--7N(eD#P)N^><+1YBo@rdJ z0P4@X0lC`k|KI{G@`Z64S0lbZ-|oQ2}n_rVf0QChr!ZHUKvbxOILdXH+9cZ5g6_aqN1yqRj@5g+OMA2g0y}= z4Hc_00okCj5S)R3kxe}m>DF41-<>;mMz8YEw6wI~l-^(#IT}{*^y$+EvG~LfDjka> z7o}PV)0E-ZvFc~dDhH^k%iWewF)|wCI6#r*Z2pW2f}DWM{7Ks8!x1#*!2r1JU3cCU)mbF8K z3V?;Cf}eD7_=Pm{u)AglLmK=#EGRBDtYT(C%3YWlkg?QdPJcG~^#y!nd=kW$9OJvF z%s(f@*3RxRx1InB5$jyPnr4qQKJ-R{un|K0?fdstgd$H(OP}QAgix{qa7FlBhldZZ z?V7OB(_gN4}4Lx!k}^B(<+P~0OTl2w&k z`FHTEXZ(MeByNaw;BJ+OurNG8D@1$Y2IjqfZPJg3I$>w@w^RR}tJ-Ps9*6GWNrMu! z3tSI8q4SDxeTAS`+fTqX2xDIC+WltISjp5w6bI7ov=iy4vI;_?qYC|{d@*V;Q`X^!5B;M=f$;z zCn4GnRI?lskaGZ}+7s=BzX9j-@1_OC2Cq`X9ew%+uH-yGyJo7xt^$mpuanOl^|_ga zJ~KKxdP-kg8zZmdwV7I892UM0N(tzzIp@Zfh2Tnpy7IT_;00LBEbD7lukuht?5=4s zXiHDude22ecYY`vgk%uSDcRCA>*{-Z;g@}y?ifyK|sF9CjzPmTp8~$fvke=Y8q{pkPmoHK}LqNy11|q zJ8O2Y56`C3mDpjyQ!+-wY@r@Ei zpgBt%Y6h?J^5xIShvJS-7fSKuiFir%wL6}IoZJ#O!RuGPV*NVF@1;m`~Y`+4$hEl`!A_4Acl zW$mrlX~H~fNPZ|4iB;dASj?80e%1{2}Tp_dXqGH8uivbw|BT4w6 zLbwT0$kFCEZUlnwy%SfnKs&X3xt|A2TivBHTaT=3#Jetdp*);}bq6KdbV z>D~*TspqMS)Ir~PP>X_#i(S!ToXrfe%ID4jHzW$*yg87aI==kctEsLiN3JND5CL2!IQOln|fmR73;Kp=Kqnt7$6+UzvaZ4Bjbr>?p!ZcwT*6 z1_4HPn0^sV@4sg_N+QvK0RJh*cTR2v-ot&k#*DGIxF?VR3DX_VO3#d|#V^bvg&O(( zcFHMmcin^_=}fx#0-{4{N2x$e{*BUIa1Vxb&z?AZT*33_&k3)_vkM>Wgo}cZz0gsB zNiY-#ni;lq&@y1KEZ~E^91yQuT5^JEijZ%$##q`OI^oy~C4VxXcp`rX z+Ah8P99i2K>JLEYFg$%A|D@#Pca4ou$P&h^y>Hc-V@yksh!a*9RvW<2as7gpBL*Rs zpW+6PFo6gV-iSAe@7e<>MgaxF9yb#}it%wxNLUMDZGlQAsRq3WT*}La5O5$Y+a#^i z)vGBG(((vGlL@*7vev1(^wj^W&LN=@?YH}Tb~!&zRVR+D29g1(DggB@?EF;C z!Ogt@!vP=Rg#Zl3=kaO8qWYK0yy8?07nW5Wb$>jhoFvo}EDXr(*dVCOR0{6txXnL} z7#I3GL2lj?Jl%PFU3zSZxM!kD*Pr1KVdEeVq3uBEX;@8DK5|=pXvVm8TcXDdncvCV z;v4LQr<$3W!AE8h2I5d!fR14^Lo+^MC4{gZXT^@eW0!&H`1^*Ff!;t>iPV-omQ+|L zsULa#h&p>yXu7Rm=^cMj6zBO-c>Rr&?~L)Eyf?mA`0%ECNOl%^RVGsG|NcGmlXEQ# z%krJ)P*_5^`!^rvxPSL=J{OH9*-wL#;Lt=a3G-`ch>D8J4kntjgp3m+6ayv?9z9}Z zV?(ON8lQK9x}9_L<*2HS!(;%>1MxXRM|T2ponuJ&;Av-@g7Gkgb8;82nFB&zT?5}hsI>r0h-E_xg z-#qH(jEKKeEF~rShpDUiX!+r}VtsLO?|x7aH#>Wak_BU&MhuJ*<>=EB^Edd)GUqjX zPfUa&k=PT(Tx5*<3%4sPM!tWKg#{ag>`zcMEFW^3Q^WWmpiQLZ>_(MK>k9E!#zh1L z-&9x2T6U8;yD2z|$iFcz`=R{AN#0#nULK#6#)25tpZ73)5Ca0ai1lAz3D@<~9)6N` zt_9r5wMiU(vfa6sIPlYaLs7cu;isfJ3Fm^dX9Kf02Wc)w{I&HemIxXrEy z71l|9XcQ0=jv4(-Afo)p8qEcA4m2aAh}bYBnZtrIKYE^t&}bhJd&9|_X0BMwnV$W0 zMd0b=vbJ`7ns%mXH@Bp>B55-M`91a!paGCm6rw8Tl+VIG$Yui>V`=#0xv+yp{;)5G50UQ26#Vg4D(mcwux;Mwu_ zNeJ7I8`(EieExj5wUs!eT6?pmhF;92WW{ry@p-Uw@{be7lESivyZBq!z^sw)Y<*CZ z!mHDa3tm6)!Bf)G_}~J<2aAN@?+UC3ys-T`eFB^$UNf2|UU3KkFX=! zYZw^3*x59Yc0-ENTkWp~gWsQ};z8gX|MSr*HTGi6;^LRZEw4J&h(eo%WzE7e0_3V2 zrusM{LM9J@w(9XSjXUN*J40-`8sts?Pia^F59Rvz?fWv;(2y-OR2X{_lg5x`>~bo` zGFe(APC|BrP}VGkv5%ohDb;bvTCz-bm1C(alQ!GQ*uI}Rf5G#5J$~?m(75Nmuj~DJ zZ&&&x_>{I`JArTM3Bq970p`P!OOepkbo&Oh?eGS0g=q45GxxJ+Bf(j~2iwZqJrG+d zy{6Dlgoet!CuM~eU!2jf){rGeg8+#~72m&qae}Ehtp&hU|MSnME+ZLGgee=rQ(Mho zCivG#g)n`0Gn0K^FU|vzEO@V=q{J>-yX4=?-KTAADgk!2P}9dDD%>?7cHlt0hfBw2 zK&=-U05FD6r$PE5IE1qE8H}@}AN9bPV!jbgU|J`Fl>7vMoBGfa3Wb8;gCUt2#+Mjv zbI3<;5!j>qyMeu16nlZ$KfVN1rqvb5BuMK4l+}iO77=1l7V1<5C8c;wp(W=7N>$0G zA(}7`*9nxFGVPnSjMi9hzT#hi_?*a&f^cPog@j!8wTQd~Gw#~*Bs3>M#wC>gD9R}c zCg&W-f>^-rj<3JNU<{Rve^^-bzh@^ZmI6K0Q7=tI>jKr%V`if5DlU3}L8?KZG4;@A@@q}p2bbKGD=^NVrmRgpXP z=S4`@`_+UK(u^+q&jaD^uX3-LD5_6kzz|wm5F+1ywkaT&;lk1Hqw)k=E21VE2yh#e zBP@V?6}vXGu_v=QIgo z{p1z#p;+*rF^JzMA1|~J9Vk~+GJC*CGQ!Hqcy`{agz8!_2(*yE`V+HPw``yU(!@;P ziMO-@DDi&S{n6QLX8Dk^3Q##FF<*+>uLm1n7hOu>HEhu2yonoNaZISeC#xkUB{{yn zf9RrkeXTa+%kKbvsl=^!FLq}OZaZW*a!^ekGw25&Fk7Ug)}*O4Drm9)C2Q!J(+(kI zM+If&1dmO~8J#&Ja$QO6;;GO+`5emO)zTFhiKMC$R^Yh~ZbNvv)?1v6n}Xo;tWMGl z&&c`HL!JbJne`5A8W>OC*yVqpWZtC`hlGK!AtNma`J&;uXW)4gHk42D++)(|Emqf= z`h2IC6IOnLBWw`<(U3wDio4#sU+7{#s5=eMAMsU`u)8gN0>#gtQ(E+@;^m}rS|1FM zLw(RSGt>ve1yC$V39>dDXf)g#NC%xt*$|Bfa3|>+r8;_@fUIeC4+1(8x?$vcSDWzR zfqRo;j(`49CCr-tI3-@w>0`EgA<GPv;2LBR3ZDayTe!5aP+e$Q?^V{! z)BjmMV7N-Kze3v{-NW;DyByAk6h7C#Y^-+Zbg3)v%A)heL%ObC7$tf3@t_GrVx-H# z?N?RsB+e<95*H=!UUvUuPEpdiS43w)5zCKpJxfePw(%&_3^f-vQx?g7(XDhiKV zcm^aOMDCWOki{hFOYxQOBDlC!wY)*k#<5#c)-T+JoZ~<&6+7vX$)YC^9Aih>VFB-3 za(%-zxMRh6@k4`>z9;0}efB)%jf~u#iQ^WI2FsI%;K-OvwAn zaydgx38JvPTSsIoPY9n}d3D+5?>el%EEb10#QD{ue5$XE)k*8Z+I&lrlI@O^3z5;j zbsS;T5B3IUAwE8g+kSUy?9bWMHiGp)1)EXf8{$E4d?=o;u%NK;mdKDQa!`CI!lx4A zq~!(4?O+~q@^y+QivCe|<}sgH6cQpql1K_U7S{{*k|7nsnOfokLY@?F;l;*`+*UE<40AqpY~Bbum=j#aGqzV%P0yjgkKAHm z`(*JPhjo^1v@1-(XL-+Z2P~LP;T~u3Zip!g{3+nP2~cDCG*00;XA9N#{Fl$48Uz-=y+}5si%zUxS~&?5Z1KXj@{UeIazf4= zz$K&-LqAqDolv{B-$Lwo6(4Uqcz-Qi8@x45u^5Fd30`j5TDlH$qSlaOVs%NZk(JGc zk5|b6%aiXUt8tf@RhLZ`6Qs1md;894#eO7))!jy+zte=b)xc-s2K*Jiahh}l0e+qO zio5eaYJO|QufCs_v?Qhv?vs>kY~c+s`0Hx$Mub3&QCK%vShTq2IQ1l+S1=CqYI`LW zD@ML9;j6)$-sVnA`pv`nuB6AK!IO2U?RI-+JVQ;(_ktIxfNn*V0I(9cmMlzX~5N3TyqqIR1cQ z6>^g!UYs7^55)HwH#eHKMv~{L8zfN~ZD9%PMY|xNc95`SA2@kXO+{ON`-0S_${>Cx zX7$~lw^c;_gjn^olDJ+Xwobf6NGzT#BerXAL>Jb~v%r*sVO>%qruINfXxvmh^7iHG zo{@uBH`J|9mCWiQ{7eFD=`n?mNf)(4ZNWB}C}3Gc;(U6v|HAclm-Vsar!;HD2B4iq zf;6oZjtToCi_J=Aq_^?T^Y}9L*W;E;$?h`mZ~r35v|PwQ2IU0PsP^rDl;O6)Gl$t^ zP2{jZ8Jc26IClsKWMq2Bz8JWcmc5XTD^JAGgC@Q@`pduaIfO(ns{!e3Wo<~|F*T5L zDk7ykd#3MI{qX#v+43$R01+cd1QZjgPBK9*3_9GKop?q^u{Vi0RNJf(MeY>O{k&La z^0faKxz)WH0+}lUp`$GXj86Z&oNj=4hmK=3$$Z*cD58)&AcY8PoSK}|$yPIup7`;; zDfJ<_fI|#Sc=+Pj@u5)z_23w>uh#|Q1QhpIxTNbLoMO7{V=NSRC{mZAf8;QL+B3Wj zBxyGbcj1b_oLAu+VSkeo=4#Hq;u#N3t*^>MBHcL|4FzIZN}PFJv1`}AzT4|W1~kXU z;2W%Pd+?(?hjxGWoX8^19_X~bXtU!VFo!Z`zi?2rOV~+)TRha@Hc$Ja*v(=a84GOJ z?NFu!kT&uyG*;t>6t#w=T1P#`WbZSWKYGk zBz`I(${7U3VA_2OQ)jHTCZ_$JtPrq-H zDRLe&l6JD;TEld02dOW|jVaV4f0`di_$&@arGnR~Mc65xSJ9!8&9kPbc@uGI6KDL7 z9jkm1Atho?J44XE14cn|IJH2EL_m+;K#jzHiX{enqC){SAP-aIS{+)fjN-&is5fM| z_LZU^Njr&79^|TSFf)5%0CfFW#=Q6Dgik;K>dUe*xKefQ+j<6q@Y<;BKMz{{=o^j= zK6A%|bui&q75H(R>GwP7tC#aDD=y-oQ)jCbgbb@Cng^X$8>X2$tXe0?t*2&ktMhUD z8gCCzM+1x`j9Ws|P`d~cL1GiWfY^9c#QR+z+%zSK#))G@fMTm&Lv%Y_a7%Yx&pCzvZ7uMt? z5gSt`Upk?eT0jNG8p$Jf1Bs2Q=qX$i;~=O;UyyTSgHFGbZ%>zK}NXf3%Y9C0UIk|b#4d#> z8dEEF-E={|u1`9hraBX%L^7{0=6~8d9UG|7A6g!`Rnnge&xG=?( zLZsLC)B3=6O}|%jqJ8q^$R%+wlG8h7<&Sq3ugRI!?s|pACmt_o@{Q30$GY@s^2whk z%2;?ASyO;O`+-D!zn9})j|vB=8_`P7WdY3b?E;+ddfUeuQWRX<{h zn%qxL%T@~_A?WWpeNa5y?tuY|n$K$Br)biH+Ud4%3f8wJb&()UQ?HT>xyx?4-#@G& zUX*JHxx*{XSzh;aS4yw*H!+IrnsV<+CW(8CD-d@rphSuKxL~dHSHC$M)C&dPJJ>?~ zx0H*Y?=@riuoa*Ek)~CO&In?(@BM60QNQx|1(om{&YG)63m<9tn=AitRTiL9bj)>E zk3X-kFWA0c;HMN#Dy|OxcKiXs%jmyDF19}cEB60B^J3cvI8bO#&{0q*{d;^KzY8q| z>+T(`yx_Hk^>_V2aWU}gV2v7!%C<5yW0p;QjY$6mrUbwDz$lzB+AFyQQ3OabNbR}% zj%gYiZi09HN6X+zL>efSzu!QJT29lm4Uo(Fm8M!7PtTd@pMn$c_JiQlG|jgzM`0S$ z10(i-p?^TV4?7I7zqw*QkX%9n6Ad`j9rvnm-jJeP9Ir14AEwH0L$gLgNg8-unLWgV zEleLU3_1WP({J5+|HwOu(almA2p(F0|L5RxUN82<1h@Y~qv1c>wQN2F%>}GvBTgRd zqpjXj%mS(1?M;AYAVYwQq8}nG_Ft4aKsAA{rKhDi@ef^tCM4x3kl*R-R(>yb*#~?? zfjt7j!)*%CZB12Y-Y9rbrmldX1%p4ift~~%k!e67P<|LIz64HyUszZ**p+bXAc&y( zy?`CTH4_+B>WzA!v{QC2t+5$oTUrA6A`=o5YX{h{-B)u6JfdA(oFjr9Jd7=+P ztiX<|SPNu=bxZZNXP_rn$U-X%)Jcbcbq|thKsG=E{MWZ<)3zXL0ui7lYsifP_u&kT zn_wU3ku^WEDbf3NX~{B$A=NYo0ybnOv3Y2CwPK$L>MlAR(cNG7<(T#gDl$c6aeKHSAI#2w)6&lmzXiF zUcO_7hBZH0hXO#;8N1v2gsrv09#Y*yt>))ij(qqTA{}LY#j`|!d33^dN^u4B+PPS6 z9;h`N2B#VBp5M#fJ>0sRRnZSUNhaT{uSaf%!7#=Yeub+x`Uicg~0R?-lbZM0{9C^;N2$nKNbz8{Za$Awm#Irr2L{ zl1b6>T|8{3_Vy zMIK|u3fR&5#+jAIC!ye06F{vFn+LNTt|mS}w!z%xkde^~Xy^iF%4#JRxl97s*Iyt3Upg}gYNKQ9p9HSHSPz1?6fek3y>kn0+E`orNU@%pPN@^I z@cIed#hBB$LNeIl1s??gc?HKGh!|0AG}5S9tP~^4;X@c4j^{a|4&&NCgL68_xtW_zA`RJ<^+ppE>?xrK?o2#=-?jHc`QL17hpF;|!D$eTB{h~W_+ z1Lmu}1w^gJRafQJ2NE?n-tpyeKV3nI*!GbM=ZZ^puMw72`j{iOnWZEDmHwCxwaGcm zs!n_H14_R(Hn8=Xdh4wADDo0$jqrS`7&b#ZBrf%W{1|-!hvJLc+PD3eRz&gklHEUV9;2 z3s|t9@J|Zz^Lyv|9m<6QKuV0mCux+v;?%2>pQl_>46|vFNyt172s2r{niw@Ihm|u` z5UkL5DwP{ccv|oFh|PjjHyAylw0{bSBc^S4-CTcJYMC^Au!D$JzYQHUPLS-jU!cDnWa>iM;j;0F{ z_s(+?F3!%S%T|n(=FBkSDVsW9IDrRu2`&ooF$fnFc$6Vl$y?NA4D~y$(98+2p%IT2 zxvp~^B!F$cF4c5-sS8i(TjgPC?vm_I-ns5g0hJGRq~b1sOps_G`?4&QuFf2{nVHFY z6E>@_wCnDry}(}8m>>nIp{PMO=qp4)Tf@QAs)41~pswe^krYSAJ=r#3-gcpa)bF3a zHko8=irn4gc0a}^G9nZCQp&^ECLEeEvHZMY_h)2rp+gMZH*q5PSv6{BZ-@%Ucb?k8E76bPY zVH|I{eZNqHXAinjy^EO^ExnVdlXLBjK}RDoH@}zsF6_z_BNxMh7Ze=q<$}{JgFNm< zouV`UwF5#0zv5e8&KQi7fu?4Lv%~2mXgZ3j{N7H7hd3(!+bnAAb6VpO>t zkzD1<8Py5);5!8TKz;rKn6)-%f63r%)OtE-*8{jXIWzwS&(#LJXgXG@O%HL#Wd`ak zAkE3o!{hdtD5zd@Bz(I0YP>UBM_^aj8=%vi62SeSOJoxGjgs%n=5D$tC42K~;P(jEEmygp}dT;Bz_+@E)xbf)X{wj2cYqQ<|lt$!H0Rcmfq!|4CM!KyMhQo zm(DR#$ZpdUI6&Cc98o>as5Qp^cPN*i4&+LNM$wVjR|%z$0R7OFKP1_!E~dTuT^NTy k0LuUW^^mmE;hpH*4~VUYGWYJniEk{Hr)`_ - -For information about contributing to the StarlingX documentation, see the -:doc:`/contributor/doc_contribute_guide`. - -.. contents:: - :local: - :depth: 1 \ No newline at end of file +========================= +Time Sensitive Networking +========================= + +This guide describes how to deploy and run Time Sensitive Networking (TSN) +applications on StarlingX virtual machines. + +.. contents:: + :local: + :depth: 1 + +------------- +Introduction +------------- + +Embedded sectors such as automotive, industrial, professional audio/video +networking, as well as blockchain and high frequency trading have emphasized the +need for real-time networks. Common LAN models are based on Internet protocols +and the IEEE 802 architecture, where operations are best-effort which is not +suitable for edge computing use cases that require high/known/deterministic +availability. + +Time Sensitive Networking (TSN) is a set of evolving standards developed by the +IEEE 802.1 Working Group to cover a group of vendor-neutral and IEEE standards +with the aim of guaranteeing determinism in delivering time-sensitive traffic +with low and bounded latency within an infinitesimal packet loss over the +network, while allowing non time-sensitive traffic to be carried through the +same network. It is also a key technology that targets the previously listed +edge computing segments. + +StarlingX (STX) is a complete cloud infrastructure software stack for the edge +that provides running workloads on both virtual machine and container +environments. + +This guide shows how to deploy and run a TSN application on a STX virtual +machine. It includes TSN reference applications which are taken from +`TSN Reference Software for Linux`_ with a focus on 2 key use cases: + +#. IEEE 802.1Qav or Credit Based Shaper (CBS) + + Ensure bounded transmission latency for time sensitive, loss-sensitive, + real-time data stream in some critical user scenarios. For instance, when + time sensitive traffic and best-effort traffic are transmitted together, users + require the bandwidth and latency of time-sensitive traffic is protected in + the midst of overloaded traffic on the same network, that is, ensure that the + time-sensitive traffic has a constant transmission rate and latency. + +#. IEEE 802.1Qbv or Time Aware Shaper (TAS) + + Create a protected transmission window for scheduled traffic, which requires + low and bounded transmission latency. Scheduled traffic is the term used in + IEEE 802.1Qbv to refer to periodic traffic such as industrial automation + control frames. This type of traffic is short in frame length and requires + immediate transmission when its schedule starts. + +------------- +Requirements +------------- + +The TSN reference application has been verified on the following environments: + ++------------+---------------------------------------------------------------+ +| Hardware | - Edge cloud platform: meet STX requirements | +| | - Edge device: Intel Core® Processor | +| | - Intel® Ethernet Controller I210 | ++------------+---------------------------------------------------------------+ +| Software | - Linux Kernel 4.19.04 + | ++------------+---------------------------------------------------------------+ + +---------------------- +Demo environment setup +---------------------- + +The following diagram shows the setup for the demo: + +.. figure:: ./figures/stx-tsn-demo-environment.png + :scale: 100% + + *Figure 1: Time Sensitive Networking demo setup* + +The demo uses the hardware and software components listed below: + +* **Edge cloud platform:** built based on STX All-In-One (AIO) which provides + IaaS infrastructure for edge cloud environment. + +* **Edge device:** edge side device to generate TSN data for processing. + +* **Intel® Ethernet Controller I210:** installed on both the edge cloud platform + node and edge device and connected by CAT-5E Ethernet cable. ``Igb.ko`` is the + corresponding Linux kernel driver which has been included in Linux. + +* **Edge gateway:** a virtual machine created by STX. Acts as gateway to collect + TSN data, perform edge computing, and send to data center. The I210 adapter + is exposed to the edge gateway from the host node through OpenStack Nova's PCI + pass-through support. + +* **p2p4l and phc2sys:** utilities from the LinuxPTP project to support time + synchronization over PTP. + +* **tc:** utility/command used to configure Traffic Control in the Linux kernel. + +* **TSN Sender/Receiver:** TSN reference application from + `TSN Reference Software for Linux`_ to send/receive TSN data for processing. + +------------------------------ +Deploy TSN applications on STX +------------------------------ + +******************* +Edge cloud platform +******************* + +#. Install STX environment: follow the instructions from the + :doc:`Installation Guides <../deploy_install_guides/index>` to install one + STX environment (for example STX AIO). + +#. Prepare a :abbr:`VM (Virtual Machine)` image. Create image ``tsn_ubuntu_19_04.img`` + based on Ubuntu 19.04 with the required binaries shown below. + + .. code:: sh + + # linuxPTP + git clone https://git.code.sf.net/p/linuxptp/code linuxptp-code + cd linuxptp-code + make + make install + # iproute2 + apt install bison flex elfutils -y + git clone http://git.kernel.org/pub/scm/network/iproute2/iproute2.git + cd iproute2 + make + make install + +#. Upload image to OpenStack Glance and enable PCI passthrough in the ``flavor`` + property. + + .. code:: sh + + # upload image + openstack image create --container-format bare --disk-format qcow2 --file + tsn_ubuntu_19_04.img --public tsn-ubuntu-19-04 + # add pci-passthrough property to flavor (for example m1.medium), "h210-1" is the + alias name of the PCI device configured in nova.config + openstack flavor set m1.medium --property pci_passthrough:alias=h210-1:1 + +#. Configure OpenStack Nova to allow for PCI passthrough. Create the + ``nova-tsn-pt.yaml`` file to allow PCI passthrough for the i210 adapter (for + example device id: 8086:1533). + + .. code:: sh + + conf: + nova: + pci: + alias: + type: multistring + values: + - '{"vendor_id": "8086", "product_id": "1533","device_type": + "type-PCI","name": "h210-1"}' + passthrough_whitelist: + type: multistring + values: + - '{"class_id": "8086", "product_id":"1533"}' + overrides: + nova_compute: + hosts: + - conf: + nova: + DEFAULT: + my_ip: {host_ip} + shared_pcpu_map: '""' + vcpu_pin_set: '"2-5"' + libvirt: + images_type: default + live_migration_inbound_addr: {host_ip} + pci: + passthrough_whitelist: + type: multistring + values: + - '{"class_id": "8086", "product_id": "1533"}' + vnc: + vncserver_listen: 0.0.0.0 + vncserver_proxyclient_address: {host_ip} + name: {controller_name} + + .. note:: + + Other configurations, such as ``libvirt`` and ``vnc``, are also required, + due to the override mechanism of openstack-helm for lists (for example hosts) + which replaces all contents of the list instead of replacing a single + configuration item for each list element. + +#. Enable Nova PCI passthrough configuration in STX. + + .. code:: sh + + # set pci-passthrough config + system helm-override-update stx-openstack nova openstack --values + nova-tsn-pt.yaml + system application-apply stx-openstack + +#. Create VM instance. + + .. code:: sh + + openstack server create --image tsn-ubuntu-19-04 --network ${network_uuid} + --flavor m1.medium tsn + +#. Install the TSN reference application and other test applications. Follow the + instructions in `TSN Reference Software for Linux`_ to compile and install + the following applications in the VM instances: + + * ``iperf3``: running in server mode to receive best-effort traffic. + + * ``simple_listener``: TSN test application which receives IEEE1722 class A + traffic. Used to test the IEEE 802.1Qav or Credit Based Shaper use case. + + * ``sample-app-taprio``: TSN test application which receives traffic and + measures Tx latency. Used to test the IEEE 802.1Qbv or Time Aware Shaper use + case. + +*********** +Edge device +*********** + +#. Install Ubuntu 19.04 and the required libraries. + + .. code:: sh + + # linuxPTP + git clone https://git.code.sf.net/p/linuxptp/code linuxptp-code + cd linuxptp-code + make + make install + # iproute2 + apt install bison flex elfutils -y + git clone http://git.kernel.org/pub/scm/network/iproute2/iproute2.git + cd iproute2 + make + make install + +#. Install TSN reference applications and other test applications. Follow the + instructions in `TSN Reference Software for Linux`_ to compile and install the + following applications on the device: + + * ``iperf3``: running in server mode to receive best-effort traffic. + + * ``simple_talker-cmsg``: TSN test application which sends IEEE1722 class A + traffic. Used to test the IEEE 802.1Qav or Credit Based Shaper use case. + + * ``sample-app-taprio``: TSN test application which sends scheduled traffic. + Used to test the IEEE 802.1Qbv or Time Aware Shaper use case. + + +------------------------------ +Credit Based Shaper (CBS) demo +------------------------------ + +This demo focuses on the use of IEEE 802.1Qav or Credit Based Shaper (CBS) and +the LaunchTime feature of Intel® Ethernet Controller I210 to ensure bounded +and low latency for time-sensitive streams. It includes 2 scenarios: + +#. CBS and LaunchTime disabled +#. CBS and LaunchTime enabled + +In the demo + +* ``ptp4l`` daemons run on both the edge gateway and edge device to sync + the PTP clock based on IEEE 802.1AS Generalized Precision Time Protocol (gPTP), + with the edge gateway serving as grandmaster clock and the edge device serving + as slave clock. + +* ``phc2sys`` daemons run on both devices to synchronize the system clock with + the PTP clock. + +* The ``simple_talker-cmsg`` application runs on the edge device as the + source of 8000 packet/s SR Class A audio frames in IEEE 1722 format. + +* The ``simple_listener`` application runs on edge gateway to receive + time-sensitive traffic. + +* ``iperf3`` runs on both devices to transfer best-effort traffic to stress + system communication. + +* The ``tc`` utility is used to set up CBS and etf (for LaunchTime feature) qdisc + capabilities. + +*************************************** +Scenario 1: CBS and LaunchTime disabled +*************************************** + +.. figure:: ./figures/stx-tsn-demo-result1.png + :scale: 100% + + *Figure 2: Traffic with CBS and LaunchTime disabled* + +In this scenario, both best-effort traffic (blue line) and time-sensitive (IEEE +1722 audio frames) traffic (red line) into the same transmit queue, the traffic +transmission of time-sensitive traffic has unbounded transmission latency and +the transmission rate varies greatly (for example 7900~8100 packets/s). Without +CBS or LaunchTime enabled, the network sees a burst of IEEE 1722 audio frames as +driven by the ``simple_talker-cmsg`` application. + +************************************** +Scenario 2: CBS and LaunchTime enabled +************************************** + +This scenario shows CBS and LaunchTime enabled (``mqprio`` with ``etf qdisc`` and +per-packet TX time) + +Enable CBS with the commands: + +.. code:: sh + + tc qdisc replace dev [iface] \ + parent root handle 100 mqprio num_tc 3 \ + map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \ + queues 1@0 1@1 2@2 hw 0 + tc qdisc replace dev [iface] \ + parent 100:1 cbs \ + idleslope 7808 \ + sendslope -992192 \ + hicredit 12 \ + locredit -97 \ + offload 1 + +Enable LaunchTime with the commands: + +.. code:: sh + + tc qdisc replace dev [iface] \ + parent 200:1 \ + etf delta \ + clockid CLOCK_TAI \ + offload 1 + +.. figure:: ./figures/stx-tsn-demo-result2.png + :scale: 100% + + *Figure 3: Traffic with CBS and LaunchTime enabled* + +In this case, after enabling CBS and LaunchTime features, different transmit +queues are used to separate best-effort and time-sensitive traffic. The CBS +capability ensures time-sensitive traffic is bounded to the sawing-effect of +credit-based shaping in the case of a heavily loaded transmission path. The +LaunchTime capability ensures time-deterministic transmission by setting the +per-packet TX descriptor LaunchTime field. As result, the traffic transmission +of a SR Class A audio stream has constant transmission latency and the +transmission rate is a constant 8000 packets/second, independent of when +interfering best-effort traffic enters the system. + +---------------------------- +Time Aware Shaper (TAS) demo +---------------------------- + +This demo focuses on the use of IEEE 802.1Qbv or Time Aware Shaper (TAS) and +the LaunchTime feature of Intel® Ethernet Controller I210 to ensure much more +bounded and low latency for period control applications. It includes 3 scenarios: + +#. TAS and LaunchTime disabled +#. TAS enabled +#. TAS and LaunchTime enabled + +In the demo + +* ``ptp4l`` daemons run on both the edge gateway and edge device to sync the + PTP clock based on IEEE 802.1AS Generalized Precision Time Protocol (gPTP), + with the edge gateway serving as grandmaster clock and the edge device serving + as slave clock. + +* ``phc2sys`` daemons run on both devices to synchronize the system clock with + the PTP clock. + +* The ``sample-app-taprio`` application runs on both devices to transfer + scheduled traffic. + +* ``iperf3`` runs on both devices to transfer best-effort traffic to stress + system communication. + +* The ``tc`` utility is used to set up ``mqprio``, ``taprio``, and ``etf`` (for + LaunchTime feature) ``qdisc`` capabilities. + + +*************************************** +Scenario 1: TAS and LaunchTime disabled +*************************************** + +This scenario shows TAS and LaunchTime disabled (use ``mqprio qdisc`` only). + +Create mqprio with the command: + +.. code:: sh + + tc qdisc add dev [iface] parent root mqprio num_tc 4 \ + map 3 3 3 0 3 1 3 2 3 3 3 3 3 3 3 3 \ + queues 1@0 1@1 1@2 1@3 \ + hw 0 + +.. figure:: ./figures/stx-tsn-demo-result3.png + :scale: 100% + + *Figure 4: Inter-packet latency with TAS and LaunchTime disabled* + + +In this case, the distribution of the inter-packet latency for both scheduled +traffic (VLAN priority = 5 and 3) has a high sample count at 500 µs, which is +the inter-packet cycle time used in this demo. High sample counts observed +outside of the chosen inter-packet cycle time indicate poor precision in hitting +the expected 500 µs inter-packet cycle time. + +*********************** +Scenario 2: TAS enabled +*********************** + +This scenario shows TAS enabled (use ``taprio qdisc`` only). + +Enable TAS with the command: + +.. code:: sh + + tc -d qdisc replace dev [iface] parent root handle 100 taprio num_tc 4 \ + map 3 3 3 1 3 0 3 2 3 3 3 3 3 3 3 3 \ + queues 1@0 1@1 1@2 1@3 \ + base-time 1559471513000000000 \ + sched-entry S 08 100000 \ + sched-entry S 01 100000 \ + sched-entry S 02 100000 \ + sched-entry S 04 200000 \ + sched-entry S 08 100000 \ + sched-entry S 01 100000 \ + sched-entry S 02 100000 \ + sched-entry S 04 200000 \ + clockid CLOCK_TAI + +.. figure:: ./figures/stx-tsn-demo-result4.png + :scale: 100% + + *Figure 5: Inter-packet latency with TAS enabled* + +In this case, most of the samples happen at and close to 500 µs. The sample +count quickly drops to a single digit value when it is further away from the +500 µs inter-packet cycle time. Compared to scenario 1, a majority of the +scheduled traffic is received at close to 500 µs, which shows that ``taprio qdisc`` +helps traffic shape the transmission of scheduled traffic in the time +domain. + +************************************** +Scenario 3: TAS and LaunchTime enabled +************************************** + +This scenario shows TAS and LaunchTime enabled (``taprio`` with ``etf qdisc`` and +per-packet TX time). + +Enable LaunchTime with the command: + +.. code:: sh + + tc qdisc replace dev [iface] parent [parent] 1 etf \ + clockid CLOCK_TAI \ + delta [DELTA_nsec] \ + offload + +.. figure:: ./figures/stx-tsn-demo-result5.png + :scale: 100% + + *Figure 6: Inter-packet latency with TAS and LaunchTime enabled* + +In this case, the inter-packet latency distribution for both scheduled +traffic is greatly reduced compared to previous cases. This result is +consistent with the fact that LaunchTime technology ensures scheduled +traffic is pre-fetched ahead of time from system memory into the Ethernet +MAC controller for transmission at the defined time. The transmission gating +effect of ``taprio qdisc`` provides a protected transmission window for +scheduled traffic from interfering with best-effort traffic. As a result, +combining these two technologies ensures that Ethernet frames for scheduled +traffic are sent out in a protected transmission window at accurate times. + +.. _TSN Reference Software for Linux: https://github.com/intel/iotg_tsn_ref_sw