Module 21, change in equilibrium due to factors other than price. Consumers equilibrium also changes whenever there is a change in prices, whenever there is change in factors other than price of that particular commodity. And because of that change in equilibrium, because of factors other than price, there is also change in demand for that particular commodity. For example, demand for a particular good also shifts due to change in prices of other related commodities. Those other related commodities may be substitutes or complement. In fact substitutes are those commodities for which case price of a commodity increases. And for other commodity will also increase. It indicates two commodities are substitutes while two commodities are complement if price of one commodity increases and there is a decrease in quantity demand of other commodity. Then those two commodities are complement. For example, if we assume burger and cold ring are complement. If price of burgers increases then there is a decrease in demand for cold rings. Similarly, if we assume the burger and cold rings are substitutes in that case if price of burgers increases demand for cold rings will increase. And if we replicate this concept with reference to our example where consumer is using only apples and oranges to maximize his satisfaction. And we consider apples and oranges as complement. Then rise in price of apples would lead a fall in quantity demand for oranges. In fact, there is fall in quantity demand for both commodities because of price increase in price of one commodity. If two commodities are complement. But if we assume apples and oranges are substitutes then rise in price of apples would cause a rise in quantity demand of oranges and a decrease in demand for apples. In this diagram we are reporting the impact of change in price of apples on demand for oranges. But in this case we are considering oranges and apples as complement. If we assume there is increase in price of apples because of that increase in price of apples we can see there is a decrease in demand for apples. And at the same time because of increase in price of apples there is also a decrease in demand for oranges. The demand curve for oranges shift leftward. And this leftward shift in the demand of oranges is because of complementary nature of oranges with reference to apples. Similarly, if we assume apples and oranges as substitutes and we have already see if there is a change in price of apples there is change in consumers equilibrium even if there is no change in income and no change in price of oranges. But ultimately it will effect demand for apples and oranges. So change in demand for apples and oranges is because of change in consumers equilibrium and that change in consumer equilibrium is because of change in price of one commodity. In this case if we assume there is an increase in price of apples and because of that increase in price of apples we can observe an increase in demand for oranges. Demand for there is an upward shift of the demand curve for oranges. Then this association given price of one commodity increases and demand for other commodity increases it indicate two commodities are substitutes. It might be possible that two commodities are neutral commodities if price of one commodity changes it might be possible it has no impact on the demand for other commodity. If we assume apples and fuel are neutral goods if price of apples increases it might be possible it has no impact on demand for fuel. If it has no impact on the demand for fuel then we can say apples and fuel are independent from each other. Hopefully after completion of this module you are very much clear about substitutes, complement and neutral goods. Substitutes are those goods for which change increase in price of commodity results in increase in demand for other commodity. And commodities are complements if increase in price of one commodity decreases demand for other commodity. And two commodities are independent or two commodities are independent if change in price of one commodity has no impact on the demand for other commodity. And this all change is because of change in consumers equilibrium and that change in consumer equilibrium is because of change in price of commodities. Thank you very much.


