Archive

Category Archives for "Networking"

Cisco adds specializations to its CCNP cert

Cisco’s network certification lineup underwent a major overhaul last year, and one of the big changes is that specialization options appear at the professional level with the Cisco Certified Network Professional (CCNP).Before Cisco rearchitected its certifications, there were 10 concentrations associated with Cisco Certified Network Associate (CCNA), Cisco’s foundational certification. As of last year, the CCNA no longer has different tracks. It’s focused on networking fundamentals, and there’s only one exam.To read this article in full, please click here

How to execute an object file: Part 3

Dealing with external libraries

How to execute an object file: Part 3

In the part 2 of our series we learned how to process relocations in object files in order to properly wire up internal dependencies in the code. In this post we will look into what happens if the code has external dependencies — that is, it tries to call functions from external libraries. As before, we will be building upon the code from part 2. Let's add another function to our toy object file:

obj.c:

#include <stdio.h>
 
...
 
void say_hello(void)
{
    puts("Hello, world!");
}

In the above scenario our say_hello function now depends on the puts function from the C standard library. To try it out we also need to modify our loader to import the new function and execute it:

loader.c:

...
 
static void execute_funcs(void)
{
    /* pointers to imported functions */
    int (*add5)(int);
    int (*add10)(int);
    const char *(*get_hello)(void);
    int (*get_var)(void);
    void (*set_var)(int num);
    void (*say_hello)(void);
 
...
 
    say_hello = lookup_function("say_hello");
    if (!say_hello) {
        fputs("Failed to find say_hello function\n", stderr);
        exit(ENOENT);
    }
 
    puts("Executing say_hello...");
    say_hello();
}
...

Let's run it:

$ gcc -c obj.c
$ gcc -o loader loader.c
$ ./loader
No runtime base address for section

Seems something went Continue reading

Lessons Learned: Fundamentals Haven’t Changed

Here’s another bitter pill to swallow if you desperately want to believe in the magic powers of unicorn dust: laws of physics and networking fundamentals haven’t changed (see also: RFC 1925 Rule 11).

Whenever someone is promising a miracle solution, it’s probably due to them working in marketing or having no clue what they’re talking about (or both)… or it might be another case of adding another layer of abstraction and pretending the problems disappeared because you can’t see them anymore.

You’ll need a Free ipSpace.net Subscription to watch the video.

Lessons Learned: Fundamentals Haven’t Changed

Here’s another bitter pill to swallow if you desperately want to believe in the magic powers of unicorn dust: laws of physics and networking fundamentals haven’t changed (see also: RFC 1925 Rule 11).

Whenever someone is promising a miracle solution, it’s probably due to them working in marketing or having no clue what they’re talking about (or both)… or it might be another case of adding another layer of abstraction and pretending the problems disappeared because you can’t see them anymore.

You’ll need a Free ipSpace.net Subscription to watch the video.

Native Rust support on Cloudflare Workers

Native Rust support on Cloudflare Workers
Native Rust support on Cloudflare Workers

You can now write Cloudflare Workers in 100% Rust, no JavaScript required. Try it out: https://github.com/cloudflare/workers-rs

Cloudflare Workers has long supported the building blocks to run many languages using  WebAssembly. However, there has always been a challenging “trampoline” step required to allow languages like Rust to talk to JavaScript APIs such as fetch().

In addition to the sizable amount of boilerplate needed, lots of “off the shelf” bindings between languages don’t include support for Cloudflare APIs such as KV and Durable Objects. What we wanted was a way to write a Worker in idiomatic Rust, quickly, and without needing knowledge of the host JavaScript environment. While we had a nice “starter” template that made it easy enough to pull in some Rust libraries and use them from JavaScript, the barrier was still too high if your goal was to write a full program in Rust and ship it to our edge.

Not anymore!

Introducing the worker crate, available on GitHub and crates.io, which makes Rust developers feel right at home on the Workers platform by running code inside the V8 WebAssembly engine. In the snippet below, you can see how the worker crate does all the heavy Continue reading

HelloKitty: The Victim’s Perspective

In the past few months, we have witnessed several indiscriminate attacks targeting big companies. Whereas years ago different threat actors focused on specific sectors, nowadays the same techniques, tactics, and procedures (e.g., how the perimeter is penetrated, which tools are used for lateral movement) are consistently applied regardless of company size, location, or industry. Target selection is much more dependent on an organization’s IT infrastructure: for example, recent trends show several actors (among them REvil, HelloKitty, or what was known as Darkside) increasingly targeting companies running workloads on VMware ESXi by adding to their ransomware capabilities to gracefully stop virtual machines before encrypting them (see Figure 1).

Figure 1: HelloKitty stopping virtual machines gracefully

Another important trend we have seen growing in the last few months is the use of ransomware to seize sensitive customer data — first by exfiltrating it, then encrypting it, and later pressuring the victim into paying a ransom under the threat of disclosing such data publicly (a technique called “double extortion”). Notable victims include CD Projekt RED, which faced the leak of the source code of some of its most famous video games.

While many threat reports have already dissected the technical Continue reading

netsim-tools Overview

In December 2020, I got sick-and-tired of handcrafting Vagrantfiles and decided to write a tool that would, given a target networking lab topology in a text file, produce the corresponding Vagrantfile for my favorite environment (libvirt on Ubuntu). Nine months later, that idea turned into a pretty comprehensive tool targeting networking engineers who like to work with CLI and text-based configuration files. If you happen to be of the GUI/mouse persuasion, please stop reading; this tool is not for you.

