From 8d4694f835e724cac2cb23cfedbf47a1646d2044 Mon Sep 17 00:00:00 2001 From: Mengxin Liu Date: Mon, 18 Jan 2021 13:03:52 +0800 Subject: [PATCH] docs: add underlay docs --- README.md | 4 ++-- docs/vlan-topolgy.png | Bin 0 -> 62761 bytes docs/vlan.md | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 docs/vlan-topolgy.png diff --git a/README.md b/README.md index cfc723ddbe8..8fbd36a0c40 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The Kube-OVN community is waiting for you participation! - **BGP Support**: Pod/Subnet IP can be exposed to external by BGP router protocol. - **Traffic Mirror**: Duplicated container network traffic for monitoring, diagnosing and replay. - **Hardware Offload**: Boost network performance and save CPU resource by offloading OVS flow table to hardware. -- **Vlan Support**: Kube-OVN also support underlay Vlan mode network for better performance and throughput. +- **Vlan/Underlay Support**: Kube-OVN also support underlay and Vlan mode network for better performance and direct connectivity with physic network. - **DPDK Support**: DPDK application now can run in Pod with OVS-DPDK. - **ARM Support**: Kube-OVN can run on x86_64 and arm64 platforms. - **VPC Support**: Multi-tenant network with overlapped address spaces. @@ -75,7 +75,7 @@ If you want to install Kubernetes from scratch, you can try [kubespray](https:// - [BGP support](docs/bgp.md) - [Multi NIC Support](docs/multi-nic.md) - [Hardware Offload](docs/hw-offload.md) -- [Vlan Support](docs/vlan.md) +- [Vlan/Underlay Support](docs/vlan.md) - [DPDK Support](docs/dpdk.md) - [Traffic Mirror](docs/mirror.md) - [Webhook](docs/webhook.md) diff --git a/docs/vlan-topolgy.png b/docs/vlan-topolgy.png new file mode 100644 index 0000000000000000000000000000000000000000..7ba1b239dc41bb5fabc4c48241538851041b4ef5 GIT binary patch literal 62761 zcmbTecT`hdw>^9)0xB&cy$2O3Qly0zPy#3jD5yy2AYHl`dKCy=6zN6jAfY$u9hKe! z(wl&^(0lnE9(~?>?|1KCU&e3@B_!vZz4l&ft~uv2=&`CI*%gK>0059Ze1K2~0D@)! zz?UH*0)L{ResvlE*no$KdrzJ9R+EUGby~~Xd%jj%^1c6c%Xr+x4sWc=QByQC-qf|d zRQ8(EgQlxD(y6xIZ@ic4FAQS7|A6GJ@B?Rd*$4QarF|Ce_xh_1dpBV??2c&NDQJ6 zdDgG|*N^_|eE`zDb?v|X^1tuMVj+}*iB58S?4-F`>`PORqpU3?7&cQ1S z^5XuF>yx}>#)C9#iOtUz{;xHX1#dhW_20e%|KFP_4);dS;1~1%H%8!xeeyWij9@DPI!rYGx%hv57z`8n|GzNF z@>2<@IHu3Rv^7lHc76{8E-oyvcx+5JKI75MAD_~zcUKH|I;&5CE z6&}QnP_qDEc3$3zCMy1=7SE3#^W&xR`1tsw@1sUqSYfCGAZvv&b8z$Q&VBZUZ|BgRf3(~~AQG-JP(uSb zCk4dJG3O)C89R#GDErRwWL*U4m_{Nu)aHMxEB+0ztQzIFfU*G2CR^DS96`g#ZA~b0 zVf)agATLiRns)_@Wf)h~($f0cvp8lpws#z~6Ssr}mn#Q-KnD=kc&AMmak;!BI)<}rqJ?VMGj=x}W-tFWai zAM}EFcr)vFNnU1*NTuJ;5;Iz15s{*`R>aPoW`QQejtc-wKDA?7%phmIL470zo*)lT zbW20>t=MgM1cSJMlncrX%)3k0_pvXW&}siM@ENr7qRA9HvHVi0Ls^1%9M z8XAslmLJuZO8`4!V54@t0*#J1_wycK$M_?zZ6@);mIPtFfl1;kuhiq(9LciX7cLSxx0nd za&9O5c-YNOrRx*5Bz6Z;LH*FPQc)|oEztP=) zhH$?Osb8#GPe8x;(SrxT;iuu)qYuepF;)3)v`|$dZ*Ig1%Eo5B=djzMb9j^=Xs`ep z^dk>F`)ZLZ`Y|yv5hQ`lcneukuH*n8xD-cI1izpB+3-~nvZ+>KzX!4+_7B~!Qre3` zAkgQP`EF*P7Uf0Azv`ShU3Gqer#% z^xzUqC1p~vp^^gG0cEmsXn9! z?1&&?#NI=QQZXj-ltwGTj$(;g?8fS}(~uWlLk@C9tY)|4CDfGyILj@ot2&;f{QWfx zOx5dL{acBp?C-u2Qj-vNqjY2ZN8Hfg+7k~W1ibF$^&+>Q7zcl)s0l)Q2BOXI8+d^Y zyapBIisDCgTKoo?gORW~SUopC|Dx_shI~1Mdpa8MzBJE>T-mOb>E3t4KfZ^UuPeaw zrVlWD^d&FPowG4%h99p1KUtWxdAgw3tIXQ%@))zwSMb}{?REG2!Ch?@rA~|2Py+Nm zMj|C*2_D?eaCWE~b(%0vNJyyowYZ2Q@UFj3L!+m!uYWE8y?d3W#fv?a;-DkfB7T@{ zb`DWW0CBk{8C^h2&>&Wdl?j40Gj)bUuvzcW&C_1LPO4S>^0EwvI)XH-tKcIY_n%`f zNO(;P41?2kNNopRHl^TJV*>g>PVmsZF6Ts0n@fZlcm3plgvJ3hJwIHwjCZcK&H@{=n(iOqE3hSm`Q`&Jm-ysmz;zyb1OkJCgP zn9n;@22PluTg(&MevQ*}ePsdIBZdLt`Y^P+$O@t^Qy#Gr5*!TI)Ytd2&>UtEGV5l# zk2sCy*YD>11?8N4G;l%>^}GbE4su58!Wwc3Ufx@?>~+$PjpkI4^!UF5_JZLA)l0>Wz+!9NhEt zgyVj!n+mQ;$8a`T0+otZr?rTd!eLy-H%pO&rX)aV(WJ1G339R(?L$6^DZKotNJXaC5*wNC+QIe%~XMAYPrP81*9X zPBF*0+%W++)oIai`P$q^^%xh{UKCxxrt(-h?wQi2^t3YNW_DX!o52Y(t<1PTN5={= zb;b6BpIQ^f(%f7?vp{cR(9t$jDyRD5`0y3?+m2paGWV7Eo&JGH6ns(kU2C^@UKCQV zF&^Nj>hl0Lj1lwbPJRo_VXSSb>PyA)JA$vYqU8`wUkfWSOC404s+~N%yi%7Ti>~b< zM{bhcUc*TJWdkCraT&Y$W;U(AN;yymM zxGlX{l~3edU4}hRK+~1;enF!TzHKKUS2U1r4~-%oT4BWdMMDhX_-%?&P+$EPyU{b( zpqW3o%+6eIMZnQtJs9O45ur=vd@l*M#-=ZQWn;WEG9KKY(;s;>MTN$Ti;M3z3nZ4e z*xBZZEOf?w0FR$c%rGTj_p#!GG`Nx((I$6pq>e%CZ$La4flPL2fq3{Y5pX{iq&|}f z7pf>LQ>dX+-94Ar+9`$@l0kgiBeLqo1t<7|I>Qo5t~ zpl)LYXsB-Ft%)I!Er}^-V;Ag1**Z8l)X5@v9~_SK&w$uw-vt`XGPW1a>cI+8V@s_d zYlew~8P^|e0yIbtyDR>t!|X02S~l{uN|caDNYYbZU#Ye+W`cyXP& zIn$zBp`~KH+bEQ)f2nwvN_K(PE2ZVd(51=&!or+0mtTp1(nTB*VL^FW) zs$>d-WMIS-j#;x;W1cXGVB(Lm0E>8I@%+ochQ(J_5Ndj4mF;Tn*WKxNLtO*0Qqt=T zT(}b-?m8?+ma_j0=s;a3Qscvca`z2EyqgJXk#C!cK(mM8y4kqospaMRs^Qs=^ z_q@XFj!nLF<_M9k~)&(y4KfZPRY|z?3}e%;Lge!nPi9y;ZiJ^WW3_v)_Uor ziW*?K-(tJjmoCdD@ZD)*Kge7Vn%mUW#7;&=w&<#u_~L-p978<@0-L>)8MDQfVhyEJ z2B7>s zLB8WlGiPtzU^pGPdI4s{1ysDv0;a7C*Pkn?%p_UkcE-h%?Is@~SfR5_bv&Jlk%#L7 zDOctWIQpzCg3vQhF(Nfij9H=cOy4yT1qI)gle8{+CaiO?7#AC5(x-#l0#JviZ5&si zXDv<>2@reskoySt2B(Ql^fy!hxFmo( zDF%Kq&+8!O?ao{-UAjaCo*o!jG&*{U3~oZtjyj-;1kN{a1k^tC#W8N%v%-B_xq@L2 zs6$4rYR$S!trIu__*vI}qzmVf1!mV|5^SZA1rXoW4r_+Qi zSbjcMIDX%L4Iv)e!O}G!)UTmuST2g+E*Cl5GDa|2zQqz6PYAg4$NE`K=9Zn29k<#) zq}(JYU;PauAH#8Hyx7?u{VjvEqUpkTI#UqhbJ`PKwN=@RvL5qNZACU0^Ogs$&2o&@ zgooVu0&A8}@%-LW`4-HTsw5wt{+D5b&gD2Ae_O}LCBhBr1_!dkWJCCa`AYM zt1l;K7D(PvS&uDvzrd(ImU_5dWM4NGijMeM?s0Wd2t;ghfgXj#Gp2j%^!TjL3){|I%QE(dwetWE9oQ)KbpRoP}i%y-gMz`~pH6ts1% z>?rvFsT-MrfycIhg#`T!A!crU0TBd-%kRQP;M1vG!Hr?tD40R zunNtmsJ7i4jjRRm6%GOi0^6&S@Aq@6be_jH6#t%W})z)KUNAb3aw|)qO z>S9d#(WCJXlD4+C`aVCty$T~|rH_FUj@|$nAw6>TUKPS9^+dmeYV-j;*ldS;kWO*z z9iK8y`)<#KX(&lw1!yfX9=Z=d4$^Bn8<7(EQ9x(2fN3aZ*KwTUst$B^nvvG!(7S?T z_D;F=xzJJK)1lv?6a5PRSzTZQdtEZfykHKN==&R8DxYa_Mgct&gG_{?hZ6l_(RDbm z&2)`t%}RQ$yU!04KD1&+!&4mDsrs7HFYp0&z?lYOi>7W38WdF7HbR_G15CemYkzcf zoFLVXxqFl;K>ljLII-o2@C^ek8ZQ?Q3P7(HnZmf@YofJ{UMfg@^U&(lDPvH^RSv|v zXIB9blp9MQlZO}%2&X8tC{x-)fI-SWO}tNoP7_pVeT5p&ILQJvAN|W6^_r2~&R`)1 zy7dILtxn(M87k$V@C;H{s%{1tM(qWF*;$3q`}~r32cEag$=DM?o#)S=+t9UX1BDC_ z97pP1;D8_M+Gd}q{4)lzd^;nP07xm+z62!d$E6%zg3gArd|+;$Q6b^FKTQHY$uECO z{D}t*#k_&&a4QQ7uAs0Rn5fx;R89JT&j;qO`GXDN@TU|&V%j^-Y&6{h#{+aFIdGO! zwvaTlgebiZunZxm5_2Uc(E3&XKEOL_!XH0=@ClO6SpWxd*mxNS#b9;IV6k?YFJ*NI zE|cB&bah|}mu(?-$)W)!!-5Sn25s@C6`=9IVX7HsVkzp9Dd@Is5e#BEHuI1ZQ9};t zDYQO*R*(X==@kcZKG^tSJ@9a%XI{G#v*;I@yw*s2GNM}^Sa`|fWr#Ff>Ra$;cjQXwdXCGhVWU~t0(J^ib7sz`4qo-%e2VGWft%g49 z6z;O+nB5OrLblr{o2!r#WJajU%`kc@4V5}2LSlZ=l2n| z3;~-iW94GV=w}Fo7rys!8CJ$(txHJ75oB7(z$5}z**$`W<0pcz;ulyDJK<X?=BCiOd^*Yc^e>`XH*;>ZYJn!!{Q4)t-i zGIKQ#Z%$C_e6Pq|Z^*v+Wtk6EjyrB4t|ot!ZB5$fEyYU8_07kl%W%Z4Fr(+)a*VNT z@)R-quz$3`J>?Pq4M>Htgs4cnY^*?KLz1-Vv2qbl?qkOPe%$Zj=zOY#Dms3{wW5swVD~EMhdeWUXCq zSY$L(jq98}pvLUR39f``ywKTJMcuxBlstvAtsut*^u!9znS=ac8xfI)(xz$&wR8|? z{qB9XWbjA`yKusfD?VnyU$;IzOMBOUA8}@)y{A$rhV`8NRaTawQ(ok$GjfwoiG6en7}8UXc8lDGe6V( zxDkc`!LP-|TYk=hQclZHy*xe7XkD^2txmJ|9qWjj@9{(NB@{?m>mu@^j(CBSE0B7V zvAx>Kq+bJI5%JW2@}zHMGQ?Qxc@16o$Wqn%!HBL2$Sk(|lvCP6Aw_iS4$Nca!|6L2 z(cOPaBpVlgaoYijW)()zh**M>Byp{3-Rr<6AA4leQLGeXE&@n>E~~?8t1;Pw^nlY9 zNRkO%o2^UC@R#lDKq3`&Z?s7f9b9w)ewRDrpk>qm<0R9qnih2gHZeGaad7EAep~QN zb{JwOb`Dm<$ixNmqjMm?w1V_PwBU+Z*M|C#Q|Bk=vQ=YimS!$&#;;@gqqWyj??e-J}?IRYV;pi~$Ah{#?rdy(fa*tWJ>#N!* zU*%f8)x@s)quy)~x5|BO3Fq!~RAba1zfSt0DC6_x5XZ0*^)68?YsMfgU;u&W4i66Q zRGgfgB)PK=ms<-V`8~~?XIp|?{Qdno*=Kd2+{E5zfWTGYEWfNy3d~{GIbzfHeb}1xa`U)($RFEE93k&*A$>yAFDz_L3`h<-9KiW-tfOno?_aY?FuRa_HwZQMS+$*vVTXc3Z|_@;L_QvGX$ z#-A{Q90?V>dZt*u?TzP)#km7&dQWp9C^b5~4_DRBy8S%Ae}H%5cXgJVxm zB@g6Xcv8>@*8v<+{UbyN-lsU+NhvhIwioGm#Bmnv8fr)f*2|tUtiDo!6OUvwle-`8 zlnG*YpR2X6sNEcM%#)$6&Pgx%pSUE0aUmB}X%|sA8T%A9OG>FfZS^dF1&$B26Z$p2 zzu;vYC!7WIqN*4G7DWX7R#)|p8p+P4SmVf+V8aw_e1wvslJJX$5-~ms*81(qqSt^GH_6ZJ<19i++3Bo3OVl?JFk4^YkCuQTT4f!#V(%Ilbe$p z`oqg=E!o1>W)d|J!n$5N{u3#4A}gdXeVYA3&A8bU>XuKjFuU8Uc^!Cs{M2Nxe5)FZIgAaO_m*oqeik zqR`X23c|L>Q7LoD5}uFkWRoNGv^5jz%j&*sN>u7sgc#x?jzaVduGBHQKNFTP>SR4_ zMg@Sq&R5>pLo4$gWwS@znFmQTqOBVjgya0eg6hNhZ|dM$Yd|)25%b0x6@^K^e*L0q zn%Ou`W~(0+?ur`xosUvHqW(kTw2*vb;HVv@D@tP`AyjqH-B*D#tTID9-wMgLdx2u-FFhPWlm%rQ ztOe9AeEG6$4{YN-6+=i;pz>js{M89p37^b+v_EUbiBEmmKZHW zh4yS~p@~)rOhN?eAiR{~rX>uMU7VRt3mODf6y3!RVA=(k{$vn%6(Ws;krU&6gc63c zfugaB9{TB{rv>Zd;-5Ulk{%b;tuMq3uSzfa=@N&C_dZoLX=#v(6*3gi@jS7M6{#W# zKK=zL8ZR_S{&45q&lqwucw8sr@ajk(hYR>9Nios4mc0R4#rqogmLGQ(&i%uWtC<*a z>n2TuJ8LX%y@i%$%qc9e1-DMnRcN_?&%i#vV%=|{@Tw-0K7LjxPeA+XosFFzx_12| zsnKayw&SOCG-FCEdm6{hy`*mjbo}^1L?2M(r)G%Pu-13|;S)(@(5+ekaK6hx0vy*) zLlQGB9*%>@;ey+f0lc+?mQKtk>&n~GLwuWa#ck$OKM zp*b7r(kyfCihM`c{rx*V9eE&64Z1fGTQqTvKj3Sz`tp5XTE%ZhFEi8(vgtZjPSKY4 zaTJplHTvVTA<_*7IjsPzH{bjJibTHZ({p55mR(O>v^bdXC%2a4M+dO$;*VoHJ@m14 z9|Cp*J0kdf93z;o9iDGWmWCF)uGD=inqQn;6s}_B=k+{%Ayn~eVk*-AFfd$-0!N{t zMAT3ucYM$O-pheKbQ69IDpBiXi+rQ1Hf;LU1hK0XK~1%X%xaMGX%tS3O(2)#gvgtM z40ZC(*Pt~3IrW2?c+03jd_RhAz0+#pQXd1RY(dJ4*{f`+Q|_91b35jEA15OfZ(CS) zD<}7Zx463epXNdRkt~+(XGI&@%OBQyEimw*DBbg5efhI*7g9^5@vk2rt=DsJsB;dz zdFU0V3{nH}q1I+#-fa>S!&11~F8Vlfi(w~^jz+7rR#q6qNj^Y4IiyTzYp=5{J9mei{^Kprk{Ko4IKIQr1C*4hdjT>vWS6Jak zH934FJmolo+6;E6Z^c^3yt-}0M&$a|6aV#j!_$NvtVcje8GFQW*c}foQq+9PiO%1C zUX~lok#bnN9OsC13ify5AbXniJ=@7N6$&-}T}9BG$XrHSUt6>;1lG~65gk@3cLa=n z_>fNkS57leXXpN1wsQ4g#?BPXU((sYL9*>?$d381=x^&A*Z?`-j}cF`)2?vjyz5Sc z!TOWOTB4U~r$!B~+9{>49mgB|>L!?eHIvpuR`^+zPW&v<+)%qK(m!9^!C*jAa*t72 zY-q78np~;HE)|iH{3o-#;5hHu_tI`^scwhZsxc zR@bhRnC7eOgklf+)6ls}{aMPaRkjPFaXR&D9 z`sDe7g0tIPWaM7pZjXOR7P%i!*2jh&2*GFle4O#Vr`Ew%Hx2~zASEfO0mI+jFvH`CeNvnNvnJIikPAscIvnNij9;(BrVai=9?R5x8m zb#FWA8ZKF)uF^tTuD8P3+Iqb%vs^7cO8Ji%*oH_G11N?drH zZl!%(LdYY;dCJ##JRIdF$oLB;9X(pxjs%k+ad5;^j1>YZRkHC5-OZ~P!9!2d{&6QF zU2@dp(JO+voAJD2v0)|b#BTFB1Jc4&_{bAX1 zZh&24xWx~KG-Cy6T{*7Zn}|G+zTDc4Ri zEqrxUA|_6_pO4!ubK8EySvW90U^D_+hgP%ZV3@!$ReX@n694?z++A6@1G|^X*Y-x- zc2a8UXm_POoKeh1F4agRPE;u;=D-EHQgY2cLkNDOzhDsZ7ua0>#*pUm{C9EN(z5#$ z&86foAmLv5uSY4UPAf@k`^IQnao&fZB{GE6O_0R`T?oE%KQDY1%C@GzA4H`LuFzi~ z@&Lz}6o)R>Ts4>30D9ZfAqeDGZSCi?%HS|3F}|sO0o%jOs`p*H)`~g{Afu|79KjGv z3}$LcUQcD>eLp;xL}dAHKhuJF5BoI7H!>B&>~S56h^IC_Kf1^ig%3_Hr_GF+JwlK3 zg!4=8i7CDn#_^TBTVS5;j&3}4n9$%Py|VDhu%^z&7QUbKAWpc{Ydh-mX^&-uHS`p* zVrPjDoh97+1*+TzPt&1sAQQaBo&GOJUMTv@EC z%8sg{0N_^vCi?N4sWPAt4AP)uC%K=Zj#vP@YsY7L>$54N<)<=hhcS;Bd-k0WI~MKs zXAP&Bqk%8m?l1rG0?HZ@z6|SwXVn$Ap)2}}^CZzrW{A>Wd#2jl5~Ow zhd=!0w3iuVwQ5}&eLxLN19?o|zre=f`<}XhlWEt7SB(F-bh4~4E*{ien8WEq!7%jM z72rc{E+cx0rrjROx{>knLNc|udp6~~UQ6ZWJ`+`e6pBG_@ra5&@^TtVPS8izE*8%a zI0RDvI-L0h;u6V_`@Rv(E-cKB^M?oT@ghIH5U(qrv$DTo247%;)HhPTvN8AFf3q66 z|ArZj@X#w+G?<^7>yXz7Xq*7!LD-o~Q4T;A!gUm{E?)IC9AY`xC$5Hy2fLWX`MgFc_2#-huc4{rvNH| z23Z?gYLJ!L=K)DmB zqyyGL9eDcm#Y`FkCsOk!o`+!=#5Tzy-t0oCR-I0P^m#lHOk8!x1@->na);I4JSBD8KB54oS2v6sqWSDhl~X*;fI9Xd{tI znt3mtB#hgJ40a1&;QN<|^8(YAd7i8YcbUm?jCRh{50C1+VNv1no&H>DTFiKn*S9PJ zj+v4Yh31tN%NbVO+N^c++il&mj#y8}P zr~6hOd=+sLPRrgPuR(!lVD%b5q$COTUbBdfg2=CZ!=`LF;C#&+dqkJ4Ts^A5)hfC{ z=t8ys(TMduJ$cSwt>hu)I}wGI!lNGy9Fr0q#b=KYi_lqp^pc~X5$yM&9+wl3myTi! zanO&@BLd$u-Sgn$jA<#)Mtfw_D(XYInnH%aMHvlK_5lW;S9 z?v;5D@qjQ`wgdfsB3CMEMMlJemL!3V%b4A%4+qa8bLk&kfHP8V2sPU*WM6pF-D|jE zjeWl**r}|drq~qs^UEF+uMz6t#g^DYXoNG3irV00q**>Kb-jCg?4^z90JfTHW0|~> zIvJ?y@UW-?zWz;Z*d-rv2e!g#%;+eP_|6%-bkELD;)*JhB#8pef_%TA{fu!xlh08c z3f1_RH z#&bACJ)m?(*CVPWbI76uV9fv z&4t;e#yooME_~DjY{=7e^%?hPTIl(qBM2JSKm**P1W}Ch*8F#}wTbgG-jE35A<91E z@VN~>hjdUKkc9hAjJ}P2l>lmhRAkLB?jy3q!?&x%ex`Q@zHFCU{$qibodvVyru}md zi;F|3zI?ZS>f9BqYtEpzg1Y&8_rxU9;D0jVyaBb$&&~wS^RP$nv&ldc%)JGtE|4~_ zfs3cU{+l$<{m`D6UHY}d1{sisRp_V0>=ueUE*z{ZFB3g|_KZ31SZGt9Iw#KO0<-@9 zR99(g+qY0P9oHcyHeT$!yRLy^yqZaD;|%3< z;3WM`>+WWpgabj=_UN^)O*m=icAzSq$`UX^^#U#TPvV0Fy)3vy#m-b_dELA|k}I$HlxW z_)ypIdfzSk)TJJkfzTa)G%Z-TdPd%SFMk3$E+9R{*44tEG2+zlbO-lz{y&)0JO!kg zj@B7C-poH5AZ-bnNnbo3IWuY%Xg@Kxw44=bWxx??rRSd(4}*@71|~ zi>TeT230u4z~-4vL$cm|^{Xo*?rhyp#i^0+QsFXhn<0V2OpS41lSw;8AiW~lTf9_r05x>Yj`!Roo4>Tm^E@wxCd$RC@WoY~@+7Po_S^3aR8gj_gPCxNH zW%K@fc}`$MFw+D5P0=m-8ibWr0`$@LBfa?Q_y>e-6}{e2BC!tiffuN$DuUgXzVQti?w|@Z zZF5o_ZVr31=>B_u+*LjI$V&l+8%c&|&OIo!;?^$zSotC02qfd8K8@basJjGAUGcwv z6JrguTyY%`{;3+y)b-@qFlAqJfMMtyk0lc&@AWIpni?9-Sv%=31urm#@B!lG2qSqk z??l~VaqzBFMNL`J*#Ty^kz@T^vPUOnrR5R&f$B8-slzAze2SyR11P@3qK~PwNtfQi zn53k^&rDa?NRV;Qgn!6d?M~&4-ORk9K-o)xlLhZS}OcCC5ybE%J9^xCl+>q1F;;^c|HBwnK3gLXNvn)5itcz z4Kr{MVO+XVG$W6+I^&LiYGGm)J3yJ3^5KJ!(eM5Y$;uL~64Q^MvGWyYs+V}U<2`K( zH0}Fn6Z_skw;=OmQ2%e@QU|>TcMVt|VRHu8icY}@eq;}8(cr5wViiN$6STk^JG?F?-N8}}+?-cWJE5bo>>3wuE+_d~#d&D|ENyr4V=1ro z`5D`G)kmFgeq=XEyC=2@gpLKFaSe87dVB?V4fio3xV&3W|DiimI8*iU8_19=G7g+d zIV&!A@3oA9ZozlwVdpT(@Ma$ta@U2{UCGjJb^>&ri~LzZ<#BM2 zqucdUJ+sF&nB6oC-f|wr<;G~GzeYZGA5p|c0asRg^jfUV}K&N^h=|K~H3oIOF;hExcoKI}BOpF0TLEh*2EImG!Yk+p5bV<8NlW zd!UTP#jU;idEV5ovP(eq&?4%V&COT06q}Rp=6Ru8j~#JqTf?HaZoPFReY@#*m7#~1 zd27@~Bj66qZFag9?c5SWXzJEq$<8alVFJoP{#{*NC^jgLhGPHh>w7c}IQ{WKw)&C(v{;UntKcZkHDRo*V97NO$9K62=qMrd?U~HrYNm&WhY7%^+t;sz<>ci2 zw9tB9ZC&Gun|1d99fuszyjsNtA_7U9pE=t8ttLyc4WaZx;oFDq`g{1q@{CM0jeTAq zhVH=#O0bl*Sha-Aba(Ifah5}G6cBlH0@M7U#$-cB)XsS*0q}wo0B)_bvBT6C;}I4h zR1~_P3i?gE6U7ffd#8J<&1djn)8q_Y!^yEx#?Dpo6(l$_@ACk$XmnzDFljRkbjn)? zQN_f^{R5sums7r!C)Zf+H_~e2#A8!#-O3v5ob_cQ&mY=qtCDc`n3#O)aQT?@t)Tp2 zV@U*k%}y#;Gi|a{=etG7ra_Hi=U!EDq;1=IHSMN&u|_C5(BT+8ie;pGOP_iFWIZ(m65;^Y>vG9K!Z5yu zbW=0BQ=qnedB!gGe5rmN)}8T$5$rkx9hu##Cz;r{vIOx8V6)H)dTfDyea;iZv3m*T zKYUG)R^$qOmKG}D^wCg01(%0Qy3hrxl8pv!=lJc_`5i_#_ehrHX6&3jUla4w1my|3 zdWJ;?YZi+LcAma5t=q>!6$yK1%{wzK_+$~P7~$v=gKK>Spdlz?FH++|w`GFZijvMH zn%7WgJngqi4j)BmC_`skmPT{JL|)WT)I6Vg{h0S{po{f$%089wxu=;%Oz9CjfASNK zn7;tNIV9r5&-?SS8-g-ZSg^jsltrkNH7bJp)tSNmy+Sdu*Rg6NvTq>-jtSk#FIIJ2 z$2W+(lY~#`5wDyU-~aSH?hLXmGfP(w=74Rh+CS~w;#*Fwb=&7d)_Zz@PH(9HHiR+Y zUSD-{k@dlngZsvpy`xgzFDWQ@3zeM%^-@o5k4;GK=;-L>*49?5L-W@<=P;1A;((jk zYlA&{B*z%y^>ecUs?tR{s8mMyAI{bt(a<5(asO8#$$~S4*Y`_qF7zIUHV;T%O^7I< zYAztqSc#uZ=`a>+qgCrFlEp2NT3WWS)ES?J5uLPOJOhpI5*^^U$*aVkMXUD{)7{rP zJKtRN-#R9#O75w%F|H5J#}_o($&mIx?QhmsIkrI*!-?Ik-ZNyMoBbvGE|CzC8B8K}n5av@soU861K z^i6Xz3F{NX(p{!-j()aNY&!0bF0jB%eY?BgI$;Awr!oOAEBE*yC|Khr8TW=@|b$?R3Fx|Tj(FI^?OeNC}@piP0CY!>u)IP4Wd!xbKt0TxbWU_v%^1Z%( zfx_7(2&!!V1mu|K#u74Jicnbxyg0Ki_pDe{$XuE@=UnyRA8`|p{oQT6jKSCZ^8GXJ z1-!nH$nClU)lyb1;~RVdZbo5|OO+3$!OdHx$|nA?e|PaAMbZsQnI|d?SXMqs8`vWj ztV|BezKH+y?~jroqhxIpb!$l9?V}l!h`@Wv*fdQ}jXmM=h5_9ATQTfr=E~>y*>vkM zR&OzB#F*NbmfzEcqnJ;RKc7OsW5@0!L7Mx>KdPHKqk<3ND(M@M!oyBl*9%sce*T-Z zDDl5v6HxiET{jto4wM%#qc?zzPkQ_)Pv)=+ZE3MnD-e9|!Jl3S?w9Wu<7iSPdKP`7 zh}|`zTMZuvl-?Jc9cH>7H1b%@$b6|fNAQQtRQJRJv?@VuJP$etLBON%>d|x3#YH;d z(`+B@ZgJD4IWrcaX)(@FmdS=(*a(15hl7tyVKNr$SNoJL1yX@+zm+&nxnHy6GR zUi*hs#bfUk#iMD|OP(J2)VZ`UOC;b#6&y0{^#FTK6zf>j9xv51 z8In-&)D?ySNEc5(4gNK0$JuvTs;ruoOL^aKiUg6%a<|y+Xz4LrtfAmLM~93m zQKn=ksjK}FUy46?$J~v;5l&IcP2;8XhmJ8yBPwC+Vz>4rn2$3U!ZMS>}KE~@MLbe#NL|*Zpr=I z>)kTEo~g_3YQKNpeNMX4MfMdGibPXH>nazvesi$Yyjm6@f4uvICG&>vs)ZnvNKbK| znhPZR&Y2iuyzy)B)hkzM__T`CHJacLhcl}F$573d-+0*}+9< zS4+IDy%UhO$CJ^$yM8@|^;C@C;72Oh{=ap&h5G1U`gf3ao#QbG)VjeZ%nzb&1Rqvq zVt;jgx9{KM>RP4 zfkfAur8fP`X+~9T407%bP$`&c3#aLB&zgF)yPYoc=Y}8Lxj5fb#0yf57jAj=oP1V@tLPgLnU}hXGiWmm2jSJbG$`?jM1Tx)&!Z*Rk~(@b-gQ#C%(cXbRalA*)bb9`M^D&;lxWn8iQ ztG;+GkB7+^LmE$BI)?HaA-DsD46j%J1Sw{jAan%#EY5oD?5UWHYL%@Ym|+yZ=68Gz z)}q_r&aG{OWHYxPCV2mqEGBP$iju$s4z6qN#9xKY<-Nat@fy>LD8SLcDEG4wv&Nzr&=Kwacu}7J87AAWyM69rRO(3@jhj*nqS1!6_ za0Yv&NZ)ADxCo5w6q`Z(!Yf3LkOJYhZrY(<@Qv?RdI_3u7*!Ipb#T0uCAtWLk6*lH z3~xu3KiX3cK>(OKmL&p!z7&wH`>iW8G~kc)0)7>JM58T(uzFNi4za! zcL{f0ZElgW&lI8a;>C+fbCAb>sEA!v)y}Z}=eDb;Zu9U+_JQ9opGUH%e#2S~b>83S z3CjvMCTMs?A$Ny01@x?F zRlfRJEUgu)p!3gRe;o%_KG=8gyT1<8D|*I*sYOX5*gl5rJvljuI(Yg0z`U2l4yJvf z!Q#9yi};FdzBJTHG>SE2#~xoPC!|KQ)yyTce1py*-w2%A*sKh%s3z;4J=SfCgwd1v?E&=uH)H6rmfW ze!1#|+vWq&=3wu|Gtffzr&Ray5b}0N`~+_|&P-M)>w%?(MV!8dMoEcg==;EOrHio= zILVO|dJ5+!>wC%GDLqJhBIC!q5 z0OPvAGHitE2w5(t;20>^5qpvNE&2ZZ>(UBU581(7!u6I*_p%Q!D5Aqch^kBSxijj> z0U4r;VcYt?pPuQuII37d<2HMEN(3rc{5G;ws!K83dd#zI|IYQR|Dfnv#RlOn4G?8K zfsD66M+8C-%dK(i(jD{PnL%s8IE4Kls~86SJ1QJY!x-4%~y zZ*Uxvta-Zh5pSsDhylVq($CrgbKbYeOiA$1|DnQl5Z+AySEiF?D$3a`exU-gd5k_F0OyG%Zzd^mdia88R8DvJ7hvK3|G0YV zu&lnIUHIYQp*y6zkq$}emQ<9MP6ec-yE{bbl2#CqP5}V{X;8XDKsuz+Z*6|>`<-*0 z|F|w-?X_pk+;h*&n%SY=i8fDBV!)Bo91tl+6F{Cf$dLiqk6q-26|7N22XTG-_mVKE zJu}Zky8$eZQSJto&jQP1(=I=41edV6VZL}!5%VOV$dW7wlquGQ1qJ6j?b0J{-)exV7uzh16D*gfbsU-yCFX85M)_J1t-P>#OB7vP-SW9bmoTV__!a)*^1hm*Wz!z zhE&}T{pt%+vE5=w225T|NO$m(=?U z?ecX8$ef(q)kYm2@{gGibft@YTusK`@&^xS$#tHU0z)l)qP8;S-N3zJsYgB$-9d%u zpmP9)7W55I`O)6U%UI)DPP7T0-yY*Vp#R**;M-UOS}gJ z?2kdNz&W$f*0H6V8Be`{cGjA{Wybx zU>JgZUYdF@H-RIBRX>zPx1<9rlZ%voa93e}Ed}!>AZQ1rml5rS_S4iHsGsM%h%O&& zo@}kt1Q6+0#U;AtbwJSD%D{|jT8ULQz0MBSwnjlm;0g0L8L@cVW1$!_jhysa(6|VL zpa6xMQ0oyFXm*3$mG#`FrSDtb3j$?33tvgv5=$V8Bw6`?vfW_@JEYZ^;ZUoZbOIp+ zwsWdU#P>R>=3n{C$aLN?tEN=ZrMzK=V7y;CCR3KK2mDwLbnqMZgV3i;)yh1SD19x-lUH{M8KAHU>Be&IF-I%c`@|>4(_hsx3{xf zd2TK#D>1(_bOy-$WF2UtgtSl%XkineY_1P+U;ENFe*WzI_xn4Ja~pw7`}61BPWA0b ztL^w(R6z3CYbnn@fjI+dk&Z0+hG58ygN`WAuzMJAbmlUHUp<4T#;$YN{#xmZrPKrS zwZ!~*asCI|LyQ);D8S@fd-Tw}m} zTUht^c}f${esLfGmj*y_VQJqM=vS>JC7%Od=LCFRC-FnsW~kQ`8PdR)qGE0$RK|1+ zBFJd1Slqy0z#rP(M^vW)#pa~Bk$IKU zQ(&~vIMK*k8%s2#fohHOcufS~HKVlNh=C*NhCK9vJmf08-$Yh0<$J}i-Izq+6b9ofzX5(dZM&HpZMIpmcsm!n zOHU6>A>!=cFN7i)J6Sr=q5_<~*n~iOr79;rK^6=0bi^Pr-+TnBoEib#4!T81fur*( z{o`A2Oc*zE;6UAEzyX)|dQ&{Y2s%rP(evv@Vl7eJ@KZ%QexWb%}7>sS_&ZMqCW}EB&B1i*HC^01^MI1jVL5tLf zMhEC4@Ngp!6M6tmOGg+Gbc%~AJki#k2nMYO(dfg2W(SWep;*$%-*X8SZxZ+?qO|{7_~a~0$Ox3Y>U8KE_iY_|?**OZ z2GtnBjwfuZx}VaIMnE+;xsWkk^~aCeuwhi|>uMP0KXjGYuXjOfcCv95*T9KC>k>P} z5oJKm%oM>>2@c;*%ikJc z!%7IosCu1^2grK6lVTyZeGlkKA1*PBiV5_@819M;PsTbu$-;;GWdZ$c>;}5>(dM_1 zMiLW4V*;KLYC5aANC>L75dmBRN~Pm{)tFLZFIt2JCKDVH&($xf=}L9)53+z*p|?fb z*FUzT-RZf98RW(W&x~7%;B9h1QmVk$l*lXa(ni!f_(;MU+brHad_W2GZ}{6|(%dlV zDe&XISXbT7uIgH8JNs$&L`)+67O2EH;5fTeiQAmYvge;rUcH6=QovL+IsI;34lN}s5Y5RuL{Bl949ERO(l zawKuVJ@IT)(Bv@!A*oHcEH=Ops0G{rNB4lN>@8@Yu!|H~sNcKSW)b%A8G2!OhYD-9 zVAbc(M|VjnX5&gB25!(z@%hI?1#bfQwt7d*_;Bxg&C`c7-Ry5_C(lb7Y|Q=c!sHK( z9R3(V`^?}yd@il!5AK?k?-NjOiVS~`b$SG}3kF6Ba7JDlA0hDi(0~S-VA9bi#({Eb zD*2~a?Jgw5JqqOm0443$TOFT*<><`{*Z};)-D%B?S-T@V6Ntyb}O(BNVJ+s8f%++DRn84-y&q+V}L6%JLA*$ z_@1LPK|u_`0Wst1jByA)Z7yy^R}7$LldM0Yo)W_S(gL4EpEv=4*3U`biHaN4SIt-tSroWFpY0w^JD=R zHr2a)kxUxo{ecc_G#h4ubohixL7tbPf{`H}_crE>W6Lxvf)E^(2*D$0249dTz@Lrm zt;E15FDPNLhnK!eT+rOKJ15wu1thBhGF<^ezZnQ5x|B-mCMzvV=T>znhz|EVfdpJe z;_3iyqK!{;0l7i#l4f4)P|67#B1rF3tUv)r9Lbc70LO#MMi=5Sn7}HlIA6x@G$$GL zz!G66K_cjElb|@h$pQT~jjU_~0-@5sAe`{B$Z$zeo0t!Y z3;}bc!k<2Ux~qPPTnJoeF#;+#G7)2bru${o)00E_$`$bfxF${QhVETK79jN3AYC!w zY7s|DZQx>4a?}{TO%2@tJRjo+FcGDr7bsdvL%tjc$;Du7vQUTOln3Cu=s}!}yw0oL ztzW;&l5}&%D*5bJ!U7cxc9ty3ah)4T(E;Vs^Qi?ETwWG#E07m^y${+&@?>Q8|#MYXda*j~5U8kL6it` zi_veM*wHMpFtZc>IZ$|`@0^q_tFkXaS`?&}lp2anUfJ?D*JiHJoU@BUNE zpC6wom2;%4n!^{F0o;2l?Gsaa2>mM*??J&Lq59(e=Qr}=p6EFz4I;Rc&P#~3R}V=J zk?gT`dU`r`RGPbE3U_1#%Q`TA-7|x~z&GV9|0W_j``wh+Gd2rBE#X}|iYImBG(Yyu zX+uq#58i27WwEYt^e3s9wm5rra8S*qzE1A*zLP68HtScRYOUbvgfNdHE%s+pTR0i#qou%{}z;G2Ur ze3;0TZ}*0*@e9fg%GwqED(ZcCI#JOkq%bS^=mW!=UKS>%SY>r}b=^{q`5z+qkyH&O zYom2~h+ZTS-S?bG#${~cZu3qo%WOy_UGb|P0UOVo-TE86PON9iCCPCkPFmV~=4Dy( zP=jXcUQTH!E7KiJcv!zYs*ObZeecC-u%R7kkQSSp50m_pA!TYQ1^3_?@uugaO-4n~ zD|=rw9;tQkL2{6*RP1?Hro)w%mZt0xo&c`m$-bz~FziSCpvT8X@NBFLwxr=Q~)8S!F!uc?`z1Dv&^%?>nA0|J$pu1Zr`` z#lnQpt`&yw9+Bc52%|@N8rfn+{QUf=@(;C0;{;trz4A0PHFNjJtzBz48NeeCB0VE2 z2-uG!lp~o)I!X9`nYXHgH5+hQ3_vxwt7+I9Ui|#1Ktx2uK79DzNyKQ7abeYw z7io&nb~I1sGow;`U$(jW#3Mxt3KqN{c6N5OP4z4DyxKtJOmidAD;y)2l_LxPW!z5` z;6utK1Sd5SwCN}iLjR`uuGBB9!`MV7o!7v&lAgUI#e-D{Ai~Ux{BN|wdpgCkk^Ak@T`!7LSBuE^{ z`lCY5t>h}%%iYW4<7>4*jI3-R^m<&D4#XfZ68rFsgk$iRst?q!i8}V3M10c|nuniT z!7CVn88ibUG$FN{UveuEp{Eau*ZQ~7jOrRvjV|v$nuo9QOdnBW#*4HA-o8GEJ+%*U zBMl@@t0)>S`9?c8nN{;IUdJ$4(hFO`SqD7u?wsb(>HB7MVw97}-AXRj`;!?bE1qAM zDg1QeBf&=xll?~`i#^B^+#a)wNT|v4x@{o<nB=WTX87~qGKJ%Tq zs3K>r39W5>H1{-6^AQ$Alw z*&9hBQ+N~jdC=Wi0}fK*oVii~f4Km*sH>`$bu^~Ih@5zWr0KLC(9^FV(aW0@ypxU8 zcMAp1nCJDYfuFDR!SbvO!DVC&B7_WftygVpG`vXX5KjE%TP5K~5{4A<+hga)nLtgM zVVSTS(BE6>@_3?=9XjtYSoT)m;2;1}JQy39mwgnzxu>_cH)cppytD>Ex!vq6(CLIv zWnln%)s}sMAaWD%+eZ*-(vINgn&(-`(qM?)yTQT1T-Xg2ZbY0#fLa^|FA@s+k57i@ ztFf`MXv)M`^pE5-Zq(N=PUTUWmuFePl`5YH>OOktk44A(+~~WjPEXxPIxDCjIHsin zbvZlUa#>0X^n+YN?<5iP#Aj9Yi9Ui6ycMVE$e8V@FV3uKfhOorKR*318b)fY>=A8O za$%C>ukC9nCV3m+zhbH&g&ZVpLf8q5P3GSwI2a`=XUiQhg{yTyXZowrnVV(V1K857 zBhuz}02}c~`cOT*HO+Fd%gH!YZj!UGn@In+Qb2T`C!80cfIKa`0?8L-Gjq_#T zY~isnKsK*{@xa>z)e9C@*Oe38C$d*VLlMW)ZA+AGv2CPDw0O3xX*aA|k77cVS1o>h zUfUo{3$y~lFbsc#We)!WnZ9lpwV#dLdo3;WBvd*ecDb?C4pB%~1cFR?r}9Yykc^ym#=>l3ip-rAU2#7+MNLfR} zF)=+|CBDAd>g8r*XlUpPxInhf`8}DPl%SP`A(+*tx@(@DWf^iT5<+?Nzy-5{AJ-5D zKVL9ltpRhW9G{q={5Xr}C=55l8@XGYW1+P3PM{E>eUHA0E~{ znW%jw0AN*~Fvj#8m$D%iBTFW*hnErs{I@lF6`7FSkdhZjJzJ49Eg!$UPE3d2CJo}zyy?x+U97s4Yplx+#D3LF0V_Yd}WNlAQxSq?~S6kevHVOEcT z|Ej>OhL#6l`UHWjM~#sr`0SmelXyCeNF*7;Y0Uozr+;M>bHS@XJ4M6ciyG)Y6m<)}7XnjzL!=?BTyj#5XS}w(A0Yd&+Y! zM=VgluvltzIvP1#e4BL&XQj3-+|12a4*{H0M_FiBf5Ze+zL4_PM#IsK?;YWO z8ccFzZFJ67lYR!C@r+s&oWD~Fkc-V_%a=27+$7SNfio*kjoCYtgE&CYfSUwK=lRG( zUaQ-GmVFrDo=;E9+E`U2I!mwKzvv&Jiw-dosdQ_E26SN<&vbf1{1Z_Prnq~nJCCIeMYZG7D??#7%77F2T(&ZyAZ^{iRmQ;xqM6qTTL#ub1QdJ z6rtMReJb8)3{Lw8V`5g;Jd=QcD=ctVs?ZN03opZi2Y-Axyou2f%CHFyC-VCV=J~)R z{az?s8li&s_#e9K%#j{A2h`hrF0!#)0x(<-Sagf%11ek(SN)SlQ6PLa={)zn+1G@G zgneT=JO$u%qA)Npx+ccQ*=irxs$e1D$TcyhFb-hoTTEE2U^~9h#z#=IS_Xjo26oPn zXv_r|^881;S$X>ILcqRhjQ3apgX2ZI#sI@XUINg=SMrOS6;#i>*QDLbgvUjPH;JbN z^f3NmJG`UHNo0^g1P^vez_JV-YMWT~JP(U04^W)5<7Zz^!J!g$^ukyG_bY!+y&?XM z8Ul4bI8ZuF2%shieg`Loa}vm6Yieq;M)-+p%L)16>I=my(%g$9zMQLx=#ur5%2+25(2}Wh%{J-dD^Gt zEI_3?vNMWrNjuVj{gbW%ml}wnr=Itu=uucSDbHVN%ZBMltX3jv0vM^{?`wWS2KI(* zi?Yn_4ah5z0Vzb|kO`+^G=>5#PsI*3%p?HR7WEJ*@E=x0*Lh=I_B=PFB&?%_D#8 z%Ld-Dq^Ri6$^XDeca$_6@qGZ(mrk;>@E%NV@(*Xdk#t|~AOC9!!v|T9((~RAc1Aeh zt)rpfs!!TkAU$vZ(zcnv#!sRELi}L|a54~MT(^Ako2P+x$*fiP;%9Ie<~@E{rspKv z{ndbJh@SrYFZOay?z>hJRHw`Vs0ewRfYLc1M^Ui84&XEP%<9}R7#9&h3jbp3KIDYU z(z`gGXmk(kgcM`0sNKDrJwh2l%55}_p5$id$RNU61)!H7_(k>lbH$v8UM?5SuXlv_ zO~FQPph%#-H`iwbF$gW5lBIc!5+ZZFdZoh@&+7GhqZ=F`5w8N>D%${lXR17=J_SHx zVV*FEn>GX2joJT$YwlzXNTJJ%JtWr*$kPY-Kc81>O-gEXG~mbHkm|3m0sT}8!9i@`8U-F?0Q6}+NNixB4c}ah`aQ@8 zaSXog_X1ndN(C?ex;Nf%7?H&UtWM<$^9MCLf@Vt40fY>d;NT?QOD8u)0XZ~=N(&LF z$zH4~*N^~A7^=xnf3H<)Zf*SwranPKw>go-znN6?3Ggq~-&Oh9cX)9I34zCiJNth_ zuyTc4fV`SWo+uqneoZ zZlTS#>$msT{lp$Tc-^cShX*7Ee15SVoE(Q;f0K<^Z!8i;}vU&Q~mzNk*f+O@I z0e`g!Sm5T3N|4VG_`NYY5F5jcERzZWXQ-aMM=)?SH?408b_AgKG6Tey!D*q+AC$e^ zQa$BGsAx!EUS{P2%k_Y0@38ZV4j)njM261@TpIm=8lr$EQBUy6g7z&Z*G6w}`bNrm zAPgW~A4nZRPkKvixB3;RAqwsTeXKB9w-T_n!ix|PhxH5igVndSG8+xRKiNZI$5Lg) zNpvUzEQf}6S+9i@Gt8J!_90`ar;voi?S|gK+6_1W&j?u5G8_eyZ1FvhOBA{!veTV^ zD{0hOAClVAaF&(*8VOocx)#X^_A!VKA*B0D?XxdR6d48%Ir$WjrYFhz&jxgmq(xzd zu$y9owWc<(uAb)d)>y$_bq@wN%?C3XCV9d=bn%qo2f|qN+!KPIIAH}txInRSC7e>L+09Os+{FxRWmE}R+_g&L;tV}rhK?As-@NS$cT9M8XK0U; z;ExOab`YxByL1n6Hmd1t*w)j_h4(3}=E;Pte@!F;=Df)2v^7f49;kv&D_MS>`eHN> z>C4q`j>{!SW4#`J;a3aI&xSqR7``b_nFO?DUH_i^v~wG@NyCp628frW>!BVthyCdM zX(RL$!q=Qw+{w?x-Z+3yxugj>P~>>7Vt^t~Pm+*R5!hchP%Tpn)@l4s97-X1FhSsP zi3W9PRaLdQ<6@I*32~2hv0CTRS}(INVHZ=h3Y9BxHyuz=RYT^U`^+WgDIHMabvFIa z%l!JUjcVGiewTsEFsM1+zuDb@5m&r+wYqysM`s9HjeBqcl_QA)S!6$4=FeMCT;Im1sZ*>3QO`T)nSQb|6H zA@jf7NIjad$z4ge$?4>3m^Xhz0;yg{971`Qy!U;-N(z0j9jgf7h_Ni!>e!SpjVzHQ z=4iXAv?suW6|wD4e=eYmNSW(K_$mS39%HsdF5xjv2k`6*cbsE0J^&70uO+yI)r z**XE0m>S?cms#LU!Eq3EbewPeJdZJ~j-YfnFC!b4ba%^5bC2Hk=VLw=Q_oK`2AKiZ z30_yjw7^QpJ@V~xglrBQKtxC7Ex5nM6udc@j!f9&Fk8#_KTD&+-F{3>V?aP?PZ(u7 ziy=hvX7dGW%!;;K--+M?`(l+@$W3oyVIk*Zqgva?!q~zMK^Pa&z`jYkzVLhQmqWo_ zru;T3pIUDLm~@9G#y#Y*u10|c#DWX5g7&)zN`^ElnK2C~WBIBvUy?2x+;uS1YhAlWtzoVS_4Dq`sudIN?Rx z|B*NbJmBB0$D~Hp%Dr@X-aQ0bNM~tgxB10x-f>SL{d=x{%1rO7EF_s^uVvq%r070IF|FiiX%vt?a;PV5o(RUYGbZH`rb=?Wn#5+MKUtiwI8D5~&1fE)6r6!B6-|>3tIje$m z2r5oKPogVG1|@Rb>HK9u=l^8TD5TqW2cD@L7-aMl{^&a!mBZ^7cY4)+D@5_&MWJFr z(>t{eRzOuKd*2K2^IKMKBhdB`hU~#OSs-GhoCGax)$&IxT@h9?wT7Dcjb10eeqsH} z0%B6WJLD6kp#MMb6}5tdjJgaY`Soz6%Zs$D@RO4ei|GR-LLJ4(LXdB>hE%iSSy{@@ zpH}aB%|+a6nL@WO1jDSZb}HK~gWOWnWmKPse$ zK8l~%Ze5p#0L8F> zlWo#{*#7VK74Tx-pR2 zyOC<*ZxFZQr1$sAq{+o9nM>3|$YrwHeb0d15{s0Z>NT~;qF2d$5t)Fsn$bR!;)3*W z2jZdp@`%*GLBdYO24w_@7QvKW>Vpqc-Bro10&x$ro8MpN-tZB#X)VVd71^RNMYB(~ zBsn&1kg&&cJo~ubDB*;B#{?i;Wbs+AFO>uK-~TyU5nKC$$Y2zgLQt98yt?FUZ>|93 z(mnU;rqt@?N6vs$@CuX?P#2E4o_&0KBRo6i_vfeXXR84cwOq;P(MPru)E@Ie2Vbsn z*S^KMx+&eCbw4>#lV*l9#m26UDz+Hb+p~KFFVF?Y33;hwi$4$!xcxKbxf;bPy;60& zIg$X9y+P*94R#YOx;3{e5wyVY#XTG+uRj^oy;)+_$RXC+7Wn4yNAk`#+g@$V%ZUSQ z7gG7@VD8x&jNKf<5X$fCXMwuLF%twv^x|v z=_#24Ky+bEGoDcZkf~dyGt?Z-c|WSh>6FfOc&Im?Iypbp-Q6VM_BAp46GVc)r%f zJOic)jeR*hiBMBsHbWJq4N!7q_jqAP|Fik^OSi328O$Yst!A6U*^S5FIb?9%DFkf; z-!Q8N$InPy@74f^9uB^bCNHinb$gm@RIbgb2E9bLMxf-9$@SDsPc-4y|JWtod%N4n;`xktb;Jb}&l6(ugTjd4NwiGOu*}Wp4P9{(G1LjmChJisZ z;*nA&9lrUxm%8?gt@`yJKmwV?&RK|M`4vP%h^SC8nom@6FJD$PDUypA-|NyC91`3L zxH*c*nzJiO{W|sR!;_x3T#1al7A0x+afCxtOwrrD+8Sydc>f7GB-@qt)18pD1Q!M2Az5kvB_ zmPpMb%&s>rUcUX$q~X>=i!hDvq0C%2@1Ej65J?=9o!!$lGP~m@e;KMQdU4r(cg96nB%HRFXrUS?Nw-PJ3Xj}=h9mgej$L?W zj!~V1)Hjz+lNRG{@|p4%0D`sZ?e&vuMJS05(U1r` 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 literal 0 HcmV?d00001 diff --git a/docs/vlan.md b/docs/vlan.md index 2caa123fccf..2e5cd51e29c 100644 --- a/docs/vlan.md +++ b/docs/vlan.md @@ -1,15 +1,18 @@ -## Vlan Support +## Vlan/Underlay Support By default, Kube-OVN use Geneve to encapsulate packets between hosts, which will build an overlay network above your infrastructure. Kube-OVN also support underlay Vlan mode network for better performance and throughput. In Vlan mode, the packets will send directly to physical switches with vlan tags. To enable Vlan mode, a dedicated network interface is required by container network. -The related switch port must work in trunk mode to accept 802.1q packets. +The related switch port must work in trunk mode to accept 802.1q packets. For underlay network with no vlan tag, you need +to set the VLAN ID to 0. By now, Geneve or Vlan network mode is a global install option, all container must work in the same network mode. We are working at combine two networks in one cluster. +![topology](vlan-topolgy.png "vlan network topology") + ### Install Vlan mode 1. Get the installation script