Sharing Network Namespace Among Docker Containers for Bird Anycasting

At exactly one year ago, I set up an Anycast service with Docker in the DN42 network (Chinese only atm). Back then, I customized the container's image and added a Bird installation to it, then put in a config file to broadcast Anycast routes via OSPF. However, as time went by, a few problems were exposed:The process of installing Bird takes time. Instead of installing Bird with apt-get, since my Dockerfiles need to support multiple architectures (Chinese only atm), and Bird isn't available in some architecture's repos for Debian. And since my building server is AMD64, and is running images of other architectures with qemu-user-static (Chinese only atm), a lot of instruction translation is needed in the image building and software compilation progress, which is extremely inefficient....

Disabling Webcams During an Online Course

This post will explain the way to disable your webcam on Windows and Linux, so:On the OS level, prevent you from turning on the webcam by mistake, and live-stream your footage of having a meal lying on the bed playing games (NSFW)Prevent certain online lecturing software from secretly turning on the webcam.Windows ProceduresPress the Win+R combination key to open the Run window, type devmgmt.msc and enter to open the Device Manager. Your camera will be in Image Acquisition Devices category, right-click on it to disable it.(The following picture is taken from a Simplified Chinese Windows XP, but the procedure and icons should be similar for Windows 7 and 10.)When you need to use the camera, come back to re-enable it, and then close and reopen your browser or online lecturing software....
Illustration

LADSPA Stereo Frequency Splitter & Bass Booster

During the Chinese Spring Festival, my dad gave me an Edifier M120 Bluetooth speaker. This speaker is not one of these high-end models featuring dedicated bass speakers or professional Bluetooth audio codecs such as aptX and LDAC; it's just a unit with two ordinary speakers.With that said, I doubt I can hear any difference with those advanced codecs on a portable speaker anyway.But when I played some music with my phone connected to it, I realized that it does have some bass output. Speaking of bass, I'm impressed by a JBL Charge 4 speaker bought by one of my classmates. As a portable speaker that costs 150,ithasadedicatedbassunitwithastonishingpower.ThenIbegantothinkthat,althoughmyspeakercostsamere150, it has a dedicated bass unit with astonishing power. Then I began to think that,...

(Almost) Lossless Archival with Modern Formats - H265 and HEIF

Many people keep their inventory of photos and videos for their travels, parties, or whatever important moments of their lives. If you are into taking photos and recording videos and like keeping all of them, you will likely fill up hard drives after hard drives. If you don't want to keep adding more drives to your collection, you may also try to compress your photos and videos.Speaking of compression, a common method is to reduce the resolution of images. I've used the good old Microsoft Office Picture Manager (that comes with Office 2003) and its built-in one-key image compression. Behind the scenes, it's actually downsampling images to JPEG files of around 1024x768. One major drawback is that a lot of the details are completely lost....
Illustration

OS/2 Warp 4: Trying out & Installing Firefox

OS/2 is an operating system initially developed by IBM and Microsoft and later maintained by IBM. Back in the 1990s, OS/2 was a competitive rival to Windows, but later OS/2 was defeated by the Windows series, and IBM finally shut down OS/2 Warp 4's tech support on Dec 31, 2006.But this does not mark the death of OS/2. After official tech support ended, Senerity System took over OS/2's development and continued it under the name eComStation. In 2015, another company, Arca Noae LLC, produced an OS/2 based distribution called ArcaOS, and sold it as a commercial product.At the same time, the open-source community is providing some support to OS/2. They cross-compiled common Unix tools (including ls, rm, etc.), RPM/YUM package manager, and a series of libraries on OS/2....

Cyclone IV FPGA Development Log

Last semester, the school offered a digital systems course, which involves development on FPGAs. At the end of the course, we need to gather in groups and achieve some complicated functionality with the flexible architecture of FPGA, such as creating a game or running a convoluted neural network. We are free to add extra functionalities as we wish.Our group has done a game similar to Raiden, or controlling a fighter jet and attacking enemies with bullets. In addition to course requirements, we implemented these extra functionalities:A 640x480 VGA framebuffer with 16-bit color depth, stored on SRAM chipNaturally, Simplified Chinese fonts are included (full UTF-8 Chinese range, but without punctuation marks, since they are out of that range and we're kinda lazy)...

Running Anycast DNS with Docker in DN42

2020-03-16 NotesThere is an updated scheme compared to this post, see Sharing Network Namespace Among Docker Containers for Bird Anycasting.It is suggested to read only the concept explanations in this post, and use the above scheme instead for deployment.What's AnycastThe commonly used routing protocol on Internet, the BGP, works like this:I own an IP range, 172.22.76.104/29, on DN42.With a BGP software like BIRD, I "announce" that my server has access to IP range 172.22.76.104/29.Servers with peering to me will record this message: "Over this path, I can access 172.22.76.104/29 which is 1 step away."These servers continue to announce to others with peering to them: "This server is 1 step away from the source of 172.22.76.104/29."Similarly, other servers announce that they are 2, 3, 4......
Illustration

Bird-lg in Go (Bird Looking Glass)

What's BIRD? And What's Bird-lg?BIRD is a popular BGP routing software used on Linux. I mainly use Bird in the DN42 network, to establish connections with other users.Bird-lg is a Python 2 based program developed by GitHub user sileht. It provides a web interface to show the status of BIRD routing software on each server, as well as query routes to specified IPs.Why Rewrite in Go?Bird-lg is based on Python 2 and Flask and takes more memory (20-30MB).Bird-lgproxy also takes around 20MB and is required on every server. On the 512MB VPS where this site is hosted, there had been multiple cases where memory ran out, and the on-disk SWAP was too slow. In this case, Docker, Nginx, MySQL, PHP would crash one after one, and a reboot would be necessary.The rewritten version in Go takes only 6 MB....
Illustration

Writing Stories in Traceroute

2020-10-11 UpdateNow a better way exists that doesn't involve a bunch of Docker containers. Please refer to Writing Stories in Traceroute, Elegantly.IntroTraceroute is one of the popular tools for network inspection. It shows the IP addresses of routers on the route from your computer to a destination server, similar to:Domains are shown on the last 2 hops, which is the IP's reverse DNS record. Reverse DNS records exist as PTR records in the format of 4.3.2.1.in-addr.arpa. For more information, you may refer to Setting IP Reverse Records in DN42 (Chinese Only).However, PTR records need not be real domains. They can be any string that "looks like" a domain. With this, we can write one sentence on each hop of a Traceroute path to make a story:This story is set up in DN42....
Illustration

Registering Domain in DN42

DN42, aka Decentralized Network 42, is a large VPN network. Unlike traditional VPNs, DN42 uses a lot of technology involved in Internet backbones (such as BGP) and is a great simulation of a realistic network environment.In a previous post (Chinese only), I joined DN42 and connected most of my VPSes to it. (The ones left are OpenVZ VPSes without Tun/Tap support.) I knew from the beginning that DN42 has its own domain name system. For example, DN42's wiki (https://wiki.dn42.us/Home) can be accessed as https://internal.dn42 in DN42. I didn't register a domain back then since I didn't have time, and I didn't have much knowledge of DN42. I finished the registration this month and would like to share my experience....