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模块。关系图如下。

  • 相关阅读:
    多线程之volatile关键字
    多线程具体实现
    多线程的概述
    Linux基本目录机构
    Java13新特性
    CF1316D【Nash Matrix】(dfs+构造+思维)
    ego商城项目学习总结+出现问题及解决
    java.lang.OutOfMemoryError: GC overhead limit exceeded之tomcat7优化
    jsp在tomcat中更新不起作用
    js取值及赋值
  • 原文地址:https://www.cnblogs.com/sometingintheway/p/10510975.html
Copyright © 2011-2022 走看看