Mám je Ivor Izrael a můj koleg Tomáš Ilička bychom představit v 50 minutych. Jsme být být dělávali na Oracle. Jsme být být dělávali na Solaris. Až jsme dělávali na Linux. Takže to je dělávalo, když jsem tady představit.  Jsme být dělávali na Solaris a můj koleg Tomáš Ilička bychom představit. To je úplnětní představit. Jsme být dělávali na Tomáš i můj koleg Tomáš i můj koleg Tomáš i můj koleg Tomáš i můj koleg Tomáš. Jsme být dělávali na Solaris a můj koleg Tomáš i můj koleg Tomáš i můj koleg Tomáš i můj koleg Tomáš. Solaris je tam, co je představit. Solaris je na x86 a i64, co je představit. Obvízda se toho konklučního vyskává, že je to všetný Spark. Ještě jsme vyskávávali na Solaris, a jsme vyskávávali na Solaris. Vždyž jsme vzítekli na Linux Club, takže jsme představili na Linux, ale vyskává je toho. Máme se na toho, co je představit. Vyskává jsme představili na Solaris, a jsme představili na 2 vyskává vyskává, ale jsme představili na 2 vyskává. A to je můj koleg Tomáš. Vyskává se toho, co je představit. Vyskává se toho, co je Spark? Spark je představit představit. Představit představit na 80. Vyskává se toho, co je představit. Vždyž se toho vyskává vyskává vyskává. Vždyž se toho vyskává vyskává. Vyskává se toho, co je představit. Toho to, co je představit. Vyskává se toho, co je představit. Vyskává se toho, co je představit. Gdane se půjde ubirat v baking. Přiště je to jedna z úplnějních komputerů, které je 32 TB fysiklný. A myslím, že to je 2,5 tisí z hodiny hodiny. Můžete vidět klasit dvou tisí, ale můžete mít 64 TB fysiklný a 4 tisí z hodiny hodiny hodiny. A bylo to velký zněอ vědějíš, že nesokrý vědějí, že za denerJacky to je hrajejší a všichni nezávělí. A taky se vás na světě je nejlepší. Takže jsme množně hlavní aplikace, které se vyskává velký mělk, které se musí být vyskávat z výzvědných třet. To je závědě, že vyskává je tu a můžete se vyskávat závědě. Takže jednou proč než chceme se vyskávat závědně, jak se vyskává arhitektu vyskává. Takže, se musí se vytvořit, protože je to timing, takže to je zvuk, co je závodný z válgrinu. To je zvuk ještější a zvuková se na sebojí. To je tím, že to je tím, že to je zvuková sebojí. To je všechno, že všechno je zvuková sebojí. To je zvuková sebojí. To je zvuková sebojí. Anovala návržení návržení nám nebo dělává, které jste zvukou, které jste zvukou, když jste zvukou, když jste zvukou. Nětším, že návržení návržení nám nebo dělává, když jste zvukou, když jste zvukou. No to ne, takže vždyjí také dne. Bízikl se taky z easiesta na generální růz vždy a je udělat do vynuchovat zašličnou rozkoupní vždy a po tebe věděle. Přece onové instruci tři opětť a zvěděleské z největné dvedvenou moci dělat 2 fusingy a 1 fusingy a tady nám je fakt volová. a to je úplný rejster. Takže, to je množství formátová instrukčna, která se vzájí. Vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící vzájící. Dutch carnault a so we can slice the big machine to smaller chunks and each CPU is running in non-privileged mode, privileged mode which holds the carnault and hyperprivileged mode, which means it actually is inside of the hypervisor handling. Why it's important for lagrind, it means the hypervisor is still there and it takes care of some of things like interrupt deliveries all the time a se na tom vlastně se to závodovuyčí, protože je to důstutek, značí je.intellect vydělá se, když je opravdň štět. So Spark has a general propose, it has a 24 general propose registers, I will have another picture, which are alias into the input ones, output ones and local ones. We'll probably see it on the next picture, it serves for emulating of a function call, so we have something like input arguments, output arguments for the next function call and the else are representing a local variables in a function. But beyond that, there is a lot of more other, there are like really global registers, there are floating point registers, there are something called ancillary state registers, which is technically other kind of registers for other usage. And yeah, I will now peek to the next slide, try to explain more about what the I's, L's and O's are. So from x86, you probably are used that the stuff is being pushed to the stack directly. What the Spark architecture has is, it has many more registers than the number, which is accessible at any single moment for the chip. So this is called a register window, so the I's, O's and local's technically compose a single register window, which represents a single frame on the stack or function execution. So whenever you call another function from the caller, you will see that the CPU can allocate another window, so it will basically select a different internal registers and then perform translation of the I's, O's, L's to the new window. And you can see that there is an overlap, which means whatever you have put in the O registers are output arguments of your function. So after you call a function, which will ask for a new window, the O's will automatically be in. So in the next function, it will be in the I registers. I hope, does it make sense, like, yeah. So the operation is called a safe restore. So whenever you save, you are going to allocate a new window. If you call a restore, you are basically freeing the window, unwinding the mechanism back. The issue here is that this is all happening inside the chip. So you cannot observe this behavior on the stack unless when the kernel or the debugger explicitly dumps the data to the stack. Or if you arrive to a place where you basically allocated all of the windows, so there is no other place for the next function call. At that point, a CPU will issue some spill fill traps asking the system to actually dump the windows somewhere to the memory and then either reload them back as necessary. So after you fill all the 8 or 7 windows, you will start seeing the old ones being pushed to the stack, available for the debugging software. So yeah, this is quite tricky. And especially for working, it gives us a lot of headache to try to emulate this behavior on the guest state. Yeah, you can see the globals are always the same.  Yeah, floating point registers. There is a bunch of floating points sized from 32, 64 bits and up to 128 bits. But they overlap. So a double precision register is actually two adiatsent floating point registers of 32-bit precision and so on. So this is another thing it was really talking about slightly. Yeah, so this is about the register set. So next highlight of the Spark architecture is the control transfer. Spark is using a delayed control transfer, so it means whenever you branch to some different place, we are still able to execute one instruction after the branch before we get directed to new destination. So there is an example. You can see the branching works. For example here, we are branching based on condition codes. There are registers which holds the condition codes for us and there is the destination. So technically this instruction is sitting in the branch delay slot and it will be executed before the instruction at the new address. So this is part of the problem. Second part of the problem is you may have an anulbit here which says but if we actually haven't branched please discard the instruction in the delay slot because we are running on a risk CPU so everything is out of order inside the chip. So this instruction may have been prepared but not committed yet and in case we didn't decide to jump, we need to discard this in the inside CPU buffers. So practical usage for example a compiler can put first instruction of the destination here and just said but if we haven't jumped discard it because I have preemptively executed something from the destination. So as you can see this is managed by having two program counters. This is another difference from regular architecture. So you have a program counter which points to instruction you are actually executing and you have a program counter which is pointing to instruction you will be executing after this instruction. So technically it's always plus four because we have a fixed size but in case of the jump you will see that the program counter will be pointing to the branch instruction and the next program counter will be the branch delay slot. After we execute the branching instruction we will move to the next program counter but we said that the next program counter will be at the address. So basically the transfer is handled by the two registers and again this is something which is not easily supported in Valgrind because there is no way or easy representation for this scenario. So another nice thing about the Spark is whenever you try to load or store something from and to memory we use a 64-bit virtual addresses but we also have something called other space identifier which is a 8-bit additional information telling the MMU how to alter the load and store so it can do something different. So some of the ASIs are designed for privilege or hyper privilege mode only but some of them are accessible from user space which basically means you can ask the MMU for example to load data from memory but switch and the anus. So the MMU will access the address in argument but return you the reverse value in the register. So there are also other groups of ASIs so some of them are coding and translating which means we will involve MMU and use the address as a virtual one. Some of them are non-translating which means they can reference a physical address and there are of course a special ASIs which allows us for example to address something which is not tied to address space like a register. So for example SparkChip has more registers as a scratch space so you can use ASIs to play with 8 extra registers if you need to have some spare place or for example hypervisor can provide you special ASIs for performance counters so whenever you read something from a memory address with that ASI you actually invoke a routine in hypervisor which will fill in the data for you check whether you have permissions and so on. So you can see the instruction itself is not different from a load store or a regular load store but can have an ASI in its opcode which means if this is a compiled in ASI we just say do this load and use this constant but to be more dynamic you can also say just load from this address but use whatever is in the ASI register of the CPU so you can dynamically change what the current ASI will be by writing to the ASI register so only at the runtime you know dynamically what actually this will do because for example there is a good example this is something load, float from memory to load 8 bytes by default by default means there is nothing like this in the instruction this works because a CPU has some notion of the default ASIs so if you omit everything we will use one of the default values which is described in the documentation but you can see whenever you put a different ASI to the instruction it changes the behavior of the instruction how many bytes it loads also there are things like block stores we should for example read 64 bytes from memory instead of 64 bits and so on so this is basically the problem we have at VEX that if it is not written there yet we have quite a hard time to do some compile time translation of this other space and also we have a big problem in the memory tools because the tools doesn't know nothing about what the ASI means some of them are even vendor specific so they can be different between the implementation on Spark with different vendors so OpenSSL and other things can use it Crypto Instructions Spark has a lot of crypto instructions built in the CPU so they are for example using some special ASI to do the stuff this is a new feature of the new Spark CPUs KDI the logic is we are trying to detect memory issues in the code in the real time on the running chip so what we do we are actually using unused bits in a 64 bit memory address so we can put a color on a pointer the pointer is stored in the cache line and later in the memory module and on each access we are checking whether the color is still in match so a CPU will issue a fault whenever there is a mismatch between the colors and that way we for example can put buffer boundaries by coloring different things before and after the buffer and detect them on runtime however it's cache aligned so it works for 64 bits you cannot create a smaller chunk or smaller piece of memory usually for user process we deliver a synchronal signal to signal that the ASI has been messed up and it can be handled somehow it depends on the tool I would say last thing because on Spark whenever you do a syscall you need to have a mechanism to enter the kernel somehow it used to be by issuing an interrupt syscalls is enter instructions Spark is still using the trap however Spark has a hardware support for traps so each time you trap the context will change slightly in the CPU so you have some fixed amount of nested traps you can create so for that reason if you do a syscall it will jump or push the CPU to different trap level we need to move it back to trap level 0 in kernel we need to find a syscall so we use something called fast traps on Solaris which basically allows us to create a syscall which is directly handled in the trap level context so it's used for some really high speed stuff like getting timers or something out of your process so instead of doing this mechanism we just directly trap and at the trap level handling code we handle everything and return back to the client sometimes even without switching to privilege mode because it's not required so this is also big problem for us at the two level because we need to handle them differently yeah so now so thank you Tomáš for introducing us interesting aspects of Spark architecture and now I'd like to tell you quickly what parts of Vagrant are affected by Spark support so this is my picture so don't blame me the most interesting part is of course done in vex because we need to provide a frontend which does this translation from binary to intermediate representation and we also need to provide instruction selector and emitter to go from IR to back to assembly so and then there is a whole bunch of coregrind modules which needed to be hacked somehow some of them slightly, some of them quite heavily to support Spark on Linux then there is gdb support which works over the gdb remote protocol we had to provide support for this in gdb because it was not there and for the tools themselves there was not so much work required only some work in memcheck to support some kind of some more IOPS so this is our guest layout so you can see globals outputs, locals and input registers as Tomás mentioned then there is whole bunch of floating point registers some ancillaris state registers and then there is support for lazy evaluation of condition codes registers for integer and floating point so you can see we didn't emulate all the register windows like Tomás described here we emulate just single one why? because all the vulgar machinery expects a stack pointer to be just an offset in the guest state and because the stack pointer is one of these registers and because stack pointer constantly moves in these register windows so we cannot say oh this is the stack pointer because it's always changes also one of the reasons is the user space program has no visibility in the other windows it just sees one and also for other solaris other always specific problems we need to synchronize the guest state to stack to spill the register window it was very difficult to achieve it if we had all the windows so we simulate only one register window and we do immediate fill all spill based on how do we encounter safe and restore instructions so and we have also some scratch pad here which we use for loading and storing some of the ancillaris state registers if they do not support moving between registers but they do support moving between memory and register so that was register window support instructions in branch delay slots need to be simulated carefully because of the annuling bit so we have kind of branching code which the front and middle front generates this is simulated based on other architectures they do it they evaluate the condition codes this problem Tomáš mentioned if there is AC in the register then we have no way how to tell at the translation time what the instruction actually does so this problem is still not solved we have just worked around it bit also because memcheck does the shadow operation on 16 bytes floating point registers so it converts them to integer operations so we had to provide some basic emulation of those byte integer registers in the instruction selection we also get on the MIPS platform we had hundreds of warnings from the compiler because of the misaligned access we have problem how to efficiently represent fast traps which return 5 return values so it's still to be solved and we also evaluated possibility if a valgrin can leverage application data integrity somehow to check the addressability aspect of the of the program also because load and store can be decorated with different ACIs we have to we have to put new attribute here in for the load and store operations it's still questionable if this is the right way to go I don't know basically it means that all the tools which somehow instrument load and stores will need to be taught about new things so this specific address space identifier says you perform the load or store but do not fault if there is a problem with addressability so we will need to teach them check about it and it is still unclear how so there are still a lot of open questions and problems to solve and I hope to facilitate some discussion about these problems at this meeting and the current status of the Solaris and Linux ports are we have been working on Solaris port on Spark for two years so it's quite quite mature so Memcheck basically works the other tools somehow and this month we have started port for Spark on Linux so at this point just builds nothing else and that's it both ports live at this at this moment they live at this address on the packet repo under different branches and I think that's it so now we take questions and answers if there are any I know there is support for get index and put index we have considered and we have first we had this prototype with get i and put i but it didn't work because there is no way how to get the current index from the user space you have no visibility which window you are in I would like to say there are additional registers which are supposed to be those keeping for the window mechanism so there is a current window pointer what windows we can say restore which or how many windows belong to different other space because you definitely don't want to pass kind of stuff to the user land so but those of them are usually privileged access yes so we had no way how to tell which window it was and we got lost exactly yes yes it is expensive because the safe and restores the pushing window there and there is very cheap because it just switches between the registers the only expensive way is when you encounter fill or spill trap but now we do fill and spill immediately every single push or fill so it's kind of unfortunate but we were forced this way so for this reason and also for the problems for the problems because there are two program counters so the current port is quite slow I haven't done any comparison but when I run something on x86 and on spark it's quite slow so some performance optimization needs to be performed first so any other questions window specific for this like extension to the architecture on spark we have spark v9 then you have a motivable platform from for u, for v, for r and then you have specific ships best by the windows so at the top level is the only common thing you have asin spark v9 standard will be the common one but as you travel the dam architecture you may say but if I know I am running on on for v, there will be 2 additional asin ...on the MLA day, currently basic, without any extra things like that. Yeah, this is what she's doing, we actually replace the mem check and stuff with that version, which doesn't... ...repril some functions to find out how to avoid this stuff. Yes, so that's the workaround currently for now. So we don't... So that's the workaround, just avoid this stuff until we can solve it. But I fear the proper solution would be... ...if we ever encounter a write to this register, so we will probably basically end the basic block. And then this block will be translated by VEX. We need to check the current register value with the expected one and provide the proper translation... ...and have the ability to choose between different translations of the same basic block. Yeah, but that's the kind of thing that you already have. Exactly. Yeah, so you have the translations, which have a sum she's about. Exactly. The state in which she can be translated. Probably the solution here. But it will be... Exactly. Because all the translation caches and stuff is now assumes there's just one basic block translation. It's 8 bits. 8 bits. And it's just half, like 128. But all the... All the different instructions have a limited set of identifiers, maybe 20 for every instruction. So that's... Most of them are changing the scope of the whole library. 1 to 0 memory, you would have to repeatedly write 64 bits to memory to get the chance 0. Just one instruction and the inside tells 5 out of 5 is 64 bytes of the whole library after this pointer. So this is most of the insights that I have seen through this stuff. Looking for it instead of a small channel. It is. It is. I don't know why they chose this way because... Hard to say. Maybe they are running out of opcode space. It was a cool idea at the beginning, but it's been abused terribly. It's like the delay. It was a cool idea. And I just went to systems. Yeah, but now it's legacy. And you have to delete it, but no one is happy about it. It's legacy in the architecture. You need to do it first part with that. It happens, it's part with that one. I don't know. OK, and the other one? Any questions? How usable is the Linux port actually already? So if I took the patch and put it in the devian package... No, no, no, no. You are too far ahead. There is no package yet. There is just... No, I mean, I couldn't take... Currently you have a patch. Basically that would be on top of the upstream version. And it would add something. So you're wondering how usable that something is. And could already give it to some... Good question. Ask in a few months, just now it builds. That's it. OK. That's it. We have tried, but there are still... It's not so easy to run in just after the... Unimplemented functionality, you know, and things which break for some reason and inrestigate. So it's at the beginning. The Solarisport is quite ready. I have tried some complex programs and all this is going for interfaces and the other problems are either solved or work around.  So how do you program the run on the Solarisport? Yeah, much more complex ones. Maybe like on storage servers they take gigabytes of memory, just code and other gigabytes of other data. So is this stuff getting used internally inside R? Sorry. Is it getting used internally inside R to find products? It is, it is. So the X86 port on Solaris is used heavily internally and I have reports from people. They found it very useful, like in the Linux community. The Spark port is not so widely known, so I don't know. I don't know yet. Ha, good question. I think Ilumos runs only on X86. There is some Spark support. I don't know. So it will continue on jen with X86? I don't know. I was in contact with some Ilumos maintainers who are running regression tests on X86 and they package it in some distributions. I don't know about Ilumos on Spark. Big Solaris still kind of applies to the old code as there's nothing actually for Oracle specific. OK. So it's based on the latest public spot, I guess. Yes, yes, yes. The Oracle Spark architecture, which are exchanges to the Spark B9, so it's based on 2015, I guess. There is maybe 2017, probably a little bit better, I'm not sure about this. But it's based on 2015, which corresponds to M7 or T7. OK. OK. So this is the Spark feature. So it can be enabled on Linux. I don't know what's the current state of how to enable it on Linux, but this feature needs to be enabled first and it needs to have a support from the memory allocator, such as Maloch in Lipsy. So you basically tell somehow to enable this feature for this current program and the allocator behaves slightly differently. Instead of just returning pointers like it used to before, it now returns colored pointers. So the topmost forbids contain the version of the color. And I don't know if the allocator in Linux Lipsy is capable of that. Not yet. The kernel bits are being submitted upstream right now. So they will land upstream very soon. And now we are working to have the support in DLPC as well and also in DDP, so you can get nice messages. So instead of getting it back, you just need to get it back. I think the most part is that X86 has some debugging support in hardware for kernel engineers. Spark has a very little debugging support. So you are not able to set that much point, for example, because there is no such debugging register when it gets set. Hey, if you take this space, give me a fold. So this is actually how we can introduce memory watch points for kernel guys. So they will definitely want to demo something like this. At least they will be able to demo. What is the grand variant? The check is the page or the cache line. Cache line, 64 bytes. So basically for small buffers, it's way too big. So they use clever technique because you are usually interested in buffer overflows. So they position buffer at the end of the cache line. So you can detect the end of the buffer right. Let me repeat the question because it was not clear here quite a lot. So the question was about if we can cheat and not simulate or emulate the program counter and next program counter exactly like the processor does. To write the program counter on Spark because the next program counter is not even writeable, it's just written away. So you need to issue a branching section of something like this to actually write something to the next program counter. So you will have to do the same on the website. But I think at this moment there is no such check which will be formatting the legs to not do something like this. So probably if you try hard you will find some way how to cheat the program counters from the legs. We have to hack the block disassembly project so that when it sees a branch instruction then it has to also pick up the instruction afterwards because it will be a representation of the word for something. Exactly. We basically unvind the delays so this will simplify some of the order of the instruction. So if we know it's only going to execute it we revert the order into the assembly so we will put the delays in front of the branch and then issue the exits or we do stuff like site exit is here or jump over the message for the unknown bits. Part of it is just about changing the disaster program. That would be helpful. KnitSport does quite the same thing because they have also delay slot but they do not have a null bit. So they have easier situation. OK, someone else? He has still two minutes maybe? OK, you are done. So thank you for your attention. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. A tenšný a tenšný Valgrímbin.


