<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>punt2cpu</title>
    <link>https://punt2cpu.net/</link>
    <description>Recent content on punt2cpu</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 13 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://punt2cpu.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hello World 2</title>
      <link>https://punt2cpu.net/2026/10/13/hello-world-2/</link>
      <pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://punt2cpu.net/2026/10/13/hello-world-2/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hello, world (again)&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;  &lt;span style=&#34;color:#75715e&#34;&gt;/* 8 years later */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Second attempt at blogging. Let&amp;rsquo;s see if this one sticks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ML networking snapshot 202610</title>
      <link>https://punt2cpu.net/2026/10/13/ml-networking-snapshot-202610/</link>
      <pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://punt2cpu.net/2026/10/13/ml-networking-snapshot-202610/</guid>
      <description>&lt;p&gt;My notes on where AI/ML networking stands in October 2026. This area moves fast and there is a lot of active research going on, so parts of this will age quickly. Naming is NVIDIA&amp;rsquo;s (NVLink, NCCL, PXN), AMD and Intel have their own terms for similar things.&lt;/p&gt;
&lt;h2 id=&#34;traffic&#34;&gt;Traffic&lt;/h2&gt;
&lt;p&gt;For comparison, a normal DC Clos carries lots of small TCP flows. ECMP spreads them fine, TCP recovers from drops, 3:1 oversubscription is ok.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Storage Area Networks - Books</title>
      <link>https://punt2cpu.net/2018/02/22/storage-area-networks-books/</link>
      <pubDate>Thu, 22 Feb 2018 19:30:10 +0000</pubDate>
      <guid>https://punt2cpu.net/2018/02/22/storage-area-networks-books/</guid>
      <description>&lt;p&gt;Two really great books that will help you get into the basics of SAN :&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.redbooks.ibm.com/redbooks/pdfs/sg245470.pdf&#34;&gt;Introduction to Storage Area Networks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;ibm_storage_area&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2018/02/22/storage-area-networks-books/ibm_storage_area.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.emc.com/collateral/hardware/technical-documentation/h6290-fibre-channel-over-ethernet-techbook.pdf&#34;&gt;Fibre Channel over Ethernet (FCoE) Data Center Bridging (DCB) Concepts and Protocols&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;fcoe_emc&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2018/02/22/storage-area-networks-books/fcoe_emc.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>More about TCP</title>
      <link>https://punt2cpu.net/2018/02/22/more-about-tcp/</link>
      <pubDate>Thu, 22 Feb 2018 18:36:52 +0000</pubDate>
      <guid>https://punt2cpu.net/2018/02/22/more-about-tcp/</guid>
      <description>&lt;p&gt;Just finished the TCP course from **INE ** :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://streaming.ine.com/c/ccie-rs-understaning-tcp&#34;&gt;CCIE R&amp;amp;S: Understanding Transmission Control Protocol (TCP) &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Really recommend this to anyone who is interested in a bit deeper dive of how TCP works, great quality content, **&lt;a href=&#34;https://www.linkedin.com/in/keith-bogart-2a75042/&#34;&gt;Keith Bogart&lt;/a&gt; **is doing amazing job as instructor !&lt;/p&gt;