During those nine months, I slowly addressed most of the challenges I always had creating networking labs. Here’s how I would typically approach testing a novel technology or software feature:

netlab Overview

In December 2020, I got sick-and-tired of handcrafting Vagrantfiles and decided to write a tool that would, given a target networking lab topology in a text file, produce the corresponding Vagrantfile for my favorite environment (libvirt on Ubuntu). Nine months later, that idea turned into a pretty comprehensive tool targeting networking engineers who like to work with CLI and text-based configuration files. If you happen to be of the GUI/mouse persuasion, please stop reading; this tool is not for you.

During those nine months, I slowly addressed most of the challenges I always had creating networking labs. Here’s how I would typically approach testing a novel technology or software feature:

IBM intros new generation of IBM Power servers

IBM is keeping the faith for Unix just like it is for mainframes. It has announced a new Unix-based server, the IBM Power E1080, the first in a family that is based on the POWER10 processor.IBM announced the POWER10 processor last year. Designed on a 7nm process, it is expected to deliver up to a three-fold improvement in capacity and processor energy efficiency within the same power envelope as IBM POWER9.It features a new technology called Memory Inception that supports multi-petabyte memory clusters for massive memory-intensive workloads along with end-to-end memory encryption with quadruple the number of AES encryption engines per core compared to IBM POWER9.To read this article in full, please click here

IBM intros new generation of IBM Power servers

IBM is keeping the faith for Unix just like it is for mainframes. It has announced a new Unix-based server, the IBM Power E1080, the first in a family that is based on the POWER10 processor.IBM announced the POWER10 processor last year. Designed on a 7nm process, it is expected to deliver up to a three-fold improvement in capacity and processor energy efficiency within the same power envelope as IBM POWER9.It features a new technology called Memory Inception that supports multi-petabyte memory clusters for massive memory-intensive workloads along with end-to-end memory encryption with quadruple the number of AES encryption engines per core compared to IBM POWER9.To read this article in full, please click here

Hedge 99

Two things have been top of mind for those who watch the ‘net and global Internet policy—the increasing number of widespread outages, and the logical and physical centralization of the ‘net. How do these things relate to one another? Alban Kwan joins us to discuss the relationship between centralization and widespread outages. You can read Alban’s article on the topic here.

download

Explore VMware’s Modern App Connectivity Services with Amazon EKS-Anywhere

As enterprises accelerate their application modernization journey, there is a stronger need for running applications across multi-cloud environments. Today, AWS announced General Availability of Amazon EKS-Anywhere, expanding the AWS portfolio to support these use cases.

We are thrilled to integrate with and extend EKS by providing secure connectivity services that work cross-cluster and cross-cloud with VMware’s Modern App Connectivity Services. By delivering these capabilities, applications can enjoy the level of resiliency, scalability, and security needed for enterprise-critical applications.

VMware Modern App Connectivity Services accelerate the path to app modernization by extending connectivity and security between EKS and EKS-D, and to other platforms. Built on cloud-native principles, it enables a set of important use cases that automate the process of connecting, observing, scaling, and better-securing applications.

VMware enables EKS customers to leverage connectivity, resiliency, and security capabilities:

  1. Application connectivity
    Across both multi-cluster and hybrid clouds, in addition to VM environments.  This enables discoverability and connectivity between distributed microservices across hybrid EKS, EKS-D, and VMware vSphere environments.
  2. Application resiliency 
    This enables cluster load balancing level on-prem to communicate with the rest of the customer’s environments both on-prem and on the cloud with this global load balancing solution.
  3. Application security
    This enables Continue reading

Sleeping and waiting on Linux

The Linux sleep and wait commands allow you to run commands at a chosen pace or capture and display the exit status of a task after waiting for it to finish. Sleep simply inserts a timed pause between commands. Wait, on the other hand, waits until a process completes before notifying you that it has finished.Sleep The sleep command pauses for a specified time. It’s generally used in a script, but works on the command line as well. In the example below, sleep pauses a minute between the two date commands.$ date; sleep 60; date Wed Sep 8 12:10:40 PM EDT 2021 Wed Sep 8 12:11:40 PM EDT 2021 Summarizing your command-line usage on Linux The sleep command takes the numeric argument as the number of seconds. You can, however, ask it to sleep for various amounts of time by adding another character to the argument: 1m = 1 minute 2h = 2 hours 3d = 3 days $ date; sleep 1m; date Wed Sep 8 12:16:38 PM EDT 2021 Wed Sep 8 12:17:38 PM EDT 2021 In fact, you can sleep for less than a second if you need.To read this article in full, please click here

Sleeping and waiting on Linux

The Linux sleep and wait commands allow you to run commands at a chosen pace or capture and display the exit status of a task after waiting for it to finish. Sleep simply inserts a timed pause between commands. Wait, on the other hand, waits until a process completes before notifying you that it has finished.Sleep The sleep command pauses for a specified time. It’s generally used in a script, but works on the command line as well. In the example below, sleep pauses a minute between the two date commands.$ date; sleep 60; date Wed Sep 8 12:10:40 PM EDT 2021 Wed Sep 8 12:11:40 PM EDT 2021 Summarizing your command-line usage on Linux The sleep command takes the numeric argument as the number of seconds. You can, however, ask it to sleep for various amounts of time by adding another character to the argument: 1m = 1 minute 2h = 2 hours 3d = 3 days $ date; sleep 1m; date Wed Sep 8 12:16:38 PM EDT 2021 Wed Sep 8 12:17:38 PM EDT 2021 In fact, you can sleep for less than a second if you need.To read this article in full, please click here