We have this to talk about, which I hope, as you'll have a copy of it. So, look, I really would like to make, I think, probably only four points because I think it's rather self-explanatory. I think it's rather self-explanatory. And they are similar points to those which we have discussed in the past. But the first is that when we look at the state of the world economy and we see that, for example, the IMF has described its performance as disappointing, and we see that the growth rate projected for the world this year is 3.1% and for advanced economies it's down in the 1%. What stands out with these figures is the contrast, because you have a very low growth environment, as we have experienced for some time, but here in the field of intellectual property activity we have rather high growth. So that would be my first point, that it is a measure, if you like, of the activity in the knowledge economy which is performing at a rate which is uncharacteristic given the general circumstances in the world. The second point I would make is that once again we see an increasing dominance almost by Asia as the origin of filing activity for intellectual property. So if you look at the figures you see 62% of global filing activity for patents is located in Asia. 55% of global activity in trademarks is located in Asia and 68% of design applications are in Asia. So this we have discussed on previous occasions and it's a confirmation of a trend that we have been seeing for some time. Now the third point I think would be that when you look at those figures a little bit more closely, of course again, I'm sorry to be repeating a message that we've seen, but this is the trend, China, the figures for China are quite extraordinary. So it is the first patent office in the world to receive more than 1 million applications that occurred last year and this is quite extraordinary. It is growing, continues to grow at an extraordinary rate and the figure for last year was 18.7% in terms of the numbers of applications in the patent area received by China and we see also in their figures, they are the top in terms of numbers, patent office, trademark office and design office in the world now and we see also in their figures that there is an increase in their filing activity outside of China. Now that's slow and gradual compared to the meteoric rising numbers internally. Nevertheless it is the case that we do see more overseas filing activity in patents and in trademarks by Chinese enterprises and that is a trend that is discernible. Then I would point you in the direction also of India, which I think has had a very solid performance in the last year. It is at a completely different level in terms of numbers from China, so we're not talking about the same numbers. Nevertheless we do see much increased activity in India, so in the trademark field a rise of 22% in the numbers of applications, in the design field a rise of 10.5% and in terms of patents, if you could help me out more, I've just lost that one from India, 45,000 applications, so it's in the top 20 countries now. So I think that is something to watch. We wouldn't want to suggest any trends at this stage but certainly increased activity in India. So I will limit myself to those comments. Carsten, would you like to add anything? Maybe just one observation. I think what we see in the case of China is increasingly the mathematical laws of compound growth. China keeps growing at a high rate but since China is at a very high level that means China is more and more driving global filing growth. Just to give you an indication of this, China in 2015 received 1,101,864 patent filings which is almost the same as the second, third and fourth largest office together, which are the Japan Patent Office, the Korea Intellectual Property Office and the United States Patent and Trademark Office. So that's quite a remarkable phenomenon and at least as far as we can see there is no end to this growth. Another way to look at this, if you just look at last year's increase in 2015, the additional number of patent filings compared to 2014, that is similar to the annual number of patent filings received by the European Patent Office. So again, these are just the logical implications of compound growth and over the years this is what has played out in the numbers that we publish in our world IP indicators. I've just been picking through the report. The table is very clear. Do you have a text on the patents? But on the trademarks, I didn't see there a go over view. Designs I didn't look at, but I don't find it in the report. It should be at the beginning of the chapter. And also on page 7, you have the key numbers for patents. That's what I mean. It's page 7. So if you look at page 7, these are our key numbers and there you find the world totals for patents, trademarks, design rights, utility models, and plant varieties. And then if you want to have the more detailed discussion of the statistical trends in each of the main offices and across the main origins, that would be provided in the trademark chapter. And that's, as Mussaytza starts at page 75. The world totals has already been changed over the past decade. So if it's not improving, does that mean that you're not interested in patenting in the IP system? Or if they have a hard time increasing their functionality and ability? And also for plant variety protection, are you talking about patents or is this including the Huboc system? So on the second one, we are dealing here in the statistics with plant readers' rights. So the specific form protection for Huboc system for plant varieties and not patents that may cover some element of a plant. On the first one, look, it's a question of technological capacity. So we regret that the trend is not otherwise, but this is a reflection of I think the technological capacity. And of course that is something that should concern us all because we do not want technology to be a divider. And we would like to see the capacity of the lower income countries in particular raised in this area. But maybe if I may once like Kavya to that, you're right in terms of share, but since the world total is growing and in particular since you see very fast growth in high income countries and especially China, which is a middle income country, that also means you do see growth in low and middle income countries. If the share is stagnant, that doesn't mean that filing volumes are necessarily stagnant. You spoke about how you are far ahead of the general macroeconomic trends. Did you learn any research on how this general macroeconomic lag behind the awfulness in trends available? Is this because the filing of the stagnant massive countries, China and India, are so new? Yes, so what I am not sure I completely understand your question, but my point would be, we are dealing with numbers here in fairly generalised form, but what is striking is that you have a performance in respect of intellectual property activity that is not similar to the general outlook for the global economy or the general performance of the global economy. Now, of course, to say more, you have to break it down and look at specific regions, even specific technologies. And as Carsten has already mentioned, we do have one major driver in this. It's not alone, but one very major driver, which is China, which does raise the volumes very significantly because the numbers are quite exceptional. But going more into detail, I don't know whether you have any comments. It's a complex question, I think, that you ask, Carsten. Maybe the one observation I would make is that if you think of what is behind intellectual property filings, it's mostly companies' investments in intangible assets, whether it's technology, whether it's design, whether it's branding and reputation. And we certainly do know from studies that have been conducted that intangible asset investments are growing faster than the more traditional bricks and mortar tangible asset investments. Now, there is, of course, no one-to-one correlation between investment and overall rates of economic growth, but I think it is fair to say that, yes, since the financial crisis, we have seen much weaker overall economic growth, but at least as far as the intangible side of the economy goes, companies still continue to invest significant resources in it, and that is reflected in our intellectual property filings. Struggling to the cost. Do you think that this, and of course, before it was your responsibility, but do you think it might reflect the fact that technology transfer and help towards those countries to boost their technology possibility? Is a reflection of this that it's just not really working? Look, I would be a little wary of drawing too many conclusions from a general statistic, but one of the things that I think you can say is that what we are also seeing, in addition to what Carston has already pointed to in respect of intangible assets, but what we are also seeing is that increasingly competition is conducted on the base of intellectual property assets, and that means that, of course, the competition is extremely fierce in this area. Most countries, and certainly most leading economies, have innovation as a central plank of their economic strategy, and so that's where we see the competitive stakes played out. Now, in that context, of course, keeping up with that for anyone is a difficult matter. Can I just ask you if the things you can ask is that the applications, and the patents granted afterwards, is the rate stable, or is it not just a phenomenon that there's more applications but the ones that are accepting at the end are the same as 10 years ago? No. I think there is a correlation of grants growing. Exactly the correlation, I can't tell you, whether it's exactly the same number of two-thirds granted of the applications as it was 10 years ago, but yes, grants are growing at the same time. Simon? On China, we see that there is a lot of international demand, but relatively less international demand. How can you explain this? I think that it is part of the evolution of the nature of the Chinese economy. So, as I said, they are doing innovation, a central point of their economic strategy. They are trying to add value to the production of the journey made in China created in China. Naturally, I think that exports reflect traditional activities. Traditionally, I mean the last 30 years of the Chinese economic activity. We see that there is more externalisation than there was before. I think that I would like to predict that we will continue to have this increase in externalisation of the intellectual production of China. But it is certainly true that, for the moment, it can be compared to national figures. What domain is there more demand for China? Informatic, telecommunications, digital communication. Digital communication and telecommunications. Computer. Informatic. What is for China, I have to break it down, but those are the two problems. Those are the two problems, but what is the right thing I have to go back and check? Informatic. Informatic in general and telecommunications. Telecommunications, especially around the structure, to find out whether it is there. I don't have a lot of information on the top. We can check this. We can check and verify this. Did you think that the good performance of India is for the new IP variation of India? Certainly, I think certainly. The strategy of Made in India, which requires investment, of course, in manufacturing. And the emphasis also that India is placing on innovation, I think, is being reflected in the figures here, an increased IP activity. Can I just go back to the question of the percentage that is usually accepted? We can get it. I'm not sure we can do it worldwide, but we can certainly do it by certain countries. We have to go back on that. The global level for the grant rate, if you look at the figures, is last year 5.2% increase in the number of cases granted. So that's the global level. But in terms of data, by offices, we have to go back on the service. Sorry. So in general speaking, there's around 5% of the patents. Increase in number of applications granted in 2015, compared with number of applications granted in 2014. So it's not a success rate. You have an idea of the general success rate. We can give you that for specific countries. No, no, but I mean, 10%. No, my guess is around about 2 thirds, 70%. Roughly, but that's a... It's not, if I may, entirely straightforward to compute, because any given year patents are granted that relates to filings that could go back 10 years. So one has to be there careful to not compare apples with oranges. And it's also the case that if a patent is not granted, it doesn't necessarily mean that the office rejected it. In quite a few cases, applicants decide to withdraw from the patent application process, mainly because they obtain information on how the market develops and how technology develops, and they may not find a particular patent worthwhile pursuing anymore. So that's why one has to take sort of ground rates with a slight grain of salt. Another reason for withdrawal also is that some companies do what is called defensive publication. So they will put a patent application in, wait for it to be published, and then withdraw it, and the publication prevents anyone else from patenting in that area. So it's a... Could you repeat that, sir? So in some areas, some companies practice what is called defensive publication. So they're not really interested in taking out a patent right, but they are interested in ensuring that nobody else does. So the best way to do that is to make the invention public, and they can do that fairly easily by filing a patent application in, for example, Canada, waiting where it's reasonably low cost, waiting for it to be published, then withdrawing their application, but it has been published, it's in the public domain, nobody else will be able to patent that. So that goes on a bit in the, especially in the area of IT. Thank you. I also see a whole Swiss news agency, so we see that the gap between China and the US is growing. What kind of consequences do you see in the election of Donald Trump? I was wondering how it would come out. I take the responsibility with eventual protectionist measures in the consequences for the dynamic innovation in the US and on the application in France. Okay, so I think the short answer is we don't know. And the President-Elect has not, at this stage, said very much about innovation, but it did feature in one of his pronouncements recently that this would be an emphasis, but otherwise we don't have a policy, a general policy statement, so it's a little difficult to say. Now, in respect of the trade element, what we can say is that the United States remains clearly the biggest filer of applications externally. So they are clearly the leader in filing applications abroad. So this, obviously, is related to trade and investment. So they have important stakes, very important stakes, in intellectual property and trade. So they're at John Booth, Tatey's all-back room in the US. One second, I think Stephanie, and then John. So clearly, with his pronouncements on it, so recently on the Asia-Pacific TPP, certainly that would point to endangering and that's the advantage? Well, I wouldn't say that, but if you wish to, you can. But I wouldn't say that. I don't think you can just immediately draw that conclusion. I think it's early days. What would you say? Well, I think a particular trade agreement is not necessarily going to affect overall investment by United States enterprises overseas. John, on to the latest Stephanie's question. Some very senior advisers to President-elect Trump have mentioned that one of their priorities in the new administration come January 20 will be zero tolerance for infringements of IP. How do you see this playing out in your domain? Well, I think that counterfeiting and piracy are problems in the field of intellectual property. They're complex questions and they require some deeper analysis to, if you take piracy for example, it's very much connected with the increased availability of works on the internet. And we have seen various activity in that regard. For example, I think one could say that one of the things that has happened is that as a consequence of new accessible business models, we see digital sales rising, which is a suggestion or an implication, if you like, that piracy levels have also decreased partly because we have good accessible business models. So you can get, as you know, access to all the world's music essentially for about $10 a month, which is a rather good deal when you compare the amount that you pay for a football ticket, for example. So I think it's a complex phenomena, counterfeiting and piracy, and I think counterfeiting is also related to globalisation and the capacity to break up value chains so that it's more difficult to trace. So it's very, it's difficult to say anything in general. Now, what President-elect Trump has said, it just seems to me not to be in any way different from the policy of the United States in general of emphasising the need to respect intellectual property. I'd like to ask you about South Africa because it's the dominant fighter from Africa, but most of the flight is on non-resilient. Is it possible for me to connect with them? Well, I think that's fairly typical of actually all countries in the world with very, very few exceptions. There are probably two or three exceptions. China is the one where most of the non-resilient are fighting. Right. I think it's like India, Brazil, South Africa. You have big chunks coming from the non-resilient countries. Not only India, Brazil, South Africa, but also Australia, Canada, and I always would be a little bit careful with this comparison because what you are comparing is home production against the rest of the world's production. So very few countries will be able to have a home production which beats the total production, if you like, of all other countries. So it's fairly natural that you get a high level of non-resilient filing since it's the rest of the world. So I think the South African figures are fairly typical in this regard. I couldn't without, we would have to analyse it. So, I mean, do you protect the new product properly? You still have to find it in every country? Well, I think you then get into patenting strategies and generally they will follow the plans of a company as to the markets in which it wishes to operate, first of all, and secondly, the capacity of countries to be able to imitate. But theoretically if you cannot register or protect it in one country, can it be properly there? It can indeed, but the capacity to export from that country is limited by the protection that has been taken elsewhere. So it's not sort of free for all. But there are some fairly major examples. I could give you just an anecdotal example of the Rubik's Cube, which was the subject of some litigation, actually, in the trademark area recently in the European Court. But when Mr Rubik took out patent protection for the Rubik's Cube, his resources didn't permit him to, or his decision at any rate, was to take out protection only in Europe and North America. Now, it became a fantastic hit in Asia, and zillions of Rubik's Cubes were manufactured in Asia and sold in Asia without any patent protection whatsoever, so he was unable to earn anything from that. So it's a rather strategic decision to take. Coming back to what you mentioned about the supply chains, what are the figures showing in tracing technologies? Are you getting a lot of patents filed in this area where the technology is embedded in the product and it's traced right across the supply chain all the way to the retailer? Well, Carsten and colleagues are hard at work on this, so... In fact, our next world intellectual property report, which we aim to publish in 2015, will be on the topic of global value chains and intangible assets, so we hope to shed some light on it. I mean, what I can definitely tell you, I mean, and I don't think that there is much rocket science behind it. You look at the products that are traded in international supply chain, and you look at the companies who do the R&D behind it, who are the ones who retail these products around the world. I mean, clearly there's a lot of IP involved. I mean, just think of, you know, think of smartphones, think of tablet computers, you know, their large number of patent rights, design rights filed on these types of products, and clearly, you know, these are products where you have highly fragmented value added chains involving lots of countries. But it's precisely an interesting question, and you know, that's where we are trying to have a closer look. You know, where precisely do those companies file their patents, and what is the role of patents in managing technology within these value added chains? Clearly confidentiality, contractual type of arrangements will also play a role, but we don't yet have a good answer to that. No, my question was, are you seeing an increased trend in the filings of such tracing technologies? Some are very sophisticated, where the potential infringer wouldn't even be aware that the technology is in the product that he's trying to infringe in. We couldn't answer that without doing a patent landscape. I mean, it's possible to do it, but we don't have the answer to stop that. It's a time of playing in the internet as well. Can you explain a bit about Japan? I understood in terms of patent applications, the only country among the five that has been declined last year. Is it the first year that Japan is declining? No, it's a recent trend in the number of domestic applications that is filed in Japan that has been declining slightly. But at the same time, we've seen that as a general trend, the number of international applications filed by Japan has been increasing. So it reflects a change of patenting behaviour, you see. So Japanese enterprises, their share of international patent applications has been rising quite a healthy manner, and their numbers of international patent applications have been rising. But the number that they're filing internally is smaller overall, and it is a change that Japanese enterprises will talk about of behaviour of focusing on key technologies, perhaps not patenting around them as much as they once did. And that, in turn, as a guess or a supposition, you could also say that perhaps that also reflects over time the higher value or the more basic nature of the inventions that are coming out of Japanese industry. So they're less incremental and more basic. But that's a fairly big statement that I'm making, but I think that a lot of people would say that this is one of the things that's happening. Is there, does it also reflect the fact that the domestic market is shrinking somehow? Because I know that Panasonic and Toyota are filing a lot of applications, more and more abroad, as you said. I couldn't comment on that. I don't think that's the case, but I think it's more related to what I said than the way in which they're strategising for their filing. Any more questions? Thank you very much. I think for the last few years you said you were going to do an exercise to collect data on the potential cash flow of all these inventions, in other words, the Royal Trans-Lean to Patterns and Trademark. What happened to that research? Well, I don't think that's entirely correct. You always asked us to do that. I don't think we have ever committed to doing that. Listen, we would like to if we could. It's just very difficult, if not impossible. The problem is that any type of licensing arrangements are usually concluded between private parties. There is no official measurement of these. There is no reporting requirement. So there is no obvious data source that you can turn to address this. At the international level. Well, there is internationally you would find some data on royalties and license fees in the balance of payments. That is data that we've talked about in our past reports. You get some interesting information out of that. One should also be extremely cautious in using those data, mainly because they often relate to intra-company payments of royalties and license fees that have to do with profit shifting. Again, I might refer you to next year's World IP report where we try to document that and provide a little bit of background analysis on that. But no, listen, I think it's a topic where many of my colleagues also in intellectual property offices around the world struggle with. I think from the viewpoint of those who analyze the intellectual property system, it would be great to have much greater information on what happens to patents after they are granted. I think the director general has also pointed that out on occasions. In practice it's just very difficult to do. There have been a number of attempts to do this through surveys and they have largely failed because companies have not responded simply because they consider that confidential information. So that remains a highly challenging area of measurement. That's for private companies, not private listed. They would have to show the cash flow from that segment. That is correct. You would find some data in, for example, security and exchange commission filings. But again, that's highly aggregated data for IBM. You would find licensing receipts of I think more than a billion dollars. So it is true for selected companies, you would find that. But even with those kind of data points, it's very hard to establish a systemic picture. Thank you very much and I guess it's happy holidays.