&lt;p&gt;Some TCP facts which I didn&amp;rsquo;t mentioned in my previous post :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Before TCP connection is established TCP goes through the following steps:&lt;/li&gt;
&lt;li&gt;Closed Initial State&lt;/li&gt;
&lt;li&gt;Active Open (APP notifies the CPU and requests for service time) - client side&lt;/li&gt;
&lt;li&gt;Transmission Control Block setup process  - CPU creates TCB to keep track of each new TCP connection - for each TCP session we create a new TCB with unique identifier (socket - &lt;strong&gt;SRC IP; SRC TCP Port; DST IP; DST TCP Port&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Initial sequence number will be random to prevent attacks on TCP&lt;/li&gt;
&lt;li&gt;When TCB is ready we are sending SYN(x random Seq# number) - this is called a &lt;strong&gt;Syn Sent State&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Receiving Syn(y random seq# number from server) + ACK (seq# x + 1)&lt;/li&gt;
&lt;li&gt;Sending ACK(seq# y+1) for that&lt;/li&gt;
&lt;li&gt;TCP Client side state changes to Established&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is Active Open - TCB creation process, initiated only per need of client.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flowcontrol IEEE 802.3x</title>
      <link>https://punt2cpu.net/2018/02/21/a-bit-about-old-l2-flow-control/</link>
      <pubDate>Wed, 21 Feb 2018 19:04:19 +0000</pubDate>
      <guid>https://punt2cpu.net/2018/02/21/a-bit-about-old-l2-flow-control/</guid>
      <description>&lt;p&gt;Old known stuff, probably for everybody who is somehow related to networking, but anyway, putting it here too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Ethernet_flow_control&#34;&gt;IEEE 802.3x&lt;/a&gt; - Wikipedia link&lt;/p&gt;
&lt;p&gt;If QoS is enabled and you like to prioritize the traffic, flow control needs to be disabled,as it doesn&amp;rsquo;t care about any higher level prioritization, just when ingress traffic is coming in faster than receiver can accept it, flow control will kick in and send pause frames until the ingress-egress rate will be equalized or ingress rate is lower than egress of that interface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mounting the iscsi target and checking performance.</title>
      <link>https://punt2cpu.net/2018/01/31/mounting-the-iscsi-target-and-checking-performance/</link>
      <pubDate>Wed, 31 Jan 2018 18:06:58 +0000</pubDate>
      <guid>https://punt2cpu.net/2018/01/31/mounting-the-iscsi-target-and-checking-performance/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Installing – Let&amp;rsquo;s use Debian based manager&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;Apt-get install open-iscsi&lt;/p&gt;
&lt;p&gt;Apt-get install iperf&lt;/p&gt;
&lt;p&gt;Apt-get install nload&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scanning for targets :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Iscsiadmin -m discovery -t st -p target_ip&lt;/p&gt;
&lt;p&gt;Iscsiadm -m node -u&lt;/p&gt;
&lt;p&gt;Iscsiadm -m node &amp;ndash;login&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check if you see the object :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lsblk&lt;/p&gt;
&lt;p&gt;New disk should appear in dev - like &lt;strong&gt;sdx \-sdx1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to partition (if wasn’t partitioned yet)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fdisk /dev/sdc&lt;/p&gt;
&lt;p&gt;N&lt;/p&gt;
&lt;p&gt;P&lt;/p&gt;
&lt;p&gt;Enter&lt;/p&gt;
&lt;p&gt;w&lt;/p&gt;
&lt;p&gt;Mkfs.ext4 /dev/sdx1&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connecting the drive to system&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>End to End delay</title>
      <link>https://punt2cpu.net/2017/12/09/end-to-end-delay/</link>
      <pubDate>Sat, 09 Dec 2017 17:30:50 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/09/end-to-end-delay/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/End-to-end_delay&#34;&gt;End to end delay&lt;/a&gt; is the time from when we sent the first bit of the first line until last bit arrives to destination.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;endtoend&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/12/09/end-to-end-delay/endtoend.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Basically everything can be determined except queuing delay - it&amp;rsquo;s an unpredictable variable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Packetization delay</title>
      <link>https://punt2cpu.net/2017/12/09/packetization-delay/</link>
      <pubDate>Sat, 09 Dec 2017 17:20:28 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/09/packetization-delay/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Transmission_delay&#34;&gt;Packetization delay&lt;/a&gt; is basically how close together we can pack a bits.&lt;/p&gt;
&lt;p&gt;So it&amp;rsquo;s the time from when the first to the last bit of a packet is transmitted.&lt;/p&gt;
&lt;p&gt;Formula would be : Packetization delay = &lt;strong&gt;P&lt;/strong&gt;(size) / &lt;strong&gt;R&lt;/strong&gt;(transmit rate)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Propagation delay</title>
      <link>https://punt2cpu.net/2017/12/09/propagation-delay/</link>
      <pubDate>Sat, 09 Dec 2017 17:15:12 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/09/propagation-delay/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Propagation_delay&#34;&gt;Propagation delay&lt;/a&gt; - &lt;strong&gt;l&lt;/strong&gt; is the amount of time it takes for a single bit to travel over a link at propagation speed &lt;strong&gt;c&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Formula would be PropagationDelay=&lt;strong&gt;l&lt;/strong&gt;(cable lenght)/&lt;strong&gt;c&lt;/strong&gt;(speed)&lt;/p&gt;</description>
    </item>
    <item>
      <title>TCP congestion control</title>
      <link>https://punt2cpu.net/2017/12/08/tcp-congestion-control/</link>
      <pubDate>Fri, 08 Dec 2017 22:34:06 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/08/tcp-congestion-control/</guid>
      <description>&lt;p&gt;As we know TCP is called reliable - connection-oriented protocol. But why ?&lt;/p&gt;
&lt;p&gt;Basically because it keeps the data in its buffer before and after sending it, it makes sure that data was delivered in sequence and receiver send the confirmation about received data (ack). Otherwise data will be re-transmitted there are different ways to re-send the data, let&amp;rsquo;s explore some of them.&lt;/p&gt;
&lt;p&gt;So what is happening under the hood of this massive (big overhead comparing to UDP protocol).&lt;/p&gt;</description>
    </item>
    <item>
      <title>BGP overview</title>
      <link>https://punt2cpu.net/2017/12/08/bgp-overview/</link>
      <pubDate>Fri, 08 Dec 2017 17:52:10 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/08/bgp-overview/</guid>
      <description>&lt;p&gt;Would like to put some facts about most famous routing protocol.&lt;/p&gt;
&lt;p&gt;BGP - Border Gateway Protocol&lt;/p&gt;
&lt;p&gt;According to &lt;a href=&#34;https://en.wikipedia.org/wiki/Border_Gateway_Protocol&#34;&gt;Wikipedia&lt;/a&gt; currently we are using the version (BGP4), which was published as &lt;a href=&#34;https://tools.ietf.org/html/rfc4271&#34;&gt;RFC 4271&lt;/a&gt; in 2006.&lt;/p&gt;
&lt;p&gt;BGP4 has been in use on the Internet since 1994.&lt;/p&gt;
&lt;p&gt;Basically the world was changed by the 3 napkin protocol(picture was found on &lt;a href=&#34;http://thenetworkcollective.com/2017/09/hon-li-bgp/&#34;&gt;Network Collective Podcast&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;bgp-napkin.jpg&#34;&gt;&lt;img alt=&#34;bgp-napkin&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/12/08/bgp-overview/bgp-napkin.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Its simplified finite state machine is (taken from wiki) :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;670px-BGP_FSM.svg&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/12/08/bgp-overview/670px-bgp_fsm-svg.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Some basics from BGP :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finite State Machines (FSM)</title>
      <link>https://punt2cpu.net/2017/12/08/finite-state-machines-fsm/</link>
      <pubDate>Fri, 08 Dec 2017 16:39:34 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/08/finite-state-machines-fsm/</guid>
      <description>&lt;p&gt;Great approach of understanding how the protocol or program should work is to check it&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/Finite-state_machine&#34;&gt;FSM&lt;/a&gt; - Finite State machine.&lt;/p&gt;
&lt;p&gt;It describes the processes of protocol, where it starts and how and where it ends.&lt;/p&gt;
&lt;p&gt;STATE 1 -&amp;gt; STATE2 -&amp;gt; STATE3.&lt;/p&gt;
&lt;p&gt;For example we can check the TCP FSM :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;tcpfsm&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/12/08/finite-state-machines-fsm/tcpfsm.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Picture taken from &lt;a href=&#34;http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm&#34;&gt;http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In picture above we can see the procedure of syn, synack, ack. Also we can see how connection is being closed using Fin or timeouts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ARP - Address Resolution Protocol</title>
      <link>https://punt2cpu.net/2017/12/08/arp-address-resolution-protocol/</link>
      <pubDate>Fri, 08 Dec 2017 13:52:00 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/08/arp-address-resolution-protocol/</guid>
      <description>&lt;p&gt;ARP resolves the mapping issue between two different size protocols.&lt;/p&gt;
&lt;p&gt;It allows to MAP an IP(32 bit) and MAC(48 bit) together.&lt;/p&gt;
&lt;p&gt;How does it work in a nutshell :&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s assume that we have two hosts on different networks - A and B, we want them to communicate with each other, what will happen when host A will try reaching the host B for the first time (arp cache empty) :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;As we can determine by ip and subnet mask combination that host B is on another network , Host A will send a broadcast packet which will contain the following fields :&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;HW : 1 (Ethernet)&lt;/li&gt;
&lt;li&gt;Protocol : 0x0800 IP&lt;/li&gt;
&lt;li&gt;HW length : (6) 48 bit&lt;/li&gt;
&lt;li&gt;Protocol length : (4) 32-bit&lt;/li&gt;
&lt;li&gt;OPCode : 1 (&lt;strong&gt;Request&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;H/W &lt;strong&gt;Source&lt;/strong&gt; : aa:aa:aa:aa:aa:aa - &lt;strong&gt;MAC of host A&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Protocol &lt;strong&gt;source&lt;/strong&gt; : 192.168.0.2 - &lt;strong&gt;IP of host A&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;HW &lt;strong&gt;Dest&lt;/strong&gt; - ff:ff:ff:ff:ff:ff - &lt;strong&gt;MAC of broadcast address&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Protocol &lt;strong&gt;dest&lt;/strong&gt; 192.168.0.1 - **ip of gateway **&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gateway will respond with ARP reply&lt;/p&gt;</description>
    </item>
    <item>
      <title>A bit of TCP history</title>
      <link>https://punt2cpu.net/2017/12/04/a-bit-of-tcp-history/</link>
      <pubDate>Mon, 04 Dec 2017 21:07:28 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/12/04/a-bit-of-tcp-history/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;1974: 3-way handshake&lt;/li&gt;
&lt;li&gt;1978: TCP and IP split into TCP/IP&lt;/li&gt;
&lt;li&gt;1983: Jan 1, ARPAnet switches to TCP/IP&lt;/li&gt;
&lt;li&gt;1986: Internet begins to suffer a congestion collapse&lt;/li&gt;
&lt;li&gt;1987-8: Van Jacobson fixes TCP, publishes seminal TCP paper (Tahoe)&lt;/li&gt;
&lt;li&gt;1990: Fast recovery was added (Reno)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Taken from Stanford university Networking course.&lt;/p&gt;
&lt;p&gt;Link : &lt;a href=&#34;https://lagunita.stanford.edu/courses/Engineering/Networking-SP&#34;&gt;https://lagunita.stanford.edu/courses/Engineering/Networking-SP&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>VRRP Concepts</title>
      <link>https://punt2cpu.net/2017/11/03/vrrp-concepts/</link>
      <pubDate>Fri, 03 Nov 2017 16:19:21 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/11/03/vrrp-concepts/</guid>
      <description>&lt;p&gt;Some quick facts :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protocol - 112; Multicast address 224.0.0.18; Preemption Enabled(by default);Priority=100 + highest IP; Timers 1/3.6;Only master sends hellos;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;**During the re-election all members will send multicast packets with same virtual source MAC - switch may see port flapping in that moment. **&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can&amp;rsquo;t advertise less than a 1 second timer - because of 1 byte field which can be 0 or 1, timers needs to be set on each router locally if you want to have a lower than 1 sec.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You better set the timers equally otherwise you might have two master scenario&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What problem does it solves ? :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dell Networking VLT concepts</title>
      <link>https://punt2cpu.net/2017/11/03/dell-networking-vlt-concepts/</link>
      <pubDate>Fri, 03 Nov 2017 13:32:55 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/11/03/dell-networking-vlt-concepts/</guid>
      <description>&lt;p&gt;So what is a VLT and what does it does :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Virtual link trunking (VLT) allows physical links between two Dell switches to appear as a single virtual link to the network core or other&lt;br&gt;
switches such as Edge, Access, or top-of-rack (ToR). As a result, the two physical switches appear as a single switch to the connected&lt;br&gt;
devices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Basically we are creating one logical switch out of two physical switches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dell VLT Peer-Routing</title>
      <link>https://punt2cpu.net/2017/10/02/dell-vlt-peer-routing/</link>
      <pubDate>Mon, 02 Oct 2017 14:27:49 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/10/02/dell-vlt-peer-routing/</guid>
      <description>&lt;p&gt;Some important points about VLT Peer routing technology.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Peer routing enables one VLT node to act as a proxy gateway for the other peer in a VLT domain. When you enable routing on VLT peers,&lt;br&gt;
you can also enable the peer routing feature.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In a nutshell, when peer-routing is enabled on both VLT switches you can load-balance, the L3 packets through both switches - as this allows a switch in VLT domain to forward traffic on behalf of its peer switch.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error Detection - Checksum</title>
      <link>https://punt2cpu.net/2017/09/29/error-detection-checksum/</link>
      <pubDate>Fri, 29 Sep 2017 10:16:30 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/09/29/error-detection-checksum/</guid>
      <description>&lt;p&gt;So how does the checksum works ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both devices needs to agree on checksum number - will it be odd or even&lt;/li&gt;
&lt;li&gt;The higher the number is the more precise is the check&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s take the example from one of YouTube videos with a great explanation of how Checksum is working.&lt;/p&gt;
&lt;p&gt;Taking the numbers which we want to transmit :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;25 11 12 7 13 4&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Both devices should agree on checksum - let it be number &lt;strong&gt;16&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A bit info about ICMP, ping and traceroute</title>
      <link>https://punt2cpu.net/2017/09/28/a-bit-info-about-icmp-ping-and-traceroute/</link>
      <pubDate>Thu, 28 Sep 2017 07:43:25 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/09/28/a-bit-info-about-icmp-ping-and-traceroute/</guid>
      <description>&lt;h5 id=&#34;ive-went-through-rfc-792and-would-like-to-share-some-basichigh-level-info-about-icmp-and-how-we-are-using-it&#34;&gt;I&amp;rsquo;ve went through &lt;a href=&#34;https://tools.ietf.org/html/rfc792&#34;&gt;RFC 792&lt;/a&gt; and would like to share some basic(high level) info about ICMP and how we are using it.&lt;/h5&gt;
&lt;h5 id=&#34;icmp-is-an-internet-control-message-protocol&#34;&gt;ICMP is an INTERNET CONTROL MESSAGE PROTOCOL&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h5 id=&#34;it-runs-over-network-layer---so-its-encapsulated-in-ip-datagrams&#34;&gt;It runs over network layer - so it&amp;rsquo;s encapsulated in IP datagrams&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5 id=&#34;unreliable---simple-datagram-service-there-is-no-retries-to-re-transmit-the-messages-in-case-if-it-failed-to-reach-the-destination&#34;&gt;Unreliable - Simple datagram service, there is no retries to re transmit the messages in case if it failed to reach the destination&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5 id=&#34;icmp-message-is-generated-using-the-header-of-ip-datagramsource-address-destination-address-and-it-takes-first-8-bytes-from-original-ip-datagram-payloadafterwards-the-message-will-be-marked-with-type-and-code-some-of-the-types-icmp_&#34;&gt;ICMP message is generated using the header of IP datagram(source address, destination address) and it takes first 8 bytes from original IP datagram payload,afterwards the message will be marked with type and code. Some of the types : &lt;img alt=&#34;icmp_types&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/09/28/a-bit-info-about-icmp-ping-and-traceroute/icmp_types.png&#34;&gt;&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5 id=&#34;host-unreachable---when-ip-datagram-gets-to-the-last-router-but-last-router-doesnt-know-where-the-host-is&#34;&gt;Host unreachable - when IP datagram gets to the last router but last router doesn&amp;rsquo;t know where the host is&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5 id=&#34;port-unreachable---means-that-the-ports-thats-contained-inside-of-outgoing-packet-is-not-being-recognized-at-receivers-end&#34;&gt;Port unreachable -  means that the ports that&amp;rsquo;s contained inside of outgoing packet is not being recognized at receivers end&lt;/h5&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How does the PING uses ICMP :&lt;/p&gt;</description>
    </item>
    <item>
      <title>The TCP and UDP segment format</title>
      <link>https://punt2cpu.net/2017/09/22/the-tcp-segment-format-and-how-it-works/</link>
      <pubDate>Fri, 22 Sep 2017 14:17:55 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/09/22/the-tcp-segment-format-and-how-it-works/</guid>
      <description>&lt;p&gt;Putting this here just for reference as repeating Stanford Networking course.&lt;/p&gt;
&lt;p&gt;Some of important fields in &lt;strong&gt;TCP&lt;/strong&gt; Segment :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Destination port&lt;/strong&gt; - tells the TCP layer which application should get the bytes on ether end.&lt;/p&gt;
&lt;p&gt;**Source port **Says where the data should get back, when app starts sending the data it generates unique source port number - to be able to receive the data back. (to differentiate the connection between host A and B)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Big and Little Endian</title>
      <link>https://punt2cpu.net/2017/08/28/big-and-little-endian/</link>
      <pubDate>Mon, 28 Aug 2017 10:45:11 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/28/big-and-little-endian/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Big endian&lt;/strong&gt; - &lt;strong&gt;most significant&lt;/strong&gt; byte stored in smallest address,  read from &lt;strong&gt;left to right&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a 32-bit value :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0x09080706&lt;/strong&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;09|08|07|06&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;byte address : x|x+1|x+2|x+3&lt;/strong&gt;&lt;br&gt;
For example &lt;strong&gt;32-bit&lt;/strong&gt; value &lt;strong&gt;5&lt;/strong&gt; writing as &lt;strong&gt;0x00000005&lt;/strong&gt; is a Big endian.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Little endian&lt;/strong&gt; - &lt;strong&gt;least significant&lt;/strong&gt; byte is stored in smallest address, read from &lt;strong&gt;right to left.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;32-bit value would be stored in memory in following way :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0x09080706&lt;/strong&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;06|07|08|09&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;byte address : x|x+1|x+2|x+3&lt;/strong&gt;&lt;br&gt;
For example little endian value would be &lt;strong&gt;16-bit&lt;/strong&gt; value **53  **in &lt;strong&gt;0x3500&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing with Arduino</title>
      <link>https://punt2cpu.net/2017/08/25/playing-with-arduino/</link>
      <pubDate>Fri, 25 Aug 2017 17:30:52 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/25/playing-with-arduino/</guid>
      <description>&lt;p&gt;Some scripts for light LED control on arduino :&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/uc0d3r1&#34;&gt;my github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Communicating with arduino through serial interface, 0 = turning off the lights, 1 = turning them on.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.arduino.cc/en/Reference/Serial&#34;&gt;https://www.arduino.cc/en/Reference/Serial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;blinking_the_lights&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/25/playing-with-arduino/blinking_the_lights.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Let it blink with different intervals :)&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;blinking_intervals&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/25/playing-with-arduino/blinking_intervals.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning how to learn</title>
      <link>https://punt2cpu.net/2017/08/25/learning-how-to-learn/</link>
      <pubDate>Fri, 25 Aug 2017 12:04:48 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/25/learning-how-to-learn/</guid>
      <description>&lt;p&gt;Would like to share a great course about interesting approaches to understand our mind  how it is working and how to be more effective in learning new things.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.coursera.org/learn/learning-how-to-learn&#34;&gt;https://www.coursera.org/learn/learning-how-to-learn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Absolutely free course, enjoy it !&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve went through it a long time ago but didn&amp;rsquo;t took any notes, on &lt;strong&gt;pastebin&lt;/strong&gt; found pretty good summarized notes of this course : &lt;a href=&#34;https://pastebin.com/JNbGxvpQ&#34;&gt;https://pastebin.com/JNbGxvpQ &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;learning_how_to_learn_notes3.pdf&#34; title=&#34;learning_how_to_learn_notes&#34;&gt;learning_how_to_learn_notes&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating the vlans using Python and Loops</title>
      <link>https://punt2cpu.net/2017/08/25/creating-the-vlans-using-python-and-loops/</link>
      <pubDate>Fri, 25 Aug 2017 09:34:52 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/25/creating-the-vlans-using-python-and-loops/</guid>
      <description>&lt;p&gt;More efficient way of doing things with any programming language is using the loops.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.python.org/moin/ForLoop&#34;&gt;https://wiki.python.org/moin/ForLoop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Example of creating &lt;strong&gt;32&lt;/strong&gt; vlans on cisco switch :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;vlans_loops&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/25/creating-the-vlans-using-python-and-loops/vlans_loops.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;The code looks more readable and you can scale it now :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python, creating the vlans on the Cisco switch</title>
      <link>https://punt2cpu.net/2017/08/24/python-creating-the-vlans-on-the-cisco-switch/</link>
      <pubDate>Thu, 24 Aug 2017 12:47:18 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/24/python-creating-the-vlans-on-the-cisco-switch/</guid>
      <description>&lt;p&gt;Just a short example how you can create a VLANs on Cisco switch.&lt;/p&gt;
&lt;p&gt;Using Linux machine for executing the python and GNS3 Cisco Ether-switch&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;gns3_ubuntu_mapped_to_ether_Switch&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/24/python-creating-the-vlans-on-the-cisco-switch/gns3_ubuntu_mapped_to_ether_switch.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;creating_vlans&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/24/python-creating-the-vlans-on-the-cisco-switch/creating_vlans.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Just trying to get it working, this is definetely not an example how the production program should look like, at least the loop and more variables could be used here, but for now only hard-coding the stuff :)&lt;/p&gt;
&lt;p&gt;Video number &lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;YT:_XGtQRUWasQ&lt;/p&gt;</description>
    </item>
    <item>
      <title>Small how to setup a WiFI device on your FreeBSD machine.</title>
      <link>https://punt2cpu.net/2017/08/24/small-how-to-setup-a-wifi-device-on-your-freebsd-machine/</link>
      <pubDate>Thu, 24 Aug 2017 11:41:05 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/24/small-how-to-setup-a-wifi-device-on-your-freebsd-machine/</guid>
      <description>&lt;p&gt;Scanning for wifi networks :&lt;br&gt;
ifconfig wlan0 up scan&lt;/p&gt;
&lt;p&gt;Setting up your wifi device :&lt;a href=&#34;https://www.freebsd.org/doc/en/books/handbook/network-wireless.html&#34;&gt;Network-Wireless&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This example shows the Atheros ath0 wireless adapter.Add an entry for this network to /etc/wpa_supplicant.conf. If the file does not exist, create it. Replace myssidand mypsk with the SSID and PSK provided by the network administrator.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;network={&lt;/p&gt;
&lt;p&gt;ssid=&amp;ldquo;myssid&amp;rdquo; psk=&amp;ldquo;mypsk&amp;rdquo;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Add entries to /etc/rc.conf to configure the network on startup:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;wlans_ath0=&amp;ldquo;wlan0&amp;rdquo;&lt;br&gt;
ifconfig_wlan0=&amp;ldquo;WPA SYNCDHCP&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Restart the computer, or restart the network service to connect to the network:&lt;br&gt;
&lt;strong&gt;# service netif restart&lt;/strong&gt;&lt;br&gt;
After 8.0v, it is necessary to create a wlan clone device of the actual wifi card :&lt;br&gt;
&lt;strong&gt;# ifconfig wlan0 create wlandev ath0&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;# ifconfig wlan0 up list scan&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apt-get/Yum through proxy</title>
      <link>https://punt2cpu.net/2017/08/24/apt-getyum-through-proxy/</link>
      <pubDate>Thu, 24 Aug 2017 11:28:31 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/24/apt-getyum-through-proxy/</guid>
      <description>&lt;p&gt;**APT-GET **&lt;/p&gt;
&lt;p&gt;In case if your access is going through proxy server you need to provide the credentials to APT.&lt;/p&gt;
&lt;p&gt;Just create an apt.conf file in &lt;strong&gt;/etc/apt&lt;/strong&gt;/ and add there the following entry :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Acquire::http::Proxy &amp;ldquo;http://proxyadd:port&amp;rdquo;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In case if authentication is needed :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Acquire::http::Proxy &amp;ldquo;http://username:password@proxyadd:port&amp;rdquo;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;**YUM **&lt;/p&gt;
&lt;p&gt;/etc/yum.conf&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;proxy=http://proxyadd:port&lt;br&gt;
proxy_username=user&lt;br&gt;
proxy_password=passwd&lt;/p&gt;
&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Connecting to the Switch using Python</title>
      <link>https://punt2cpu.net/2017/08/24/connecting-to-the-switch-using-python/</link>
      <pubDate>Thu, 24 Aug 2017 08:19:46 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/24/connecting-to-the-switch-using-python/</guid>
      <description>&lt;p&gt;Starting to figure it out how python syntax is working and how we can use internal libraries to connect to switches.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take the telnetlib&lt;/p&gt;
&lt;p&gt;Here is a short example of connecting to switch and changing it&amp;rsquo;s hostname.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;telnet_connect&#34; loading=&#34;lazy&#34; src=&#34;https://punt2cpu.net/2017/08/24/connecting-to-the-switch-using-python/telnet_connect.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Example of script was taken from &lt;strong&gt;telnetlib&lt;/strong&gt;: &lt;a href=&#34;https://docs.python.org/2/library/telnetlib.html&#34;&gt;https://docs.python.org/2/library/telnetlib.html &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great free content to learn the Python and Networking automation&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
			&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/IhroIrV9_7w?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
		&lt;/div&gt;</description>
    </item>
    <item>
      <title>First post</title>
      <link>https://punt2cpu.net/2017/08/23/first_post/</link>
      <pubDate>Wed, 23 Aug 2017 20:33:54 +0000</pubDate>
      <guid>https://punt2cpu.net/2017/08/23/first_post/</guid>
      <description>&lt;h6 id=&#34;int-main&#34;&gt;int main()&lt;/h6&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;printf (&amp;quot;&lt;/p&gt;
&lt;p&gt;This is my first blog and first blogging experience, most likely I will abandon and forget it, but nevertheless this needs to be at least tried. I will try to blog about design, troubleshooting, configuration and automation of networks + everything else what I&amp;rsquo;m trying to learn and master (C, Embedded systems, Python, Security, Computer Architecture)&lt;/p&gt;
&lt;p&gt;To make this entry useful would like to share two great podcasts about networking and technology, the idea about blogging came to me after listening one of the series on &lt;a href=&#34;http://packetpushers.net/podcast/podcasts/show-345-career/&#34;&gt;Packetpushers&lt;/a&gt;, thanks guys for providing an outstanding content !&lt;/p&gt;</description>
    </item>
    <item>
      <title>whoami</title>
      <link>https://punt2cpu.net/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://punt2cpu.net/about/</guid>
      <description>&lt;p&gt;Marius. Network engineer, mostly debugging switches and routing stacks. These days looking at FRR and SONiC code.
&lt;a href=&#34;mailto:marius@punt2cpu.net&#34;&gt;marius@punt2cpu.net&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
