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

  • 相关阅读:
    iOS 接入 招商 一网通的 各种坑
    2016证书无效,看这里
    iOS-响应上下左右滑动手势
    在线HTTP POST/GET接口测试工具
    iOS开发中使用宏定义提高开发效率
    iOS宏定义的使用与规范
    Swift
    koa 第一课
    angular directive的使用
    angular的service服务eg:value,constant,factory,service
  • 原文地址:https://www.cnblogs.com/sometingintheway/p/10510975.html
Copyright © 2011-2022 走看看