Hello everyone, welcome to our talk. Today we want to describe our efforts to enable service mesh scenarios on the Windows platform using the on-wipe proxy. Hi, my name is Praveen Balasubramanian. I currently work as an engineering manager at Microsoft. I lead a development team that focuses on the core networking platform and the network stack for Windows. My recent work has focused on high performance networking, internet protocol evolution, and container networking. With me here today is Nick. Hey, how are you doing? I'm Nick Jackson. I'm a developer advocate at HashiCorp and I'm also an SMI maintainer, service mesh interface. I'm also writing a book on service mesh patterns with my good buddies, Lee and Paul, and I am incredibly excited about seeing service mesh absolutely everywhere, including on Windows. Hi everyone, I'm Sotiris and I currently work as a software engineer at Microsoft. I am a maintainer of on-wipe proxy and a core member of the on-wipe Windows Development Group. On on-wipe, my work focuses on low-level networking and supporting the Windows platform abstraction layer. I'm also a contributor at open service mesh. Hi everyone, I'm Kalia Subramanian. I'm a software engineer at Microsoft. So previously at Microsoft, I worked on Windows container networking and I contributed to Qproxy, Flannel, and QBDM for Windows. Now I'm on the open service mesh team at Microsoft where I have been helping out getting Windows in OSM and also working on secured clusters for OSM. So now let's get into our agenda. So what is on the agenda today? We will start out by recapping what is a service mesh and we will make a case for Windows platform support. We will then describe the four major components that are required for a service mesh deployment, including the platform, the proxy, the container orchestration system, and the service mesh control plane. We will then demo a service mesh powering both Windows and Linux containers. We will conclude with a summary and our future roadmap. So what is a service mesh? In a nutshell, it's a solution that provides various enhancements to your applications, service to service communication. In the context of Kubernetes, a service mesh will inject a proxy, such as Envoy, commonly called as a sidecar into selected workload pods. The sidecar proxy intercepts incoming and outgoing traffic based on configured policies. As you can see in this diagram, Envoy is intercepting all the inbound and outbound traffic for two containers running a Node.js application. Service mesh enables users to easily apply features that the proxy offers consistently and at scale. Some of the prominent features of a service mesh include controlled traffic management, for example, load balancing, traffic splitting, applying policies such as rate limiting or retries. Service mesh also enables observability of various metrics like service to service latency, request per second and number of HTTP errors, et cetera. And finally, a service mesh also improves security by bringing encryption and authentication, for example, by enforcing mutual TLS and encrypting all the network traffic in the cluster without any application code changes. So you may ask, why do we care about service mesh on the Windows platform? As you can see here, a lot of users are asking for a service mesh that supports Windows. In the industry, many organizations have a mixture of OS platforms in their environments. Many customers are claiming that lack of service mesh support for Windows is one of the biggest blockers to containerize their applications or even to bring their enterprise workloads to the cloud. Without a cross-platform service mesh, they face really hard choices. Either rewrite the applications to run on Linux, which is very expensive, or continue maintaining legacy applications and infrastructure. There is also strong interest from many Microsoft first-party applications which are containerizing. They are adopting a microservices architecture and desired a service mesh that supports the Windows platform for all the benefits we talked about previously. Observability, security and traffic management. Now let's look at the four components that need to come together for a service mesh solution. First up is the operating system platform, like Linux or Windows, that supports containers and container networking. Next up is the Sidecar proxy that is used to redirect traffic and has the rich feature set for observability, security and traffic management. Examples here include Envoy and Linkardee. Next is the container orchestration solution, for example, Kubernetes. And finally, the service mesh control plane, which makes the solution scalable. And examples here are Istio and Open Service Mesh or OSM. The focus of our talk today is the Windows Server Operating System and Kubernetes is used for container orchestration. Our service mesh solution will be completed by Open Service Mesh, which uses Envoy as the Sidecar proxy. First, let's begin by talking about the first component, which is the operating system platform. Windows Server 2022 is the most recent release of Windows, which is now generally available. In this release, we have added platform capabilities to Windows to support traffic redirection for containers. The redirection works for both outbound and inbound traffic and utilizes the Windows filtering platform capabilities. We have new host networking service or HNS APIs, which support new policies for endpoints. These policies are applied on the container host and they require admin privileges. Currently, these APIs only support TCP over IPv4, but we do have future plans to add support for UDP and IPv6. We will take a deeper look at this policy in a later slide. Windows Server 2022 also includes new Winsock socket APIs that allow a Sidecar proxy to query the original destination for a redirected connection. These APIs are available on the latest SDK and have already been integrated with the Envoy proxy. This release also features smaller container images and extended support for nano-server-based images. Now let's compare and contrast the redirection policies between the Linux and Windows platforms. If you look at the left-hand side on Linux, the IP table policy allows configuration of proxy redirect rule with specific port numbers for both outbound and inbound directions. The rules also allow skipping redirection based on user ID, IP prefixes, or port numbers. This allows exemption of Envoy's own control traffic and prevents redirection loops. On the right-hand side, you can see that the new HNS policies in the form of a PowerShell script. If you notice, there's a lot of similarities. The HNS endpoint command let takes in redirection policy in the JSON format. Both outbound and inbound redirection are supported with specific proxy ports for the sidecar. This policy also supports exceptions, which are again based on IP addresses and port numbers. In the user set field, you can specify either a user or a user group that is exempt from this redirection policy. For Windows containers, one challenge is that user sets are generated randomly at runtime. So it becomes impossible to know in advance the user set that Envoy is going to run as in every part. This is where specifying a group set is extremely useful. You can then run the proxy from a known user group. Next up, Sotiris will describe the next component of the service mesh solution, which is the Envoy proxy. Thank you Praveen for the summary of all the changes in Windows Server. Over the past one-and-a-half year, the Envoy Windows Development Group has made substantial progress on porting Envoy to Windows. We announced general availability support for Envoy on Windows in May. And for the past 10 months, the Envoy pipeline has been compiling and running tests for almost every feature at every pull request. We strive to make Envoy configurations cross-platform. We believe that this will help control plane developers who want to apply the same configuration across their entire cluster. An example of such control plane is service mesh. With that goal in mind, we have a cross-platform implementation of the original destination listener that underpins service mesh Envoy configurations. The only notable difference is that on Windows, you must also specify the traffic direction property of the listener. We use this information to ensure that proxy connections will have the same security properties as the original connection. This is important for security reasons as the proxy and the application might have different firewall rules. We also have confirmed that the traffic direction property is already set on most service mesh implementations. Also, we have implemented cross-platform access loggers to standard output. So you can enjoy the observability that Envoy offers on all platforms. Finally, we have been working on the Envoy network data path. We improved the asynchronous event loop on Windows to scale across multiple threads. Also, we have introduced synthetic events that allow us to emulate EPO behavior on Windows. The last piece of the puzzle is configuring Kubernetes to apply the HNS traffic redirection policy for you. Traditionally, on Linux, redirection policy is configured by the init container. The init container is scheduled by the service mesh to run before the application and it applies the IP table rules on the pod. This is not possible on Windows. The reason why it is not possible stems from a core difference between HNS policies and IP tables. HNS policies are a property of the host and not of the pod. As a result, these HNS policies need to be configured by a CNI plugin. CNI plugins are already supported by Kubernetes. For experimentation purposes, if you cannot the redirection policy manually to the static configuration of your existing CNI plugin. However, we accept that for production environments, you will need a CNI plugin that will read these policies from pod annotations and have the options to have different policies on different pods. Finally, you need to run Envoy as Envoy user. Envoy user is already set up for you in the Envoy container image. The Envoy user is already configured to be part of the network operators group. You can leverage the fact that Envoy user is part of a well-known group to configure traffic redirection exemptions for Envoy. With this in place, Envoy traffic will not be redirected and you will not have to deal with nasty infinite redirection bugs. Open ServiceMess or OSM for short is a lightweight and extensible cloud native ServiceMess. OSM takes a simple approach for users to uniformly manage, secure, and get out of the box of durability features for highly dynamic microservices environments. It leveraged an architecture based on Envoy reverse proxy sidecar and works by injecting an Envoy proxy as a sidecar container next to each instance of your application. OSM is built to be simple to understand and contribute to. Users should be able to install, maintain, and operate OSM in their cluster with minimal effort. It is easy to troubleshoot and it even comes with tooling that makes debugging as easy as running an app on the terminal. You can easily configure it with a ServiceMess interface. A standard for all service messes on Kubernetes that provide a basic feature set for the most common use cases. Now for the exciting part, let's see a demo where Windows Server 2022, Envoy, Kubernetes, and Open ServiceMess work together for the first cross-platform ServiceMess demo. Hey, I'm here with Kalya who is a contributor at OSM to give you a demo of the first cross-platform ServiceMess implementation. Before we start with a demo, do you want to introduce yourself and tell us more about the OSM project? Thanks, Atyris. Hi, my name is Kalya and I'm a developer on Open ServiceMess or OSM, which is an open-source ServiceMess. So people can use OSM to secure and manage traffic between the services that they're running. And for those who aren't familiar with service meshes, generally the way that it works is that there's a proxy running next to each application that manages incoming and outgoing traffic. We call this the data plane and OSM uses Envoy proxy to implement the data plane. The data plane gets controlled by a control plane running in the mesh. The control plane makes sure that those proxies get set up properly and reflect the right traffic-related rules for the application. So as a user, how do I configure the control plane? So users can configure the OSM control plane using the ServiceMess interface or SMI. So SMI provides a set of APIs for the most common features that people use service meshes for. For example, there's a traffic-split API which allows users to define how they wanna split traffic between different versions of an application. There's several meshes that have built against SMI already. So you might even be able to use your existing SMI configurations with OSM. Awesome, I think we're gonna also see more about the SMI on the demo as well. But before we get to that, do you wanna walk us through about the demo that you have prepared on the OSM repository? Yeah, so the OSM demo is comprised of the bookstore service, which is a top-level service that load bounces across various bookstore application pods. And we have two versions of our bookstore, bookstore V1 and bookstore V2. And each of those versions get their own service as well. So the V1 and V2 services act as backends in our bookstore demo application. We also have two clients, Book Buyer and Book Thief. And those clients make requests to the top-level bookstore application. And then we use the traffic-split to serve those requests to the corresponding backend services. We also have Book Warehouse and the bookstore makes requests to Book Warehouse to restock on books. And I assume this is not the standard OSM demo, but there's some services running on Windows and some are running on Linux, right? Yep, exactly. So if we take a look at our cluster and we do kubectlgetnodes-owide, we can see that we have two worker nodes that are Windows Server 2022, as well as a Linux worker node. And if I get all the pods, I can see that some of them are scheduled on Windows and some of them are scheduled on Linux. Exactly. So if you take a look, you can see that we have our bookstore V1 pod running on Linux and we have our bookstore V2 pod running on Windows. We also have Book Buyer, which is running on Windows as well. And I see that the OSM control plane is running on a Linux node. Exactly. So the OSM control plane runs fully on Linux, but it's still able to program the data plane, regardless of whether the Envoy proxies are running for Windows applications or Linux applications. And how can we see the interaction between the Book Buyer and the bookstore now? So for this demo, we have installed an Ingress gateway. So if you get the public IP, then you'll be able to access our Book Buyer UI. So here you can see our Book Buyer UI that we're accessing via Ingress. You can see that the Book Buyer is buying books from both bookstore V1 and bookstore V2, and it's buying pretty evenly between the two. So there is an SMI policy that configures this, right? Yes, we're using SMI traffic split. And if you go to our cluster, we can actually view the traffic split that we're using. So here you can see that we have our traffic split spec and we have two backend services for bookstore V1 and bookstore V2, and they're both assigned equal weights of 50. We also see a service field, sometimes referred to as a root service, and this root service just refers to bookstore, which is the top level service that represents the two backends. And I assume this is highly dynamic. So if I want to change the weight between the two services, I can just update this policy, right? Yep, so that's really easy. All you have to do is just update your traffic split and apply it, and then the OSM control plane will take that new traffic split and use that to configure the data plane appropriately. Okay, I think I have this new policy ready here. I just cut it on the terminal so people can see it, and let me apply it right now. So here you can see that with this new traffic split, we're going to be sending all of the traffic to bookstore V1 since it has a weight of 100, and no traffic will be going to bookstore V2. And if you look at our book buyer UI again, you can see that we are no longer buying books from bookstore V2, but we should see the bookstore V1 counter increment. In this presentation, we revisited the fourth verticals that underpin any service mess. We saw the HNS policies and Windows socket options that allow you to configure the operating system to redirect traffic to a sidecar proxy. We went through the progress that Windows Development Group has made to make Envoy proxy run seamlessly on Windows. Then we went through the configurations needed to ensure that Kubernetes applies the redirection policy for you. Finally, we showed the first demo of a cross-platform service mess running on OSM. We thought I will hand it back to Praveen to tell you what is in our roadmap and how you can stay updated. Thanks, Sothiris. That was a great demo. On our future roadmap, we have worked across the OS platform, OSM, as well as Envoy. On the Windows platform side, we would like to enhance HNS policies to support IPv6 and UDP traffic redirection. On the service mesh side, we would like to upstream production grid support for the Windows platform on OSM. And finally, we'd like to improve Envoy extensibility by adding web assembly support on Windows and also publish Windows Server 2022 container images with Envoy. We encourage you to join us and contribute to this effort and also provide us feedback for future improvements and our roadmap. All the work here on Envoy and OSM is being done upstream on GitHub. You can look at known issues, report new issues or feature ads on GitHub. PRs are also very welcome. In addition, we have Slack channels where you can get support and answer two questions and help coordinate work. This work would not have been possible without tireless effort across the industry. We would like to thank all contributors across Windows networking and the OSM and Envoy communities to help make this a reality. And with that, thank you everyone for attending our presentation. We'd like to open it up for any questions you may have.


