linux 网络虚拟化: network namespace 简介 network namespace 是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息.不管是虚拟机还是容器,运行的时候仿佛自己就在独立的网络中.这篇文章介绍 network namespace 的基本概念和用法,network namespace 是 linux 内核提供的功能,这篇文章借助 ip 命令来完成各种操作.ip 命令来自于 iproute2 安装包,一般系统会默认安装,如果没有的话,请读…
图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN http://smilejay.com/2012/08/qemu-kvm-networking-mode/ http://smilejay.com/kvm_theory_practice/ http://smilejay.com/2012/08/kvm-sdl-display/http://smilejay.com/kvm-principles-and-practices/http://smil…
作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术. 早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的.自Docker 0.9版本起,Docker逐渐从LXC转移到新的libcontainer(https://github.com/docker/libcontainer)上,并且积极推动开放容器规范runc,试图打造更通用的底层容器虚拟化库. 从操作系统功能上看,目前Docker底层依赖的核心技术主要包括Linux操作系统的命名空间(…
Linux 网络 I/O 模型简介(图文)(转载) 转载:http://blog.csdn.net/anxpp/article/details/51503329 1.介绍 Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据…
文章目录 1. 简介 1.1 Docker Network 桥接模式配置 2. 代码解析 2.1 copy_net_ns() 2.2 pernet_list 2.2.1 loopback_net_ops 2.2.2 netdev_net_ops 2.2.3 fou_net_ops 2.3 sock_net_set() 2.4 dev_net_set() 2.5 write_pnet() 参考文档: 1. 简介 1.1 Docker Network 桥接模式配置 1.创建一个新的 bash 运行在…
openvswitch:    openvswitch: 开放的虚拟交换机,虚拟交换就是利用虚拟平台,通过软件的方式形成交换机部件.跟传统的物理交换机相比,虚拟交换机同样具备众多优点:        1. 配置灵活:        2. 成本更低 接下来通过openvswitch + netns 实现如下虚拟网络架构: 这里通过vmware来实现: 系统:centos7.2 x64    主机1 一张网卡,模式:仅主机模式    主机2 两张网卡,1: 模式:桥接模式:2: 模式:仅主机模式 主…
netns 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables等.总之,与网络有关的组件都是独立的. 创建网络空间: # ip netns add ns1 查看网络空间: # ip netns list 删除网络空间: # ip netns del ns1 进入网络空间执行命令: # ip netns exec ns1 `command` 实例一:    用netns连接两个隔离环境中的虚拟机,如图: 在虚拟化中有两个虚拟机网络隔离环…
1.介绍 Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性). 根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型. 1.1.阻塞I/O模型 最常用的I/O模型,默认情况下,所有文件操作都是…
创建虚拟网络环境 使用命令 $ ip netns add net0 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等.总之,与网络有关的组件都是独立的. ip命令需要root权限的,但是由于本文大量使用ip命令,于是笔者给ip命令添加了capability,使普通用户也能使用ip命令 使用命令 $ ip netns list net0 可以看到我们刚才创建的网络环境 进入虚拟网络环境 使用命令 $ ip ne…
wget 是一个命令行的下载工具.对于我们这些 Linux 用户来说,几乎每天都在使用它.下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget. $ wget -r -np -nd http://example.com/packages/ 这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件.其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构. $ wget -r -np -nd --accept=…
一 介绍 如果把linux操作系统比作一个大房子,那命名空间指的就是这个房子中的一个个房间,住在每个房间里的人都自以为独享了整个房子的资源,但其实大家仅仅只是在共享的基础之上互相隔离,共享指的是共享全局的资源,而隔离指的是局部上彼此保持隔离,因而命名空间的本质就是指:一种在空间上隔离的概念,当下盛行的许多容器虚拟化技术(典型代表如LXC.Docker)就是基于linux命名空间的概念而来的. 一方面:如果我们要深入研究docker技术,linux namespace是必须掌握的基础知识. 另一方…
C语言实现Linux网络嗅探器 0x01 实验简介 网络嗅探器是拦截通过网络接口流入和流出的数据的程序.所以,如果你正在浏览的互联网,嗅探器以数据包的形式抓到它并且显示.在本实验中,我们用 C 语言实现了一个网络嗅探器. 0x02程序框架和功能描述 本程序使用c语言编程,实现linux环境下网络嗅探的功能,并实现对接收到的UDP数据报进行解析. 0x03程序代码 sniffer.h #ifndef __SNIFFER_H__ #define __SNIFFER_H__ typedef struc…
参考: <重构网络:SDN架构与实现>,作者:杨泽卫.李呈. Chapter7 SDN与网络虚拟化 结构 7.1 网络虚拟化 7.1.1 为什么需要网络虚拟化技术 7.1.2 网络虚拟化 7.2 SDN与网络虚拟化 7.2.1 SDN与网络虚拟化 7.2.2 SDN实现网络虚拟化 7.3 网络虚拟化产品 7.3.1 开源产品 7.3.2 商业产品 7.4 未来研究方向 7.5 本章小结 7.1 网络虚拟化 1. 为什么需要网络虚拟化技术? 目的:将物理资源虚拟化成虚拟资源,从而实现动态.按需.…
原文:理解Docker容器网络之Linux Network Namespace 由于2016年年中调换工作的原因,对容器网络的研究中断过一段时间.随着当前项目对Kubernetes应用的深入,我感觉之前对于容器网络的粗浅理解已经不够了,容器网络成了摆在前面的“一道坎”.继续深入理解K8s网络.容器网络已经势在必行.而这篇文章就算是一个重新开始,也是对之前浅表理解的一个补充. 我还是先从Docker容器网络入手,虽然Docker与Kubernetes采用了不同的网络模型:K8s是Container…
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro…
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro…
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 本文通过 IP 命令操作来简单介绍 network namespace 的基本概念和用法.深入了解可以看看我之前写的两篇文章 Docker 基础技术之 Linux namespace 详解 和 Docker 基础技术之 Linux namespace 源码分析. 和 network namespace 相关的操作…
在初步的了解 docker 后,笔者期望通过理解 docker 背后的技术原理来深入的学习和使用 docker,接下来的几篇文章简单的介绍下 linux namespace 的概念以及基本用法. namespace 的概念 namespace 是 Linux 内核用来隔离内核资源的方式.通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在.具体的实现方式是把一个或多个进程的相关资源指定在同一个 n…
学习 Neutron 系列文章: (1)Neutron 所实现的网络虚拟化 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron Linux Bridge + VLAN/VXLAN 虚拟网络 (5)Linux bridge + VXLAN 详解 (6)Neutron OVS OpenFlow 流表 和 L2 Population (7)Neutron DHCP Agent (8)…
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端) (4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收端) 第一篇文章总结了Linux 网络协议栈的概括和功能.本文总结非虚拟化环境中的各种 Segmentatio…
原文地址:https://segmentfault.com/a/1190000004059167 介绍 在专业的网络世界中,经常使用到Virtual Routing and Forwarding(VRF),比如Cisco,Alcatel-Lucent, Juniper 等.对于L2 switch,自从上世纪90年代就开始使用VLAN,一个物理交换机上可以使用多个广播域,如今大多数交换机都支持4K vlan. 这个概念被引入到L3,如今很多网络设备支持VRF.这意味着,单个物理设备上可运行多个虚拟…
Linux Network Namespaces Linux kernel在2.6.29中加入了namespaces,用于支持网络的隔离,我们看一下namespace是如何使用的 创建与配置 创建一个名为blue的namespace ip netns add blue 列出所有的namespace ip netns list 分配网络接口到namespace上 我们可以将一对veth中的一个分配到namespace上,将另一个分配到另一个上. veth的创建如下: ip link add vet…
安装架构介绍 本文旨在通过自己搭建类似neutron (openvswitch + gre) 实现SDN 的环境,学习了解其工作原理,模拟核心原理.比方:同一租户自己定义网络 instance 互通,手动为instance 分配 floating ip 等相关内容. 虚拟网络 须要新建3个虚拟网络Net0.Net1和Net2.其在virtual box 中相应配置例如以下. Net0: Network name: VirtualBox host-only Ethernet Adapter#2 P…
一.network namespace的创建 在对iproute2的源码进行分析后,我们可以知道,当我们调用命令`ip netns add ns1`时,本质上就是调用`unshare(CLONE_NEWNET)`创建了一个新的network namespace.接着,我们进一步对内核中对于unshare系统调用的实现进行分析,从而了解内核是如何创建一个network namespace的. 1.内核对unshare()的实现分为两步,第一步调用unshare_nsproxy_namespaces…
Linux网络编程:原始套接字编程 一.原始套接字用途 通常情况下程序员接所接触到的套接字(Socket)为两类: 流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP 服务应用; 数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP 服务应用. 从用户的角度来看,SOCK_STREAM.SOCK_DGRAM 这两类套接字似乎的确涵盖了TCP/IP 应用的全部,因为基于TCP/IP 的应用,从协议栈的层次上讲,在传输层的确只可…
一 云计算时代数据中心物理网络的问题 数据中心虚拟化成为了趋势,最典型的场景莫过于:对数据中心的服务器进行虚拟化,来提高资源利用率,同时降低单位能耗. 但是,随着数据中心虚拟化程度的不断提高.虚拟化服务器规模的不断扩大,带来了巨大的管理压力.===>这正是云计算诞生的原因. 在大规模虚拟化的基础上,实现了自动化管理和集中化管理,就是云计算的基本模型. 云计算的超大规模加上其特有的服务模式带来了诸多亟需解决的问题,这些问题中,首当其冲的就是网络问题 我们需要从两个角度去看:     一:数据中心现…
http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.html 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linux中网络栈下两层的实现,再去看如何把VLAN这个功能附加上去.下两层涉及到具体的硬件设备,日趋完善的Linux内核已经做到了很好的代码隔离,对网络设备驱动也是如此,如下图所示: 这里要注意的是,Linux下的网络设备net_dev并不一定都对应实际的硬件设备,只要注册一个struct net_dev…
目录 . 引言 . Linux进程 . Linux命名空间 . Linux进程的相关标识 . 进程标识编程示例 . 进程标志在Linux内核中的存储和表现形式 . 后记 0. 引言 在进行Linux主机的系统状态安全监控的过程中,我们常常会涉及到对系统进程信息的收集.聚类.分析等技术,因此,研究Linux进程原理能帮助我们更好的明确以下几个问题 . 针对Linux的进程状态,需要监控捕获哪些维度的信息,哪些信息能够更好地为安全人员描绘出黑客的入侵迹象 . 监控很容易造成的现象就是会有短时间内的大…
第一:为什么需要网络虚拟化? 一.数据中心的现有网络不能满足云计算的物理需求: 互联网行业数据中心的基本特征就是服务器的规模偏大.进入云计算时代后,其业务特征变得更加复杂,包括:虚拟化支持.多业务承载.资源灵活调度等(如下图所示).与此同时,互联网云计算的规模不但没有缩减,反而更加庞大.这就给云计算的网络带来了巨大的压力. 互联网云计算业务特点 1. 大容量的MAC表项和ARP表项 虚拟化会导致更大的MAC表项.假设一个互联网云计算中心的服务器有5000台,按照1:20的比例进行虚拟化,则有10…
Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等 [ LXC内核命名空间 ],这里使用LXC的网络虚拟化来模拟多个网络环境. 创建虚拟网络环境 使用命令 $ ip netns add net0 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等.总之,与网络有关的组件都是独立的. ip命令需要root权限的,但是由于本文大量使用ip命令,于…