zoukankan      html  css  js  c++  java
  • 对Linux虚拟网络的学习

    为了学习neutron而补充虚拟网络的相关知识。

    TAP

    tap是linux操作系统内核中的虚拟网络设备。tap是二层虚拟设备。而这背后指的是一个类似于类似于数据解耦股、内核模块或设备驱动这样的含义。

    tap的数据结构如下:

    struct tun_struct{
            char name[8];                //设备名
            unsigned long flags;        //区分tun和tap设备
            struct fasync_struct *fasync      //文件异步通知结构
            wait_queue_head_t read_wait;    //等待队列
            struct net_device dev;               //linux抽象网络设备机构
            struct sk_buff_head txq;              //网络缓冲队列
                struct net_device_stats stats;   //网卡状态信息结构

    tap从功能上讲,属于数据链路层。数据链路层的协议主要有:

    1. 点对点协议
    2. 以太网
    3. 高级数据链路协议
    4. 帧中继
    5. 异步传输模式

    namespace

    linux中很多资源是全局有效的。进程id这类的资源就是例子。而namespace会把这些资源进行隔离,单独在这个namespace里是全局的,不同的namespace中的资源是不相互可见的。

    Linux namespace 实现了 6 项资源隔离,基本上涵盖了一个小型操作系统的运行要素,包括主机名、用户权限、文件系统、网络、进程号、进程间通信。

    不同namespace中的设备可以利用veth pair 进行桥接。

    veth pair

    veth pair 是一对设备,连接两个虚拟以太端口。veth pair 要和namespace一起使用,不然没有意义。

    Bridge

    在linux中,bridge与switch是一个概念。

    router

    linux本身就是个路由器,只不过要打开ip_forward。

    tun

    隧道技术,是网络层(ip)的点对点设备,它启用了IP层隧道功能。Linux原生支持的三层隧道。

    iptables

    IPtables也是在linux中的一个软件。通过iptables可以实现防火墙、NAT等功能。实质上,iptables相关的命令行是调用了内核空间的netfilter模块。关系图如下。

  • 相关阅读:
    用Apache Kafka构建流数据平台
    kafka与传统的消息中间件对比
    Azkaban简介和使用
    kettle初探
    less命令
    spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入
    Spring 注释标签@Resource @Autowired 和@Inject的区别
    【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
    HDOJ 5073 Galaxy 数学 贪心
    windows 8.0上eclipse 4.4.0 配置centos 6.5 上的hadoop2.2.0开发环境
  • 原文地址:https://www.cnblogs.com/sometingintheway/p/10510975.html
Copyright © 2011-2022 走看看