Yeah, very very recently. Super Fracture! Ooh! Come on! Damn, dude, we're having a good day. Got Busquets to 150, and it is going to be Sergio Busquets for InterMiami. There we go, Messi's boy from Barcelona. That'll be Scott D with the Super Fracture Sergio. Scott! Magda for you, sir. Very nice one there, one-on-one on the Sergio Busquets. Long time, Spanish international player. Very nice.


Hi everyone, Joe for Jasper's case breaks.com. We did it. We knocked out the last filler for that hip raid Officially licensed Jersey break that's coming up in the next video. Let's do this break first series one twenty-twenty-four series one random team two No vet commons ship also given away five extra spots here. We've got a number of dice rolls here first of all Big thanks to this group for making it happen. Appreciate you Great job. Let's see who's gonna win extra spots that will buy one get one opportunities here Let's roll it randomize it two and a four six times top five after six one two three four five and six After six Matthew Alan Matsui Zach Fred and Alan Murdock the Alan M's getting extra spots here in addition to Matt Zach and Fred after six Congrats, let's put those little rooftop symbols next to your name. So you know you won those spots in this In this break all baseball teams are in There's everybody again, let's roll it randomized names and teams three and a one four times for names and teams One two three and a one four times Three and a one four times for the teams One two three and four now trade windows open But we're gonna keep the video running if anybody wants to make a quick trade Alan with a guardian Stephen K with the Rockies Alan with a cub Zach with a dime max Fred with the rays Chad Giants Tigers Fred Yankees Alan with the Nats Jared with the Reds Alan with the twins Cody with the Pirates Matt with the A's Jared with the Royals Alan Murdock with the White Sox Fred with the Marlins Omar with my Dodgers Alan with the Blue Jays Alan Matsui With the Cardinals and Phillies Matthew with the Astros even K with the Braves Robert with the Brewers Peter with the Brewers Robert with the Mariners Alan Matsui with the Red Sox Matthew with the Angels Matsui with the Mets and Padres Omar with the Orioles and Zach with the Texas Rangers Again, we'll keep the video running any trades No, maybe not. All right TWC let's put that in the chat to let you know that the trade window is closed That's what TWC stands for let's print and Rip there's everybody right there final printout official list Let's see what we got in here. It could be some surprises In this hobby box one autograph or memorabilia Not and it's just or good luck A little LA Kings hockey on the background. They're up by a goal against the blue jackets nice. Helly Della Cruz That'll be for Jared and the regs. We've got a Wilmer Flores silver that will ship see what we got on this side nice Except to nothing here's a nice Adley Rushman to 299 Nice all tops team It's gonna go to Omar and the O's No auto or relic yet Speak of the devil. There's the relic sunny gray twins That will be for Alan Murdoch In that 1989 design and we got Emmett Sheehan For the Dodgers Omar with the Dodgers we're gonna randomize that Otani Betts car We'll do a we'll do a left-right randomizer on that And that was for the extra giveaways and we'll also get an extra list for the For the jerseys as well, we'll use the same dice roll or we'll do a angels Dodgers randomizer All right, same dice roll for both lists one and a four five times one two three four and five Dodgers will get that Otani Dodgers card Omar with the Dodgers After five now. Here's the big one here. Who's gonna win those eight hit parade spots after five fingers crossed Good luck top eight after five one two three four and fifth and final time You can already see Jared very close It's not quite nine through thirty. Thank you very much everyone for giving this shot appreciate it We'll get him next time top eight You're in this break. You're in the next video. We'll see you there That's gonna be Zach is in Zach's happy. So it's Matthew Omar Peter Alan Matsui Omar Alan Murdoch and Alan Murdoch Congrats to the Allen M's. There's your top eight after five. We'll see in the next video. Jasper's case breaks. Bye


You need a financial advisor with the freedom to focus on your specific needs. Whatever your goals, Reeve Potter can create a game plan tailored to you. Call Reeve at 432-0777 at Pikeville, Kentucky to learn more. On Thursday, February 16th, signature smiles in Pikeville will be offering free dental cleanings, x-rays, and ceilings during their Give Kids a Smile event. Any child 18 or under is eligible without an appointment or insurance. Fillings and extractions can be performed with a follow-up appointment if necessary. Well, you can make an appointment but you don't have to. You can just come in and we are doing exams on children under age 18 as low as four months. That's what the American Dental Association recommends, is start at four months. And then we do x-rays, we do exams, sealants if need be, and clean their teeth. If they need to have fillings done or extractions or anything like that, then they can schedule to come back if they want to. But they don't have to. As a family-oriented business, signature smiles has plenty of experience working with children. Sugar-free candy and face paintings will be available for the kids while they wait. We'll have treats that day. Sugar-free, of course, if it's candy. And we may have other things going on. Last year we had face painting and just other things for the children while they were waiting, just to entertain them while they're waiting. We generally have a lot of children that come in and we see all ages. And actually we, other pediatric dentists refer patients here. So we work pretty good with children. Reporting from Mountain Top News, I'm Nick Colum.