Why Are You Slowing Down My WiFi, Apple? To Make Things Better?
I defend Apple a lot. When Network World wrongly accused the original iPhone of flooding Duke University's network, I defended Apple. (It was later found to be a Cisco problem.) When a health care provider I was doing some work for blamed SIP-enabled iPhones for a VoIP problem, I eventually found out that the APs were to blame. (The APs were failing to respond to WiFi frames tagged as "Background" QoS.) Time and time again networking folks blame device makers like Apple, and time and time again the problem ends up being the network.
There are times, however, when it really is Apple's fault. When the network is operating just fine. This is one of those times. The problem is that I just don't know why.
802.11n (HT) and 802.11ac (VHT) networks operate in co-existence with first generation (802.11a/b/g, that is) WiFi a lot. When that happens, the HT or VHT access point operates in mixed mode.
There are all sorts of ramifications when a WiFi network operates in mixed mode, but one of the bigger ones (a ramification that usually results in a throughput loss between 25% and 40%) is the protection mechanism. When the the AP operates in mixed mode, it transmits data using the protection mechanism and it uses Beacon and Probe Response frames to tell WiFi devices to use the protection mechanism. An AP or device using the protection mechanism will precede its data frame transmissions with the transmission of a non-data carrying frame called a request to send (RTS) or a clear to send (CTS). The RTS and CTS frames are always sent at a data rate that the legacy devices can understand. For example, a WiFi network with a mix of 802.11a and 802.11ac devices would see 802.11a (24 Mbps, typically) RTS and/or CTS frames sent in advance of data that would be sent using VHT rates (up to 1,300 Mbps with today's gear).
An important note in all of this is that if there is no mixed mode, then there doesn't need to be any protection mechanism. If you've got a bunch of HT devices all associated to an HT AP, then there shouldn't be any RTS or CTS frames slowing down the data.
Rough & Tumble Films (a movie production company whose owners I'm friends with and who have a little country noir called "We Gotta Get Out Of This Place" airing on the Starz network later this year) has a WiFi network with an HT AP and all HT (or VHT) devices. (See the Probe Request frame below showing the "R&T" network indicating that all devices are HT-capable.)
The R&T WiFi network should see HT data frames going across the WiFi channel without any RTS and/or CTS frames slowing it down. That is not, however, what shows up in my WildPackets OmniPeek capture. (See that the highlighted data frames below are sent at HT rates of 243 Mbps and 300 Mbps, but they are surrounded by RTS and CTS frames sent at 24 Mbps.)
What gives, I wondered? Are the Probe Response frames coming from the AP giving me bad information? Are devices acting up? My initial capture was done on data going to and from my laptop (MacBook Air using dual-band, two-stream 802.11n), so I wanted to add my phone to the network to see if anything was different.
When I added my phone (iPhone 5 using dual-band, single-stream 802.11n), the same behavior occurred. More 24 Mbps RTS and CTS frames were surrounding my HT (this time 135 Mbps or 150 Mbps) data.
I noticed a trend when investigating all of this protection mechanism traffic on my friends' non-mixed mode WiFi. I noticed that the RTS frames were only being sent by my devices. The APs were never sending an RTS frame. Beyond that, I noticed that when the AP was the transmitter of a data frame, neither an RTS or a CTS preceded that data frame. In short, I noticed that the AP was not using the protection mechanism, which my laptop and phone were.
I know, then, that Apple devices (both iOS and OS X) slow down the channels they are using by acting like it's mixed mode even when it's not. What I don't know is, Why? Did Apple make a mistake? Is there some HT or VHT protocol that I am unaware of that causes devices to use the protection mechanism even when APs don't? Or is Apple doing this on purpose because someone at Apple thinks that their devices function better when the protection mechanism is always on?
After seeing Apple devices voluntarily engage in the protection mechanism, it made me think back to a question that I received while doing a Reddit AMA last year. A person asked about RTS/CTS being used to manage network traffic and getting devices to cooperate. The person from Reddit mentioned that he (sorry ladies, but when his Reddit handle is "ShadowHawk109" and he posts about beer, WiFi and William Shatner, it's got to be a guy) did work in academia, so I just assumed that he didn't know what he was talking about. Maybe he was on to something. Maybe Apple believes that their devices will have a more consistent data connection over WiFi if RTS/CTS frames are being used all the time, and so they've enabled it in their devices. Maybe Apple doesn't care that much if their devices cause the maximum available throughput to be lower on the channel.
Whatever the reason may be that Apple devices have been programmed to use RTS/CTS frames, WiFi professionals are going to have to deal with the impact. It could mean that our throughput tests mean even less and that our ability to support high density deployments has been expanded.
There are times, however, when it really is Apple's fault. When the network is operating just fine. This is one of those times. The problem is that I just don't know why.
802.11n (HT) and 802.11ac (VHT) networks operate in co-existence with first generation (802.11a/b/g, that is) WiFi a lot. When that happens, the HT or VHT access point operates in mixed mode.
There are all sorts of ramifications when a WiFi network operates in mixed mode, but one of the bigger ones (a ramification that usually results in a throughput loss between 25% and 40%) is the protection mechanism. When the the AP operates in mixed mode, it transmits data using the protection mechanism and it uses Beacon and Probe Response frames to tell WiFi devices to use the protection mechanism. An AP or device using the protection mechanism will precede its data frame transmissions with the transmission of a non-data carrying frame called a request to send (RTS) or a clear to send (CTS). The RTS and CTS frames are always sent at a data rate that the legacy devices can understand. For example, a WiFi network with a mix of 802.11a and 802.11ac devices would see 802.11a (24 Mbps, typically) RTS and/or CTS frames sent in advance of data that would be sent using VHT rates (up to 1,300 Mbps with today's gear).
An important note in all of this is that if there is no mixed mode, then there doesn't need to be any protection mechanism. If you've got a bunch of HT devices all associated to an HT AP, then there shouldn't be any RTS or CTS frames slowing down the data.
Rough & Tumble Films (a movie production company whose owners I'm friends with and who have a little country noir called "We Gotta Get Out Of This Place" airing on the Starz network later this year) has a WiFi network with an HT AP and all HT (or VHT) devices. (See the Probe Request frame below showing the "R&T" network indicating that all devices are HT-capable.)
The R&T WiFi network should see HT data frames going across the WiFi channel without any RTS and/or CTS frames slowing it down. That is not, however, what shows up in my WildPackets OmniPeek capture. (See that the highlighted data frames below are sent at HT rates of 243 Mbps and 300 Mbps, but they are surrounded by RTS and CTS frames sent at 24 Mbps.)
What gives, I wondered? Are the Probe Response frames coming from the AP giving me bad information? Are devices acting up? My initial capture was done on data going to and from my laptop (MacBook Air using dual-band, two-stream 802.11n), so I wanted to add my phone to the network to see if anything was different.
When I added my phone (iPhone 5 using dual-band, single-stream 802.11n), the same behavior occurred. More 24 Mbps RTS and CTS frames were surrounding my HT (this time 135 Mbps or 150 Mbps) data.
I noticed a trend when investigating all of this protection mechanism traffic on my friends' non-mixed mode WiFi. I noticed that the RTS frames were only being sent by my devices. The APs were never sending an RTS frame. Beyond that, I noticed that when the AP was the transmitter of a data frame, neither an RTS or a CTS preceded that data frame. In short, I noticed that the AP was not using the protection mechanism, which my laptop and phone were.
I know, then, that Apple devices (both iOS and OS X) slow down the channels they are using by acting like it's mixed mode even when it's not. What I don't know is, Why? Did Apple make a mistake? Is there some HT or VHT protocol that I am unaware of that causes devices to use the protection mechanism even when APs don't? Or is Apple doing this on purpose because someone at Apple thinks that their devices function better when the protection mechanism is always on?
After seeing Apple devices voluntarily engage in the protection mechanism, it made me think back to a question that I received while doing a Reddit AMA last year. A person asked about RTS/CTS being used to manage network traffic and getting devices to cooperate. The person from Reddit mentioned that he (sorry ladies, but when his Reddit handle is "ShadowHawk109" and he posts about beer, WiFi and William Shatner, it's got to be a guy) did work in academia, so I just assumed that he didn't know what he was talking about. Maybe he was on to something. Maybe Apple believes that their devices will have a more consistent data connection over WiFi if RTS/CTS frames are being used all the time, and so they've enabled it in their devices. Maybe Apple doesn't care that much if their devices cause the maximum available throughput to be lower on the channel.
Whatever the reason may be that Apple devices have been programmed to use RTS/CTS frames, WiFi professionals are going to have to deal with the impact. It could mean that our throughput tests mean even less and that our ability to support high density deployments has been expanded.
***
If you like my blog, you can support it by shopping through my Amazon link or donating Bitcoin to 1N8m1o9phSkFXpa9VUrMVHx4LJWfratseU
Ben,
ReplyDeleteNot necessarily that RTS/CTS always slows down the overall performance.
RTS/CTS are good for reliability; especially in 11ac environment.
Infact, with 11ac, RTS-CTS protection along with AMPDU over AMSDU performs better than without RTS for all the tests that I have been doing.
Its not bad at all to do RTS-CTS anymore;
The penalty are actually very less for the extra reliability.
RTS/CTS diminishes throughput capacity. As stated in the article, if the counterweight is an improvement in consistency, then that's good.
ReplyDeleteInteresting article Ben! I have been investigating lots of RTS/CTS on my WLAN for some time and was actually hoping to garner your opinion, but couldn't find a contact-me e-mail address. I think it might be the same thing, but I'm not familiar enough with packet traces to be sure. (yet!).
ReplyDeleteben at sniffwifi dot com
ReplyDeleteI feel a lot more people need to read this, very good info
ReplyDeleteI am sure that this is going to help a lot of individuals. Keep up the good work. It is highly convincing and I enjoyed going through the entire blog.
ReplyDeletedigital marketing courses in hyderabad with placement
Fascinating post. I Have Been considering about this issue, so thankful for posting. Totally cool post.It 's very generally very Useful post.Thanks
ReplyDeletedata science certification
This post is very simple to read and appreciate without leaving any details out. Great work!
ReplyDeletedigital marketing courses in hyderabad with placement
Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people..
ReplyDeletedata scientist course
I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors.
ReplyDeletedata science training in chennai
wow, great, I was wondering how to cure acne naturally. and found your site by google, learned a lot, now i’m a bit clear. I’ve bookmark your site and also add rss. keep us updated.
ReplyDeletedata scientist course in hyderabad
Fantastic article I ought to say and thanks to the info. Instruction is absolutely a sticky topic. But remains one of the top issues of the time. I love your article and look forward to more.
ReplyDeleteData Science Course in Bangalore
I'm glad I found this blog! Occasionally, students want to know the keys to writing productive literary essays. Your first-class knowledge of this great job can become a suitable foundation for these people. Good
ReplyDeleteBest Data Science Courses in Bangalore
Hi Thanks for Sharing this Valuable Information with us: this is very useful for me. Keep it Up.
ReplyDeleteartificial intelligence course in aurangabad
Excellence blog! Thanks For Sharing, The information provided by you is really a worthy. I read this blog and I got the more information about
ReplyDeletedata scientist course in pune
I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people.
ReplyDeleteBest Data Science courses in Hyderabad
This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me..
ReplyDeletemachine learning training in aurangabad
GST University Admission result 2020-21 will be published by gstadmission.ac.bd website. GST Eligible List Result Published Very Soon. Candiates Guccho Admission Result check easily our website- jobnewsbd24.com
ReplyDeleteI was just examining through the web looking for certain information and ran over your blog.It shows how well you understand this subject. Bookmarked this page, will return for extra. data science course in vadodara
ReplyDeleteHi. I have just found a very good site which talks about VIN decoder, visit their website here. You can use the tool to inquire information on any car's history by finding the detail on its VIN number. Let me know how your experience with it after using the tool.
ReplyDeleteFabulous post, you have denoted out some fantastic points, I likewise think this s a very wonderful website. I will visit again for more quality contents and also, recommend this site to all. Thanks. 토토사이트추천
ReplyDeleteI finally found great post here. Thanks for the information. Please keep sharing more articles.카지노사이트
ReplyDeleteI recently came across your article and read it. I want to express my admiration for your writing skills and your ability to get readers to read from start to finish. I would love to read more recent articles and share my thoughts with you.
ReplyDeleteDigital Marketing Course in Bangalore
You published a wonderful short article. I was extremely touched after I saw your writing, and also I actually suched as the tale of what I was seeking due to the fact that it consisted of every little thing. I'm so interested concerning just how you thought about this details and also exactly how you discovered it. Take a look at my writing as well as let me understand. 바카라사이트
ReplyDeleteThank you for sharing wonderful content
ReplyDeletedata scientist training in aurangabad
Thanks for posting the best information and the blog is very good.data science course in Lucknow
ReplyDeleteThat's a really impressive new idea! 메이저토토사이트추천 It touched me a lot. I would love to hear your opinion on my site. Please come to the site I run once and leave a comment. Thank you.
ReplyDeleteYou have completed certain reliable points there. I did some research on the subject and found that almost everyone will agree with your blog.
ReplyDeleteDigital Marketing Course in Bangalore
ReplyDeleteVery good message. I came across your blog and wanted to tell you that I really enjoyed reading your articles.
Data Analytics Course in Bangalore
When I read your article on this topic, the first thought seems profound and difficult. There is also a bulletin board for discussion of articles and photos similar to this topic on my site, but I would like to visit once when I have time to discuss this topic. 안전토토사이트
ReplyDeleteYour internet site has excellent material. I believe it was a great chance to alter my mind once more after reading this post. I'm composing like you. Would certainly you such as to see my blog post and also request for responses? 바카라사이트
ReplyDeleteMany thanks for the article, I have a lot of spray lining knowledge but always learn something new. Keep up the good work and thank you again. 메이저사이트모음
ReplyDeleteI accidentally searched and visited your site. I still saw several posts during my visit, but the text was neat and readable. I will quote this post and post it on my blog. Would you like to visit my blog later? 토토사이트순위
ReplyDeleteThis is the perfect post.메이저토토사이트 It helped me a lot. If you have time, I hope you come to my site and share your opinions. Have a nice day.
ReplyDeleteA commitment of gratefulness is all together for such a phenomenal post and the audit, I am completely pushed! Keep stuff like this coming. ufa168
ReplyDeleteThanks for the blog filled with so many information. Stopping by your blog helped me to get what I was looking for. Now my task has become as easy as ABC. 안전놀이터
ReplyDeletePapers get to operate through Bible helpers and also plagiarism checkers to be certain that the author did not find idle at any stage in the process. Language inconsistencies won't be a thing with your newspapers as the specialists of our school paper writing support are passionate about writing and are always excited to strike you with something fresh. By: 안전놀이터
ReplyDeleteI figure this article can be enhanced a tad. There are a couple of things that are dangerous here, and if you somehow managed to change these things, this article could wind up a standout amongst your best ones. I have a few thoughts with respect to how you can change these things. 메이저놀이터
ReplyDeletehe blog was how do i say it… relevant, finally something that helped me. Thanks온라인경마
ReplyDeleteThanks for sharing this article. This article was very helpful to me. Keep moving. 파워볼
ReplyDeleteThis site is known as a walk-by way of for the entire data you wished about this and didn’t know who to ask 립카페. Glimpse right here, and you’ll positively discover it.
ReplyDeleteI’d have to talk to you here 마사지블루. Which isn’t something Which I do! I love to reading a post that should get people to think. Also, thank you for allowing me to comment!
ReplyDeleteI just want to say I’m new to blogs and certainly savored this blog site. Very likely I’m planning to bookmark your blog 출장마사지. You amazingly have fantastic articles. Thanks for sharing your blog.
ReplyDeleteThank you for this wonderful post! It has long been extremely helpful. 메이저사이트I wish that you will carry on posting your knowledge with us.
ReplyDeleteIt has a good meaning. If you always live positively, someday good things will happen. 메이저사이트Let's believe in the power of positivity. Have a nice day.
ReplyDeleteExtremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one. Continue posting. A debt of gratitude is in order for sharing.cloud computing course fee in hyderabad
ReplyDeleteTwo full thumbs up for this magneficent article of yours. I've really enjoyed reading this article today and I think this might be one of the best article that I've read yet. Please, keep this work going on in the same quality. artificial intelligence training in delhi
ReplyDeleteMuch obliged for giving a helpful article containing significant Information.
ReplyDeleteAI Training in Hyderabad
Amazingly by and large very interesting post. I was looking for such information and thoroughly enjoyed examining this one. Keep posting. An obligation of appreciation is all together for sharing.
ReplyDeleteethical hacking in hyderabad
Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing
ReplyDeletedata analytics courses in hyderabad
Your article is great. I think it will be praised anywhere provide on this site has helped me greatly. Thanks for all of your time & work. 안전토토
ReplyDeleteI like your blog. i ma happy to read your blog its very informative and your blog is really good and impressive you made it mice 안전토토
ReplyDeleteIt s really amazing here. I want to say that your amazing. I learn and learn a lot of useful information. 토토커뮤니티
ReplyDeleteThis kind of clever work and reporting! Keep up the very good works guys I ve added you guys to our blogroll. 안전토토
ReplyDeleteI didn t know there was a place like this. I think it s good because there are many good comments. Let s get along well from now on. 먹튀검증사이트
ReplyDeleteThis is my first time i visit here and I found so many interesting stuff in your blog especially it's discussion, thank you. artificial intelligence training in delhi
ReplyDeleteSuperbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..
ReplyDeletecloud computing in hyderabad
What a nice post! I'm so happy to read this. 안전놀이터모음 What you wrote was very helpful to me. Thank you. Actually, I run a site similar to you. If you have time, could you visit my site? Please leave your comments after reading what I wrote. If you do so, I will actively reflect your opinion. I think it will be a great help to run my site. Have a good day.
ReplyDeleteHello, I am one of the most impressed people in your article. 슬롯사이트 If possible, please visit my website as well. Thank you.
ReplyDeleteAre you the one who studies this subject?? I have a headache with this subject.우리카지노Looking at your writing was very helpful.
ReplyDeleteI have been looking for articles on these topics for a long time. 카지노사이트 I don't know how grateful you are for posting on this topic. Thank you for the numerous articles on this site, I will subscribe to those links in my bookmarks and visit them often. Have a nice day
ReplyDelete안전메이저놀이터 BET SELECTION SECRETS
ReplyDeleteThanks for your marvelous posting! I really enjoyed reading it, you could be a great author. I will be sure to bookmark your blog and definitely will come back in the foreseeable future. I want to encourage you to continue your great posts, have a nice afternoon! Digital Marketing Course in Bangalore with Placement
ReplyDeleteJio Sim Home Delivery- see how to order jio sim from home.
ReplyDeleteMetaverse kya hai- know what is metaverse.
Web 3.0 kya hai- Know what is web 3.0 and how powerful it is.
Blockchain kya hai-Know What Is blockchain
RDP Server kya Hai
NFT in Hindi-An NFT, which stands for a non-fungible token, is a unique unit of data employing technology that allows digital content.
ReplyDeleteNft Kya HaiAn NFT, which stands for a non-fungible token, is a unique unit of data employing technology that allows digital content.
ReplyDeleteYou made some good points there. I did a Google search about the topic and found most people will believe your blog. kèo nhà cái
ReplyDeleteNice post. I learn something totally new and challenging on websites. I stumbleupon on a daily basis. It will always be exciting to read articles from other writers and use something from their Websites. แทงบอลไม่มีขั้นต่ำ
ReplyDeleteNice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here . I’m going to read this. I’ll be sure to come back. thanks for sharing. and also This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article. I was surfing the Internet for information and came across your blog. I am impressed by the information you have on this blog. It shows how well you understand this subject. 승인전화없는토토사이트
ReplyDeleteThanks for every other informative site. The place else may just I get that kind of information written in such an ideal means? I have a venture that I’m just now operating on, and I have been on the look out for such information. Subsequently, after spending many hours on the internet at last We've uncovered an individual that definitely does know what they are discussing many thanks a great deal wonderful post. I like review goals which understand the cost of passing on the marvelous strong asset futile out of pocket. I truly revered investigating your posting. Appreciative to you! 먹튀검증
ReplyDeleteEvery one of the substance you said in post is too great and can be extremely helpful. I will remember it, much obliged for sharing the data continue upgrading, looking forward for more posts.Thanks . Decent to be going to your web journal once more, it has been months for me. Well this article i've been sat tight for so long. I require this article to finish my task in the school, and it has same theme with your article. Much obliged, awesome offer. This is such an extraordinary asset, to the point that you are giving and you give it away for nothing. I cherish seeing sites that comprehend the benefit of giving a quality asset to free. It is the old what circumvents comes around schedule. 먹튀폴리스
ReplyDeleteIncredible data on your web journal, thank you for setting aside an ideal opportunity to impart to us. Stunning understanding you have on this current, it's decent to discover a site that subtle elements such a great amount of data about diverse specialists. I definitely enjoying every little bit of it. It is a great website and nice share. I want to thank you. Good job! You guys do a great blog, and have some great contents. Keep up the good work . i am interestingly here. I discovered this board and I in discovering It genuinely accommodating and it helped me out a great deal. I want to present something back and help other people, for example, you helped me . 안전놀이터
ReplyDeleteThank you so much for the post you do. I like your post and all you share with us is up to date and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job . I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work . Thank you, I have just been looking for info approximately this subject for ages and yours is the greatest I’ve came upon till now. However, what concerning the bottom line? Are you certain concerning the source? 안전카지노
ReplyDeleteI truly inspired after read this on account of some quality work and instructive contemplations . I just wanna express profound gratitude for the author and want you to enjoy all that life has to offer for coming!. Thanks for sharing nice information with us. i like your post and all you share with us is uptodate and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job. Great post i must say and thanks for the information. Education is definitely a sticky subject. However, is still among the leading topics of our time. I appreciate your post and look forward to more. 토토사이트
ReplyDeleteI am impressed. I don't think Ive met anyone who knows as much about this subject as you do. You are truly well informed and very intelligent. You wrote something that people could understand and made the subject intriguing for everyone. Really, great blog you have got here. I'm glad I found this web site, I couldn't find any knowledge on this matter prior to.Also operate a site and if you are ever interested in doing some visitor writing for me if possible feel free to let me know, im always look for people to check out my web site. 안전놀이터
ReplyDeleteWhat I don't comprehended is in all actuality how you are not actually significantly more very much wanted than you may be at this moment. You are insightful. You see along these lines essentially regarding the matter of this subject, delivered me as I would like to think trust it's anything but a great deal of fluctuated points. Its like ladies and men aren't included except if it's something to achieve with Lady crazy! Your individual stuffs extraordinary. All the time handle it up! What's Taking spot i'm new to this, I coincidentally found this I've found It totally accommodating and it has assisted me with excursion loads. 먹튀마루
ReplyDeleteGreat Article. You have beautifully articulated it. Readers revisit only if they found something useful. So the core formula is to provide value to the readers. Also, Title is very important. I feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details. Glad to chat your blog, I seem to be forward to more reliable articles and I think we all wish to thank so many good articles, blog to share with us. Thank you so much for ding the impressive job here, everyone will surely like your post. 토토지식백과
ReplyDeleteAt the point when you are prepared doing all that we have discussed in the past sections, which is thinking about your shopping list with cautious arranging exactness, discovering the medications you require recall that we have an incredible number of sildenafil pills, which are conventional Viagra tablets in their various versions, structures and measurements and sending them to the shopping basket, you will be diverted to the page with your own subtleties. at the point when I have time I will have returned to peruse much more, Please keep up the When I take a gander at your blog in Chrome, it looks fine however when opening. 먹튀검증백과
ReplyDeleteThis is my first time I visit here. I found so many engaging stuff in your blog, particularly its conversation. From the huge loads of remarks on your articles, I surmise I am by all account not the only one having all the recreation here! Keep doing awesome. I have been significance to compose something like this on my site and you have given me a thought. it's really nice and meanful. it's really cool blog. Linking is very useful thing.you have really helped lots of people who visit blog and provide them usefull information. 카지노헌터
ReplyDeleteNice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here. Thanks for your article! I have read through some similar topics! However, your post has given me a very special impression, unlike other posts. I hope you continue to have valuable articles like this or more to share with everyone! Excellent read, Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work . 토토경비대
ReplyDeleteYou have done a great job on this article. It’s very readable and highly intelligent. You have even managed to make it understandable and easy to read. You have some real writing talent. Thank you. i am for the first time here. I found this board and I in finding It truly helpful & it helped me out a lot. I hope to present something back and help others such as you helped me. Easily, the article is actually the best topic on this registry related issue. I fit in with your conclusions and will eagerly look forward to your next updates. 토디즈
ReplyDeleteGreat post i must say and thanks for the information. Education is definitely a sticky subject. However, is still among the leading topics of our time. I appreciate your post and look forward to more. i am for the first time here. I found this board and I in finding It truly helpful & it helped me out a lot. I hope to present something back and help others such as you helped me. I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought you have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention. 카지노
ReplyDeleteNice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here. Thanks for your article! I have read through some similar topics! However, your post has given me a very special impression, unlike other posts. I hope you continue to have valuable articles like this or more to share with everyone! Excellent read, Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work . 카디즈에이전시
ReplyDeleteHey very cool site!! Man .. Excellent .. Amazing .. Ill bookmark your web site and take the feeds alsoI am happy to find so many useful info here in the post, we need work out more strategies in this regard, thanks for sharing. . Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as an updated one, keep blogging. Acknowledges for paper such a beneficial composition, I stumbled beside your blog besides decipher a limited announce. I want your technique of inscription... I simply must tell you that you have written an excellent and unique article that I really enjoyed reading. I’m fascinated by how well you laid out your material and presented your views. Thank you. 헤이먹튀
ReplyDeleteNice to be visiting your blog once more, it has been months for me. Well this article that ive been waited for therefore long. i want this article to finish my assignment within the faculty, and has same topic together with your article. Thanks, nice share. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info. in the relatively recent past. The experience was unquestionably astonishing. On the off chance that lone I have the opportunity 카이소
ReplyDeleteGreat tips and very easy to understand. This will definitely be very useful for me when I get a chance to start my blog.
ReplyDeletefull stack developer course
360DigiTMG, the top-rated organisation among the most prestigious industries around the world, is an educational destination for those looking to pursue their dreams around the globe. The company is changing careers of many people through constant improvement, 360DigiTMG provides an outstanding learning experience and distinguishes itself from the pack. 360DigiTMG is a prominent global presence by offering world-class training. Its main office is in India and subsidiaries across Malaysia, USA, East Asia, Australia, Uk, Netherlands, and the Middle East.
ReplyDeleteufabet1688x สมัคร เว็บแทงบอลออนไลน์ ยูฟ่าเบท ที่ได้มาตรฐานระดับโลก เว็บ UFABET มือถือ ที่ดีที่สุดในประเทศไทย แทงบอลออนไลน์ คาสิโน บาคาร่า สล๊อต ufa168
ReplyDeleteบริการทุกระดับประทับใจ เลือกเล่น betflixsupervip มีหลากหลายเกมสล็อต ไม่ว่าจะเป็น สล็อต joker, pgslotgame , super-slot ที่หาเล่นได้ทั้งหมดจาก betflixsupervip ของเรา ทางเราเปิดบริการตลอด 24 ชั่วโมง ฝากถอนได้ดั่งใจ Betflik
ReplyDeleteIt's the same topic , but I was quite surprised to see the opinions I didn't think of. My blog also has articles on these topics, so I look forward to your visit. bitcoincasino
ReplyDeleteImpressive. Your story always bring hope and new energy. Keep up the good work.
ReplyDeleteFood Processing Business
Your ideas inspired me very much.
ReplyDeleteagro food processing
Thanks for your marvelous posting! I really enjoyed reading it, you could be a great author.
ReplyDeleteSmall Business Models
Nice post. I learn something totally new and challenging on websites. I stumbleupon on a daily basis. It will always be exciting to read articles from other writers and use something from their Websites.
ReplyDeletemushroom cultivation business
I was impressed by your writing. Your writing is impressive.
ReplyDeleteOrganic vegetable Cultivation
Your post is very interesting to me. Reading was so much fun. I think the reason reading is fun is because it is a post related to that I am interested in.
ReplyDeleteCompetitive Course for Banking
I want to leave a little comment to support and wish you the best of luck. we wish you the best of luck in all your blogging endeavours.
ReplyDeleteRice Milling Technology
One to One Tuition
Wow! Thank you!
ReplyDelete검증카지노
Thanks for sharing post.
온라인카지노
ReplyDeleteThank you for some other informative blog.
온라인바카라
Your writing is impressive.
홀덤사이트
this is one of the best commented i have best smtp services
ReplyDeletesmtp relay service providers
나는 더 비슷한 주제에 관심이있을 것입니다. 정말 유용한 주제를 받았군요. 항상 블로그를 확인하겠습니다. 감사합니다. 강남 하이킥
ReplyDeleteVery best along with Most economical Jabodetabek Personal Instruction, your workers and trainers occur to your house, established your individual examine plan and may pick any arena with study ... visit https://kursus-akuntansi.netlify.app/kursus-akuntansi-jakarta-utara.html for further
ReplyDeleteYou will see a cheaper fee compared to table above, make sure again about the qualifications from the teacher / Kindergarten teacher recommended back ... for detail https://lesprivat-exed.blogspot.com/2022/03/les-privat-jakarta-utara-1-terbaik.html
ReplyDeleteAmazing tool. I love the emoticons you can use...they're so adorable! Full Wave Rectifier
ReplyDelete