From 31e452c6ea047ff5413371bfaa7f44c0d1cc86bd Mon Sep 17 00:00:00 2001 From: Ilya Chukhnakov Date: Thu, 24 Jun 2021 06:36:48 +0300 Subject: [PATCH] Add Node-Local Virtual IP Spec Adding the spec to support Node-Local Virtual IP for the RFE https://bugs.launchpad.net/neutron/+bug/1930200 Partial-Bug: #1930200 Co-Authored-By: obondarev Change-Id: If9f137a839b37f8262f4842b34401a13967ed43e --- images/node-local-ip-problem.png | Bin 0 -> 46616 bytes images/node-local-ip-solution.png | Bin 0 -> 47551 bytes specs/xena/node-local-ip.rst | 390 ++++++++++++++++++++++++++++++ 3 files changed, 390 insertions(+) create mode 100644 images/node-local-ip-problem.png create mode 100644 images/node-local-ip-solution.png create mode 100644 specs/xena/node-local-ip.rst diff --git a/images/node-local-ip-problem.png b/images/node-local-ip-problem.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfef4b890fbe4d20efefbfc65a12d2715fd44da GIT binary patch literal 46616 zcmd43g9-8C>U z%-M54&;7mccm9EM_~{S#UTd#)t*dJp^Fl|BgouIY&Ye3X&()Rn@7%#c0)NNvVgqmF zC$yJ zd#NsQ@5T&9F{BUBkLwVTQ*(nJrU{n+o z6fxm<4`QODqm>nL5twmyw$N+w@72Ysecwvwy^h5{*tpF066P;d#s_YFqR)8=`%`oV zf1%@AmZFQ)ZiZ&o-=xtnC~XZb7*N*mN_gH%YYdimG%CV;$i36^b^UboND79PvB^7I zJ7_)|aTn~muYE;a`BS8^C>IkIS@_ZWp4k4z67|Lz*h2m^(pk4sV4-NFG?saHb|bL3 z+5R&rBlOKuC*Q#xZ~wlMgcymjE)G1qW%ITY!VETKwO z41XLgO?6jtYcii|NCSVyHKoJHUeryjcr_G0eZ+sbD^^vZUR&9-f@2KR&KjdSF?-q% zqPQI(iW>c{E8tXfHX`TK+x<&0%mBUkb{B$$UV5Ar$9J~|+%H9WVso zbzTB&$Y)bRud@2B_S3~4k&)^1C=es^g96EbP%ZteJtZ$J({x^Hc#(ACN!*{Zx9?Is zPb{=A@3lmN4;pQmCQk$^oL79l`x{P(Fi)N|?S4wA0SUk-!$+PDNR3j84B7nU{VOJ6 z`Cvzm0!I8|sBB;3*Db6b&4t^U}{GQNHpldRIY5FMPo=#b>Nx(FPk&-5eh)>Wv(Yt||kNFbz9CavDS{X%-yzdLjcsj#6@6Fz(*zu{vS&4XLhKj1 z7H%cd{1!^Ik4?5&vOXDbk)!XDB1CqX1FT7zWrTvpYF()cm?hX<4w=WnJ$>iWo-QV( zubM@9Tcv6gAKbD*=?VevD{POr-s>OkfVQ}P{uy}NYs^@`uTWqC^_T?Tp2E+~E`Csp zB8W$m82qE`?y*YFZIyFvkOcT&_u@uf!yHn})Yi!4NEvSCEBF1mNSP#MKWyB1!~Lxe z)>I~lAp_nwj`Sx}YEza`FTO^2e9!{wO4Yey|^l>p9hkUaTq22y3|;~ z*zyPi*~Jjw5fyD4b2;`pcFiYbng3$1WL35-+|*{4FKDm%5PTLtDBxgCBdTxfF>;da zz1aB8H(T4TxX(7#V14~V=?b@lcBFqq7rw(rLW0GVMr&$)M-nW-tBP2R67&)8K1_rX>J$w4i()OaATso(WF2o;o*UTxTA%oP+Zq2T ztMMcee1r4xmslX@6WoywIndoY(q96~o-d;Hup$bn_aTFuI^U*1{gPY~`Osv)eD61T z-*TE5TB6?L28tp>YfIj=1no}ZhWq1+JT0^SE2t!P_$=LUR7X7Lta{2b(>w5Fc2kzZ zq)__$H>uONpM@0OL$Sp{_e*}n6hCOe?G|7PYc)r|rn3koG0!lA)0uMUa_9=?Pq8&4 z%ZxexOHboI86>0M@Q?R3wj);hy(=CnXKy@GeB)9p;7vRwxm1HH_;hIo75?KZm9?KD z7hBT@8NPfw?7VmIOy$JUVV|qSXL*roy2b&i6Lg#|w6r1*(pMOGw{JF*73PY3S7zp{ z@W+IP87eDF$MS|)|qQJ)LmYVvq<@Tj^uI^8R(dGmtZAz#htO7LH6jL z_H;AqGCUTEDsZ+F*v9Xrvo(4#)Bo^LzNy&FWQ6ZA$CL6q1yP)|c3$nlutAKCtE)Pezbi_jWqHX1L&%hkmmwJqpsoj+`79a)V|BC z!84;g7g4O>w%ZQ;obTO4JXz1c`_ZM<8S&zgs^K)Ey#((WU}|{DEf53omJd51g>iaq zyk?NA2u($$htC7v*11j|Ri#7c03969ItC*ruk0yL10OSsL+6*OG|pixjDK?uWjs@o zBz;W{`{bk&rRfn4fIgtXs3q@eeZkpW92NlYRc%z|Iv7>SF;v;`+ zM^|~!m#2c`w!_z+zmMd8X@Q6}x@LkGMFTHFm)jF_03Pir64teVUR)Qt0>axZ;J5gC zo$>_k4R5tsrle0p-x8q5MWDu0T^hXhGqpBoI;%h#*PV}m>;+u(rfrJe>y%&u>ntpN z)|F!v^;-GyUby{oClf_^vi**__|mz#gzzrn(q7(oyFVTRK2BNWKTR)nNFpwhGN=Cf zk}^kMN18luAyJO(_QQ<&<>oaj!H@;?o}^#`)(`<&%wzBJ(dUBUuQ!`}?#B1pFIODb ziA|x{l$I^UyKvMJ7=0SoA85aR4EIJm?lZ*JQvZd>xEy=S-8_4TWV)nctWk-FUJbrU0 zZn*HLNkzH$=BlnNbBvhC2imTtzzSstSI0Lp1B-k+<0Eb9QZ@n%BhRYV`|0XN)emGm z^ESS4eF49Kvl5^_8I1*;v~18>1yQBGjP+O?6{k%LZJsT2#WfG7WMaxR2_klQAeL+8aXmATd$**EWfcs>Au}g&B>e~3eWo2OT=4Gho!eZuX1aDmMXWl-Br?s zj4ppB&ipx)9(7Aa{yFTun}=<0Ko!ka?!%FCYku?UojAdERSnXn^_Sicv&V0Ik19Ht zbkxAI?B0G8>4f*+?YAY*ZUv>YzN~rm8-zZEqraw0kDhwFZhwXcTr1h@7v*dIZa!@D z*V?w$5v{{LTgo7aj`TP*Oufbn_ox5GR#90?Xz;UJ&MFACe`Z4bLXB}m{Rr=&0+N*) zLe?W_(kRQ;@Uw-6pn#N7$YG#d38d~}JLJ;+ge09j(=gsuq$D?RVPgTreUSQ9(Xfh^ z->f-c$kyjPB>#FE9%OgOY%$kA*K)c9JRGhun$2N<5f?PA#|Mp++E4#&zdi(`%{C(? zSFj=GV@-rcveg&Zx>pB{7)E>YQJnTdmVSQ;atOY>zrUQj;kiceu55yd!e5Bl_Yg%! z`kc?!xHeC9!>i3I5Vc=KY+6{SDZg^f8c=DypIX{a`s3y~o;Lj-uRUo+X))OXmb~cF z72i9TgIvr>%#YM0S&($apNwo~B)@+NO%t4DO@Q z*9ZQI%r}`P6G%6XxOLhuH`{g)9FZ*>ciP7)-gtpYTOkWex6|+d7msP87M(%IJKJw{ zvP$d=HV8Ue+y0D);!jO%yHB~yhT%Msl;_d??O5wZqSW8+InBm-{jg&1$CPE}tJ2n} zccWDXv8GS`tlrX59~cO=7uoi1PBErG!z)#&1xz>OXyn)ab<#|z6z8f;4=TIrlAX*~!!i&w&H?G|pozU2vP9(jVh z=)Xe*lfLHZv7JVVY|#yVUJ@BhO5$GauV+j(hej4svm4+amx zA5|!q7}C$yjp63)E=uC~B0Tr<+ez@IO7ucSSe-r2V#@YjXB$o4dTvEu!th&qA9(k5 z-7oE{#qW-Bd6}RoZ~j7Y6d`vTfXwyc%l+FEs_EL<*-k3yd%){2&MZeTzH^A%7yux`S9f6}r>8b!_qY z1PYvcehc;KT9v=68ZKeH6+1)xKI0XedkC{(@+8&@I&4Jo{suRyg~UMxuCC)^8WsKib(px8gz4iA2$ZOJTeYSQ1GVM`!tyuzvhEK z=hE1q+s>{t1L8RzzkR&Kw6F-X%@Y7W`%hS2;|3xCz&?K+x*(gQ+=HNz(?6N7w}1U< z-ArTn*DIGg5FU`mu|5?txQH3VH_|UU)GXrp@ON#bcpH2<+85#)@e5G~M=yahy_sfs z1Zu9oi7W-Z&``L_P5o@e)CAkZ(*zvTgaZx4L;0PrqumPa_hSAOt4K;&s@_LwFIYj< z{D>Dvp;5~{Yq|BcEA{V%3-f2f^!vP6*8-ACSMW$s{-YV9XWrg2>A@g~;V5B3R%rIQ*)Om6eET;nTIA5as9e7bB= zJqg@Aq7V3#ZoIk2nkaN{mA#ckMJ^<)rhZTAOFBF_W)x4`;Yav*&T89zsG6e(nNGed z#7J@BxvFnTtGCF;H|v3E7KyIo5zAwnbiQY`CtG#L9YCnS8|sg>GwGTb(9idnIY5%r z6Z>x7)LY&{EfVcp7!8hAEr&jz6Rf*4&@55iys`ST>7W9n<+_JUq==fa0~JK*D{!C} z>c&|~Ct9JK^>no*lA?+4DPl8DQuoMfZqS!+`h$u_rlCUqV4L17csR>$odMq*+wRgn z0QXa~E$y&IL*=PIO%`Ay)bAb2xvS;I3YC6UAqk)OYRJD%@ZkL!^trES_Ku&oEc#^k zGAq*SvLLK!A8>D%q=hOd9!Y{Keg}f_yc}dCL5Em-impI7sZPQkRH0yy5Fp9 z_htdkEU#4I`rWsEKc_6|MO(X`+6`JplkLB*dLkU0wqx>`G4ZZh;$4XXWAxp-2q*I0 z4!Nm=<-7N><1fNOm_)xycyi19nfHHnfzVs696fth3Yh6a37Ie0h(u;=sFmDODCm5K z&_K`;9tpn5bu09pbcc2SNoYHU1R!V6qr}pWf24V))>R93j0>9;;Bl95>l#e1U`Q z3WtiV#j9yF%4~c|wwxAXR_BMh08Fu@R37$GS3tnXo7tH?jXgj6_1oKP)>3#iPxGfH z-NpF>2kb5xpEP|~wa=9lZ05e5)Qo;H40Lap6b(@X4-4#JH}URlT2qLLdQm zbO2PXi9FRj(v{jkeh{*x8_u$r2a7cp3{86jL208?^REA2f=?vi}WZ;mBfI=yL(5RKupD-ZU!?7bJ52 zujEAVumEFD+*$Ct22u;%??T!bNiWXbQ^{tx~=KtxVVf3R~Z*oNHMbxAR-OBVZ? zrU$1rZH@qP566IK&&GzjxMte7C z|JvJ!FrJe)kLWgLXNHBE*x}Mn%QGcOjg1I3pzO6Sz_S0a6E8BFAyVqHQi^KW*GrLq6E+KXRs_`F==(NaTh4 zuMnXh=mN<{yww-X)Qf?8D>SLee^!B9@M_;Vff)3z1u4c90ldkWY#I{#qORQ9q%mUI zfqO#-Fw0N|+2|89<~mBZp(8e1_41JCm#~k<*OQW+%PjaS-70qr5BP~|A=kPVHZ{BU z`m2jumAU;#EDmQAkM8c1&?sx``3y{81ua>)boTTL@)DGB0e*Mi3$Ar$b-JZkz=tp= zDWj+W5?8LG#Qt(S4tuJhwRaNSPU4Km8_PTwsD(8HoGVTh=l(S^F3Y!#dS4V6BAyGK zf5W>bllCRMbI{4K$L|oZJTf(!XHV~{`Q+KR#8JBC)N!t@Bo9IXQq>3Jg0|>t>`mqR zWqw&~R@~H9YpV!CQbeuZm!cIIz2!1r8&2>-m!E^6W#_vlayuH)qr_J;_}`aEhVAAo9BHG1Szp~^T}?l7}o9K)aoU2px@i5Z20ZxA54%6(B#;sI(0 z%DTmE4*=b4oiNA%ea5b@A#r}Ft-d0# zNSr)&p^$LM5+8SDWdu^a;z5#J^=0ov?1FrGK8CKH1y}{Xkt%@F+VBi_HA1n=yS?9a zX4q-1Gdh-gY-!6>k5UT2NQ$_NT3-YCYY>}S&B=2)=Oyo#^Jc1jX2|&T((;NHg**2c z1DbK|)aqK38n~@#PrYASzyqd*^o*tnZkLbMm&=CK#L=8w8oO zE{;D$o{5hKz4Zu4*uLtNbVJ_GY|QgLP&ymMPntHK7Ik;fnSirH!AcHJ&PsA>)v0DD z+@(L7R4g`s{c+#P7ySV2`gXRrF5fUdJ3Bjz2(1ky*q7K{2Ibz>eHbIMBXP;3F%~=B zr%d|pkWyDc_B8AISJr1U{ix{={#?v39HE&OsOAGzUaFQ#!NPZ|L|rl!lV}XvBLlIYqMHSC^9-;4PhujEvUqsXE7L z2^HmM`bI{P?zhK@U?>y{ijB@8HmDVKoa&H+1e`oqRmCs(V!s49CU+<2=A_<_afwT;739_dM4Mv-xP=m+SNlx3IGt?T9haQmMJ@1D`Uj#3eI;c+CSk!N^WifoE>x> zM{`xO0+shBZspKdWPPGe$+%Yb09l=?D=U{g3|NwJA$*GyIa9!>uCcN4uygWsljp8P zkZ<{j?Db>*G6baOfpy#6g9r`v{Q|9wuI-=C6ho~{O#Vo!ho_{aA%?`^psX$qAt9k* zirli`;5%&-IkeA@B9w3uiuq|jFKTP+>LdwbDs>>TL#}Fc$+)b!tiQK;IWM=jx3j{c z@k@cF)%f}OVH3AetU;IC1(3GugXYdKf^n{P)J0}A&n18$*hJ9ZZwl%*a_E~=mv&UD zfJuvw(58eQjs7+GW|g&8T=gUUG4LrVtLzOJea&jY&c`<(nPA@$yJYF(fxZp&(0s6W zdAuqqDQVW=oGk|q($gF5jiXZl@97&DtTOR_`jnOyMHPfPH`ek9z9o~p0rkexsGBA- zNrrydt8Qr61g4nQ+EZjbaa~a!q!51kwC(0(fKl8zJSxg%wt5{yFV)a5U#N$_E8`dd zN6(FoB?55b>gsy%!+)X4Q`mO!TLUpMamtr3w!>M3gQHxz+|YL?Yk!K1i`UoJedb3; zkAX$fn%_c_k}BOdhXJxqO`=*^Ybh8So0}7vr7woFrPDc9KDfFbtFZ>YwYOJ4JVzk< z{yya4A!r}vQpV8(wq<|uQSfS|SEg)mPzwY(RqYAi)^T{KQ+BR&0< z#lrQ-U*i0~K0edPlamwK+e;f99GqeQdTSe-?apBPU;u6QlQalr^SZh^lKW5JA`TX^ z5Xyo(`A{B)Er9z?DPV|i7Z(?!d1|b(0qLhXTPlDbmk*HA2p1u97m8j@lp|$%_S;wY zEEjmG4?xBjdd;E?g4g_i{8$3ubvQ>R^E9$B?$^ir9FHFT@l`s@b#QQyy;`FR^=AW$ zVtlf=9`4PfhEoDhnCWZoF6rjwhQ zn)&?*sJnY%j-Is=PqLpT@X=6av(7j0cZR`-c#16$#+O-}lufH_IVUtZhiUYO^SFQ@e>P24kT&8ZRx6sPgfnL=|_a74;$Anv8@R=LV z_)Cm<^Cu%?El*E_vWl2mq_~=DEe{v>5nGM)H| z?atEDj3$41aoGcVlR@uxbMcdVm=J)92Y_nXxQpb%uQeH~HS&~h_bR&mOKb7CvReTA zGKRiM#H9@u5At_rdUDcy17yqT-4jAIU* zglCex6kI2oB{0?X=UDswN<(sia7;L+=Rq+)+)Uhwc32x{*B|9vZ>N+1p|^UiFa_XJ z4fAoHa%B+KiQht7b&lAgVYd5k44U!lG3QZcnqu5)yI>gB{D^uMB%8eoF<=9`Yl?is z@cF%56Wy}qGmhQ&c}AX;_A61@9B>#V$!mc8BtBe=ZGVP$&*zZY|3G}gueG1{_?}FK zVzjOZP|wyCsZ8<7L^{_)ra?{g=cS}6t2K~Gwi2m-6t^EwbN}%3R!mP*OaK_l%jrujh+*|wehiFvPy*w@FIV=>_F60pWRA6~a>S5=m4$}P ze#{VZh1}3c7XVNO{@Hkd-$dDART5?y|L{1*MUS-uXGtv zLuFS=(&XqB$&(>|if+sypM3G?3m@KvZ~Q}3DyoyAq*cLhZUF#G-~+sAe`m|rvSR2< zOV0F`A#;t|%LMSUlQcl|=psOeST{+OPLJCfS&lfK)krz5L|HwX9-ZrN^kiq}2KXg< zH1}0INT-;E z(=`)j_Me!+?;34(p)Eljl{sQNnP%kZkOgaUG&Y+oMIOL$J<41Q%{JOqmW~gqaz327 z*llEt_3%i_QiNd!CAi?tHZ`wxPVT&w>6;nZ0Y!t4pJCu;!@!;T=|F#Ex?sye2qBqe z{Dil!psg`bzHHU1Nj_S)2N&QEA$96qI#Qph@eAx@L%}2~eGb1}%$KpB4&gMREw^}i z?Tz`yo&r{!;1HEFF94N2clAmOPLPgW-F|aE?TuVLJbop>7k<~+yJd8P&!_U+Gvily zHtvXD)JShGDy1hW=WP_&KO}W<)qNFI@lr?!ME31W^pN>dKwUu@vX((Y(e2)9n|LgF1Po&VKA&8?K(vLuYXpa~XjO@Xp&cD&j9M z5L6UX_vsey)2+U9V{8u9VihB`W*Mg{xRtK3||q7eH%8)}6X>;T1VFy|Q8@b!TV zV?;49khH)K7PePJ>gCR(&2YBhZ4*hte1k$5s3zuC=Fr0_STmjMYF_V5P_*A;kq)>N zl)E|FR%6YU4Y*6^l$cmXNH|yLus#g|%Q|c&#c-&VTS1R@1!cXTh-?wSx&gjilWnnU z@CjN=(R|Ac*%|`Wz*ao(I#%ZS+-sC$kobU|%u<_-Sd+lxw;SPvz~-9OHCRP83+5X- zIcI%IRs%PICeI1Y(gaZZ1rU9vy+WF+nZi|nFYw87)T4{~($bIaY6&-oD1?QJd7nU* zsNL8Pz~$&$Z*oO1{CZ_8y zTTLKi|GZ7^tNZV7$qoW9I|(lEk*ElN`pnBLCJ1VXAF!jZ0jW8Q1nel=tBTpg(x~(B z>o1%OpEck?$13H`j&=c$HKbOpd9iO)Z!dPaw)0ABsXt;JPo>&%ksg{iTA#NxwxiBg zjUj=lZ|%&s)`hm34-d>+IyAI@j`SlyjG}L&Qxd%7R&t&S9QSUhSvG1Jc}C*`S@>LW zwy)=ZOi_b=uLPmS`Zosyf~U`5m!Jx6zOXC{rGptB)<6mWmGF3L>*DICJAH2n!05ox zc*E}n*CX(tfjIwrcWk0acEPZ2ANL!+G%3@&$1%8EfPD_(TOY*%bo47Yx;?q07ghgm z;MH@&?5fdyA-ylXsyGOpU#e&fHnp8=o{ksxW}Qu>+v$c}+L=y2!EZqy_-}G?y()TC zx~FCIPLlL?Z#7YANXyJ7kLN~K(P5tU2YSL<$5bP|akc>P?58W@B+aiKnOP;)%KdiO$T36Th_s7;w;*n8PQ4t+GieVw6Uz5JQw^7xlzw&RY;o#%1``f4Kggk=> zA*-G~d@wZ1!V$7^+gkeN?G9Pdku5OvA{esb@8ISe3@`R| zFRE~GIh!}GyHTY=ce<~9c5#lueE^&vE0(8%?(Xgz`Dd1P+Ua+g$WT|Czz&2WQ7Ggp z8ImXEmB}{Yl+kB3l!8pCq{BoK1Pllb6pm{CCZ_MRt`sGEvlK?re)H7*=CUYHP1AYd z1Q4c7b7+T#ZfB*d{c2=|ESkxtW9z$8K_cVzt^c83oMhl-$y^Ren1LFl+f8%5)5>Q% z&uApZ1q;>R$%}gC8z@(?3?li`Q<5FBD2nGhnWqoVIMaLG$}fPQ;jax^GAJwA6@=2SbfAWfI3u>+CH2sx8u8-9r*@-%W1@v2&}X+41bGD)m(NJaYD z7#D{zd%4Or!Q;7uhQpe@tWVVwbSDl0B|;gkugyC5I4ko(TR<=t+U#f+!goRgKNL~FEYQG?(T*`sM^DBQ?86_ z>eCBj@5m{w8}vt!vcQ|wLOvi1bbd==maeG-Etj_wn3{_2tFWsX3~Z zl4lFB2InKrQXa~W0BUgg$mO=y2xBjebc>kKlT*jZ>2?y*LCDc4NYL5nB?ZT?dyGXLH^py5=jdTG@}g6CTpv8@3zNS+poB%hiJ445`W|r>1upq zf#`lLK-)at<2|`xlJz;-Ki!0aaW!QmbXil$`!bl6!}T_+H;E)7+#~4JI2;rn3FXYu z=%U(A3-GqCMoFREiRRveMeLS#WmN@MRxyq*C>Z#T+hrGW=c420cu|_ zD~?J@=@4_VJg>HkmfRTsW_?}{+TD;oY*}@^=AMbiWfiF)BOw(MK5ufD?)*hmnEzPp zD;;9ON;99+5ciTmHXyirjA_|Pe6m6@$cSZsH@B}n|w zZp?qQGv{zIsmjfwu_qMT?rIcaXrvgZo0&~$@Hypnd*02VBPQLm^`kb2I$eJ33V;i} zHB?krejvEQbAC3&Z=Vp3Ok-_ByYJ0(n~AZ)DsPW|kudhqqAtc0C(vX$ieK`cPir?;CuGQ>Tf(?2{AFcwY5%EXm3p1WEf)RuV=S5_`GK&MNrh)R<-seU%7K zFSdHKZY#~m*m?~|uW&rmayG<8+Hi+(uoheV3cz0NJae^CBV(p~i!6NlaA~8lX6Bs- z67b3_yfzbbWp9o~Y3hpQ!4=KiN(87D_jRJ3K3~d}sX+(=g1%uimUl>8j#Hzx-)7E>oPlr8^KFm(g}+%rUaf=dL0; zd4<=Q?J5)u-5Jg6Xw6Gr2J8_0&rDLv=NL(>4J@i4G;^bz*X+)&wQ=RPl7lq`YuxDi z?YgFbxXX{3d5koB8wyqz^S+WaDJ?#EU880dbn(dZt!e+K3}M@kth)S&nu=e>k1SWq zmwi5+`{jxQRyp}CQ)(%26C#NDdW`o zpQ$=mj`}v#TPNSX^D2FH+v$J!+<5_sec-BPO2o%Mdw6RBXeq#slv_ZT7SK0pYR9)jjNLQ)#)t-sJQAO9JpILWI$~~{KzU~y8 zj2DU1x~y`}Q{jXUU(U53?vBVITES_4M?xI&DH-@%fM*z*@>Od!2RULZJf1v^zBtvb zG8!oyWtXmz;dbZ|3>(p80p!Fp>{`2{HRPlS(C|;E7gB7+Rp~y*ZIT%3_`}++ChZ_9 zvc6jUBwSoeHLo5$kFaDBRlwSJ6&kP`Nrg4#6TljHp4p*tvfq+KZINK4psc8_{=zo_ z4Rme_(l$b;rHhpLlWUB-k7GHJ=-YGf*AqAOd2vCL(6z4&_$Th2=ECQEhb^bW7c>JQ zOO&iGOF5=*bTwH-J+?|?sEW9xmm zzTzX2)aco<{63}5X19!V1>$HXp(V)9Lg30d zb!#6J3htNGm5Uwqxb~$ut<+2(XR>!aT>4p{pSTX<=b(uZJ~ys#iqzNKi8+4B=9SN_ z2i}Wqct4T2_M&-AU*66! zdmxf!X1XBpJ84|v_XK6h3vMnDSPd&}J!iOXvlPBpl~$Rv^#RBnM^iYIRggVn)1`p_ z(oertqZZg*KBY z^e*9UOgbhei!81q?U9RQYVY~w@QoZY-2L}ctqJjllj@fVE_SH;=n>mi zx>tww?q%%D*F3jiZn4R^1AEUOJAf}VP z?z@+J=g7^{k^VIp3B{;9;Lih@PEGCj_N;r+Rt|PU*Jv2gu!JwF{DZUf-Q5`c9L%XJ zXW+1YiL#&5$9S2m4O~42yXQ<(pGBE+Lx4nfZV11FVN~`i@mc14ds`;n?jPZ_|E5(f zhYSs=kBtQd>l!F}ib;F@;G2#TYt1IPSbP96-@G7J33yN54tEdOX*RJsU?2t1%+P^} zwhe%7OnyyOtEmIUjuEUmOT}GSr0~JngJf^wlU!te0CLW6l=)M zwrd9f>49Fq2IkB^en7?^puf8Pq`Bcb5660oEnYO5w>=TaSYKYf@I}=RiQeDNDj}yJ zjKl11!aq6bw1T*$d$ngL5ZHnspQ0ix!wi^DSiL^4FIEDJ?`p4~XZ~g&O|HaLdM+o; zO_q85CwzxupGKvTLs}zO_gn1&}XvXsJgra;l* zm~?$EJ8z#I*xhX7HNi@QvRZv_U+B4qrB!y$FUf>xb#=hI;8e`b8UB*$VbV~1RHTxT zXAzjxj>yRd0wF0tC5KyK7U9})aekL5Rc^|_$+2AnZeXm7R66lvPsT)qzl$2HpT1C7 z^t*LRl#zaJsmm#ap^r-MmU&Hu0S?A-M2V4;szf^%z zS#l*H`08t4c6U}Pt*gf8Qb_qyUl#lTX~abTr~HyXoRCmhvI9iqS<@BuR!tAD7MX`h z+1cL!f|G1t)R^1#;o7!9bl?$8kcv3z^R|=A<{k$-r30YJVp54(TbYa=ds#LRLA_0z z$6U`(VlO3zW!c%kV*+3MNBT-b&c^{jR=SysSbvDc?Sg`WunwSwvN{P@FN=RYN8aWN zOGX=flp|~5zXc@JEbKCm{Npvwuv5QwnX-eMoAMOrZ%Go;(( zp6M<^k^JO8>^AjxsmecUwfJ2?^rmRkdK}LBJG0##iA{imvoVZn<$K_Kp-CrMX0lxC z#Z~8g%D%O&*eA*-A8^9@g^IB1pE<{oNHJnt1E}3RG1RId*36klOm4Y}Vv`9#KBh!< zRMPgKU5dYsn}gZtKI^9c+7nbXX=|`jT6eL5!On@BA&LX$Q! zN3wTTL78(8a|-@CQISj5&l^iX{fqn^*Z(jEA(ZR^F#h}>Ho%}4C{zQCOoVX5{KjBs zl#&rK(q7C3%;NfI)*J)lEYwO1U{r^Hmezx&rC~<@sjsH~&l(uaVx-PKrVHh2619$@ z1E#1qs_$=LuykyLdH&A^z@*<8l-4RQTPh>~|M;h9Yl>OjV`7L7@>ai24|1OO8nBznO}7Q1mrfMl7J|eRCI4^ zDx)|<{S_W{?_>r9kH$BKQ22PkA~WK5+3 ze2t2rvF?d(t)Au2Va*Fn8BdEwKF39bj$tU>AGED#Jy@xt<7f<;au+LgHEpgQ!0K82 z%2rXJqy!SYi&@4TCS7j2;R$lldm--%BCl$2R=Eud(x)UXNo5xS2z~in^MqM`kKc5O z&=+au0e~32WcgxcC1>ahN0vT2{=>D}PpE2@yYZ+`5#M?H|9Pdq8oRK92izwE`eMHI z#Q9r2Iv!3S9VX3fC{9S7TKdehmlmf7phwXe;N$H{|BS@i*<}<0RE2rU#|d1;1}l6Px4@(zu!$+zp=3qXnSB1Jkt*C z2(+`ab9EKkv{cc$y1D`yhM3gOw3q3IFQgCV=jVaW8c77NHSfcR_KuFL61gsvxCdrt zX25L>%v)aGoh7!B0oTL5y%ra^EFmGGtKJyUVnjnj!^g`jVY!uw`(+_BGxKnv*?2#B=w&Y-tU2m9@afM~8$2R3bsym$h!Ash@HlJhmKD@xx2cX25=?r1Jv-5Km zUXeRrf#xEIp<`^bg%y_8lD0OMc~I)ZyQ1gk=Q4h04^Lea7b6H6@IMTf5jVeZ963|j9`X^--ss4OjgEGU@hp0U}rPDDhc zp{eQU;80y%t)ZduqHDHqG44}VR@U5{sZXpyzY~cBj3cYJw>KIa5_L>_tjG`aSUnXM zrjT9y``SfMPtV!e*}`Js4v{u^^|nRcHSzlK70EY0BFWpS~-2zgfqmqr)XbXQqtHOwkW?u{-P=TN^#$k05L;KN@`hUt>WbL zI7`Kfn1n%K9_pG0fmpqLyT%H>sRG!}Czgfsm|HD@EKm=u(S4cX63_pbfrbWXd@Q{> z-NcasR7sZ%6EP@wftHr`VS!@^iIS4i0~~)qcGVJDS_7`!?lqnH1h=xVutd{=5+Cb( zxPqToLiK>M>FQjZkhk%$KUEI;>(#9U*W|r4j)bb&0q11AXZa%MMdn+)+Ji^ zBU%a>x3#;>bYEUOE!H{Gp~}8AHeMw#OaBFJ9|s>~*^d`;P-XxXiBWiJxm4J@*NDRc_!w?y=ciAfqR3dw%gcY!Y&8j+c*HThf=1c6 z&V$-QLa@BvFh)Fo{=CGvA|W9`l`!(H$9+z%;$otCiF+Y`r>2Yy4OJ#ybV8vLPw=*I?LqgD%mpX+ zrsR8Mm>E2<-ahlVO=wWp73v?GFVM+W^h{c1ynlb0KX-L?H4ms~Cq38H%)?X6LJGfv z{+aHPk-3x0UtCl)>JKPiJ$I>NZ+CY23jOr9@h!L%Lzn zDJV#%u;{Kuvj~Ab{J-yc_qq0U?epn;bUM~ti#bO;;~Br_zVV;AB5_h63aPxHM4DJ! zq@V*z04$)krvi@*x0S$qtrE;Bl8BKAx0ZwP$f&5t%N=cng-A@zE-NUe6_u5|qW{%C zGb1A=JY^JAVUW{EzmH{@m{iY}@Vhy)CLtjyJpaysAt)%wE8XdJkP7fm4ygrrbXp|f zPwl}8K?yxSIe9_TWBxM{4Yq;+qkAc%rS;jQ0`)>h$P@Lj$SvVP$HXMQlaPYKP+J@E zxs{cbQP+FpH?9dUsV`S*Em5}xLH|nsGCAfo4ndurcmX;Q6C)#!SIXzl%CBA_?V|s? z>%>Z8nd3qOD=RBHE4qTkEj}wHI+Wq{NmprUX;RW_XXmQILdK`zv>!!a3@d0bx5Zr! zH0;3l$IFt1=kxM5P*L*lwY9t^E-RgJmYVT;;BK^nf|sj3VIlY(lu@3qH{F6`Y(9dCzbzv1 zULx>XQ&)F(U;t&%jKrh`qWF%Liz^;SKG-8#nY8DgqFeGz&(q@-=qwdDRAS*bT-XBS za9Yw)00pO|rVc2*7>o7t@{&h`yS_9sf-W>Vq;Z?Z>oYIs<4L)Ddz-ZTx`Dwu+8TIs zcCyx&BjNYKi89PROBTduP&pQ`o*TD%veJ&;%b`A_7uIhE3zIRG%I4;#LIQOhMm{B- zVXXynQVF@mUMD*o=EA>)8!2)h?M#h(J(I$Hs$V zlEXcpB~pxJOHvq9i%L<(%f5VRVnWS{9l*3LGB;^f4sU|pE1#4JOZ%wUD)tfhtTPI-%gMFMN-atpp0S*50q%#rcFjY8Lw z{OOY@usexinlfI)VGxfJ@=<05mw(*tsaBWQ4E)RNGf>AaJ76Ib@wW-)}}x z0Ix%>C!SdV>c0J{b5UxIT6VaVVl#o!;1}SS@fJfKULpmx@D*B@<+Go(`{GW z+Mq|3ytO5pPSXK1l2U$!wX2$*mL=HCBV_It6W-&32;Xh~9>88NH#Kc& zr>O?omT3@%&C&hlZ6IS4=n&$OS*51I=n7{hCY6Yr=EI$LL7}RPLE)0(_^UAwdH(~W^bTbon#=TM;)mZ_LY42>;l<6@ozvgPYpT2TaE2=_ z{-6+jbnq>-O8XF!Wf+_RIyA2fE_~J2&pNKX^Vn&yA&c5jJS%dZjxyqM+Wf>ynUK9X zbK`fHY~S)~_T@gx5uVl85Rr*mEk1&6^>(R}|RB5;m7#pK0Y86hvSD`DD`P;WauT zYyyX^?41Vro#fe1+3I4s6FvtG?xUAq8r^UgJM}DvF8+Ke9!*Zxj#uIwE4SX7tw|nz zmnBi6zdR)7XQI6pORi$FzX`({O&BSQ8?Fl2)3<{>Q5IBeY%kFMxL~lt0c%_#hslin zU1t-Obiwj6!^qKisIw4oB+fT`x6$~1I9qwjM*W-APWVttI8+R4AcKg*&0bzDEMQk~ zolhmL(It=Oerf!r?HlGz!On|{ER0l#m!+{yJ~k$P4seFr#5HPBMR#3R@fq;mE=RVg&I}U#qb36Vp6J zIcUKo`xlJNo1s6m@j~a*!WuFwQ5`St2i&T!XkV_d;oCoTW@@}Hn*D4#*m^f_Js+)= zD(ti(9k^+i76SR`omw%8T)TBJ?&{^7sru_1O30+Dm>Yc{2Hd)~4JnA# zv5&;A^o<`fCX-o^yUcmjebQLg2Mmf*0;#?y_+;3Mmw$u43~5%U!m!V<(D2eem%^Bf zt;81=xw7t>Tut?j%LA7lI}M+cbLD9GRv5^*xH@<=dDadp(w7T0GfB{jrnM zP}6jTztXArlvk|0*k?aq*PFX;wtqo z!3MIGa1~|auD2JlTx+X>yD^oOS(CqnuDn->N~$fHg>rg9Vu}tVrY5CSjTLt?LuHsh z%`6mQ7|AiPR5?i6JhLN8T#>U|wemgNyeVf;h!^#dKaMFFT9jvcQ0Rc^^? z(5mo|{7#=;^|oK%Rl0fG&#r8qj%CLv1Bdwb85LhErQdfS-|b>5RGuo!uTn{Kc;qED z1o~7t6@Qzf0&4xx2um8q#Qb2;AP*163p{d`%0d~HxfRJ)Eb7&B^tsjFzt7^sk}xa> zG_>Y~{q{E<%q)2Qp@ngaS4C-!^j;Z%cQ{@m=}$i}xHpeb;gjETK*;G3dLVOa;V4_v zg>fmbr{fWU&O!4rkp`>d7Ru+jaT|_y4-L}m)MS1FxS6Mt1#gJ^b{%!M)_gacvjyFs z9PTFftyU+y>W^&uq>LVA`n7+&)>yYhkjYRHLY+`^=En;OHbq=9hQih{*G9g_zEjMZ z|JlHHjrPjzEDlIAeaO73O#jXIn+KAk3N~w*OYT=68+UY;k`-|YXrKq9AcfyjYCO4E z&we#}d@{1d8P8$;A!^xBx5GYBZn$DN8$ILVyOh5gCOQrL& z=88IX$wLXH=i|`#kFUyKS&tR*$kO7WsezK@l$K;~+5+^C>@Q<`lT@jKHrDG7{^acm z)So^CO_LS`q`Haf7|VqTZG1BdzG}Bm%$6A{xC;awBYZ%2tKl>>NE!DSE@#K_`>%Bo zl^&P89i<-Uxl~~8@m%;CJ+4)}l-TnxP)mN*_ny+*+i}A~!W?oc0ch9@?HQGDpa69- z&5M>NgEq8~c%g%RYrU&47!;0fydD10UyFfVqLI>1%%A2P%8mRMtpM7SDuh|)ZDEGD zWLp*8kf*j?zU}hk^+Su7F4AP8{!j+?v2f^ZTI6=+2K5sRk>_#m`wuqfc>0-s98Rd6 z%8jYBnTK&xwnr+E+SqxTY-KwbsWn5m^TrE3`VLEEx`19nZUVvq5fujzJpc(ryX!_>_;VY+hx6`ns!IgmHdz#>f zt&dgcOZ_c0*ofI5Jj6Z6mOYIHhTmtT_nkRo2Yl1x@-l6n1T3Q?d?|!r2iqY%Ho#W{ zHeD2>ZBtlp3-_dxwcNmeGGxZ>ii_x6xCt0O-Ip~yoouGlf9M`cF~()|B$_h-Wq`d+5>#mQQad%JTKC8si*`F;c*9Xgh;DBno*y8SvNqy`K@(Z+A?cMju`NYbiTlfrv@sxtz z3$cE?M(MnF@;mBadJie=g~|^H-#A@oA*(*Ms0;OVY`K)HB$2170bl`;gn!mg2p6p{_ z#3n_8HCBJ6Co}-69iwXel*C_j8a=u;PgVwFDJ8vOy+z*HTBJ2jk_ABW>yxvf$wriS@Tqyp2-dKqXui)GBcg9{r>NU zB;8k34_Tte+j5JsXT(^A(6OSpfsU(|#j0Tvv1-Gaw!CkrDHlIn1&i0SEmSxi4yaFo zQbWxYb|&i^yA$FzGo>SYXn__iEs@>D(s-hS-=_B&e3dbLpm)>-8eXbfMMqZjtt)|C z*aJrYxcfUCT1Irx#9>lPZ5gI&w!SHCE9HgJ%h>E-HxF@{kgVG4TqlyP?=+R`iyt-} zXofc)%~WmIzCIjye?#qx+i9y?1H{DG=>qC<*CMb`@bYG1!}{#A&UtQK?+>VpJjj*! zw=|4zJ+3|^_6PbdUw6)g|C$P7;A5C%>$-Q1#K9BXS zV?yF|LsCB%G+f>*`N<(@MIXBMJ>VwXsDQZyR2s= zc*)_PQY&X$oiSYcc2sqpqlc@0SMIg@Uf$-^6ZhNbv>+D+UQ93p?Fx&!p}&^y3i0GV z>#_cRh9%2KgAiFI3v{A1t~@dXNSc;}w9gu!6tvGR{kq%Q2wMJquX3f1f=THucrh!} z3-?VK1ud0#9EI@?LSa(Z@C*5)Gw*kzyD{1b3l3KPI)TpjK*Z>`Q_zVF6nBd}*n6eJ z{P_Ivp}H`ad*I|SdqC1Cj*JMc_ftSkBz0^H1l0!!fQH`ewac@oRxa4ts77pmPFeh3 zOE_V|KlGL~2~3JVd_x+3bZ_ouMW||#;>i`IR)xkup20m@1_mU>+e`%rVe6Qv)#luF z0r1ezOVS#2ZM=s^f^8*kU9NlNzbuCWA!B8QvwokqJ>0t7?g0F;pd>n|mh~}t>i6tS zfA8L?u{g{}RBBH@J0gE)dI#hn@2K7a<*{v)~d z`+Y4*-JNr+SVi+8^|Z=QM3}9~w7~Wc$=F-(!pxL6CnPYE>bJJ8JNAy=RNFeB0G>v_ z4H|T4Z{I$Hp-#(O4eAV$l;)iw(Bj5g?ec%ypnXC+_Yngmnv1q^y9 zAIal#SPD;biv?;bLj`rv@>)N)zJDm1IFzFko+pKHtZVXnbNp3u5 zB@|cQVp0F=84IyK?tStpZBIzJugJ;8k^R0%w&h=X-qHyupmZj!dx8a+8xHM4W%@hV z9!a+MRhhC$gr2&fns5okXrCsgaOO0pMDiTS3}&a4jQSQDHo7z8#1r}56)ilUAc)aE zPlyW`wZL&ruy=bca{zRV24Zt0EJvRfs*qaSj+weI{-zTs_553C-<17%mkMnpV_0n0 zXjdk+icaJ?OBF)e`g^XqWqKIH442z141@wHNiU?=;pZ!Y4EJvlmjdqK22@{q6mauo z7_d4E{grQu9Ri(vAd13I+O|0jxVS1`a&ABKP_V#4lsS!{i}~>@!l@mC3Y8=H2qtyX zGddBDf5`g}=P4i8)NLO&0P&X=`jW(_0=BIb|{2AoXAC}hIKHv$p z)vFDpuMa(@z;)vFenO_S&kL9ES|ca@tiSAc_E(1*dW^z1{sI1xrrf$VF_MqLp=O2O4OnxM2b>zR9A2bkq@TMShL-|WECHB?>146n<8LN3Xp9o;ajO_s zz$Zw;WV`GJbrAFD&k*ee+izk4SDhJTLjGvjQYN9gzFX7D1VO5r)ic_QtN}GFH|ukfGil%J41U zE%-iEu#?v|Y>V|}*+5}Z4p54@>$)BGb zwx=pqF6df?& zaPy72tICVIw7}158zu^KbHZ#T9hJzO4dMs8hno^Urux55Wml4|ZRMn)BX6M$PW|Hn ztI>aJ@C#tlULRkvV=HsKd874sc+Tx2QP-1*Ro6Z50B7bw(R6@|JqLoSN1;UlfzCfb z^lILf(0SU8lV%azWg)jg?G*H|PPA9_P3BZyNfdl`n8jfaoNK~?N{Qv`PYVl~H@!U$ zXxKX~ciT4cB)7$Hjh)(l9HR23abbvhd;|~PExXOdLC*2Ith+Hab^AjSn_o~)wp)Vt zSCfTSo2k*$FOPxyyCf+l#CTr=R)3yWcixOnGNA<_ZJfsN>y0}A>8VOzU8!OH z)~w0S(vE_#b7+vFB5t0&gOmC%u9Vp;7#aMh=7z_9x9955WpR48g5Tm2PDk6uVehHd zsj}lcey&%ONg`bka~T(T-Qz1990f3r%Rs}{H{6G0YE~5E;BiAhSV++>kiO0iN|P+{ zel?oXHTXD&-5)!NkrDFSplz_kxRu1w>|3&_+C4Vu!mesX@@*J-VH~-?kIjgofX&}< zEz5xs~J50-FtGv&Bbu<0jnp#w(pWc#XLllKU5S>&eoJ2^7-af35U?c$CVk zv6$A{d?{Z3mh^l-q(uF}Vpvz+_6>cSR;TM_d39IIcl&7b)Ccy;9U8U!2*X$2Q(8_r z!jHDPE>v(8h4;8i^=A&>rLXRWncD~66O%p>3(|5}h!q8qHl?7=-~6I-Y6%ZS{MEN0 z?SW2K^p5x-eNvRw&pLVa`dsf~P(3|XL_J;Ls3Ma~CFv}4o6E?5tha^qmn!1$^>V$= zL343h1B1gLQRm$QYC+o=#)02@@5638o9+wuxJ|+8f4`&Fe<5oJh8%jg{O}tCk~VYM zgwA#-D&RL$QTP`ngOH7|l80?pU5TYFRue$_VjG~dB%?1gq z-)JPA=`VjzH)PCV9h1z|f7k%rz35nvIQfI39hZq9v{r+135n|6MpH)^$d~tymN?jr ze=}xKDQawA{+pwZjsy?h8LKF)^7H$lo9lLkM;^k?*XY>=IlNY$8c@p;@IMT1{OaQ$ z&iF)4$(Wei)X8@TJ*&%R!#hkoftPV`XZkQrMCje`@CnPok#xz&ri>tc%;8_cD0%3y zBYiUn0!Rk8*Y>g46MHF`X%&>b?hOtvB)m_9J+TjBT(aA<$G#3o{+(T3@Em@wpe{{I zTl!q6gq5xQw1_xkhV;u+mhLEqYI!YO^@F_C^oEnCx`(H?#2GyBSKGo{t6pBd2eQv~H>YDR0D<(1AXYu!L_)cb#Yd#WwT;I1`# z*HQz4ZUcFyb@J?(j31JZL*YDY)B!SqYEwL0hIx7RUc8c#&xM+iYthup8qSqHv6Ny) zomDt3*96(xCb+ARP;l=C)2;_oRPJcj}*WOjDuTMLoz zjn=cRC@#)a2fGuu8>eXb7lEwpM+C|7&93j?5O3*tW^{-1g%1cfp;4d_-zvHDVt#vy zTEI>x5FOy_PvwtyOGQQQOd>a3gDE*7-I**caL7E7rH_0@9o9E7cQd68(k!`9`tlBX|fx^0s7V(P$#T~;-i_{m&@^Gdu zcu$ag=11%Q{08zT>U2TN$<$3vqa+urA>TxfK>!k!=pD|qJ-mCZWO6Qgm9KFfcjVN{ zKr3K`+oy?E{W{OwWjtb+6%DD4+x4#o@~6cxlS7O7fzMeEXYapf=M<(UB&VhYdpeKR zbAgP#cP^`cq^+{aWzyu;+BtfcTf17+b0oCwsq;8>*1#$0&kC40Y?a?n6NcPyM=sEYEi%`t)+axPd@+fp z_k=|8h;p)&p2hsOv9OaZo!hJ+*cT=Vh>1mT9lOVmXbugC9{Pg8*512@`aE)gpM#yD zx?;{8NLu5XGm~4rQzw&nA*`i9CRXS3lGvtC^0APXkp(K}s;Ow`A=^iFY129G$%fk@)cvoEvs|aZwYx>*{R$J>p${-Sg+q z0cKQOTs%+wc^qiRkB|H6KoJ8&Lqh>K0vN4`s3>Xw3ndkmk2es#H*c`8v5CHo1IHGC zQ!qT5Nx`^{AR&?cEiU+YvWUezH1HCQoPmB-Pgz8f+`8|V>}$(Eer$mQX25hPzEoac zUk8AL1s}`}9~1KvA}Wq6?5&mO?l_%}&dmG1j#`kEe&{|6>ZNlA%_h>)i*eX#f#;%cg^JJ6zquMMyrfDsJh2NAlu zEUrKlG4u@#hFbLSwE;9@Xh;G6<4cHZ!a!e(o)!UVypVEr%LJh6Vs5#faBkyW8h_}P z)ap{ggD|fH-cIx1qa}z1uO@>PuoVB#6_f7!y)XYrN`PAaHwH;o9)6(E1gP~4z_b2O z!~eYD|DXSvZF>L1`orCOz2F;7JP66@^_AWwa%cbn`KYcBBq1io?_{+nNNchq0Dkh$ z+FHlhcm%|gjA+me`ktO1Xd4m!L`q|Gvx}qS=6|t(01@oy=xFg_r_X0U*xnx4T=@+U zEH`iO?d8ho=&A|;Y8`iFSUNbg0g?)+Zl-M5!btff$Wi%jt=s5;=a4H@qENZVen%B;ghw8{h9JzjN^7RKGH>IPaQ(0NLYne|wy)ZoNko$KhqFb`}SBsZ9$-AYl zN58yP*Xn`-#9~^YM1|R`sTSLhxGT;5lIGdxaRi(f@Rf(IcW%$s<d^WF3(lkQJf}M9^;=r#9t!D zv1p-vM;DR>;hn(-yJ#23mj%QKctWmN%|2#fhT;H>%QsvNx$AnjC#z01|KWUZ^h1ZI z^pDT&d3*8hu|x|5up5^R>Y4b2guy^SS77Z-&3(|`-`}T}^nXT3_~px&FxIfRIBcnq z=V&Hwj8$eY!>lgvZmmB2730gDBh z6RLLpfU84Z%K=7a=Dr^n`dD)zeUeT0_xE6O0Y5bU(^TV&yz=sc-Uv*596)g_ID&v$H;{nGV zKAS)B`y-xo*kEB(!cDBiDeFadxJ8QC%S0S{+W`?g3%)KsS`2Mp?i%wPev1$N~|z1FVtO3;QJ4Ntc<_a zdioMTdw}cX;^9f8#?`cY_pa4*ZxUPpd=w5mg!Xo{SnVs%h^%PY3(KeNFOs4OR;ly; z08XztjP?Zz3JRe9#DMZzq%DA_SE(r=YfvbZh+S7iR1^$`C%X)97n_{qDCB+tc|~Gw zllB0(Gvg~Xru}HWH?BP&kj-)vH>h`3E8E({LvVz9^c#Gd9RGay8?oFNba$ni#`T2v z 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 literal 0 HcmV?d00001 diff --git a/images/node-local-ip-solution.png b/images/node-local-ip-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..54ac2686a72c59567aafc5eadec5ebf65f58dba2 GIT binary patch literal 47551 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[],resubmit(,51) + +* table 51(LOCAL_IP_HANDLE) has actual flows for Local IP handling + + * ARP responder flow to handle Local IP ARP requests from same subnet ports + (fixed port and local IP associated with it are from the same IP subnet) + + :: + + table=51, n_packets=0, n_bytes=0, priority=1,arp,reg6=0x4, + arp_tpa=10.0.0.10 + actions=load:0x2->NXM_OF_ARP_OP[], + move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[], + move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[], + load:0xfa163e9a1ade->NXM_NX_ARP_SHA[], + load:0x1010102->NXM_OF_ARP_SPA[], + move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[], + mod_dl_src:fa:16:3e:9a:1a:de,IN_PORT + + * NAT flows to do actual Local IP address translation + + :: + + table=51, n_packets=0, n_bytes=0, priority=10,ip,reg6=0x4, + nw_dst=10.0.0.10 + actions=ct(commit,table=60,zone=4,nat(dst=10.0.0.51)) + + table=51, n_packets=0, n_bytes=0, priority=10,ct_state=-trk,ip,reg6=0x4, + dl_src=fa:16:3e:9a:1a:de,nw_src=10.0.0.51 actions=ct(table=60,zone=4,nat) + + After translation packets are resubmitted further to TRANSIENT_TABLE (60) + + Alternatively static NAT could be used to avoid kernel conntrack: + learn back flows with 7 tuple (src_mac, dest_mac, src_ip, dest_ip, + protocol, src_protocol_port, dest_protocol_port) + + :: + + table=51, priority=30,tcp,dl_vlan=1,dl_dst=fa:16:3e:9a:1a:de, + dl_src=fa:16:3e:4f:26:fd,nw_src=10.0.0.100,nw_dst=10.0.0.10, + tp_dst=0x8000/0x8000 + actions=learn(table=62,idle_timeout=30,hard_timeout=1800,priority=90, + eth_type=0x800,nw_proto=6,NXM_OF_ETH_SRC[]=NXM_OF_ETH_DST[], + NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],NXM_OF_IP_SRC[]=NXM_OF_IP_DST[], + NXM_OF_IP_DST[]=NXM_OF_IP_SRC[],NXM_OF_TCP_DST[]=NXM_OF_TCP_SRC[], + NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[],NXM_OF_VLAN_TCI[0..11], + load:NXM_NX_REG0[0..11]->NXM_OF_VLAN_TCI[0..11], + output:NXM_OF_IN_PORT[]),set_field:10.0.0.10->ip_dst,goto_table:60 + + This is usable in case of OVS offloading (e.g. SmartNICs). + This will be made configurable on the ovs agent side. + + * Not matched (not related to Local IP) packets are transmitted further + + :: + + table=51, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,60) + +Packet processing example: + + :: + + VM1 <10.0.0.100> tries to access Local IP 10.0.0.10 + Local IP is assigned to port with MAC_2/10.0.0.51: + + ARP: + VM1 -> ARP -> 10.0.0.10 and response <10.0.0.10 has MAC_2> + + Egress: + to + <> + to + + Ingress (back): + to + <> + to + +Scheduling +---------- + +Local IP will have no effect on VM scheduling/placement. Local IP operates +under assumption that at any given time any physical node in the cloud should +have no more than one active port/VM associated with a given Local IP. +Users are responsible to utilize OpenStack placement/scheduling features (e.g. +anti-affinity rules) to avoid assigning multiple ports from the same physical +node the the same Local IP. + +However there might be valid cases when multiple Local IP's local ports may be +colocated on the same physycal node (e.g. as a result of temporary live +migration during other node's maintenance). Local IP should provide a +deterministic way of handling such situations (e.g. in case of multiple local +ports, only the oldest port shall be used). + + +Initial release limitations +--------------------------- + +* Only IPv4 will be supported. IPv6 support will be considered in future + releases + +* Only 'openvswitch' ML2 mechanism driver will support the feature + +* Only tunnel (VxLAN, GRE) networks will be supported. 'vlan' will be + considered if require minimum overhead + +* No deterministic handling of packets if a node contains multiple local ports + from same L2 segment associated with the same Local IP + +* no 'reject' and 'drop' fallback policies; only 'forward' will be supported + + +References +========== +